AT89C51与输入外设和输出外设的接口设计.ppt
《AT89C51与输入外设和输出外设的接口设计.ppt》由会员分享,可在线阅读,更多相关《AT89C51与输入外设和输出外设的接口设计.ppt(106页珍藏版)》请在三一办公上搜索。
1、第10章 AT89C51与输入外设和输出外设的接口设计,输入外设:键盘、BCD码拨盘等;,输出外设:LED显示器、LCD显示器、打印机等。,10.1 LED显示器的显示原理,LED(Light Emitting Diode):发光二极管的缩写。显示器前面冠以“LED”。,10.1.1 LED显示器的结构,常用的LED显示器为8段(或7段,8段比7段多了一个小数点“dp”段)。,有共阳极和共阴极两种。如图10-1所示。,图10-1,为使LED显示不同的符号或数字,要为LED提供段码(或称字型码)。,提供给LED显示器的段码(字型码)正好是一个字节(8段)。各段与字节中各位对应关系如表10-1。表
2、10-1,按上述格式,8段LED的段码如表10-2所示。,表10-2 LED段码(8段),表10-2只列出了部分段码,可根据实际情况选用,也可重 新定义。,N个LED显示块有N位位选线和8N根段码线。,10.1.2 LED显示器工作原理,图10-2是4位 LED显示器的结构原理图。,图10-2,段码线控制显示的字型,,位选线控制该显示位的亮或暗。,静态显示和动态显示两种显示方式。,1.LED静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别与一个8位的锁存器输出相连。,显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。,图10
3、-3:4位静态LED显示器电路。该电路各位可独立显示。,2.LED动态显示方式,所有位的段码线相应段并在一起,由一个8位I/O口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,形成各位的分时选通。,图10-3,图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。,图10-4,图10-5为8位LED动态显示200的过程。,图(a)是显示过程,某一时刻,只有一位LED被选通显示,其 余位则是熄灭的;,图(b)是实际显示结果,人眼看到的是8位稳定的同时显示 的字符。,图10-5,10.2 键盘接口原理10.2.1 键盘输入应解决的问
4、题键盘输入的特点键盘:一组按键开关的集合。行线电压信号通过键盘开关机械触点的断开、闭合,其输出波形如图10-6。,图10-6,2.按键的确认,检测行线电平 高电平:断开;低电平:闭合,,常用软件来消除按键抖动。,基本思想:检测到有键按下,键对应的行线为低,软件延时10ms后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,当键松开时,行线变高,软件延时10ms后,行线仍为高,说明按键已松开。,采取以上措施,躲开了两个抖动期t1和t3的影响。,10.2.2 键盘接口的工作原理独立式按键接口和行列式键盘接口。,1.独立式键盘接口各键相互独立,每个按键各接一根输入线,通过检测输入线的电平
5、状态可很容易判断那个键被按下。,此种接口适于键数较少或操作速度较高的场合。图10-7(a)为中断方式的独立式键盘工作电路图10-7(b)为查询方式的独立式键盘工作电路。,图10-7,图10-8为82C55扩展I/O口的独立式按键接口电路。,图10-8,2.行列式(矩阵式)键盘接口,用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图10-9所示。,按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。,图10-9,(1)行列式键盘工作原理,无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。,由于行、列线为多键共用,各按键彼此将相互发生影响
6、,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。,(2)按键的识别方法,a.扫描法,图10-9 中3号键被按下为例,来说明此键时如何被识别出来的。,识别键盘有无键被按下的方法,分两步进行:,第1步:识别键盘有无键按下;,第2步:如有键被按下,识别出具体的按键。,把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。,上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。,b.线反转法,只需两步便能获得此按键所在的行列值,线反转法的原理如图10-10。,图10-1
7、0,第1步:列线输出为全低电平,则行线中电平由高变低的所在 行为按键所在行。,第2步:行线输出为全低电平,则列线中电平由高变低所在列为 按键所在列。,结合上述两步,可确定按键所在行和列。,10.2.3 键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。,原则:即要保证能及时响应按键操作,又不要过多占用CPU的 工作时间。,通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。,1.编程扫描方式,只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。,工作过程:,(1)在键盘扫描子程序中,先判断有无键按下。,方法:PA口8位输出全0,读PC口低4位状态,若P
8、C0PC3为全 1,则说明键盘无键按下;若不全为1,则说明键盘可能 有键按下。,(2)用软件来消除按键抖动的影响。如有键按下,则进行下 一步。,(3)求按下键的键号。,(4)等待按键释放后,再进行按键功能的处理操作。,2.定时扫描方式,利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。,3.中断扫描方式,只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。,键盘所做的工作分为三个层次。,第1层:单片机如何来监视键盘的输入。三种工作方式:编 程扫描定时扫描中断扫描。,第2层:确定具体按键的键号。体现在按键的识别方法上就 是:扫描法;线反转法。,第3层:执行键处理
9、程序。,10.3 键盘/显示器接口设计实例,一般把键盘和显示器放在一起考虑。,10.3.1 利用AT89C51单片机串行口实现的键盘/显示器接口,当单片机的串口未作它用时,可使用串口来外扩键盘/显示 器。应用串口方式0的输出方式,外扩移位寄存器 74LS164,构成键盘/显示器接口,硬件接口电路如图10-11,图10-11,图10-11所示的8个74LS164:74LS164(0)74LS164(7)作为8位 LED的段码输出口,AT89C51的P3.4、P3.5作为两行键的行状 态输入线。P3.3作为TXD引脚同步移位脉冲输出控制线,P3.3=0时,与门 输入为0,禁止同步移位脉冲输出。这种
10、静态显示方式的优点是亮度大,很容易做到显示不闪烁,且CPU不必频繁地为显示服务,因而主程序可不必扫描显示 器,软件设计比较简单,从而使单片机有更多的时间处理其 他事务。下面是显示子程序和键盘扫描子程序的清单。显示子程序:DIR:SETBP3.3;P3.3=1,允许TXD引脚同步移位脉冲输出 MOVR7,08H;送出的段码个数,R7为段码个数计数器 MOVR0,7FH;7FH78H为显示数据缓冲区DL0:MOV A,R0;取出要显示的数送A,ADD A,0DH;加上偏移量 MOVC A,APC;查段码表SEGTAG,取出段码 MOV SBUF,A;将段码送SBUFDL1:JNB TI,DL1;输
11、出段码,查询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,0F8H,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:MO
12、V A,00H;判断有无键按下,所有列线为0的编码送A MOV SBUF,A;扫描键盘的(8)号74LS164输出为00H,;使所有列线为0KL0:JNB TI,KL0;串行输出完否?CLR TI;串行输出完毕,清TIKL1:JNBP3.4,PK1;第一行有闭合键吗?如有,跳PK1进行处理 JB P3.5,KL1;在第二行键中有闭合键吗?无闭合键跳KL1PK1:ACALL DL10;调用延时10ms子程序DL10,软件消除抖动 JNB P3.4,PK2;判断是否由抖动引起?JB P3.5,KL1PK2:MOV R7,08H;不是抖动引起的 MOV R6,0FEH;判别是哪一个键按下,FEH为最
13、左一列为低 MOV R3,00H;R3为列号寄存器,MOV A,R6KL5:MOV SBUF,A;列扫描码从串行口输出KL2:JNB TI,KL2;等待串行口发送完 CLR TI;串行口发送完毕,清TI标志 JNB P3.4,PKONE;读第一行线状态,第一行有键闭合,跳;PKONE JB P3.5,NEXT;读第二行线状态,是第二行某键否?MOV R4,08H;第二行键中有键被按下,行首键号08H;送R4 AJMP PK3PKONE:MOV R4,00H;第一行键中有键按下,行首键号00H送;R4PK3:MOV SBUF,00H;等待键释放,发送00H使所有列线为低KL3:JNB TI,KL
14、3 CLR TI;发送完毕,清标志KL4:JNB P3.4,KL4;判行线状态 JNB P3.5,MOV A,R4;两行线均为高,说明键已释放 ADD A,R3;计算得键码A RETNEXT:MOV A,R6;列扫描码左移一位,判下一列键是否按下 RL A MOV R6,A;记住列扫描码于R6中 INC R3;列号增1 DJNZ R7,KL5;列计数器R7减1,8列键都检查完否?AJMP KEYI;8列键扫描完毕,开始下一个键盘扫描周期DL10:MOV R7,0AH;延时10ms子程序DL:MOV R6,0FFHDL6:DJNZ R6,DL6 DJNZ R7,DL RET,10.3.2 专用芯
15、片HD7279A实现的键盘/显示器接口 目前已有各种专用的可编程的键盘/显示器接口芯片可供用户选择。可省去编写键盘/显示器动态扫描程序的烦琐工作,只需对键盘/显示器接口芯片中的各个控制寄存器进行正确的设置以及单片机与键盘/显示器接口芯片进行正确的连接即可。1各种键盘/显示器专用芯片简介目前专用的键盘/显示器接口芯片种类繁多,它们各有特点及优缺点,总体趋势是并行接口芯片逐渐退出历史舞台,串行接口芯片越来越多的得到应用。其中,串行键盘/显示器接口芯片HD7279是目前广泛使用的专用的键盘/显示器接口芯片,以前设计的经典方案,是采用Intel公司于20世纪80年代推出的8279芯片来控制键盘与显示器
16、。但是8279的驱动电流较小,需要加上驱动电路,如8个三级管及相应的基极限流电阻,元器件较多,电路复杂,占用较大的PCB面积,综合成本高。而且8279采用并行方式与单片机通信,占用多达13条的口线,对单片机系统造成了极大的浪费,故8279在今天已经渐渐淡出市场。目前流行的键盘/显示器接口芯片均采用串行通信方式,占用口线少。常见的键盘/显示器接口芯片有:周立功公司生产的ZLG7289A、ZLG7290B、MAX7219、南京沁恒公司生产的CH451、BC7281和HD7279等,下面给予简要介绍。,(1)ZLG7290B。ZXLG7290B芯片采用I2C总线结构,实现8位LED显示和64键的键盘
17、管理,应用时需要外接晶振,使用按键功能时要接8个二极管,电路稍显复杂,且每次I2C通信间隔过长(10ms)。ZLG7290B的功能包括:闪烁、段点亮、段熄灭、功能键、连击键计数等。其中,功能键实现了组合按键,这在各类芯片中极具特点;连击键计数实现了识别长按键的功能,这也是ZLG7290B所独有的。(2)MAX7219。MAX7219芯片采用串行SPI接口,仅是单纯驱动显示器,没有键盘管理功能,功能较为单一且价格较高,但抗干扰能力较强。,(3)BC7281。最高可驱动16位LED显示和实现64键的键盘管理,可实现闪烁、段点亮、段熄灭等功能。其最大特点是通过外接移位寄存器驱动16位LED显示。但其
18、所需外围电路较多,占用PCB空间较大,且在驱动16位LED显示时由于采用动态扫描方式工作,电流噪声过大。(4)CH451。CH451芯片可实现8位LED显示和64键的键盘管理,但其抗干扰能力较差。(5)HD7279。HD7279芯片功能强,具有一定的抗干扰能力,与单片机间采用串行通信,外围电路简单,价格低廉。由于HD7279具有上述优点,因此在键盘/显示器接口的设计中得到了较为广泛的应用。2专用键盘/显示器芯片HD7279A简介 HD7279A能同时驱动8个共阴极LED显示器(或64个独立的LED,发光二极管)和64(88)键的键盘矩阵。HD7279A采用的是动态循环显示方式,芯片具有如下特点
19、:与AT89C51单片机间采用串行接口方式,仅占用4条口线,接口简单;内部含有译码器,可直接接收BCD码或十六进制码,同时具有两种译码方式,实现LED显示器位寻址和段寻址,可以方便地控制每位LED显示器中任意一段是否发光;内部含有驱动器,可以直接驱动25.4mm及以下LED显示器;多种控制命令,如消隐、闪烁、左移、右移和段寻址、位寻址等;含有片选信号输入端,容易实现多于8位显示器或多于64键的键盘控制;具有自动消除键抖动并识别按键键值的功能。,HD7279A芯片占用口线少,外围电路简单,还具有较高的性能价格比,已得到广泛应用。(1)引脚说明与电气特性HD7279A芯片为28引脚标准双列直插式封
20、装,单一的+5V供电。引脚如图10-12所示,引脚功能如表10-3所列。位驱动输出端DIG0DIG7可分别连接8只LED数码管的共阴极;段驱动输出端SASG分别连接至LED数码管的ag段的阳极,而DP连至小数点dp的阳极。DIG0DIG7和DP及SASG还分别是64键的键盘的列线和行线的端口,完成对键盘的译码和键值识别。88阵列中的每个键值可用读键盘命令读出,键值范围是00H3FH。,图10-12,HD7279A芯片与单片机连接仅需4条口线:CS*,DATA,CLK和KEY。CS*:当单片机访问HD7279A芯片(写入命令、显示数据、位地址、段地址或读出键值)时,应将CS*置为低电平。DATA
21、:串行数据端,当单片机向HD7279A芯片发送数据时,DATA为输入端;当单片机从HD7279A芯片读入键值时,DATA为输出端。CLK:数据串行传送的同步时钟输入端,时钟的上升沿将数据写入HD7279A中或从HD7279A中读出数据。KEY:按键信号输出端,在无键按下时为高电平,在有键按下时变为低电平,并且一直保持到该按下键至释放为止。,RESET*:复位端,由低电平变为高电平,并经过1825ms复位结束。通常,该端接+5V即可。若对可靠性要求较高,则可外接复位电路,或直接由单片机控制。RC:用于外接振荡元件,其典型值:R=1.5k,C=15pF。NC:必须悬空,即不得有任何外部连接。表10
22、-4所列为HD7279A的电气特性。,(2)控制命令介绍HD7279A芯片的控制命令由6条纯命令、7条带数据命令和1条读键盘命令组成。纯命令(6条)。所有纯命令都是1字节命令,如表10-5所列。,带数据命令(7条)。均由双字节组成,第1字节为命令标志码(有的还有位地址),第2字节为显示内容。按方式0译码显示命令 此命令又称按方式0译码下载命令。命令中的a2、a1、a0表示LED数码管的位地址,即显示数据是送给哪一位LED的,L1表示LED最低位,L8表示LED最高位,具体位地址译码表如表10-6所示。命令中的d3、d2、d1、d0为显示数据,收到这些数据后,HD7279A按表10-7所示的规则
23、译码和显示。dp为小数点显示控制位,dp=1时,小数点显示,dp=0时,小数点不显示。命令中的为无影响位。,b.按方式1译码显示命令,此命令又称方式1译码下载命令。该命令和按方式0译码显示的含义基本相同,不同的是译码方式为1,LED显示的内容与十六进制相对应,如表10-8所示。a2、a1、a0位地址译码表如表10-9所示。,例如,命令第一字节为C8H,第二字节为09H,则L1位LED显示内 容为9,小数点dp熄灭;命令第一字节为C9H,第二字节为 8FH,则L2位LED显示内容为F,小数点dp点亮。c.不译码显示命令 此命令又称不译码下载命令。a2、a1、a0仍为位地址,译码表 如表10-8所
24、示。第2字节仍为LED显示内容,其中dp和AG分别代表LED的小数点 和对应的段,当取值为1时,该段点亮;取值为0时,该段熄 灭,如表10-9所示。,该命令可在指定位上显示字符。例如,若命令第一字节为95H,第二字节为3EH,则在L6位LED上显示字符U,小数点dp 熄灭。d闪烁控制命令如下:,例如,命令第一字节为88H,第二字节为97H,则L7、L6、L4位LED闪烁。e消隐控制命令如下:,该命令规定了每个数码管的消隐属性。d8d1分别对应L8L1位数码管,其值为1时,LED显示;值为0时,消隐,如表10-11所示。应注意至少要有一个LED数码管保持显示,如果全部消隐,则该命令无效。,例如,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89C51 输入 外设 输出 接口 设计
链接地址:https://www.31ppt.com/p-5415937.html