键盘显示器接口课件_第1页
键盘显示器接口课件_第2页
键盘显示器接口课件_第3页
键盘显示器接口课件_第4页
键盘显示器接口课件_第5页
已阅读5页,还剩323页未读 继续免费阅读

下载本文档

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

文档简介

第10章AT89S51单片机与输入/输出

外设的接口1第10章AT89S51单片机与输入/输出

第10章目录10.1LED数码管的显示原理

10.1.1LED数码管的结构

10.1.2LED数码管工作原理10.2键盘接口原理

10.2.1键盘输入应解决的问题

10.2.2键盘的工作原理

10.2.3键盘的工作方式10.3键盘/显示器接口设计实例

10.3.1利用AT89S51单片机串行口实现的键盘/显示器接口2

10.3.2各种专用的键盘/显示器接口芯片简介

10.3.3专用接口芯片CH451实现的键盘/显示器控制

10.3.4专用接口芯片HD7279实现的键盘/显示器控制10.4AT89S51单片机与液晶显示器(LCD)的接口

10.4.1LCD显示器的分类

10.4.2点阵字符型液晶显示模块介绍

10.4.3AT89S51单片机与LCD的接口及软件编程10.5AT89S51单片机与微型打印机TPP-40A/16A的接口10.6AT89S51单片机与BCD码拨盘的接口设计310.3.2各种专用的键盘/显示器接口芯片简介3内容概要大多数的单片机应用系统,都要配置输入外设和输出外设。常用的输入外设有键盘、BCD码拨盘等;常用的输出外设有LED数码管、LCD显示器、打印机等。本章介绍AT89S51与各种输入外设、输出外设的接口设计以及软件编程。4410.1LED数码管的显示原理 LED(LightEmittingDiode)发光二极管缩写。LED数码管是由发光二极管构成的。10.1.1LED数码管的结构 常见的LED数码管为“8”字型的,共计8段。每一段对应一个发光二极管。有共阳极和共阴极两种,如图10-1所示。共阴极发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。 同样,共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。510.1LED数码管的显示原理5图10-18段LED数码管结构及外形6图10-18段LED数码管结构及外形6为了使数码管显示不同的符号或数字,要把某些段发光二极管点亮,就要为LED数码管提供段码(字型码)。LED数码管共计8段。正好是一个字节。习惯上是以“a”段对应段码字节的最低位。各段与字节中各位对应关系如表10-1所示。按照上述格式,显示各种字符的8段LED数码管的段码如表10-2所示。7为了使数码管显示不同的符号或数字,要把某些段发光二极管点亮,88表10-1只列出了部分段码,读者可以根据实际情况选用,或重新定义。除“8”字型的LED数码管外,市面上还有“±1”型、“米”字型和“点阵”型LED显示器,如图10-2所示。本章均以“8”字型的LED数码管为例。

图10-2

其他各种字型的LED显示器9表10-1只列出了部分段码,读者可以根据实际情况选用,或重新10.1.2LED数码管工作原理 图10-3所示为显示4位字符的LED数码管的结构原理图。N位位选线和8

N条段码线。段码线控制显示字型,而位选线控制着该显示位的LED数码管的亮或暗。

图10-34位LED数码管的结构原理图1010.1.2LED数码管工作原理图10-34位LED数码管有静态显示和动态显示两种显示方式。1.LED静态显示方式无论多少位LED数码管,同时处于显示状态。静态显示方式,各位的共阴极(或共阳极)连接在一起并接地(或接+5V);每位的段码线(a~dp)分别与一个8位的I/O口锁存器输出相连。如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。正因为如此,静态显示方式的显示无闪烁,亮度都较高,软件控制比较容易。11LED数码管有静态显示和动态显示两种显示方式。11图10-4为4位LED数码管静态显示器电路,各位可独立显示,静态显示方式接口编程容易,但是占用口线较多。对图10-4电路,若用I/O口线接口,要占用4个8位I/O口。因此在显示位数较多的情况下,所需的电流比较大,对电源的要求也就随之增高,这时一般都采用动态显示方式。2.LED动态显示方式无论在任何时刻只有一个LED数码管处于显示状态,即单片机采用“扫描”方式控制各个数码管轮流显示。12图10-4为4位LED数码管静态显示器电路,各位可独立显示,图10-44位LED静态显示电路13图10-44位LED静态显示电路13在多位LED显示时,为简化硬件电路,通常将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阳极或共阴极分别由相应的I/O线控制,形成各位的分时选通。图10-5所示为一个4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。必须采用动态的“扫描”显示方式。即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要有显示的字符的段码。14在多位LED显示时,为简化硬件电路,通常将所有显示位的段码线图10-54位8段LED动态显示电路15图10-54位8段LED动态显示电路15虽然这些字符是在不同时刻出现,而在同一时刻,只有一位显示,其他各位熄灭,由于余辉和人眼的“视觉暂留”作用,只要每位显示间隔足够短,则可以造成“多位同时亮”的假象,达到同时显示的效果。LED不同位显示的时间间隔(扫描间隔)应根据实际情况而定。显示位数多,将占大量的单片机时间,因此动态显示的实质是以牺牲单片机时间来换取I/O端口的减少。图10-6所示为8位LED动态显示2009.10.10的过程。图10-6(a)所示为显示过程,某一时刻,只有一位LED被选通显示,其余位则是熄灭的;图10-6(b)所示为实际的显示结果,人眼看到的是8位稳定的同时显示的字符。16虽然这些字符是在不同时刻出现,而在同一时刻,只有一位显示,其

图10-68位LED动态显示过程和结果动态显示的优点是硬件电路简单,显示器越多,优势越明显。缺点是显示亮度不如静态显示的亮度高。如果“扫描”速率较低,会出现闪烁现象。171710.2键盘接口原理键盘具有向单片机输入数据、命令等功能,是人与单片机对话的主要手段。下面介绍键盘的工作原理和键盘的工作方式。10.2.1键盘输入应解决的问题1.键盘的任务任务有三项:(1)判别是否有键按下?若有,进入下一步工作。(2)识别哪一个键被按下,并求出相应的键值。(3)根据键值,找到相应键值的处理程序入口。1810.2键盘接口原理182.键盘输入的特点常见键盘:触摸式键盘、薄膜键盘和按键式键盘,最常用的是按键式键盘。按键实质上就是一个开关。如图10-7(a)所示,按键开关的两端分别连接在行线和列线上,通过键盘开关机械触点的断开、闭合,其行线电压输出波形如图10-7(b)所示。

图10-7

键盘开关及其行线波形192.键盘输入的特点19图10-7(b)所示的t1和t3分别为键的闭合和断开过程中的抖动期(呈现一串负脉冲),抖动时间长短与开关的机械特性有关,一般为5~10ms,t2为稳定的闭合期,其时间由按键动作确定,一般为十分之几秒到几秒,t0、t4为断开期。3.按键的识别键的闭合与否,行线输出电压上就是呈现高电平或低电平。高电平,表示键断开,低电平则表示键闭合,通过对行线电平的高低状态的检测,可确认按键按下以及按键释放与否。为了确保对一次按键动作只确认一次按键有效,必须消除抖动期t1和t3的影响。20图10-7(b)所示的t1和t3分别为键的闭合和断开过程中的4.如何消除按键的抖动按键去抖动的方法有两种:一种软件延时,本思想是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms的子程序后,检测该行线为高电平,说明按键确实已经松开。采取本措施,可消除两个抖动期t1和t3的影响。另一种是采用专用的键盘/显示器接口芯片,这类芯片中都有自动去抖动的硬件电路。214.如何消除按键的抖动2110.2.2键盘的工作原理键盘可分为两类:非编码键盘和编码键盘。非编码键盘是利用按键直接与单片机相连接而成,这种键盘通常使用在按键数量较少的场合。使用这种键盘,系统功能通常比较简单,需要处理的任务较少,但是可以降低成本、简化电路设计。按键的信息通过软件来获取。1.非编码键盘常见的为两种结构:独立式键盘和矩阵式键盘。(1)独立式键盘特点是:一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可容易地判断哪个按键被按下,如图10-8所示。2210.2.2键盘的工作原理22图10-8独立式键盘接口电路23图10-8独立式键盘接口电路23对于图10-8的键盘,图中的上拉电阻保证按键释放时,输入检测线上有稳定的高电平。当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。优点:电路简单,各条检测线独立,识别按下按键的软件编写简单。适用于键盘按键数目较少的场合,不适用于键盘按键数目较多的场合,因为将占用较多的I/O口线。24对于图10-8的键盘,图中的上拉电阻保证按键释放时,输入检测识别某一键是否按下的子程序:KEYIN: MOV P1,0FFH;P1口写入1,设置P1口为输入状态 MOV A,P1 ;读入8个按键的状态 CJNE A,#0FFH,QUDOU;有键按下,跳去抖动 LJMP RETURN ;无键按下,返回

QUDOU:MOVR3,A ;8个按键的状态送R3保存 LCALLDELAY10 ;调用延时子程序,软件去键抖动 MOV A,P1 ;再一次读入8个按键的状态 CJNE A,R3,RETURN;两次键值比较,不同, ;是抖动引起,转RETURN 25识别某一键是否按下的子程序:25KEY0:

MOV C,P1.0;有键按下,读P1.0的按键状态 JC KEY1 ;P1.0为高,该键未按下,跳KEY1, ;判下一个键 LJMP PKEY0 ;P1.0的键按下,跳PKEY0处理KEY1:

MOV C,P1.1;读P1.1的按键状态 JC KEY2 ;P1.1为高,该键未按下,跳KEY2, ;判下一个键 LJMP PKEY1 ;P1.1的键按下,跳PKEY1处理26KEY0: MOV C,P1.0;有键按下,读P1.0的按键KEY2:

MOV C,P1.2 ;读P1.2的按键状态 JC KEY3 ;P1.2为高,该键未按下,跳 ;KEY3,判下一个键 LJMP PKEY2

;P1.2的键按下,跳PKEY2处理KEY3:

MOV C,P1.3 ;读P1.3的按键状态 …… ……KEY7:

MOV C,P1.7 ;读P1.7的按键状态 JC RETURN ;P1.7为高,该键未按下,跳

;RETURN处 LJMP PKEY7

;P1.7的键按下,跳PKEY7处理RETURN:

RET ;子程序返回27KEY2: MOV C,P1.2 ;读P1.2的按键状态27软件延时10ms子程序DELAY10的编写,参见第4章。对应8个按键的键处理程序PKEY0~PKEY7,根据按键功能的要求来编写。注意,在进入键处理程序后,需要先等待按键释放,再执行键处理功能。另外,在键处理程序完成后,一定要跳向RETURN标号处返回。(2)矩阵式键盘矩阵式(也称行列式)键盘用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图10-9所示,一个44的行、列结构可以构成一个16个按键键盘。在按键数目较多的场合,要节省较多的I/O口线。28软件延时10ms子程序DELAY10的编写,参见第4章。对应图10-9

矩阵式键盘接口29图10-9矩阵式键盘接口29矩阵中无按键按下时,行线为高电平;当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,这是识别按键是否按下的关键所在。由于矩阵式键盘中行、列线为多键共用,各按键彼此将相互发生影响,所以必须将行、列线信号配合,才能确定闭合键位置。下面讨论矩阵式键盘按键的识别方法。①扫描法。第1步,识别键盘有无键按下;第2步,如有键被按下,识别出具体的键位。下面以图10-9所示的键3被按下为例,说明识别过程。30矩阵中无按键按下时,行线为高电平;当有按键按下时,行线电平状第1步,识别键盘有无键按下。先把所有列线均置为0,然后检查各行线电平是否都为高,如果不全为高,说明有键按下,否则无键被按下。例如,当键3按下时,第1行线为低,还不能确定是键3被按下,因为如果同一行的键2、1或0之一被按下,行线也为低电平。只能得出第1行有键被按下的结论。第2步,识别出哪个按键被按下。采用逐列扫描法,在某一时刻只让1条列线处于低电平,其余所有列线处于高电平。当第1列为低电平,其余各列为高电平时,因为是键3被按下,第1行的行线仍处于高电平;31第1步,识别键盘有无键按下。先把所有列线均置为0,然后检查各当第2列为低电平,其余各列为高电平时,第1行的行线仍处于高电平;直到让第4列为低电平,其余各列为高电平时,此时第1行的行线电平变为低电平,据此,可判断第1行第4列交叉点处的按键,即键3被按下。综上所述,扫描法的思想是,先把某一列置为低电平,其余各列置为高电平,检查各行线电平的变化,如果某行线电平为低电平,则可确定此行此列交叉点处的按键被按下。32当第2列为低电平,其余各列为高电平时,第1行的行线仍处于高电②线反转法。扫描法要逐列扫描查询,有时则要多次扫描。而线反转法则很简练,无论被按键是处于第一列或最后一列,均只需经过两步便能获得此按键所在的行列值,下面以图10-10所示的矩阵式键盘为例,介绍线反转法的具体步骤。

让行线编程为输入线,列线编程为输出线,并使输出线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。

再把行线编程为输出线,列线编程为输入线,并使输出线输出为全低电平,则列线中电平由高变低所在列为按键所在列。33②线反转法。扫描法要逐列扫描查询,有时则要多次扫描。而线反两步即可确定按键所在的行和列,从而识别出所按的键。

图10-10

采用线反转法的矩阵式键盘34两步即可确定按键所在的行和列,从而识别出所按的键。34假设键3被按下。第一步,P1.0~P1.3输出全为“0”,然后,读入P1.4~P1.7线的状态,结果P1.4=0,而P1.5~P1.7均为1,因此,第1行出现电平的变化,说明第1行有键按下;第二步,让P1.4~P1.7输出全为“0”,然后,读入P1.0~P1.3位,结果P1.0=0,而P1.1~P1.3均为1,因此第4列出现电平的变化,说明第4列有键按下。综上所述,即第1行、第4列按键被按下,此按键即键3按下。线反转法简单适用,但不要忘记按键去抖动处理。35假设键3被按下。3510.2.3键盘的工作方式单片机在忙于其他各项工作任务时,如何兼顾键盘的输入,这取决于键盘的工作方式。工作方式选取原则是,既要保证及时响应按键操作,又不过多占用单片机工作时间。键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。1.编程扫描方式也称查询方式,利用单片机空闲时,调用键盘扫描子程序,反复扫描键盘。如果单片机的查询的频率过高,虽能及时响应键盘的输入,但也会影响其他任务的进行。查询的频率过低,可能会键盘输入漏判。3610.2.3键盘的工作方式36所以要根据单片机系统的繁忙程度和键盘的操作频率,来调整键盘扫描的频率。2.定时扫描方式每隔一定的时间对键盘扫描一次。在这种方式中,通常利用单片机内的定时器产生的定时中断,进入中断子程序来对键盘进行扫描,在有键按下时识别出该键,并执行相应键的处理程序。为了不漏判有效的按键,定时中断的周期一般应小于100ms。37所以要根据单片机系统的繁忙程度和键盘的操作频率,来调整键盘扫3.中断扫描方式为提高单片机扫描键盘的工作效率,可采用中断扫描方式,如图10-11所示。图中的键盘只有在键盘有按键按下时,发出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程序。如无键按下,单片机将不理睬键盘。此种方式的优点是,只有按键按下时,才进行处理,所以其实时性强,工作效率高。383.中断扫描方式38图10-11

采用线反转法的矩阵式键盘39图10-11采用线反转法的矩阵式键盘39非编码矩阵式键盘所完成的工作分为3个层次。(1)单片机如何来监视键盘的输入,体现在键盘的工作方式上就是:①编程扫描;②定时扫描;③中断扫描。(2)确定按下键的键号。体现在按键的识别方法上就是:①扫描法;②线反转法。(3)根据按下键的键号,实现按键的功能,即跳向对应的键处理程序。10.3键盘/显示器接口设计实例在单片机应用系统设计中,一般都是把键盘和显示器放在一起考虑。也有的系统仅单独需要键盘或显示器。介绍几种实用的键盘/显示器接口的设计方案。40非编码矩阵式键盘所完成的工作分为3个层次。4010.3.1利用AT89S51串行口实现的键盘/显示器接口 当AT89S51单片机的串行口未作它用时,可使用AT89S51的串行口的方式0的输出方式,构成键盘/显示器接口,如图10-12所示。 8个74LS164:74LS164(0)~74LS164(7)作为8位LED数码管的段码输出口,AT89S51的P3.4、P3.5作为两行键的行状态输入线,P3.3作为TXD引脚同步移位脉冲输出控制线,P3.3=0时,与门封死,禁止同步移位脉冲输出。这种方案主程序可不必扫描显示器,软件设计简单,使单片机有更多的时间处理其他事务。 下面列出显示子程序和键盘扫描子程序。4110.3.1利用AT89S51串行口实现的键盘/显示器接

图10-12

用AT89S51串行口扩展键盘/显示器4242显示子程序:DIR:

SETB P3.3 ;P3.3=1,允许TXD脚同步移位脉冲输出 MOV R7,#08H ;送出的段码个数 MOV R0,#7FH ;7FH~78H为显示数据缓冲区DL0:

MOVA,@R0 ;取出要显示的数送A ADDA,#0DH ;加上偏移量 MOVCA,@A+PC ;查段码表SEGTAB,取出段码 MOVSBUF,A ;将段码送串行口的SBUFDL1:

JNB TI,DL1 ;查询1个字节的段码输出完否?

CLR TI ;

1字节的段码输出完,清TI标志 DEC R0 ;指向下一个显示数据单元43显示子程序:43 DJNZ R7,DL0 ;段码个数计数器R7是否为0,如不 ;为0,继续送段码 CLRP3.3 ;

8个段码输出完毕,关闭显示器输出 RET ;返回SEGTAB:DB0C0H,0F9H,0A4H,0B0H,99H;共阳极段 ;码表 DB 92H,82H,0F8H,90H;

DB 88H,83H,0C6H,0A1H,86H; DB 8FH,0BFH,8CH,0FFH,0FFH;44 DJNZ R7,DL0 ;段码个数计数器R7是否为0,如不键盘扫描子程序:KEYI:

MOVA,#00H;判断有无键按下,使所有列线为0 MOVSBUF,A;扫描键盘的(8)号74LS164输出为

;00H,使所有列线为0KL0:

JNB TI,KL0 ;串行输出完否? CLRTI ;串行输出完毕,清TIKL1:

JNB P3.4,PK1;第1行有闭合键吗?如有,跳PK1 ;进行处理 JB P3.5,KL1;在第2行键中有闭合键吗?无闭 ;合键跳KL145键盘扫描子程序:45PK1:

ACALLDL10 ;调用延时10ms子程,软件消抖动 JNB P3.4,PK2 ;判断是否由抖动引起? JB P3.5,KL1PK2:

MOVR7,#08H ;不是抖动引起的 MOVR6,#0FEH ;判别是哪一个键按下,FEH为最左 ;1列为低 MOVR3,#00H ;R3为列号寄存器 MOVA,R6KL5:

MOVSBUF,A ;列扫描,列扫描码从串行口输出

46PK1: ACALLDL10 ;调用延时10ms子KL2:

JNB TI,KL2 ;等待串行口发送完 CLRTI ;串行口发送完毕,清TI标志 JNB P3.4,PKONE ;读第1行线状态,第1行有键 ;闭合,跳PKONE JB P3.5,NEXT ;读第2行状态,2行某键否? MOVR4,#08H ;2行中有键被按下,行首键 ;号08H送R4 AJMPPK3PKONE:MOVR4,#00H ;1行键中有键按下,行首键 ;号00H送R4PK3:

MOVSBUF,#00H ;等待键释放,发送00H使所 ;有列线为低47KL2: JNB TI,KL2 ;等待串行口发送KL3:

JNB TI,KL3 ;判1个字节是否发送完毕 CLRTI ;发送完毕,清标志KL4:

JNB P3.4,KL4 ;判行线状态 JNB P3.5 MOVA,R4 ;两行线均为高,说明键已释放

ADDA,R3 ;计算得键码→A RETNEXT: MOVA,R6 ;列扫描码左移一位,判下一列键 RL A MOVR6,A ;记住列扫描码于R6中

48KL3: JNB TI,KL3 ;判1个字节是

INC R3 ;列号增1 DJNZR7,KL5 ;列计数器R7减1,8列 ;键都检查完否? AJMPKEYI ;

8列扫描完,开始下一个键盘扫描周期DL10:

MOVR7,#0AH ;延时10ms子程序DL:

MOVR6,#0FFHDL6:

DJNZR6,DL6 DJNZR7,DL RET本例中,如只需LED数码管显示部分,可把键盘部分的电路去掉即可;如只需键盘,可把LED数码管部分的电路去掉。49 INC R3 ;列号增14910.3.2各种专用的键盘/显示器接口芯片简介用专用芯片,可省去编写键盘/显示器动态扫描程序以及键盘去抖动程序编写的繁琐工作。目前各种专用接口芯片种类繁多,各有特点,总体趋势是并行接口芯片逐渐退出,串行接口芯片越来越多的得到应用。早期的较为流行的键盘/显示器芯片8279,目前流行的键盘/显示器接口芯片均采用串行通信方式,占用口线少。常见的芯片有:周立功公司的ZLG7289A、ZLG7290B、MAX7219、南京沁恒公司的CH451、HD7279和BC7281等。5010.3.2各种专用的键盘/显示器接口芯片简介50这些芯片全采用动态扫描方式,且控制的键盘均为编码键盘。1.专用键盘/显示器接口芯片8279可编程的并行键盘/显示器接口芯片。内部有键盘FIFO(先进先出堆栈)/传感器双重功能的8×8=64字节RAM,键盘控制部分可控制8×8的键盘矩阵,能自动获得按下键的键号。自动去键盘抖动并具有双键锁定保护功能。显示RAM的容量为16×8位,最多可控制16个LED数码管显示。8279已经逐渐淡出市场。51这些芯片全采用动态扫描方式,且控制的键盘均为编码键盘。512.专用键盘/显示器芯片ZLG7290B采用I2C串行口总线结构,可实现8位LED显示和64键的键盘管理,需外接晶振,使用按键功能时要接8个二极管,电路稍显复杂,且每次I2C通信间隔稍长(10ms)。功能:闪烁、段点亮、段熄灭、功能键、连击键计数等。其中,功能键实现了组合按键,这在此类芯片中极具特点;连击键计数实现了识别长按键的功能,也是独有的。3.专用显示器芯片MAX7219MAXIM(美信)公司的产品。该芯片采用串行SPI接口,仅是单纯驱动共阴极LED数码管,没有键盘管理功能。522.专用键盘/显示器芯片ZLG7290B524.专用显示器芯片BC7281可驱动16位LED数码管显示和实现64键的键盘管理,可实现闪烁、段点亮、段熄灭等功能。最大特点是通过外接移位寄存器驱动16位LED数码管。但所需外围电路较多,占PCB空间较大,且在驱动16位LED数码管时,由于采用动态扫描方式工作,电流噪声过大。5.专用键盘/显示器芯片HD7279与单片机间采用串行通信,可控制并驱动8位LED数码管和实现64(8×8)键的键盘管理。外围电路简单,价格低廉。由于具有上述优点,目前得到较为广泛的应用。534.专用显示器芯片BC7281536.专用键盘/显示器芯片CH451可动态驱动8位LED数码管显示,具有BCD码译码、闪烁、移位等功能。内置大电流驱动级,段电流不小于30mA,位电流不小于160mA。内置64(8×8)键键盘控制器,可对8×8矩阵键盘自动扫描,且有去抖动电路,并提供键盘中断和按键释放标志位,可供查询按键按下与释放状态。片内内置上电复位和看门狗定时器。芯片性价比较高,是目前使用较为广泛的专用的键盘/显示器接口芯片之一。但抗干扰能力不是很强,不支持组合键识别。上述各种芯片,CH451和HD7279使用较多。从性价比,首推CH451,主要对LED数码管的驱动功能较完善。546.专用键盘/显示器芯片CH4515410.3.3专用接口芯片CH451实现的键盘/显示器控制 介绍专用键盘/显示器接口芯片CH451(南京沁恒公司)1.基本功能与引脚介绍 内部集成数码管显示驱动和键盘扫描控制的专用键盘/显示器接口芯片。内置RC振荡电路,可以直接动态驱动8位LED数码管(或者64只LED),可实现显示数字左移、右移、左循环、右循环、各位显示数字独立闪烁等功能。 内置大电流驱动级,段电流不小于30mA,字电流不小于160mA,并有16级亮度控制功能;5510.3.3专用接口芯片CH451实现的键盘/显示器控制在键盘控制方面,该芯片内有64键键盘控制器,可实现8×8矩阵编码键盘的扫描,并内置自动去抖动电路,可提供按键中断与按键释放标志位等功能。与单片机的接口,可选用1线串行接口或高速4线串行接口,片内有上电复位电路,同时可提供高电平有效复位和低电平有效复位两种输出,同时片内提供看门狗WatchDog。56在键盘控制方面,该芯片内有64键键盘控制器,可实现8×8矩阵两种封装形式:28脚的表贴型封装(SOP型)以及24脚的双列直插

(DIP)封装,如图10-13所示。

图10-13

CH451的封装与引脚57两种封装形式:28脚的表贴型封装(SOP型)以及24脚的双列28脚与24脚在功能上稍有差别,引脚定义见表10-3。5828脚与24脚在功能上稍有差别,引脚定义见表10-3。582.CH451的操作命令命令均为12位,其中高4位为标识码,低8位为参数,(1)空操作命令编码:0000××××××××B。对CH451无任何影响。可应用在多个CH451的级联中,透过前级CH451向后级CH451发送操作命令而不影响前级CH451的状态。例如,要将操作命令001000000001B发送给两级级联电路中的后级CH451(后级CH451的DIN引脚连接到前级CH451的DOUT引脚),只要在该操作命令后添加空操作592.CH451的操作命令59命令000000000000B再发送,该操作命令将经过前级CH451到达后级CH451,而空操作命令留给了前级CH451。另外,为在不影响CH451的前提下,使DCLK变化以清除看门狗计时器,也可以发送空操作命令。在非级联的应用中,空操作命令可只发送高4位。(2)芯片内部复位命令编码:001000000001B。可将CH451的各个寄存器和各种参数复位到默认的状态。芯片上电时,CH451均被复位,此时各个寄存器均复位为0,各种参数均恢复为默认值。60命令000000000000B再发送,该操作命令将经过前级C(3)字数据移位命令编码:0011000000[D1][D0]B。命令共有4个:开环左移、右移,闭环左移、右移。D0=0时为开环,D0=时为闭环;D1=0时左移,D1=1时为右移。开环左移时,DIG0引脚对应的单元补00H,此时不译码方式显示为空格,BCD译码方式时显示为0;开环右移时,DIG7引脚对应的单元补00H;而在闭环时DIG0与DIG7头尾相接,闭环移位。61(3)字数据移位命令61(4)设定系统参数命令编码:010000000[WDOG][KEYB][DISP]B。用于设定CH451的系统级参数,如看门狗WDOG使能、键盘扫描使能KEYB、显示驱动使能DISP等。各个参数均可通过命令中的1位数据来进行控制,将相应数据位置为1可启用该功能,否则关闭该功能(默认值)。(5)设定显示参数命令编码:0101[MODE(1位)][LIMIT(3位)][INTENSITY(4位)]B。设定CH451的显示参数,其中译码方式MODE(1位)、扫描极限LIMIT(3位)、显示亮度INTENSITY(4位)。62(4)设定系统参数命令62译码方式MODE=1,为BCD译码方式,MODE=0时为不译码方式。CH451默认不译码方式,此时8个数据寄存器中字节数据的位7~位0分别对应8个数码管的小数点和段a~段g,当某段数据位为1时,对应的段点亮;当某段数据位为0时熄灭。CH451BCD译码方式主要用于LED数码管驱动,单片机只要给出二进制数的BCD码,便由CH451将其译码并直接驱动LED数码管以显示对应的字符。BCD译码方式是对显示数据寄存器字节中的数据位4~位0进行BCD译码,可用于控制段驱动引脚SEG6~SEG0的输出,它们对应于数码管的段g~段a,同时可用字节63译码方式MODE=1,为BCD译码方式,MODE=0时为不译数据的位7来控制SEG7段对应的LED数码管的小数点,字节数据的位6和位5不影响BCD译码的输出,它们可以是任意值。将位4~位0进行BCD译码可显示以下28个字符,其中00000B~01111B分别对应于显示字符“0~F”,10000B~11010B分别对应于显示“空格”、“+”、“-”、“=”、“[”、“]”、“_”、“H”、“L”、“P”、“.”,其余值为空格。扫描极限LIMIT控制位001B~111B和000B(默认值)可分别设定扫描极限1~7和8。64数据的位7来控制SEG7段对应的LED数码管的小数点,字节数显示亮度INTENSITY控制位(4位)可实现16级显示亮度控制。0001B~1111B和0000B(默认值)则用于分别设定显示驱动占空比1/16~15/16和16/16,(6)设定闪烁控制命令编码:[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B用于设定CH451的闪烁显示属性,其中D7S~D0S位分别对应于8个数码管的字驱动DIG7~DIG0,并控制DIG7~DIG0的属性,将相应的数据位置为1则闪烁显示,否则为不闪烁的正常显示(默认值)。(7)加载显示数据命令编码:[DIG_ADDR][DIG_DATA]B。65显示亮度INTENSITY控制位(4位)可实现16级显示亮用于将显示字节数据DIG_DATA(8位)写入DIG_ADDR(3位)指定的数据寄存器中。DIG_ADDR的000B~111B分别用于指定显示寄存器的地址0~7,并分别对应于DIG0~DIG7引脚驱动的8个LED数码管。DIG_DATA为待写入的显示字节数据。(8)读取按键代码命令编码:0111××××××××B。用于获得CH451最近检测到的有效按键的代码。CH451通常从DOUT引脚向单片机输出按键代码,按键代码是7位数据,最高位是状态码,位5~位0是扫描码。读取按键代码命令的位7~位0可以是任意值,可将该命令缩短为4位,即位11~位8。66用于将显示字节数据DIG_DATA(8位)写入DIG_ADD例如,CH451检测到有效按键并向单片机发出中断请求时,假如按键代码是5EH,则单片机先向CH451发出读取按键代码命令0111B,然后再从DOUT获得按键代码5EH。CH451所提供的按键代码为7位,位2~位0是列扫描码,位5~位3是行扫描码,位6是按键的状态码(键按下为1,键释放为0)。对8×8键盘,即连接在DIG7~DIG0与SEG7~SEG0之间的键按下时,CH451所提供的按键代码是固定的,如图10-14所示。如果需要键被释放时的按键代码,可将图10-14所示的按键代码的位6置0,也可将按键代码减去40H。67例如,CH451检测到有效按键并向单片机发出中断请求时,假如例如,连接DIG3与SEG4的键被按下时,按键代码为63H,键被释放后,按键代码是23H。单片机可在任何时候读取有效按键的代码,但一般在CH451检测到有效按键并向发出键盘中断请求时,进入中断服务程序读取按键代码,此时按键代码的位6总是1。另外,如需了解按键何时释放,可通过查询方式定期读取按键代码,直到按键代码的位6为0。注意:CH451不支持组合键。如需要组合键功能,则可利用两片CH451来实现。具体的实现,请见相关资料。68例如,连接DIG3与SEG4的键被按下时,按键代码为63H,3.CH451与AT89S51单片机的接口接口电路如图10-14所示,使用4线串行接口。其中DOUT脚连到外部中断输入

脚,用中断方式响应有效按键。也可用查询方式确定CH451是否检测到有效按键,同时还可向单片机提供复位信号RESET,并带有WatchDog功能。CH451的段驱动脚串200Ω电阻用于限制和均衡段驱动电流。在5V下,串接200Ω电阻对应的段电流为13mA。CH451具有64键的键盘扫描功能,为防止键按下后在SEG信号线与DIG信号线之间形成短路而影响数码管显示,一般应在CH451的DIG0~DIG7脚与键盘矩阵之间串接限流电阻,阻值1kΩ~10kΩ。693.CH451与AT89S51单片机的接口69图10-14

CH451与AT89S51单片机的接口电路70图10-14CH451与AT89S51单片机的接口电路7将P1.0与DIN连接可用于输入串行数据,串行数据输入的顺序是低位在前,高位在后。另外,在上电复位后,CH451默认选择1线串行接口,如需选择4线串行接口,则应在DCLK输出串行时钟之前,先在DIN上输出一个低电平脉冲,以通知CH451为4线串行接口。将P1.1与DCLK连接可提供串行时钟,以使CH451在其上升沿从DIN输入数据,并在其下降沿从DOUT输出数据。71将P1.0与DIN连接可用于输入串行数据,串行数据输入的顺序LOAD用于加载串行数据,CH451一般在其上升沿加载移位寄存器中的12位数据以作为操作命令进行分析并处理。也就是说,LOAD的上升沿是串行数据帧的帧完成标志,此时无论移位寄存器中的12位数据是否有效,CH451都会将其当作操作命令来处理。应注意,在级联电路中,单片机每次输出的串行数据必须是单个CH451的串行数据的位数乘以级联的级数。下面介绍该接口电路的驱动程序:72LOAD用于加载串行数据,CH451一般在其上升沿加载移位寄CH451初始化子程序:INIT:

CLR P1.0 ;DIN脚先置低,当有上跳沿时 ;选择CH451为4线串行接口 SETBP1.1 ;置DCLK为默认的高电平 SETB P1.0 ;置DIN为高电平,产生上跳 ;沿,选4线串行接口 SETB P1.2 ;置LOAD脚为高电平 SETB P3.2 ;置

(P3.2)为输入 MOV B,#04H ;设置系统参数命令 MOV A,#07H;WatchDog使能,开键盘、显示功能

LCALLWRITE ;调用写命令子程序WRITE MOV B,#03H ;设置移位命令73CH451初始化子程序:73 MOV A,#00H ;开环左移 LCALLWRITE ;调用写命令子程序WRITE MOV B,#05H ;设置显示参数 MOV A,#00H ;不译码,8位显示,最高亮度 LCALLWRITE ;调用写命令子程序WRITE MOV B,#06H ;设置闪烁控制 MOV A,#00H ;不闪烁 LCALLWRITE ;调用写命令子程序WRITE CLR IT0 ;置外中断请求信号为低电平触发 CLR IE0 ;清外中断的中断请求标志 SETB EX0 ;允许键盘中断 SETB EA ;总中断允许 RET ;子程序返回74 MOV A,#00H ;开环左移74写入命令子程序:入口:B、Acc中装入待写的12位命令数据,低8位在Acc中,高4位在B的低4位中WRITE:CLR EX0 ;禁止键盘中断 CLR P1.2 ;置LOAD脚为低,命令开始 MOV R7,#08H ;将Acc中8位送出WRIT_8:RRCA ;低位在前,高位在后 CLR P1.1 ;置DCLK脚为低电平 MOV P1.0,C ;送出1位数据 SETB P1.1;时钟上升沿,通知CH451输入位数据 DJNZ R7,WRIT_8 ;8位数据未送完,继续75写入命令子程序:75 MOV A,B MOV R7,#04H ;将B中4位送出WRIT_4:RRCA ;低位在前高位在后 CLR P1.1 ;置DCLK脚为低电平 MOV P1.0,C ;送出1位数据 SETB P1.1 ;产生时钟上升沿,通知 ;CH451输入位数据 DJNZ R7,WRIT_4 ;4位数据未送完,继续

SETB P1.2 ;产生加载上跳沿,通知 ;CH451处理命令数据 SETB EX0 ;允许键盘中断 RET76 MOV A,B76读入键值子程序:

出口:键值数据在Acc中。READ: CLR EXO ;禁止键盘中断 CLR P1.2 ;命令开始 MOV A,#07H;读取键值命令的高4位0111B MOV R7,#04H;忽略12位命令的低8位READ_4READ_4:RRC A ;低位在前,高位在后 CLR P1.1 ;置DCLK脚为低电平 MOV P1.0,C ;读入1位数据 SETB P1.1 ;置DCLK脚为高电平 DJNZ R7,READ_4 ;4位数据未完继续 SETB P1.2;加载上跳沿,通知CH451处理命令数据 MOV A ;先清除键值单元以便移位77读入键值子程序:77 MOV R7,#07H

;读入7位键值READ_7:MOVC,P3.2 ;读入1位数据 CLR P1.1 ;置DCLK脚低电平,产生下跳 ;沿,通知CH451输出下一位 RLC A ;数据移入Acc,高位前,低位后 SETB P1.1 ;置DCLK脚为高电平 DJNZ R7,READ_7 ;7位数据未完继续 MOV IE0 ;清中断标志,读操作过程中 ;有低电平脉冲 SETB EX0 ;允许键盘中断 RET78 MOV R7,#07H ;读入7位键值78使用CH451扩展键盘显示接口,具有接口简单、占用CPU资源少、外围器件简单、性能价格比高等优点,在各种单片机系统中得以广泛的应用。79使用CH451扩展键盘显示接口,具有接口简单、占用CPU资源10.3.4专用接口芯片HD7279实现的键盘/显示器控制HD7279是目前使用较广泛的另一种专用接口芯片。1.

HD7279A简介能同时驱动8个共阴极LED数码管(或64个独立的LED发光二极管)和64(88)键的编码键盘矩阵。控制LED数码管采用动态扫描的循环显示方式。具有如下特性:

与单片机采用串口方式,仅占4条口线,接口简单;

内部有译码器,可直接接收BCD码或十六进制码,同时具有两种译码方式,实现LED数码管位寻址和段寻址,可方便地控制每位LED数码管中任意一段是否发光;8010.3.4专用接口芯片HD7279实现的键盘/显示器控内部有驱动器,可直接驱动不超过25.4mm的LED数码管。片选信号输入,易实现多于8位显示器或多于64键的键盘控制。具有自动消除键抖动并识别有效键值的功能。HD7279A芯片占用口线少,外围电路简单,具有较高性价比,已在键盘/显示器接口的设计中获得广泛应用。(1)引脚说明与电气特性为28脚标准双列直插式封装(DIP),单一+5V供电。其引脚如图10-15所示,引脚功能见表10-4。81内部有驱动器,可直接驱动不超过25.4mm的LED数码管。8

图10-15

HD7279A的引脚82828383位驱动输出端DIG0~DIG7连接8只LED数码管的共阴极;段驱动输出端SA~SG分别连接至LED数码管的a~g段的阳极,而DP脚连至小数点dp的阳极。DIG0~DIG7和DP以及SA~SG还分别是64键的键盘的列线和行线,完成对键盘的译码和键值识别。88矩阵阵列中的每个键值(见图10-19)可用读键盘命令读出,键值范围是00H~3FH。与单片机连接仅需4条口线:

、DATA、CLK和KEY。84位驱动输出端DIG0~DIG7连接8只LED数码管的共阴极;:当单片机访问HD7279A芯片(写入命令、显示数据、位地址、段地址或读出键值等)时,应将其置为低电平。DATA:串行数据端,当单片机向HD7279A芯片发送数据时,DATA为输入端;当单片机从HD7279A芯片读入键值时,DATA为输出端。CLK:数据串行传送的同步时钟输入端,时钟的上升沿将数据写入HD7279A中或从HD7279A中读出数据。85:当单片机访问HD7279A芯片(写入命KEY:为按键信号输出端,在无键按下时为高电平,在有键按下时变为低电平,并且一直保持到该按下键至释放为止。

:为复位端,由低电平变为高电平,并经过18~25ms复位结束。通常,该端接+5V即可。若对可靠性要求较高,则可外接复位电路,或直接由单片机控制。RC:用于外接振荡元件,其典型值为R=1.5k,C=15pF。NC:悬空。HD7279A的电气特性如表10-5所示。86KEY:为按键信号输出端,在无键按下时为高电平,在有键按下时(2)控制命令介绍

6条纯命令、7条带数据命令和1条读键盘命令组成。①纯命令(6条)。所有纯命令都是单字节,见表10-6。87(2)控制命令介绍87②带数据命令(7条)。均由双字节组成,第一字节为命令标志码(有的还有位地址),第二字节为显示内容。a.按方式0译码显示命令88②带数据命令(7条)。均由双字节组成,第一字节为命令标志码命令中的a2、a1、a0表示LED数码管的位地址,表示显示数据是送给哪一位LED的,L1表示LED最低位,L8表示LED最高位,具体位地址的译码见表10-7。89命令中的a2、a1、a0表示LED数码管的位地址,表示显示数命令中的d3、d2、d1、d0为显示数据,收到这些数据后,HD7279A按表10-8所示的规则译码和显示。dp为小数点显示控制位,dp=1时,小数点显示,dp=0时,小数点不显示。命令中的×××为无影响位。

90命令中的d3、d2、d1、d0为显示数据,收到这些数据后,H例如,命令第一字节为80H,第二字节为08H,则L1位LED显示内容为8,小数点dp熄灭:命令第一字节为87H,第二字节为8EH,则L8位LED显示内容为P,小数点dp点亮。b.按方式1译码显示命令该命令和按方式0译码显示的含义基本相同,不同的是译码方式为1,LED显示的内容与十六进制相对应,如表10-9所示。a2、a1、a0位地址译码表如表10-9所示91例如,命令第一字节为80H,第二字节为08H,则L1位LED

表10-9

方式1译码显示表例如,命令第一字节为C8H,第二字节为09H,则L1位LED显示内容为9,小数点dp熄灭;命令第一字节为C9H,第二字节为8FH,则L2位LED显示内容为F,小数点dp点亮。d3~d0(十六进制)LED显示d3~d0(十六进制)LED显示0H08H81H19H92H2AHA3H3BHB4H4CHC5H5DHD6H6EHE7H7FHF92 表10-9 方式1译码显示表d3~d0(c.不译码显示命令命令中的a2、a1、a0仍为位地址,译码表如表10-8所示。第2字节仍为LED显示内容,其中dp和A~G分别代表LED的小数点和对应的段,当取值为1时,该段点亮;取值为0时,该段熄灭,见表10-10。93c.不译码显示命令93可在指定位上显示字符。例如,若命令第一字节为95H,第二字节为3EH,则在L6位LED上显示字符U,小数点dp熄灭。d.闪烁控制命令命令规定了每个数码管的闪烁属性。d8~d1分别对应L8~L1位数码管,其值为1时,LED不闪烁;其值为0时,LED闪烁。如表10-11所示,该命令默认所有数码管均不闪烁。94可在指定位上显示字符。例如,若命令第一字节为95H,第二字节例如,命令第一字节为88H,第二字节为97H,则L7、L6、L4位LED闪烁。e.消隐控制命令95例如,命令第一字节为88H,第二字节为97H,则L7、L6、该命令规定了每个数码管的消隐属性。d8~d1分别对应L8~L1位数码管,其值为1时,LED显示;值为0时,消隐,如表10-12所示。应注意至少要有一个LED数码管保持显示,如全部消隐,该命令无效。例如,命令第一字节为98H,第二字节为81H,则L7、L6、L5、L4、L3、L2位LED消隐。96该命令规定了每个数码管的消隐属性。d8~d1分别对应L8~Lf.段点亮命令点亮某个LED数码管中的某一段或独立的64个LED发光二极管中的某一个。d5~d0取值为00H~3FH,点亮段见表10-13。例如,命令第一字节为E0H,第二字节为00H,则点亮L1位LED的g段;第二字节为10H,则点亮L3位LED的g段。97f.段点亮命令979898g.段关闭命令关闭某个数码管中的某一段。d5~d0的取值为00H~3FH,所对应的关闭段同表10-12,仅将点亮段变为关闭段。例如,命令第一字节为C0H,第二字节为00H,则关闭L1位LED的g段;第二字节为10H,则关闭L3位LED的g段。99g.段关闭命令99③读取键盘命令 从HD7279A读出当前按键值。命令第一字节为15H,表示单片机写到HD7279A是读键命令,而第二字节d7~d0为从HD7279A中读的按键值,其范围为00H~3FH。 当按键按下时,KEY引脚从高电平变为低电平,并保持到按键释放为止。在此期间,若HD7279A收到来自单片机的读键盘命令15H,则HD7279A向单片机输出当前的按键代码。100③读取键盘命令100注意,HD7279A只能给出其中一个按下键的代码,不适合需要两个或两个以上键同时按下的场合。如果确实需要双键组合使用,可在单片机某位I/O引脚接一键,HD7279A所连键盘共同组成双键功能。④时序HD7279A采用串行方式与单片机通信,串行数据从DATA引脚送入或输出,并与CLK端同步。当片选信号

变为低电平后,DATA引脚上的数据在CLK脉冲上升沿作用下写入或读出HD7279A的数据缓冲器。101注意,HD7279A只能给出其中一个按下键的代码,不适合需要(3)命令时序a.纯命令时序单片机发出8个CLK脉冲,向HD7279A发出8位命令,DATA引脚最后为高阻态,如图10-16所示。

图10-16

纯命令时序102(3)命令时序102b.带数据命令时序单片机发出16个CLK脉冲,前8个向HD7279A发送8位命令;后8个向HD7279A传送8位显示数据,DATA引脚最后为高阻态,如图10-17所示。

图10-17

带数据命令时序103b.带数据命令时序103c.读键盘命令时序单片机发出16个CLK脉冲,前8个向HD7279A发送8位命令;发送完之后DATA引脚为高阻态;后8个CLK由HD7279A向单片机返回8位按键值,DATA引脚为输出状态。最后一个CLK脉冲的下降沿将DATA引脚恢复为高阻态,如图10-18所示。

图10-18

读键盘命令时序104c.读键盘命令时序104保证正确的时序是HD7279A正常工作的前提条件。当选定HD7279A的振荡元件RC和单片机的晶振之后,应调节延时时间,使时序中的T1~T8满足表10-14要求。应仔细调整HD7279A时序,使其运行时间接近最短。105保证正确的时序是HD7279A正常工作的前提条件。当选定HD2.AT89S51单片机与HD7279A接口设计(1)硬件接口电路图10-19为单片机与HD7279A的接口电路,外接振荡元件为典型值,晶振频率为12MHz。上电后,HD7279A大约经过15~18ms的时间才进入工作状态。单片机判断键盘矩阵中是否有按键按下,是通过KEY脚电平来判断的。使用中断方式时,可将KEY脚接至单片机的外部中断输入端,并设置成跳沿触发。HD7279A控制显示器时,应连接共阴极显示器。对于不使用的按键和显示器,可以不连接。省去的显示器或对1062.AT89S51单片机与HD7279A接口设计106显示器设置的消隐、闪烁属性,均不影响键盘的使用。除非不用显示器,否则串联在DP及SA~SG引线上的200电阻不可省去。 如果不使用键盘,图10-19所示的与键盘连接的10k电阻和100k电阻便可省去。如果使用键盘,电路中的100k下拉电阻则不可省去。 HD7279A采用动态循环扫描方式,如果采用普通的LED数码管亮度不够,则可采用高亮度或超高亮度型号的LED数码管。

图10-19所示的3、5、26引脚悬空。107显示器设置的消隐、闪烁属性,均不影响键盘的使用。除非不用显示图10-19

AT89S51单片机与HD7279A的接口电路108图10-19AT89S51单片机与HD7279A的接口电(2)驱动程序设计根据图10-19,编程实现当有按键按下时,单片机读取该按键的代码并将其显示在LED数码管上。程序中使用单片机内RAM的29H和28H两个单元。29H单元位地址为48H~4FH;28H单元位地址为40H~47H。①发送29H单元中的数据到HD7279A,高位在前。程序入口条件为

=1,CLK

=

0。

SETB P1.0 ;

=1 CLR P1.1 ;CLK=0SEND:MOV R2,#08H ;发送8位数据 CLR P1.0 ;

=0

109(2)驱动程序设计109 LCALL DELY1 ;延时50s(T1)LOOP1:MOV C,4FH;29H单元的D7位传至HD7279A MOV P1.2,C ;数据出现在DATA引脚上 SETB P1.1 ;置CLK为高电平,数据写入HD7279A MOV A,29H ;待发数据左移1位 RL A MOV 29H,A LCALL DELY2 ;延时8s(T2) CLR P1.1 ;置CLK为低电平 LCALL DELY2 ;延时8s(T3) DJNZ R2,LOOP1 ;检测8位数据是否发送完毕

110 LCALL DELY1 ;延时50s(T1)110 CLR P1.2;发送完毕,

DATA为低电平(输出状态) RET ;返回②读入的键码送到28H单元,高位在前。程序入口条件为=

0,

CLK

=

0。 CLR P1.0 ;

=0 CLR P1.1 ;CLK=0RESE:

MOV R2,#08H ;接收8位数据 SETB P1.2 ;P1.2输出锁存器为高电平,准备输入

温馨提示

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

评论

0/150

提交评论