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

下载本文档

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

文档简介

1、微机实验报告学号:名字:班:该组列表:实验日期: 2012.12.21实验主题: 7段数字软线管的静态显示实验目标:掌握数字码管显示数字的原理(功能:键盘输入十进制(09),用七段数字管显示。 (请参见。)解决问题的想法:1 .静态显示:如图10(a )所示连接电路,将8255的a端口PA0-PA6分别设为7级数字码管的中断码驱动输入端子a-g项链,将位码驱动输入端子S1连接到5V,将S0、dp接地。 编程从键盘输入一位十进制数,显示在七段数字管上。2 .动态显示:根据图10(b )连接电路,7级数字码管理段码连接不变,位码驱动输入端子S1、S0连接8255C端口的PC1、PC0。 程序在两个

2、数码电线管上显示“56”。程序框图:静态显示如图11(a ),动态显示如图11(b )所示。分析重要问题(静态显示):1 .键判定和程序结束判定因为按钮必须向程序输入数字,所以不需要判断是否按下按钮,只要判断按钮是否在09之间就可以。 要执行以下操作cmp al,0jl exit; jl、条件迁移指令,即更小时迁移cmp al,9jg exit; jg,条件转移命令,即,更大的情况下转移程序中还使用了比较输入数和0、9的大小关系的名为“cmp”的比较指令。程序结束:输入的数字小于0或大于9时,必须直接跳出程序。 也就是说,结束命令必须占有程序段。 即使程序的顺序完成,也可以返回到DOS。2、7

3、段代码显示。实验指导书中给出了7段代码的字体代码。 这样,可以利用代码转换命令“XLAT”简单地实现7段代码的显示。 前提是必须将7段的代码字体转换成数字表,作为字符串写入程序。3、数字键ASCII代码和数值之间的转换。因为0的ASCII代码是30hz,所以数字键的ASCII代码和数值之间的转换只需减去30hz,就可以通过以下语句实现辅助al,30h流程列表:静态显示:数据分段ioportequ 0c800h-0280hio8255aequ ioport 288hio8255bequ ioport 28bhled db 3fh、06h、5bh、4fh、66h、6dh、7dh、07h、7fh、6

4、fhmesg1 db 0dh,0ah,输入数(0-9 h ) :0 DH,0ah,$数据结束代码分段assume cs :代码,ds :数据start: mov ax,dataPS、PSmov dx、io8255b; 将8255的a端口设为输出方式mov al、80h; b、控制字PA以方式0输出out dx,alzby: mov dx,偏移消息1; 显示提示信息mov ah、09hint 21hmov ah、01; 从键盘上接收文字int 21hcmp al,0; 是否小于0jl exit; 如果小于0,则跳至exit并退出程序cmp al,9; 是否比9大jg exit; 如果大于9,则跳

5、至exit并退出程序辅助铝、30h; 将得到的字符的ASCII代码减少30H,转换数字键的ASCII代码和数值mov bx,offset led; bx数码表的起始地址xlat; 求出相应的段落号码mov dx、io8255a; 从8255的a端口输出out dx,aljmp zby; 转动zbyexit: mov ah、4ch; 返回DOSint 21h代码结束结束启动。动态显示:数据分段ioportequ 0c800h-0280hio8255aequ ioport 28ahio8255bequ ioport 28bhio8255cequ ioport 288hled db 3fh、06h、

6、5bh、4fh、66h、6dh、7dh、07h、7fh、6fh; 段落编号缓冲器1 db 5、6; 保存要显示的位和10位宝马? 位代码。数据结束代码分段assume cs :代码,ds :数据start:mov ax,datamov ds、axmov dx、io8255b; 把8255设为a端口输出mov al、80h; b、控制字PA以方式0输出out dx,almov di、偏移缓冲器1; 把di作为显示缓冲器loop2:mov bh,02zby: mov byte ptr bz,bh推式di德克迪阿迪,bzPS,PS; bl是显示的数量pop dimov al,0mov dx,io82

7、55aout dx,almov bh,0mov si、offset led; 设led数字钟表的偏移地址为SIadd si,bx; 求出对应的led数字mov al,byte ptr simov dx、io8255c; 来自8255A的端口输出out dx,almov al、字节ptr BZ; 点亮对应的数字代码PS K,io8255aout dx,almov cx,3000延迟:循环延迟; 延迟mov bh、字节ptr BZshr bh,1jnz zbymov dx,0ffhPS,06int 21hje loop2; 按键被按下的话就结束了。mov dx,io8255amov al、0; 关

8、闭千分表的显示out dx,almov ah、4ch; 返回int 21h代码结束结束开始。执行结果:静态显示:在键盘上输入09的任意数字后,显示在代码管上。 的双曲馀弦值。动态显示:在程序中写入6、5,读取顺序为第1位,第2位为10位,在数字管上显示56 .问题和讨论:1、键盘输入不满足要求时,如何处理?如果键盘输入不符合要求,则立即进入结束段,返回到DOS。如何处理8255的其他端口输出?因为未使用其他端口输出,所以控制字可以被写为0或1,而通常不需要填充0。如何在两个人的七段数字管之间切换显示?可以通过硬件连接实现。 7段数码电线管连接和S1连接不变。 S0不接地,而是连接到5V,S1和

9、S0连接到两个不同的逻辑交换机。 程序LINK的执行完成。 S1逻辑开关为高电平时(S0逻辑开关为低电平时),显示在第一个数字代码管上. S0逻辑开关为高电平时(S1逻辑开关为低电平时),显示在第二个数字代码管上,可以切换2位数字代码管总结(体会和收获)静态显示从键盘取得数值,比较键盘通过程序输入的数值量,从PA端口输出到数字码管。 另一方面,动态显示是将两个数字写入程序,通过程序读取数字,按位输出到数字代码进行显示。 虽然原理很简单,但程序本身的个人感觉非常复杂,特别是在动态显示中,程序如何读取输入的数字和读取数字的顺序会影响数字码的显示。在静态表示的过程中,我们遇到了数字管总是显示8的状态,这不是期待的效果。 之后,用“io82

温馨提示

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

评论

0/150

提交评论