实验2:8255七段数码管静动态显示_第1页
实验2:8255七段数码管静动态显示_第2页
实验2:8255七段数码管静动态显示_第3页
实验2:8255七段数码管静动态显示_第4页
实验2:8255七段数码管静动态显示_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验2:8255七段数码管静动态显示北京科技大学机械专业微机原理实验报告~用到的带走哦!

微机实验报告书

学号:姓名:班级:

同组名单:实验日期:20XX年.12.21

实验题目:七段数码管的静态显示实验目标:掌握数码管显示数字的原理(功能:键盘输入一位十进制数字(0~9),用七段数

码管显示。)

解题思路:

1.静态显示:按图10(a)连接好电路,将8255的A口PA0-PA6分别与七段

数码管的断码驱动输入端a-g项链,位码驱动输入端S1接+5V,S0、dp

接地。编程从键盘输入一位十进制数字,在七段数码管上显示出来。

2.动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱

动输入端S1,S0接8255C口的PC1,PC0。编程在两个数码管上显示“56”。

程序框图:静态显示见图11(a),动态显示见图11(b)。

北京科技大学机械专业微机原理实验报告~用到的带走哦!

关键问题分析(静态显示):

1、按键判断和程序结束判断

按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在0-9之间即可。用以下程序即可:

cmpal,'0'jlexit;jl,条件转移指令,即在小于时转移cmpal,'9'jgexit;jg,条件转移指令,即在大于时转移

程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。

2、七段码显示。

北京科技大学机械专业微机原理实验报告~用到的带走哦!

实验指导书中给出了七段码的字型代码。这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。前提是必须将七段码字型编成数码表以字符串的形式写进程序中。

3、数字键ASCII码与数值间的转换。

因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现:

subal,30h

程序清单:

静态显示:

datasegment

ioport

io8255a

io8255bequ0c800h-0280hequioport+288hequioport+28bh

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

mesg1db0dh,0ah,'Inputanum(0--9h):',0dh,0ah,'$'

dataends

codesegment

assumecs:code,ds:datamovds,axmovdx,io8255b;使8255的A口为输出方式moval,80h;***-*****B,控制字PA以方式0输出outdx,almovah,09hint21hmovah,01;从键盘接收字符int21hcmpal,'0';是否小于0jlexit;如若小于0,则跳转到exit退出程序cmpal,'9';是否大于9jgexit;如若大于9,则跳转到exit退出程序subal,30h;将所得字符的ASCII码减30H,数字键ascii码同数值转换movbx,offsetled;bx为数码表的起始地址xlat;求出相应的段码movdx,io8255a;从8255的A口输出outdx,aljmpzby;转zbystart:movax,datazby:movdx,offsetmesg1;显示提示信息

exit:movah,4ch;返回DOS

北京科技大学机械专业微机原理实验报告~用到的带走哦!

int21h

codeends

endstart

动态显示:

datasegment

ioport

io8255a

io8255b

io8255cequ0c800h-0280hequioport+28ahequioport+28bhequioport+288h

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码

buffer1db5,6;存放要显示的个位和十位

bzdw?;位码

dataends

codesegment

assumecs:code,ds:datamovds,axmovdx,io8255b;将8255设为A口输出moval,80h;***-*****B,控制字PA以方式0输出outdx,almovdi,offsetbuffer1;设di为显示缓冲区start:movax,data

loop2:movbh,02

zby:movbyteptrbz,bh

pushdidecdiadddi,bzmovbl,[di];bl为要显示的数popdi

moval,0

movdx,io8255a

outdx,al

movbh,0movsi,offsetled;置led数码表偏移地址为SIaddsi,bx;求出对应的led数码moval,byteptr[si]movdx,io8255c;自8255A的口输出outdx,almoval,byteptrbz;使相应的数码管亮movdx,io8255aoutdx,almovcx,3000

delay:loopdelay;延时

北京科技大学机械专业微机原理实验报告~用到的带走哦!

movbh,byteptrbzshrbh,1jnzzbymovdx,0ffhmovah,06int21hjeloop2;有键按下则退出movdx,io8255amoval,0;关掉数码管显示outdx,almovah,4ch;返回int21hendstartcodeends

运行结果:

静态显示:在键盘上输入一个0-9的任意数字,会显示在数码管上。。

动态显示:在程序中写入6,5,读取顺序是第一位是个位,第二位是十位,数码管上显示56.

问题与讨论:

1、键盘输入不符合要求如何处理?

如若键盘输入不符合要求,则立即跳到结束程序段,返回到DOS。

2、用8255的其他端口输出怎么处理?

由于其他端口输出并没有用到,控制字中写成0或者1都行,一般习惯上不用到填0即可。

3、在两位七段数码管间切换显示怎么处理?

通过硬件连线即可实现。七段数码管连接和S1连接不变。将S0不接地,接到+5V,并同时将S1和S0接到两个不同的逻辑开关。程序LINK运行完毕。当S1逻辑开关为高电平时(S0逻辑开关为低电平),在第一个数码管显示;当S0逻辑开关为高电平时(S1逻辑开关为低电平),在第二个数码管显示,这样便实现了在两位数码管间的切换。

小结(体会和收获)

静态显示是从键盘获取一个数值,然后通过程序比较得出键盘输入的数字量,由PA端口输出到数码管上。而动态显示是将两个数字写入程序中,由程序读取数字然后按位输出到数码管上显示。原理说得简单,但是程序本身个人感觉

北京科技大学机械专业微机原理实验报告~用到的带走哦!

还是相当复杂的,尤其动态显示,程序如何读取已输入的数字,以及读取数字的顺序都会影响到数码管的显示。

静态显示过程中,我们碰到数码管一直显示8的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论