单片机数码管显示_第1页
单片机数码管显示_第2页
单片机数码管显示_第3页
单片机数码管显示_第4页
单片机数码管显示_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、第10章 MCS-51的键盘、显示器的接口设计一.LED显示器接口扩展 1.LED数码管的结构:共阳与共阴h g f e d c b aabcdgefhh g f a低电平点亮接高电平h g f a高电平点亮接地公共极共阳极共阴极一.LED显示器接口原理 1.LED数码管的结构:共阳与共阴一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管上施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,须外加限流电阻。公共阳极h g f e d c b aabcdgefhh g f a低电平点亮

2、接高电平dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D02.LED数码管的译码:硬件译码与软件译码(2)硬件译码特点:采用专用的译码/驱动器件,驱动功率较大;增加了硬件的开销;软件编程简单;字型固定(比如:只有七段,只可译数字,字型不好看)。共阴LEDabcdgefhgfedcb aDCBAP1.3P1.2P1.1P1.0CD45118051(1)74LS48/CD4511是“BCD码七段共阴译码/驱动”IC; 74LS47是“BCD码七段共阳译码/驱动”IC一.LED显示器接口原理例411 十六进制数转换成七段显示码。设:将R1中的一位十六进制数(R0中的低4位

3、)转换成七段显示代码,并从P1口输出进行显示。设七段显示器为共阳极接法。源程序如下: ORG 3000HSTART:MOV DPTR,#TABLE ;置表首地址 MOV A,R1 ;取十六进制数 ANL A,#0FH ;处理低4位 MOVC A,A+DPTR ;查表 MOV P1,ATABLE:DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H DB 80H,90H,88H,83H DB 0C6H,A1H,86H,84H END 程序设计举例一.查表程序设计(3)软件译码特点: 不用专用的译码/驱动器件,驱动功率较小;不增加硬件的开销;软件编程较复杂;字型灵(

4、比如:有八段,只可译多种字符,字型好看)。共阳LEDabcdgefhP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V8051一.LED显示器接口原理2.LED数码管的译码:硬件译码与软件译码八段LED数码管段代码编码表(连线不同可有多种表):字形0123456789黑共阳0C00F90A40B09992820F880900FF共阴3F065B4F666D7D077F6F00图10-2 4位LED显示器的构成 abcdgefh8adpabcdgefh8adpabcdgefh8adpabcdgefh8adp段码线位选线3.LED数码管的显示方式: 静态与动态一.LED显示器接

5、口原理 3.LED数码管的显示方式:静态与动态动态显示特点: 有闪烁,用元器件少,占I/O线少,必须扫描,花费CPU时间,编程复杂。(有多个LED时尤为突出)静态显示特点: 无闪烁,用元器件多,占I/O线多,无须扫描,节省CPU时间,编程简单。(1)静态显示各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的。一.LED显示器接口原理 (2)动态显示: 各数码管在显示过程中轮流得到送显信号,与各数码管接口的I/O口线是共用的。例如,要求显示“EE020”时,I/O口1和I/O口2轮流送入段选码、位选码及显示状态如图所示。段选码、位选码每送入一次后延时1 ms,因人眼的视觉暂

6、留时间为 s(100 ms),所以每位显示的间隔不必超过20 ms,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。这种方式称为软件扫描显示。图 6位动态扫描显示状态ABCLKh g f e d c b aCLRABCLKCLRABCLKCLRVCCTxDRxD 8051单片机74LS16474LS16474LS164h g f e d c b ah g f e d c b a+5V共阳LED数码管LED数码管静态显示举例有几个LED就要几个74LS164,但只要数据不变,送一次就保持住了,且不闪烁,编程十分简单。要求:根据上图编写通过串行口和74LS164驱动共 阳LED

7、数码管查表显示的子程序。条件:系统有6个LED数码管,待显数据(00H09H)已放在35H30H单元中(分别对应十万位个位),DSPLY:MOV DPTR, #TABLE ;共阳LED数码管译码表首址 MOV R0,#30H ;待显数据缓冲区的个位地址REDO:MOV SCON,#00H MOV A, R0 ;通过R0实现寄存器间接寻址 MOVC A, A+DPTR ;查表 MOV SBUF, A ;经串行口发送到74LS164 JNB TI, $ ;查询送完一个字节的第8位? CLR TI ;为下一字节发送作准备 INC R0 ;R0指向下一个数据缓冲单元 CJNE R0,#06H,REDO

8、 ;判断是否发完6个数? RET ;发完6个数就返回TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳LED译码表 DB 92H, 82H, 0F8H, 80H,90H图10-4 4位8段LED动态显示电路 abcdgefh8adpabcdgefh8adpabcdgefh8adpabcdgefh8adp段码线8位I/O位选线4位I/O一.LED显示器接口原理 3.LED数码管的显示方式:动态010.13.002显示字符段 码01013.0023FH06HBFH06HCFH3FH3FH5BH显示器显示状态(微观)2 0 0 3. 1 0 1 0人眼看到的结果以8位LED动态

9、显示2003.10.10为例LED数码管动态显示举例工作原理:从P0口送段代码,P1口送位选信号。段码虽同时到达6个LED,但一次仅一个LED被选中。利用“视觉暂留”,每送一个字符并选中相应位线,延时一会儿,再送/选下一个循环扫描即可。P1.5 P1.4P1.3P1.2P1.2P1.0P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.07406 OC门 X 3上拉电阻14+5V8051共阴 数码管位选线段代码初始化查字段码字段码送A口位选送B口延时1ms指向下一个待显数据是否显示完8个字符?修改位选信号返 回是否初始化: 段码表首地址, 首个待查数据地址, 初始位选地

10、址DPTR 段码表首地址;R0 待查数据首地址;R3 位地址。DIS: MOV A,#03H ;写命令字 MOV DPTR,#7F00H ;指向命令寄存器 MOV DPTR,A MOV R0,#78H MOV R3,#7FH MOV A,R3LD0: MOV DPTR,#7F02H ;指向B口 MOV DPTR,A DEC DPL ;指向A口 MOV A,R0 ADD A,#0DH MOVC A, A+PC ;查表 MOV DPTR,A ACALL DL1 ;调延时1ms子程序 INC R0 ;R0 指向下一字节 MOV A,R3 A口输出段代码,B口输出位选信号。待显数据已经放在: 78H7

11、FH单元使用共阴译码表。JNB ACC.0,LD1 ;判是否发完8个数? RR A ;R1指向下一个位 MOV R3,A ;位选信号存回R1 SJMP LD0 ;跳去再显示下一个数LD1: RET ;发完8个数就返回DSEG:DB 3FH, 06H,5BH,4FH,67H;共阴译码表 DB 6DH, 7DH, 07H, 7FH,6FH DB 77H,7CH,39H,5EH,79H,71HDL1: MOV R7,#02H ;延时1ms子程序DL0: MOV R6,#F9HDL10:DJNZ R6,DL10 DJNZ R7,DL0 RET 扩展键盘接口1.键盘 原理 单片机系统中完成控制参数输入及

12、修改的基本输入设备,是最简单的单片机输入设备。二. 键盘接口原理 5V输出行线列线列线的电平决定行线电平,即 行线电平为按键闭合的判断依据断开断开闭合t0t1t2t3t4t0t4断开期t1t3抖动期 510mst2闭合期 由按键动作决定二. 键盘接口原理 延时10ms入 口NYNY键闭合行线为低电平?行线为低电平?键未闭合判断按键是否闭合断开断开闭合t0t1t2t3t4t0t4断开期t1t3抖动期 510mst2闭合期 由按键动作决定二. 键盘接口原理 延时10ms入 口NYNY键松开行线为高电平?行线为高电平?键未松开判断按键是否松开二. 键盘接口原理 2.键盘分类 (1)按键值编码方式分

13、(硬件)编码键盘与非(硬件)编码键盘。 (2)按键组连接方式分 独立式键盘与行列式键盘。编码键盘: 采用专用的编码/译码器件,被按下的键由该器件译码输出相应的键码/键值。特点:增加了硬件开销,编码因选用器件而异,编码固定,但编程简单。适用于规模大的键盘。非编码键盘: 单片机系统多采用此类键盘 采用软件编/译码的方式,通过扫描,对每个被按下的键判别输出相应的键码/键值。特点:不增加硬件开销,编码灵活,适用于小规模的键盘,特别是单片机系统。但编程较复杂,占CPU时间,还须软件“消颤”。(1)按键值编码方式:编码键盘与非编码键盘(2)按键组连接方式:独立式键盘与行列式键盘独立式键盘: 每键相互独立,

14、各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。特点:占I/O口线多,但判键速度快,多用于设置控制键、功能键。适用于键数少的场合。行列式键盘: 键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。特点:键多时占用I/O口线少,但判键速度慢,多用于设置数字键。适用于键数多的场合。3.键盘的工作方式(1)编程扫描方式当单片机空闲时,调用键盘扫描子程序,等待用户从键盘上输入命令或数据。如: MAIN: LCALL KEYIN (2)定时扫描方式利用单片机内的定时器,产生10ms的定时中断,

15、在中断服务子程序中进行键盘扫描。如:ORG 000BH LJMP TIME0 TIME0: LCALL KEYIN RETI3.键盘的工作方式(3)中断工作方式采用中断扫描,可提高扫描键盘的效率。如:P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7INT0与门5V8031查询方式中断方式图10-7 独立式键盘接口P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7INT0与门5V8031P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.75V80313.键盘的工作方式按键盘的分类(1)独立式键盘接口直接式独立连接式键盘例1 特点:此子程序采用中断查询不会

16、漏判,省时。键的优先级由指令顺序决定。为防止一次按键多次中断,在功能子程序里应安排“关/开中断指令”。P1.0P1.1P1.2P1.3 ORG 0003H LJMP KEY KEY: JNB P1.0,FUNC1 ;逐键判别 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.3,FUNC4 RETI ;无任何键按下由此返回FUNC1: ;做P1.0要求的“功能1” RETIFUNC2: ;做P1.1要求的“功能2” RETIFUNC3: ;做P1.2要求的“功能3” RETIFUNC4: ;做P1.3要求的“功能4” RETIINT0&(上拉)8051独立连接式键盘例2

17、:特点:此子程序需不断(或定时)调用,否则可能漏判。4个键的优先级由指令顺序决定。P1.0P1.1P1.2P1.3KEY: JNB P1.0,FUNC1 ;逐键判别 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.3,FUNC4 RET ;无任何键按下由此返回FUNC1: ;做P1.0要求的“功能1” RETFUNC2: ;做P1.1要求的“功能2” RETFUNC3: ;做P1.2要求的“功能3” RETFUNC4: ;做P1.3要求的“功能4” RET805112341 2 3 45VRRRR0 1 2 34 5 6 7 9 10 11 12 13 14 15(b

18、) 44键盘1231 2 35VRRR(a) 33键盘工作原理:行线通过上拉电阻接到5V;无按键按下, 行线处于高电平;有按键按下, 行线电平由与此行线相连的列线电平决定。(2)行列式键盘2.键盘分类12341 2 3 45VRRRR0 1 2 34 5 6 7 9 10 11 12 13 14 15(b) 44键盘(2)行列式键盘扫描法2.键盘分类80C518155P0ALECERESETAD0-7EARESETRDWRWRRDPA7PA6PA5PA4PA3PA2PA1PA0PC0PC1PC2PC3P2.7ALE+5v+5v列线行线0列7列0行3行 0 1 2 3 4 5 6 7 8 9 1

19、0 11 12 13 14 1516 17 18 19 20 21 21 23 24 25 26 27 28 29 30 31图 采用8155扩展I/O组成的48矩阵式键盘P2.0IO/M(2)行列式键盘扫描法 PA口:7F01H,PC口:7F03H,控制寄存器:7F00H矩阵式键盘名词注释矩阵式键盘工作原理: 先由列线送出数据,送全“0”或每次只送一位“0”;然后读进行线,判有无键按下或按键的位置并算出键值。顺序扫描。 行号:第0行第3行(03) 行首值:(R3) 8 (0,8,16,24) 列值:A口输出值(FF,FE,FD,FB,F7,EF,DF,BF,7F) 键值:查得最后结果 R5

20、等于已知按键所在的行首值, 再加上所在列的序号。 同一行中,键值等于行首值 连续依次加 1。0列 1列 2列 3列 4列 5列 6列 7列列线(PA0PA7)行 线 PC 0-3 0行3行1行2行 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 21 23 24 25 26 27 28 29 30 31KEY1:LCALL KS1 ;查有无键闭合 JNZ LK1 ;有键闭合转消颤 LJMP LK8 ;无键闭合则退出LK1:LCALL DL6ms ;消颤12ms LCALL DL6ms LCALL KS1 ;再查有无键闭合 JNZ L

21、K2 ;的确有,转处理 LJMP LK8 ;确实无,退出去查有无键闭合的子程序KS1:KS1:MOV DPTR,#7F00H MOV A, #01H MOVX,DPTR,A MOV DPTR,#7F01H;指向 A口 MOV A, #00H;8条列线都送0 MOVX,DPTR,A;送到列线上去 INC DPTR INC DPTR ;指向 C口 MOVX A,DPTR ;读行线的电平 ANL A,#0FH ;保留C口低4位 若确有键按下,则Acc中必有“0” ORL A,#0F0H ;将Acc高4位赋1 CPL A ;Acc取反后,高4位=0; 若有键按下,则低4位中必有“1” RET检查的结果

22、(出口): 若(A)0,则有键按下; 若(A)0,则无键按下。列线(PA0PA7)0列 1列 2列 3列 4列 5列 6列 7列行 线 PC 0-3 0行3行1行2行 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 21 23 24 25 26 27 28 29 30 31KEY1:LCALL KS1 ;查有无键闭合 JNZ LK1 ;有键闭合转消颤 LJMP LK8 ;无键闭合则退出LK1:LCALL DL6ms ;消颤12ms LCALL DL6ms LCALL KS1 ;再查有无键闭合 JNZ LK2 ;的确有,转处理 LJM

23、P LK8 ;确实无,退出去LK2:MOV R2,#0FEH ;(R2)列号初值 MOV R4,#00H ;(R4)列号计数器LK3:MOV DPTR #7F01H;指向8155 A口 MOV A, R2 ;取列扫描值 MOVX,DPTR,A ;送到列线上去 INC DPTR INC DPTR ;指向8155 C口 MOVX A,DPTR ;读行线的电平 列号:第0列第7列(R4) (0,1,2,3,4,5,6,7) 列扫描值: 0FEH (R2) (FE,FD,FB,F7,EF,DF,BF,7F) FEH = 1111 1110 B(首次扫描) FDH = 1111 1101 B (2次扫描) FBH = 1111 1011 B (3次扫描) F7H = 1111 0111 B (4次扫描) EFH = 1110 1111 B (5次扫描) DFH = 1101 1111 B (6次扫描) BFH = 1011 1111 B (7次扫描) 7FH = 0111 1111 B (8次扫描) 行值: (0F

温馨提示

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

评论

0/150

提交评论