C51与键盘、显示器、拨盘、打印机的接口设计.ppt

上传人:小飞机 文档编号:5416996 上传时间:2023-07-05 格式:PPT 页数:112 大小:2.27MB
返回 下载 相关 举报
C51与键盘、显示器、拨盘、打印机的接口设计.ppt_第1页
第1页 / 共112页
C51与键盘、显示器、拨盘、打印机的接口设计.ppt_第2页
第2页 / 共112页
C51与键盘、显示器、拨盘、打印机的接口设计.ppt_第3页
第3页 / 共112页
C51与键盘、显示器、拨盘、打印机的接口设计.ppt_第4页
第4页 / 共112页
C51与键盘、显示器、拨盘、打印机的接口设计.ppt_第5页
第5页 / 共112页
点击查看更多>>
资源描述

《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

26、Q就变为低电平。如果键盘RAM中还有未读完的数据,IRQ将再次变为高电平,再次提出中断请求。,42,(2)扫描信号输出引脚 SL0SL3:扫描输出线。用来扫描键盘和显示器。可编程设定为编码输出,即SL0SL3需外接4-16译码器,输出16取1的扫描信号。也可编程设定为译码输出,即由SL0SL3直接输出4取1的扫描信号。(3)与键盘连接的引脚 RL0RL7:输入线。键盘矩阵的行信号输入线。SHIFT:输入线,高电平有效。通常用作键盘上、下档功能的控制键。CNTL/STB:输入线,高电平有效。在键盘方式时,通常用来作为键盘控制功能键使用。,43,(4)与显示器连接的引脚 OUTA0OUTA3(A组

27、显示数据)、OUTB0OUTB3(B组显示数据):向LED显示器输出的段码,与扫描信号线SL0SL3同步。两组可独立使用,也可合并使用。/BD:消隐显示控制,低电平有效。该输出信号用于显示位切换时的显示消隐或将显示器的显示消隐。3.8279的基本功能部件(1)扫描计数器 扫描计数器有两种输出方式。编码方式:扫描线SL0SL3输出,经外部4-16译码器译码后,为键盘和显示器提供16取1的扫描线。译码方式:计数器的最低二位在8279内部译码后,从SL0SL3输出,为键盘和显示器提供4取1扫描线。,44,(2)键盘去抖动及回复缓冲器 8个引脚RL0RL7被接到键盘的行线。在逐列扫描时,当某一键闭合,

28、消抖电路延时等待10ms之后,再检验该键是否仍闭合。若闭合,则该键的行、列地址和附加的移位、控制状态一起形成键盘数据,送入8279内部的键盘RAM存储器。格式为:,控制(CNTL)和移位(SHIFT)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)是被按键的列编码,而回复(D2、D1、D0)则是被按键的行编码。,45,(3)键盘RAM及其状态寄存器 键盘RAM:8字节先进先出(FIFO)存储器。内部的FIFO状态寄存器存放FIFO的工作状态,如FIFO是空还是满,其中存有多少字符,是否操作出错等等。当FIFO存储器空间不足时,状态逻辑将产生IRQ=1信号,向单片机发出中断申请。(4)

29、显示RAM和显示地址寄存器 显示RAM:存显示数据。16个字节,可存放16位显示信息。显示RAM的输出与显示扫描配合,同时轮流驱动被选中的显示位,使显示器呈现稳定的显示(动态扫描)。,46,4.8279的命令字和状态字 命令字:D7、D6、D5为命令特征位,来区分8条不同的命令字。状态字:主要用于键盘工作方式,以指示键盘RAM中的字符数和有无错误发生。,47,5.8279与键盘/显示器的接口 图10-15为8279与8位显示器,48键盘的接口电路。键盘的行线接8279的RL0RL3,8279芯片选用外部译码方式,SL0SL2经74LS138(1)译码输出,接键盘的列线实现键盘逐列扫描。SL0S

30、L3又由74LS138(2)译码输出,经驱动后到显示器各位的公共阴极,进行逐位扫描显示。输出线OUTB0OUTB3、OUTA0OUTA3作为8位段数据输出口,输出段码。当位切换时,/BD输出为低电平,使74LS138(2)输出全为高电平,显示消隐。当键盘上出现有效的闭合键时,键输入数据自动进入8279芯片的键盘RAM存储器,并向89C51请求中断,89C51单片机响应中断读取键盘RAM中的键输入数据。若要更新显示器输出,仅需改变显示RAM中的内容。图10-15:8279的命令/状态口地址为7FFFH,数据口地址为7FFEH。,48,图10-15 89C51单片机通过8279芯片与显示器键盘的接

31、口电路,49,8279初始化程序:INITI:SETB EX1;允许外部中断1中断 MOV DPTR,#7FFFH;命令/状态口地址写入DPTR MOV A,#0D1H;控制字D1H送A MOVX DPTR,A;向命令/状态口写入控制字LP:MOVX A,DPTR;读8279的状态 JBAcc.7,LP MOVA,#00H MOVX DPTR,A MOV A,2AH MOVX DPTR,A SETB EA,50,键输入中断服务程序:PINT1:PUSH PSW PUSH DPH PUSH DPL PUSH Acc MOV DPTR,7FFFH;向命令口写入读键盘RAM命令 MOV A,40H

32、MOVX DPTR,A MOV DPTR,7FFEH;读键输入值 MOVX A,DPTR CJNE A,37H,PRI1;判输入停机命令否 SETB 20HPRI1:POP Acc POP DPL POP DPH POP PSW RETI,51,显示子程序:DIR:MOV DPTR,#7FFFH;输出写显示RAM命令 MOV A,#90H MOVX DPTR,A MOV R0,#70H MOV R7,#08H;送显示RAM数据的个数 MOV DPTR,#7FFEHDL0:MOV A,R0 ADD A,#05H;05H为查表偏移量 MOVC A,A+PC;查表得到段码 MOVX DPTR,A;写

33、入显示RAM INC R0;显示数据单元地址增1 DJNZ R7,DL0;8个显示数据是否输出完毕 RETADSEG:DB 3FH,06H,5BH,4FH,66H,6DH;段码表(共阴极)DB 7DH,07H,7FH,6FH,77H,7CH.,52,10.3.3 键盘/显示器专用芯片HD7279A实现的键盘/显示器接口 1键盘/显示器专用芯片HD7279A简介 8279芯片是动态循环扫描显示方式,与89C51单片机的接口需要8位数据线,还要扩充译码器、段驱动器和位驱动器,接口电路复杂,占用印制板面积大。本节介绍的HD7279A是键盘/显示器的串行控制芯片,能同时驱动8个共阴极LED显示器(或6

34、4个独立的LED发光二极管)和64(88)键的键盘矩阵。HD7279A采用的也是动态循环显示方式,具有如下特点:,53,(1)与89C51单片机间采用串行接口方式,仅占用4条口线,接口简单;(2)内部含有译码器,可直接接收BCD码或十六进制码,同时具有两种译码方式,实现LED显示器位寻址和段寻址,可以方便地控制每位LED显示器中任意一段是否发光;(3)内部含有驱动器,可以直接驱动25.4mm及以下LED数码管,使外围电路变得简单可靠;(4)多种控制命令,如消隐、闪烁、左移、右移和段寻址、位寻址等;(5)含有片选信号输入端,容易实现多于8位显示器或多于64键的键盘控制;(6)具有自动消除键抖动并

35、识别按键键值的功能。,54,HD7279A芯片占用口线少,外围电路简单,还具有较高的性能价格比,已在智能仪器、家用电器、控制面板等单片机应用领域日益获得广泛应用。(1)引脚说明与电气特性 HD7279A芯片为28引脚标准双列直插式封装,单一的+5V供电。引脚如图10-16所示,引脚功能如表10-6所列。【P209】位驱动输出端DIG0DIG7可分别连接8只LED数码管的共阴极;段驱动输出端SASG分别连接至LED数码管的ag段的阳极,而DP连至小数点dp的阳极。DIG0DIG7和DP及SASG还分别是64键的键盘的列线和行线的端口,完成对键盘的译码和键值识别。88阵列中的每个键值可用读键盘命令

36、读出,键值范围是00H3FH。,55,图10-16 HD7279A引脚图,56,57,HD7279A芯片与单片机连接仅需4条口线:/CS,DATA,CLK和KEY。/CS:当单片机访问HD7279A芯片(写入命令、显示数据、位地址、段地址或读出键值)时,应将/CS置为低电平。DATA:串行数据端,当单片机向HD7279A芯片发送数据时,DATA为输入端;当单片机从HD7279A芯片读入键值时,DATA为输出端。CLK:数据串行传送的同步时钟输入端,时钟的上升沿将数据写入HD7279A中或从HD7279A中读出数据。KEY:按键信号输出端,在无键按下时为高电平,在有键按下时变为低电平,并且一直保

37、持到该按下键至释放为止。,58,/RESET:复位端,由低电平变为高电平,并经过1825ms复位结束。通常,该端接+5V即可。若对可靠性要求较高,则可外接复位电路,或直接由单片机控制。RC:用于外接振荡元件,其典型值:R=1.5k,C=15pF。NC:必须悬空,即不得有任何外部连接。表10-7所列为HD7279A的电气特性。,59,(2)控制命令与时序HD7279A芯片的控制命令由6条纯命令、7条带数据命令和1条读键盘命令组成。纯命令(6条)。所有纯命令都是1字节命令,如表10-8所列。,60,61,带数据命令(7条)。均由双字节组成,第1字节为命令标志码(有的还有位地址),第2字节为显示内容

38、。a 按方式0译码显示命令 b 按方式1译码显示命令 c 不译码显示命令 d 闪烁控制命令 e 消隐控制命令f 段点亮命令 g 段关闭命令,62,读取键盘命令,从HD7279A读出当前的按键值。命令第1字节为15H,表示单片机写到HD7279A的是读键命令,而第2字节d7d0为从HD7279A中读出的按键值,其范围为00H3FH。当按键按下时,KEY引脚从高电平变为低电平,并保持到按键释放为止。在此期间,若HD7279A收到来自单片机的读键盘命令15H,则HD7279A输出当前的按键代码。应注意,HD7279A只能给出其中一个按下键的代码,不适合需要2个或2个以上键同时按下的场合。如果确实需要

39、双键组合使用,可在单片机某位I/O引脚接一键,HD7279A所连键盘共同组成双键功能。,63,时序。HD7279A采用串行方式与单片机通信,串行数据从DATA引脚送入或输出,并与CLK端同步。当片选信号/CS变为低电平后,DATA引脚上的数据在CLK脉冲上升沿作用下写入或读出HD7279A的数据缓冲器。,64,图10-17 纯命令时序,a.纯命令时序 单片机发出8个CLK脉冲,向HD7279A发出8位命令,DATA引脚最后为高阻态,如图10-17所示。,65,图10-18 带数据命令时序,b.带数据命令时序 单片机发出16个CLK脉冲,前8个向HD7279A发送8位命令;后8个向HD7279A

40、传送8位显示数据,DATA引脚最后为高阻态,如图10-18所示。,66,c.读键盘命令时序 单片机发出16个CLK脉冲,前8个向HD7279A发送8位命令;发送完之后DATA引脚为高阻态;后8个CLK由HD7279A向单片机返回8位按键值,DATA引脚为输出状态。最后一个CLK脉冲的下降沿将DATA引脚恢复为高阻态,如图10-19所示。,图10-19 读键盘命令时序,67,保证正确的时序是HD7279A正常工作的前提条件。当选定HD7279A的振荡元件RC和单片机的晶振之后,应调节延时时间,使时序中的T1T8满足表10-16所列要求。由表中的数值可知HD7279A的速度,应仔细调整HD7279

41、A的时序,使其运行时间接近最短。,68,69,289C51与HD7279A接口设计(1)硬件接口电路 图10-20是与AT89C51单片机的接口电路,外接振荡元件为典型值,89C51的晶振频率为12MHz。上电后,HD7279A大约经过1518ms的时间才进入工作状态。HD7279A应连接共阴极显示器。对于不使用的按键和显示器,可以不连接。省去的显示器或对显示器设置的消隐、闪烁属性,均不影响键盘的使用。除非不使用显示器,否则串联在DP及SASG引线上的200电阻不可省去。如果不使用键盘,图10-20中与键盘连接的10k电阻和100k电阻便可省去。如果使用键盘,电路中的100k下拉电阻则不可省去

42、。,70,单片机通过KEY引线电平判断是否有键按下。在使用查询方式时,该引脚接至单片机的外部中断输入端,同时应将中断触发控制位设置成下降沿有效触发方式;若设置成电平触发方式,则在按键时间较长时可引发多次中断申请问题。HD7279A采用动态循环扫描方式,如果采用的普通LED显示器亮度不够,则可采用高亮度或超高亮度的型号。图10-20中的3、5、26引脚悬空。,71,图10-20 HD7279硬件电路图,72,(2)接口程序举例 根据图10-20,编制程序实现当有按键按下时,单片机读取该按键代码并将其显示在LED上。程序中使用单片机内RAM位寻址的29H和28H两个单元。29H单元的位地址为48H

43、4FH;28H单元的位地址为40H47H。,73,发送29H单元中的数据到HD7279A,高位在前。程序入口条件为/CS=1,CLK=0。【图10-17】SEND:MOVR2,#08H;发送8位数据 CLR P1.0;/CS=0 LCALLDELY1;延时50s(T1)LOOP1:MOVC,4FH;29H单元的D7位传至HD7279A MOVP1.2,C;数据出现在DATA引脚上 SETBP1.1;置CLK为高电平,数据写入HD7279A MOVA,29H;待发数据左移1位 RLA MOV29H,A LCALLDELY2;延时8s(T2)CLRP1.1;置CLK为低电平 LCALLDELY2;

44、延时8s(T3)DJNZR2,LOOP1;检测8位数据是否发送完毕 CLRP1.2;发送完毕,DATA为低(输出状态)RET;返回,74,读入的键码送到28H单元,高位在前。程序入口条件为/CS=0,CLK=0。【图10-20】RESE:MOVR2,#08H;接收8位数据SETBP1.2;P1.2输出锁存器为高电平,准备输入LCALLDELY3;延时25s(T5)LOOP2:SETBP1.1;置CLK为高电平,读出HD7279A数据LCALLDELY2;延时8s(T6和T7)MOVA,28H;接收数据左移1位RLAMOV28H,AMOVC,P1.2;接收1位数据MOV40H,C;读入数据存入2

45、8H的D0位CLRP1.1;置P1.1为低电平LCALLDELY2;延时8s(T3)DJNZR2,LOOP2;检测8位数据是否发送完毕CLRP1.2;接收完毕,DATA引脚置低电平(输出状态)RET;返回,75,查询方式读键值并显示。MOV P1,#0F9H;/CS=1,KEY=1,CLK=0,DATA=0 LCALL DELY4;延时25ms,复位时间 MOV 29H,#0A4H;复位命令 LCALL SEND SETB P1.0;/CS=1MAIN:JB P1.3,MAIN;检测按键,无键按下则等待 MOV 29H,#15H;发读键盘命令 LCALL SEND;写入HD7279A LCAL

46、L RESE;读键值到28H单元 SETB P1.0;/CS=1 MOV B,#0AH;十六进制键值转换成BCD码 MOV A,28H DIV AB MOV R1,A;十位暂存于R1,76,MOV 29H,#81H;按方式0译码显示在L2位LED LCALL SEND;命令写入HD7279A LCALL DELY3;延时25s(T4)MOV 29H,R1 LCALL SEND;显示十位 SETB P1.0;/CS=1 MOV 29H,#80H;按方式0译码显示在L1位LED LCALL SEND LCALL DELY3;延时25s(T4)MOV 29H,B;显示个位 LCALL SEND SE

47、TB P1.0;/CS=1WAIT:JNB P1.3,WAIT;等待按键释放 SJMP MAIN 延时子程序由用户自行编写。,77,10.4 89C51与液晶显示器(LCD)的接口 LCD(Liquid Crystal Display):液晶显示器的缩写,是一种被动式显示器,液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。液晶显示器具有功耗低、抗干扰能力强等优点,广泛用在仪器仪表和控制系统中。10.4.1 LCD显示器的分类按排列形状分:字段型、点阵字符型和点阵图形。(1)字段型 它是以长条状组成字符显示。该类显示器主要用于数字显示,也可用于

48、显示西文字母或某些字符,已广泛用于电子表、数字仪表、计算器中。,78,(2)点阵字符型 专门用于显示字母、数字、符号。它是由57或510点阵组成,每一个点阵显示一个字符。此类显示模块广泛用在单片机系统中。(3)点阵图形型 它是在平板上排列多行或多列,形成矩阵式的晶格点,点的大小可根据显示的清晰度来设计。这类液晶显示器可广泛用于图像显示,如用于游戏机、笔记本电脑和彩色电视等设备中。,79,10.4.2 点阵字符型液晶显示模块介绍 在单片机应用系统中,常使用点阵字符型LCD显示器。点阵字符型LCD显示器,需相应的LCD控制器、驱动器,来对LCD显示器进行扫描、驱动,以及一定空间的RAM和ROM来存

49、储写入的命令和显示字符的点阵。现已将上述元部件和LCD显示器用PCB连接到一起,称为液晶显示模块LCM(LCD Module)。使用者只要只向LCM送入相应的命令和数据就可实现所需要的显示内容,接口简单,灵活方便。分字符和图形两种。,80,1.基本结构(1)液晶板 在上面排列着若干57或510点阵的字符显示位,从规格上分为每行8、16、20、24、32、40位,有1行、2行及4行三类,根据需要,来选择。(2)模块电路框图 图10-21是字符型LCD模块的电路图,由控制器HD44780、驱动器HD44100及几个电阻电容组成。HD44100是扩展显示字符位用的(例如:16字符1行模块就可不用HD

50、44100,16字符2行模块就要用一片HD44100)。,81,图10-21 字符型LCD模块的电路框图,82,表10-17 液晶显示模块的引脚,HD44780模块14个引脚,其中有8条数据线,3条控制线,3条电源线,见表10-17。通过单片机写入模块的数据和指令,就可对显示方式和显示内容作出选择。,83,表10-18 寄存器的选择,2、命令格式及命令功能说明(1)内部寄存器 控制器HD44780内有多个寄存器,如表10-18所示。RS位和R/W*引脚上的电平决定寄存器的选择,而DB7DB0决定命令功能。,84,(2)命令功能说明 命令共11种:清除、返回、输入方式设置、显示开关控制、移位控制

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号