MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt
《MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt》由会员分享,可在线阅读,更多相关《MCS-51与键盘、显示器、拨盘、打印机的接口设计.ppt(100页珍藏版)》请在三一办公上搜索。
1、第10章 MCS-51与键盘、显示器、拨盘、打印机的接 口设计,输入外设:键盘、BCD码拨盘等;,输出外设:LED显示器、LCD显示器、打印机等。,10.1 LED显示器接口原理,LED(Light Emitting Diode):发光二极管的缩写。显示器前面冠以“LED”。,10.1.1 LED显示器的结构,常用的LED显示器为8段(或7段,8段比7段多了一个小数点“dp”段)。,有共阳极和共阴极两种。如图10-1所示。,为使LED显示不同的符号或数字,要为LED提供段码(或称字型码)。,提供给LED显示器的段码(字型码)正好是一个字节(8段)。各段与字节中各位对应关系如下:,按上述格式,8
2、段LED的段码如表10-1所示。,表10-1 LED段码(8段),表10-1只列出了部分段码,可根据实际情况选用。,另外,段码是相对的,它由各字段在字节中所处的位决定。例如表10-1中8段LED段码是按格式:,而形成的,“0”的段码为3FH(共阴)。反之,如 将格式改为下列格式:,则“0”的段码为7EH(共阴)。,字型及段码由设计者自行设定,习惯上还是以“a”段对应段码的最低位。,N个LED显示块有N位位选线和8N根段码线。,10.1.2 LED显示器工作原理,图10-2是4位 LED显示器的结构原理图。,段码线控制显示的字型,,位选线控制该显示位的亮或暗。,静态显示和动态显示两种显示方式。,
3、1.静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别与一个8位的锁存器输出相连。,显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。,图10-3:4位静态LED显示器电路。该电路各位可独立显示。,2.动态显示方式,所有位的段码线相应段并在一起,由一个8位I/O口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,形成各位的分时选通。,图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。,图10-5为8位LED动态显示2003.10.10的过程。,图(a)是显示过
4、程,某一时刻,只有一位LED被选通 显示,其余位则是熄灭的;,图(b)是实际显示结果,人眼看到的是8位稳定的 同时显示的字符。,10.2 键盘接口原理,1.键盘输入的特点,键盘:一组按键开关的集合。,行线电压信号通过键盘开关机械触点的断开、闭合,输出波形如图10-6。,2.按键的确认,检测行线电平,便可确认按键按下与否。高电平:断开;低电平:闭合,,常用软件来消除按键抖动。,基本思想:检测到有键按下,键对应的行线为低,软件延时10ms后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,当键松开时,行线变高,软件延时10ms后,行线仍为高,说明按键已松开。,采取以上措施,躲开了两个抖
5、动期t1和t3的影响。,10.2.2 键盘接口的工作原理,独立式按键接口和行列式键盘接口。,1.独立式键盘接口,各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。,此种接口适于键数较少或操作速度较高的场合。,图10-7(a)为中断方式的独立式键盘工作电路,图10-7(b)为查询方式的独立式键盘工作电路。,图10-8为8255A扩展I/O口的独立式按键接口电路。,图10-9用三态缓冲器扩展的I/O口的按键接口电路。,对图10-9独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。,KEYIN:MOV DPTR,#0BFFFH;键盘端口
6、地址BFFFHMOVX A,DPTR;读键盘状态ANL A,#1FH;屏蔽高三位,MOV R3,A;保存键盘状态值LCALL DELAY10;延时10ms去键盘抖动MOVX A,DPTR;再读键盘状态,ANL A,#1FH;屏蔽高三位,CJNE A,R3,RETURN;两次不同,抖动引起转RETURN,CJNE A,#1EH,KEY2;相等,有键按下,不等转KEY2,LJMP KEY1;是K1键按下,转K1键处理;子程序PKEY1KEY2:CJNE A,#1DH,KEY3;S2键未按下,转KEY3LJMP KEY2;S2键按下,转PKEY2处理KEY3:CJNE A,#1BH,KEY4;S3未
7、按下,转KEY4LJMP KEY3;S3按下,转PKEY3处理KEY4:CJNE A,#17H,KEY5;S4键未按下,转KEY5LJMP KEY4;S4按下,转PKEY4处理KEY5:CJNE A,#0FH,PASS;S5未按下,转RETURNLJMP KEY5;S5按下,转PKEY5处理RETURN:RET;重键或无键按下,从子程序返回,识别和编程简单,用在按键数较少的场合。,2.行列式(矩阵式)键盘接口,用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图10-10所示。,按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。,(1)行列式键盘工作原
8、理,无键按下,该行线为高电平,当有键按下时,行线电平有列线的电平来决定。,由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。,(2)按键的识别方法,a.扫描法,图10-10(b)中3号键被按下为例,来说明此键时如何被识别出来的。,识别键盘有无键被按下的方法,分两步进行:,第1步:识别键盘有无键按下;,第2步:如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,
9、可确定此行列交叉点处的按键被按下。,b.线反转法,只需两步便能获得此按键所在的行列值,线反转法的原理如图10-11。,第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。,第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。,结合上述两步,可确定按键所在行和列。,(3)键盘的编码,根据实际需要灵活编码。,10.2.3 键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。,原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。,通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。,1.编程扫描方式,只有当单片机
10、空闲时,才调用键盘扫描子程序,扫描键盘。,工作过程:,(1)在键盘扫描子程序中,先判断有无键按下。,方法:PA口8位输出全0,读PC口低4位状态,若PC0PC3为全1,则说明键盘无键按下;若不全为1,则说明键盘可能有键按下。,(2)用软件来消除按键抖动的影响。如有键按下,则进行下一步。,(3)求按下键的键号。,(4)等待按键释放后,再进行按键功能的处理操作。,2.定时扫描工作方式,利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。,3.中断工作方式,只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。,键盘所做的工作分为三个层次,如图10-13。,第1层:单片
11、机如何来监视键盘的输入。三种工作方 式:编程扫描定时扫描中断扫描。,第2层:确定具体按键的键号。体现在按键的识别方 法上就是:扫描法;线反转法。,第3层:执行键处理程序。,10.3 键盘/显示器接口设计实例,一般把键盘和显示器放在一起考虑。,10.3.1 利用并行I/O芯片实现键盘/显示器接口,图10-14:8031用扩展I/O接口芯片8155H实现的6位LED显示和32键的键盘/显示器接口电路。图中的8155H也可用8255A来替代。,8031外扩一片8155H。RAM地址为7E00H7EFFH。I/O口地址为7F00H7F05H。,PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极显示
12、器的位扫描口。,PB口作为显示器段码输出口,PC口作为键盘的行线状态的输入口。,75452:反相驱动器,7407:同相驱动器。,1动态显示程序设计,8031内部RAM设置6个显示缓冲单元79H7EH,存放要显示的6位数据。,8155H的PB口输出相应位的段码,依次的改变PA口输出为高的位使某一位显示某一字符,其它位为暗。动态地显示出由缓冲区中显示数据所确定的字符。程序流程如图10-15。,参考程序如下:,DIR:MOV R0,79H;置缓冲器指针初值,MOV R3,01H;位选码的初值送R3,MOV A,R3,LD0:MOV DPTR,7F01H;位选码PA口(PA.0位),;最左边LED亮,
13、MOV DPTR,A,INC DPTR;数据指针指向PB口,MOV A,R0;显示数据A,ADD A,0DH;加偏移量(下条指令到表首间;所有指令占的单元数),MOVC A,APC;根据显示数据来查表取段码,DIR1:MOVX DPTR,A;段码8155HPB口,ACALL DL1ms;该位显示1ms,INC R0;指针指向下一个数据单元,MOV A,R3;位选码送入A中,JB Acc.5,LD1;判断是否扫描到最右边的;LED,如到最右边则返回,RL A;位选码向左移一位,准备让;右边的下一位LED亮位选码,MOV R3,A;送R3中保存,AJMP LD0;,LD1:RET;,DSEG:DB
14、 3FH,06H,5BH,4FH,66H,6DH;共阴极段码表 DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH,DB 31H,6EH,1CH,23H,40H,03H,DB 18H,00H,DL1ms:MOV R7,02H;延时1ms子程序,DL:MOV R6,0FFH,DL6:DJNZ R6,DL6,DJNZ R7,DL,RET,2键盘程序设计,(1)判别键盘上有无键闭合,(2)去除键的机械抖动,(3)判别闭合键的键号,(4)使CPU对键的一次闭合仅作一次处理,键盘程序的流程如图10-16。,键盘子程序如下:,KEYI:ACALL K
15、S1;调用判有无键闭合子程序,JNZ LK1;有键闭合,跳LK1,NI:ACALL DIR;无键闭合,调用显示子程序,延,;迟6ms后,跳KEYI,AJMP KEYI,LK1:ACALL DIR;可能有键闭合,延迟12ms,软件去抖,ACALL DIR,ACALL KS1;调用判有无键闭合子程序,JNZ LK2;经去抖,判键确实闭合,跳LK2处理,ACALL DIR;调用显示子程序延迟6ms,AJMP KEYI;抖动引起,跳KEYI,LK2:MOV R2,0FEH;列选码R2,MOV R4,00H;R4为列号计数器,LK4:MOV DPTR,7F01H;列选码8155H的PA口,MOV A,R
16、2;,MOVX DPTR,A;,INC DPTR;数据指针增2,指向PC口,INC DPTR;,MOVX A,DPTR;读8155H PC口,JB Acc.0,LONE;0行线为高,无键闭合,跳 LONE,转判1行,MOV A,00H;0行有键闭合,首键号0A,AJMP LKP;跳LKP,计算键号,LONE:JB Acc.1,LTW0;1行线为高,无键闭合,跳LTW0,;转判2行,MOV A,08H;1行有键闭合,首键号8A,AJMP LKP,LTW0:JB A.2,LTHR;2行线为高,无键闭合,跳LTHR,;转判3行,MOV A,10H;2行有键闭合,首键号10HA,AJMP LKP;跳L
17、KP,计算键号,LTHR:JB Acc.3,NEXT;3行线为高,无键,;闭合,跳NEXT,准备下一列扫描,MOV A,18H;3行有键闭合,首键号18HA,LKP:ADD A,R4;计算键号:首键号列号=键号,PUSH A;键号进栈保护,LK3:ACALL DIR;调用显示子程序,延时6ms,ACALL KS1;调用判有无键闭合子程序,延时;6ms,JNZ LK3;判键释放否,未释放,则循环,POP A;键已释放,键号出栈A,RET,NEXT:INC R4;列计数器加1,为下一列扫描作准备,MOV A,R2;判是否已扫到最后一列(最右一列),JNB Acc.7,KND;键扫描已扫到最后一列,
18、跳KND,;重新进行整个键盘扫描,RL A;键扫描未扫到最后一列,位选码左移;一位,MOV R2,A;位选码R2,AJMP LK4;,KND:AJMP KEYI;,KS1:MOV DPTR,#7F01H;判有无键闭合子程序,全“0”;扫描口(PA口),MOV A,00H;即列线全为低电平,MOVX DPTR,A;,INC DPTR;DPTR增2,指向PC口,INC DPTR;指针增1,指向PC口,MOVX A,DPTR;从PC口读行线的状态,CPL A;行线取反,如无键按下,则A为0;,ANL A,0FH;屏蔽无用的高4位,RET,10.3.2 利用8031的串行口实现键盘/显示器接口,串行口
19、未作它用,可用来外扩键盘/显示器。,串行口为方式0输出,串行口外接移位寄存器74LS164。,接口电路如图10-17。,74LS164(0)74LS164(7):作为8位LED的段码输出,,8031的P3.4、P3.5:两行键的行状态输入,P3.3(TXD):同步移位脉冲输出控制线,,优点:亮度大,容易做到显示不闪烁,且CPU不必频繁的为显示服务,从而使单片机有更多的时间处理其它事务。,显示子程序:,DIR:SETB P3.3;P3.3=1允许TXD脚同步移位;脉冲输出,MOV R7,08H;送出的段码个数,R7为段;码个数计数器,MOV R0,7FH;7FH78H为显示数据缓冲区,DL0:M
20、OV A,R0;取出要显示的数送A,ADD A,0DH;加上偏移量,MOVC A,APC;查段码表SEGTAG,取出段码,MOV SBUF,A;将段码送SBUF,DL1:JNB TI,DL1;输出段码,查询TI状态,1个字节;的段码输出完否?,CLR TI;1个字节的段码输出完,清TI标志,DEC R0;指向下一个显示数据单元,DJNZ R7,DL0;段码个数计数器R7是否为0,如不;为0,继续送段码,CLR P3.3;8个段码输出完毕,关显示器输出,RET;返回,SEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99H;共阳极段码表,;0,1,2,3,4,DB 92H,82H,0F
21、8H,90H;5,6,7,8,9,DB 88H,83H,0C6H,0A1H,86H;A,B,C,D,E,DB 8FH,0BFH,8CH,0FFH,0FFH;F,P,暗,键盘扫描子程序:,KEYI:MOV A,00H;判有无键按下,使所有列线为0;的编码送A,MOV SBUF,A;扫描键盘的(8)号74LS164输;出为00H,使所有列线为0,KL0:JNB TI,KL0;串行输出完否?,CLR TI;串行输出完毕,清TI,KL1:JNB P3.4,PK1;第1行有闭合键吗?如有,跳;PK1进行处理,JB P3.5,KL1;在第2行键中有闭合键吗?无闭;合键跳KL1,PK1:ACALL DL10
22、;调用延时10ms子程序DL10,软;件消除抖动,JNB P3.4,PK2;判是否抖动引起的?,JB P3.5,KL1,PK2:MOV R7,08H;不是抖动引起的,MOV R6,0FEH;判别是哪一个键按下,FEH为最;左一列为低,MOV R3,00H;R3为列号寄存器,MOV A,R6;,KL5:MOV SBUF,A;列扫描码从串行口输出,KL2:JNB TI,KL2;等待串行口发送完,CLR TI;串行口发送完毕,清TI标志,JNB P3.4,PKONE;读第1行线状态,第1行有键闭,;合,跳PKONE处理,JB P3.5,NEXT;读第2行状态,是第2行某键否?,MOV R4,08H;
23、第2行键中有键被按下,行首键;号08H送R4,AJMP PK3;,PKONE:MOV R4,00H;第1行有键按下,行首键号00H送R4,PK3:MOV SBUF,00H;等待键释放,发送00H使所有列;线为低,KL3:JNB TI,KL3;,CLR TI;发送完毕,清标志,KL4:JNB P3.4,KL4;判行线状态,JNB P3.5,KL4;,MOV A,R4;两行线均为高,说明键已释放,ADD A,R3;计算得键码A,RET,NEXT:MOV A,R6;列扫描码左移一位,判下列键,RL A;,MOV R6,A;记住列扫描码于R6中,INC R3;列号增1,DJNZ R7,KL5;列计数器
24、R7减1,8列键都检查;完?,AJMP KEYI;8列键扫描完毕,开始下一个键;盘扫描周期,DL10:MOV R7,0AH;延时10ms子程序,DL:MOV R6,0FFH,DL6:DJNZ R6,DL6,DJNZ R7,DL,RET,10.3.3 利用通用键盘/显示器接口芯片8279实现键盘/显示器接口,Intel 8279芯片:通用可编程键盘/显示器接口芯片。,对键盘部分提供扫描工作方式,能对64个键键盘阵列不断扫描,自动消抖,自动识别出闭合的键并得到键号,能对双键或N键同时按下进行处理。,扫描方式作的显示接口,可显示多达16位的字符。,1.8279的引脚及内部结构,2.引脚功能介绍,(1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 键盘 显示器 打印机 接口 设计

链接地址:https://www.31ppt.com/p-6512317.html