C51与键盘、显示器、拨盘、打印机的接口设计.ppt
《C51与键盘、显示器、拨盘、打印机的接口设计.ppt》由会员分享,可在线阅读,更多相关《C51与键盘、显示器、拨盘、打印机的接口设计.ppt(112页珍藏版)》请在三一办公上搜索。
1、1,第10章 89C51与键盘、显示器、拨盘、打印机的接 口设计大多数应用系统,都要配置输入外设和输出外设。输入外设:键盘、BCD码拨盘等;输出外设:LED显示器、LCD显示器、打印机等。10.1 LED显示器接口原理 LED(Light Emitting Diode):发光二极管的缩写。显示器前面冠以“LED”。10.1.1 LED显示器的结构 常用的LED显示器为8段(或7段,8段比7段多了一个小数点“dp”段)。有共阳极和共阴极两种。如图10-1所示。,2,图10-1 8端LED结构及外形,3,为使LED显示不同的符号或数字,要为LED提供段码(或称字型码)。提供给LED显示器的段码(字
2、型码)正好是一个字节(8段)。各段与字节中各位对应关系如表10-1。,按上述格式,8段LED的段码如表10-2所示。,表10-1 段码与字节中各位对应关系,4,表10-2 LED段码(8段),表10-2只列出了部分段码,可根据实际情况选用,也可重新定义。,5,N个LED显示块有N位位选线和8N根段码线。段码线控制显示字符的字型,而位选线为各个LED显示块中各段的公共端,它控制该LED显示位的亮与暗。,10.1.2 LED显示器工作原理,图10-2是4位LED显示器的结构原理图。,图10-2 4位LED显示器的结构原理图,6,1.LED静态显示方式 各位的公共端连接在一起(接地或+5V)。每位的
3、段码线(adp)分别与一个8位的锁存器输出相连。之所以称为静态显示,是因为各个LED的显示字符一经确定,相应锁存器的段码输出将维持不变,直到送入另一个字符的段码为止。静态显示器的显示的亮度高。图10-3:4位静态LED显示器电路。该电路各位可独立显示,只要在该位的段码线上保持段码电平,该位就能保持相应的显示字符。,7,由于各位分别由一个8位的数据输出口(如82C55的PA、PB、PC口)控制段码线,故在同一时间内,每一个显示的字符可以各不相同。这种显示方式编程容易,但是占用口线较多。如图10-3,若用IO口线接口,要占用4个8位IO口,若用锁存器(如74LS373)接口,要用4片74LS373
4、芯片。如果显示的位数增多的话,则需要增加锁存器。在显示位数较多的情况下,一般都采用动态显示方式。,8,2.LED动态显示方式 在多位LED显示时,为简化硬件电路,通常将所有位的段码线相应段并在一起,由一个8位I/O口控制,形成段码线的多路复用;而各位的共阳极或共阴极分别由相应的I/O线控制,形成各位的分时选通。图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。由于各位的段码线并联,8位I/O口输出端的段码对各个显示位来说都是相同的。因此,在同一时刻,如果各位位选线都处于选通状态,4位LED将显示相同的字符。,9,若要各位都显示出与本位相应的显
5、示字符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上要输出相应的字符的段码。这样,在同一时刻,4位LED中只有选通的那一位显示出字符,而其他三位则是熄灭的。下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示的字符的段码,此时只有选通位显示出相应的字符,其他位熄灭的。如此循环下去。,10,虽然这些字符是在不同的时刻出现的,而在同一时刻,只有一位显示,其他位熄灭,但由于LED显示器的余辉和人眼的“视觉暂留”作用,只要每位显示间隔足够短,则可以造成“多位同时亮”的假象,达到同时显示的
6、效果。LED不同位显示的时间间隔应根据实际情况而定。发光二极管从导通到发光有一定的延时,导通时间太短,则发光太弱,人眼无法看清;但也不能太长,因为要受限于临界闪烁频率,而且此时间越长,占用单片机时间越多。另外,显示位数增多,也将占用大量的单片机时间,因此动态显示的实质以牺牲单片机时间来换取IO端口的减少。,11,图10-5为8位LED动态显示200的过程。图(a)是显示过程,某一时刻,只有一位LED被选通显示,其 余位则是熄灭的;图(b)是实际显示结果,人眼看到的是8位稳定的同时显示的字符。,图10-5 8位LED动态显示过程和结果,12,10.2 键盘接口原理1.键盘输入的特点 单片机系统中
7、键盘有两种:机械式键盘和薄膜式键盘。键盘:一组按键开关的集合。一个电压信号通过键盘开关机械触点的断开、闭合,其行线电压的输出波形如图10-6。,图10-6 键盘开关及其波形,抖动期(t1、t3):一般为510ms;稳定的闭合期间(t2):一般为十分之几秒到几秒;断开期(t0、t4),13,2.按键的确认检测行线电平(图10-6)高电平:断开;低电平:闭合。为了确保对一次按键动作只确认一次按键有效,必须消除抖动期t1和t3的影响。3.如何消除按键的抖动 常用软件来消除按键抖动。基本思想:检测到有键按下,键对应的行线为低,软件延时10ms后,行线如仍为低,则确认该行有键按下。当键松开时,行线变高,
8、软件延时10ms后,行线仍为高,说明按键已松开。采取以上措施,躲开了两个抖动期t1和t3的影响。,14,10.2.2 键盘接口的工作原理独立式按键接口和行列式键盘接口。1.独立式键盘接口 各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。此种接口适于键数较少或操作速度较高的场合。图10-7(a)为中断方式的独立式键盘工作电路。只要有一个键按下,与门的输出即为低电平,并向89C51发出中断请求,在中断服务程序中,对按下的键进行识别。图10-7(b)为查询方式的独立式键盘工作电路。按键直接与89C51的IO口线相连,通过读IO口,判断各IO口线的电平的状态,即
9、可以识别出按下的键。,15,图10-7 独立式键盘接口电路,16,图10-8为82C55扩展I/O口的独立式按键接口电路。,图10-8 通过82C55扩展的独立式键盘接口,在各种独立式键盘电路中,各按键均采用了上拉电阻,以确保在按键断开时候,各I/O口又确定的高电平。如果输入口线内部已有上拉电阻,则外电路上拉电阻可省去。,17,2.行列式(矩阵式)键盘接口,用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图10-9所示。,按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。,图10-9 44行列式键盘结构,18,(1)行列式键盘工作原理 按键设在行、列
10、线交点上。行线通过上拉电阻接到+5V上。无键按下,该行线为高电平;当有键按下时,行线电平由列线的电平来决定。由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。(2)按键的识别方法a.扫描法 图10-9(b)中3号键被按下为例,来说明此键时如何被识别出来的。,19,识别键盘有无键被按下的方法,分两步进行:第1步:识别键盘有无键按下。把所有的列线均置为0电平,然后检查各行线是否都为高电平,如果不全为高电平,则说明该行有键按下,否则说明无键按下。当键3按下时,第1行为低电平,但还不能确定是键3被按下(键2、1或0按下都可以使第1行线为低
11、电平)第2步:如有键被按下,识别出具体的按键。扫描法:在某一时刻只让一条列线处于低电平,其余所有列线处于高电平。当第1列为低电平,其余列为高电平时,因为是键3被按下,所以第1行的行线仍处于高电平;依次类推,直到第4列为低电平时,第1行的行线变为低电平。可判断出第1行第4列被按下。上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。,20,b.线反转法 只需两步便能获得此按键所在的行列值,线反转法的原理如图10-10。假设3号键被按下。第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。P1.0
12、P1.3全为“0”,读P1.4P1.7的状态,则P1.4=0,其余为1。第1行电平有变化,说明第1行有键按下。第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。P1.4P1.7全为“0”,读P1.0P1.3的状态,则P1.0=0,其余为1。第4行电平有变化,说明第4列有键按下。结合上述两步,可确定按键所在行和列。,21,图10-10 线反转法原理图,22,10.2.3 键盘的工作方式 单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。1.编
13、程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。工作过程:(1)在键盘扫描子程序中,先判断有无键按下。(2)用软件来消除按键抖动的影响。如有键按下,则进行下一步。(3)求按下键的键号。(4)等待按键释放后,再进行按键功能的处理操作。,23,2.定时扫描工作方式 利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。3.中断工作方式 只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。键盘所做的工作分为三个层次。第1层:单片机如何来监视键盘的输入。三种工作方式:编程扫描;定时扫描;中断扫描。第2层:确定具体按键的键号。体现在按键的识别方法上就是:扫描
14、法;线反转法。第3层:执行键处理程序。,24,10.3 键盘/显示器接口设计实例 一般把键盘和显示器放在一起考虑。10.3.1 利用并行I/O芯片实现键盘/显示器接口,图10-11:8031用扩展I/O接口芯片81C55实现的6位LED显示32键的键盘/显示器接口电路。图中81C55也可用82C55来替代。,25,89C51外扩一片8155H。RAM地址:7E00H7EFFH。I/O口地址:7F00H7F05H。PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极显示器的位扫描口。PB口作为显示器段码输出口,PC口作为键盘的行线状态的输入口。75452:反相驱动器,7407:同相驱动器。1动
15、态显示程序设计 内部RAM 6个显示缓冲单元:79H7EH,存放要显示的6位数据。81C55的PB口输出相应位的段码,依次改变PA口输出为高的位使某一位显示某一字符,其它位为暗。动态地显示出由缓冲区中显示数据所确定的字符。,26,DIR:MOV R0,79H;置缓冲器指针初值 MOV R3,01H;位选码的初值送R3 MOV A,R3LD0:MOV DPTR,7F01H;位选码PA口 MOVX DPTR,A;(PA.0位)最左边LED亮 INC DPTR;数据指针指向PB口 MOV A,R0;显示数据A ADD A,0DH;加偏移量 MOVC A,APC;根据显示数据来查表取段码DIR1:MO
16、VX DPTR,A;段码8155H PB口 ACALL DL1ms;该位显示1ms INC R0;指针指向下一个数据单元 MOV A,R3;位选码送入A中 JB Acc.5,LD1;判断是否扫描到最右边,到则返回 RL A;位选码左移一位,准备让下一位LED亮 MOV R3,A;位选码送R3中保存 AJMP LD0 LD1:RET,27,DSEG:DB 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
17、DL1ms:MOV R7,02H;延时1ms子程序 DL:MOV R6,0FFHDL6:DJNZ R6,DL6 DJNZ R7,DL RET,28,2键盘程序设计(1)判别键盘上有无键闭合 方法为扫描口PA0PA7输出全0,读PC口的状态,若PC0PC3全为1(键盘上的行线全为高电平),则键盘上没有键闭合,若PC0PC3不全为1,则有键处于闭合状态。(2)去除键的机械抖动 判别出键盘上有键闭合后,延迟一段时间再判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合期,否则认为是键的抖动。(3)判别闭合键的键号 方法:对键盘的列线进行逐列扫描,扫描口PA0PA7依次输出下列编码,即只有
18、一列为低电平,其余各列为高电平。,29,相应地,依次读PC口的状态,若PC0PC3全为“1”,则列线为“0”的这一列上没有键闭合。闭合键的键号等于为低电平的列号加上行线为低电平的行的首键号。例如,PA口输出11111101时读出PC3PC0为1101,则1行1列相交的键处于闭合状态,第一列的首键号为8,列号为1。因此,闭合键的键号N为N=行首键号列号=81=9,30,(4)使CPU对键的一次闭合仅作一次处理键盘程序的流程如图10-12。,图10-12 键盘子程序流程图,31,KEYI:ACALL KS1;调用判有无键闭合子程序 JNZ LK1;有键闭合,跳LK1NI:ACALL DIR;无键闭
19、合,调显示子程序,延迟;6ms后,跳KEYI AJMP KEYILK1:ACALL DIR;可能有键闭合,软件延迟12ms去抖 ACALL DIR ACALL KS1;调用判有无键闭合子程序 JNZ LK2;经去抖,判键确实闭合,跳LK2 ACALL DIR;调用显示子程序延迟6ms AJMP KEYI;抖动引起,跳KEYI,32,LK2:MOV R2,#0FEH;列选码R2 MOV R4,#00H;R4为列号计数器LK4:MOV DPTR,#7F01H;列选码81C55的PA口 MOV A,R2 MOVX DPTR,A INC DPTR;数据指针增2,指向PC口 INC DPTR MOVX
20、A,DPTR;读81C55 PC口JB Acc.0,LONE;0行线为高,无键闭合,跳LON,转判1行 MOV A,00H;0行有键闭合,首键号0A AJMP LKP;跳LKP,计算键号,33,LONE:JB Acc.1,LTW0;1行线为高,无键闭合,跳LTW0判2行 MOV A,08H;1行有键闭合,首键号8A AJMP LKPLTW0:JB A.2,LTHR;2行线为高,无键闭合,跳LTHR判3行 MOV A,10H;2行有键闭合,首键号10HA AJMP LKP;跳LKP,计算键号LTHR:JB Acc.3,NEXT;3行线为高,无键闭合;跳NEXT,准备下一列扫描 MOV A,18H
21、;3行有键闭合,首键号18HA,34,LKP:ADD A,R4;计算键号:首键号列号=键号 PUSH A;键号进栈保护LK3:ACALL DIR;调用显示子程序,延时6ms ACALL KS1;调用判有无键闭合子程序,延时6ms JNZ LK3;判键释放否,未释放,则循环 POP A;键已释放,键号出栈A RETNEXT:INC R4;列计数器加1,为下一列扫描作准备 MOV A,R2;判是否已扫到最后一列(最右一列)JNB Acc.7,KND;键扫描已扫到最后一列;跳KND,重新进行整个键盘扫描 RL A;未扫到最后一列,位选码左移一位 MOV R2,A;位选码R2 AJMP LK4KND:
22、AJMP KEYI,35,KS1:MOV DPTR,#7F01H;判有无键闭合子程序;全“0”扫描口(PA口)MOV A,#00H;即列线全为低电平 MOVX DPTR,A INC DPTR;DPTR增2,指向PC口 INC DPTR MOVX A,DPTR;从PC口读行线的状态 CPL A;行线取反,如无键按下,则A为0 ANL A,0FH;屏蔽无用的高4位 RET,36,10.3.2 键盘/显示器专用芯片8279实现的键盘/显示器接口 采用并行I/O口实现的键盘/显示器接口电路,需要用户自行编写键盘/显示器的程序。当键盘中有双键或N键同时按下时,还要考虑编写处理这种情况的程序端。目前已经有
23、各种。专用的键盘/显示器接口芯片可供用户选择。用户可省去编写键盘/显示器动态扫描程序的繁琐工作,只需对键盘/显示器接口芯片中的各个控制寄存器进行正确的设置以及与键盘/显示器进行正确的连接即可。常用的专用可编程键盘/显示器接口电路芯片为Intel 8279和HD7279A。,37,10.3.2 键盘/显示器专用芯片8279实现的键盘/显示器接口 Intel8279芯片是一种可编程的专用键盘/显示器接口电路芯片,它能同时完成监视键盘输入和显示控制两种功能。8279芯片对键盘部分提供扫描工作方式,能对64个按键的键 盘阵列不断扫描,自动消除抖动,自动识别出闭合的键并得到键号,能对双键或N个键同时按下
24、进行处理。显示部分为LED或其他显示器提供按扫描方式工作的显示接口,可显示多达16位的字符或数字。,38,1.8279的引脚及内部结构,图10-13 8279的引脚功能图,39,图10-14 8279的引脚功能,40,2.引脚功能介绍(1)与单片机的接口引脚【P199】DB0DB7:数据总线、双向、三态,与单片机数据总线相连,在单片机和8279之间传送命令或数据。接单片机P0口。CLK:系统时钟,输入线。用于8279内部定时,以产生其工作所需的时序。可接89C51的/ALE(时钟频率6分频)。RESET:复位输入线,高电平有效。8279被复位,复位后的状态如下:*16个字符左边输入显示方式*编
25、码扫描键盘、双键锁定方式/CS:片选线,输入,低电平有效。/CS=0,8279被选中,允许单片机对其进行读、写操作。/CS=1,禁止对9279进行读、写。,41,A0:命令字/状态字、数据选择 A0=1,89C51写入8279的是命令字节;读出的是状态字节。A0=0,89C51写入或读出的字节均为数据。/RD、/WR:读、写控制引脚,输入线,低电平有效。这两个来自单片机的控制信号,控制单片机对8279的读、写操作。IRQ:中断请求线,高电平有效。在键盘方式中,当键盘RAM(先进先出方式)中存有按下键的数据时,IRQ为高电平,向CPU提出中断申请。CPU每次从键盘RAM中读出一个字节数据时,IR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 键盘 显示器 打印机 接口 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5416996.html