《51单片机的接口技术》由会员分享,可在线阅读,更多相关《51单片机的接口技术(152页珍藏版)》请在金锄头文库上搜索。
1、51单片机的接口技术单片机的接口技术本章内容n5151单片机的键盘与显示器接口单片机的键盘与显示器接口n键盘、显示器接口芯片键盘、显示器接口芯片827982799.1LED数码管的接口LEDLED(Light Emitting DiodeLight Emitting Diode)发光二极管缩写。)发光二极管缩写。LEDLED数码管是由发光二极管构成的。数码管是由发光二极管构成的。9.1.1LED数码管的结构n常常见见的的LEDLED数数码码管管为为“8 8”字字型型的的,共共计计8 8段段。每每一一段段对对应应一一个个发光二极管。有共阳极和共阴极两种,如图发光二极管。有共阳极和共阴极两种,如图
2、9-19-1所示。所示。共共阴阴极极发发光光二二极极管管的的阴阴极极连连在在一一起起,通通常常公公共共阴阴极极接接地地。当当阳阳极极为为高高电电平平时,发光二极管点亮。时,发光二极管点亮。共共阳阳极极LEDLED数数码码管管的的发发光光二二极极管管的的阳阳极极连连接接在在一一起起,公公共共阳阳极极接接正正电电压压,当当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。图9-18段段LED数数码管管结构及外形构及外形n8 8段段LEDLED数码管结构数码管结构n8 8段段LEDLED数码管的字型码数码管的字型码为为
3、了了使使数数码码管管显显示示不不同同的的符符号号或或数数字字,要要把把某某些些段段发发光光二二极极管管点点亮亮,就就要为要为LEDLED数码管提供段码(字型码)。数码管提供段码(字型码)。LEDLED数数码码管管共共计计8 8段段。正正好好是是一一个个字字节节。习习惯惯上上是是以以“a a”段段对对应应段段码码字字节的最低位。各段与字节中各位对应关系如表节的最低位。各段与字节中各位对应关系如表9-19-1所示。所示。按照上述格式,显示各种字符的8段LED数码管的段码如表10-2所示。表表9-1段段码与字与字节中各位的中各位的对应关系关系代代码位位D7D6D5D4D3D2D1D0显示段示段dpg
4、fedcban显示各种字符的显示各种字符的8 8段段LEDLED数码管的段码如表数码管的段码如表9-29-2所示所示表表9-28段段LED段段码n其它显示器其它显示器除除 “ “8 8”字型的字型的LEDLED数码管外,市面上还有数码管外,市面上还有“11”型、型、“米米”字型和字型和“点点阵阵”型型LEDLED显示器,如图显示器,如图9-29-2所示。本章均以所示。本章均以“8 8”字型的字型的LEDLED数码管为例。数码管为例。图9-2其他各种字型的其他各种字型的LED显示器示器9.1.2LED数码管工作原理n图图9-39-3所所示示为为显显示示4 4位位字字符符的的LEDLED数数码码管
5、管的的结结构构原原理理图图。N N位位位位选选线线和和88 N N条条段段码码线线。段段码码线线控控制制显显示示字字型型,而而位位选选线线控制着该显示位的控制着该显示位的LEDLED数码管的亮或暗。数码管的亮或暗。图9-34位位LED数数码管的管的结构原理构原理图1.1.LEDLED静态显示方式静态显示方式无论多少位无论多少位LEDLED数码管,同时处于显示状态。数码管,同时处于显示状态。静态显示方式,各位的静态显示方式,各位的共阴极(或共阳极共阴极(或共阳极)连接在一起并接地(或接)连接在一起并接地(或接+5V+5V);每位的段码线();每位的段码线(a adpdp)分别与一个)分别与一个8
6、 8位的位的I/OI/O口锁存器输出相连。口锁存器输出相连。如果送往各个如果送往各个LEDLED数码管所显示字符的段码一经确定,则相应数码管所显示字符的段码一经确定,则相应I/OI/O口锁存器口锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。正因为如锁存的段码输出将维持不变,直到送入另一个字符的段码为止。正因为如此,静态显示方式的显示无闪烁,亮度都较高,软件控制比较容易。此,静态显示方式的显示无闪烁,亮度都较高,软件控制比较容易。图图9-49-4为为4 4位位LEDLED数码管静态显示器电路,各位可独立显示,静态显示方式数码管静态显示器电路,各位可独立显示,静态显示方式接口编程容
7、易,但是占用口线较多。接口编程容易,但是占用口线较多。对图对图9-49-4电路,若用电路,若用I/OI/O口线接口,要占用口线接口,要占用4 4个个8 8位位I/OI/O口。因此在显示位数口。因此在显示位数较多的情况下,所需的电流比较大,对电源的要求也就随之增高,这时一较多的情况下,所需的电流比较大,对电源的要求也就随之增高,这时一般都采用动态显示方式。般都采用动态显示方式。nLEDLED数码管有静态显示和动态显示两种显示方式数码管有静态显示和动态显示两种显示方式图9-44位位LED静静态显示示电路路1.1.LEDLED静态显示方式静态显示方式2.2.LEDLEDLEDLED动态显示方式动态显
8、示方式动态显示方式动态显示方式无论在任何时刻只有一个无论在任何时刻只有一个LEDLED数码管处于显示状态,即单片机采用数码管处于显示状态,即单片机采用“扫描扫描”方式控制各个数码管轮流显示。方式控制各个数码管轮流显示。在多位在多位LEDLED显示时,为简化硬件电路,通常将所有显示位的段码线的相应显示时,为简化硬件电路,通常将所有显示位的段码线的相应段并联在一起,由一个段并联在一起,由一个8 8位位I/OI/O口控制,而各位的共阳极或共阴极分别由相口控制,而各位的共阳极或共阴极分别由相应的应的I/OI/O线控制,形成各位的分时选通。线控制,形成各位的分时选通。图图9-59-5所示为一个所示为一个
9、4 4位位8 8段段LEDLED动态显示电路。其中段码线占用一个动态显示电路。其中段码线占用一个8 8位位I/OI/O口,口,而位选线占用一个而位选线占用一个4 4位位I/OI/O口。必须采用动态的口。必须采用动态的“扫描扫描”显示方式。即在某显示方式。即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要有显示的字符的段码。闭状态,同时,段码线上输出相应位要有显示的字符的段码。图9-54位位8段段LED动态显示示电路路2.2.LEDLED动态显示方式动态显示方式虽虽然然这这些些字
10、字符符是是在在不不同同时时刻刻出出现现,而而在在同同一一时时刻刻,只只有有一一位位显显示示,其其他他各各位位熄熄灭灭,由由于于余余辉辉和和人人眼眼的的“视视觉觉暂暂留留”作作用用,只只要要每每位位显显示示间间隔隔足足够够短短,则可以造成则可以造成“多位同时亮多位同时亮”的假象,达到同时显示的效果。的假象,达到同时显示的效果。LEDLED不不同同位位显显示示的的时时间间间间隔隔(扫扫描描间间隔隔)应应根根据据实实际际情情况况而而定定。显显示示位位数数多多,将将占占大大量量的的单单片片机机时时间间,因因此此动动态态显显示示的的实实质质是是以以牺牺牲牲单单片片机机时时间间来来换换取取I/OI/O端口
11、的减少。端口的减少。图图9-69-6所所示示为为8 8位位LEDLED动动态态显显示示2009.10.102009.10.10的的过过程程。图图9-69-6(a a)所所示示为为显显示示过过程,某一时刻,只有一位程,某一时刻,只有一位LEDLED被选通显示,其余位则是熄灭的;被选通显示,其余位则是熄灭的;图图9-69-6(b b)所所示示为为实实际际的的显显示示结结果果,人人眼眼看看到到的的是是8 8位位稳稳定定的的同同时时显显示示的的字字符。符。动动态态显显示示的的优优点点是是硬硬件件电电路路简简单单,显显示示器器越越多多,优优势势越越明明显显。缺缺点点是是显显示示亮度不如静态显示的亮度高。
12、如果亮度不如静态显示的亮度高。如果“扫描扫描”速率较低,会出现闪烁现象。速率较低,会出现闪烁现象。2.2.LEDLED动态显示方式动态显示方式图9-68位位LED动态显示示过程和程和结果果2.2.LEDLED动态显示方式动态显示方式9.2单片机键盘接口技术n键盘输入需解决三个问题键盘输入需解决三个问题(1)(1)判别是否有键按下?若有,进入下一步工作。判别是否有键按下?若有,进入下一步工作。(2)(2)识别哪一个键被按下,并求出相应的键值。识别哪一个键被按下,并求出相应的键值。(3)(3)根据键值,找到相应键值的处理程序入口。根据键值,找到相应键值的处理程序入口。9.2.1键盘接口的任务1.1
13、.键盘输入的特点键盘输入的特点常常见见键键盘盘:触触摸摸式式键键盘盘、薄薄膜膜键键盘盘和和按按键键式式键键盘盘,最最常常用用的的是是按按键键式式键键盘盘。按按键键实实质质上上就就是是一一个个开开关关。如如图图9-79-7(a a)所所示示,按按键键开开关关的的两两端端分分别别连连接接在在行行线线和和列列线线上上,通通过过键键盘盘开开关关机机械械触触点点的的断断开开、闭闭合合,其其行行线线电电压压输输出出波形如图波形如图9-79-7(b b)所示。)所示。图9-7键盘开关及其行开关及其行线波形波形1.1.键盘输入的特点键盘输入的特点图图9-79-7(b b)所所示示的的t1t1和和t3t3分分别
14、别为为键键的的闭闭合合和和断断开开过过程程中中的的抖抖动动期期(呈呈现现一一串串负负脉脉冲冲),抖抖动动时时间间长长短短与与开开关关的的机机械械特特性性有有关关,一一般般为为5 510ms10ms,t2t2为为稳稳定定的的闭闭合合期期,其其时时间间由由按按键键动动作作确确定定,一一般般为为十十分分之之几几秒秒到到几几秒秒,t0t0、t4t4为断开期。为断开期。图9-7键盘开关及其行开关及其行线波形波形2.2.按键的识别按键的识别键键的的闭闭合合与与否否,行行线线输输出出电电压压上上就就是是呈呈现现高高电电平平或或低低电电平平。高高电电平平,表表示示键键断断开开,低低电电平平则则表表示示键键闭闭
15、合合,通通过过对对行行线线电电平平的的高高低低状状态态的的检检测测,可可确确认按键按下以及按键释放与否。认按键按下以及按键释放与否。为为了了确确保保对对一一次次按按键键动动作作只只确确认认一一次次按按键键有有效效,必必须须消消除除抖抖动动期期t1t1和和t3t3的的影响。通常影响。通常t1t1和和t3t3小于小于10ms10ms。按键闭合时的电压抖动波形见图。按键闭合时的电压抖动波形见图9-89-8。抖动时间抖动时间10ms10ms开关动作时间开关动作时间100ms100ms“ “ 1 ”1 ”“ “ 0 0 ”10ms10ms图9.8键闭合和断开合和断开时的的电压抖抖动3.3.如何消除按键的
16、抖动如何消除按键的抖动p按键去抖动的方法有两种:按键去抖动的方法有两种:一一种种软软件件延延时时,思思想想是是:在在检检测测到到有有键键按按下下时时,该该键键所所对对应应的的行行线线为为低低电电平平,执执行行一一段段延延时时10ms10ms的的子子程程序序后后,确确认认该该行行线线电电平平是是否否仍仍为为低低电电平平,如如果果仍仍为为低低电电平平,则则确确认认该该行行确确实实有有键键按按下下。当当按按键键松松开开时时,行行线线的的低低电电平平变变为为高高电电平平,执执行行一一段段延延时时10ms10ms的的子子程程序序后后,检检测测该该行行线线为为高高电电平平,说说明明按键确实已经松开。采取本
17、措施,可消除两个抖动期按键确实已经松开。采取本措施,可消除两个抖动期t1t1和和t3t3的影响。的影响。另另一一种种是是采采用用专专用用的的键键盘盘/ /显显示示器器接接口口芯芯片片,这这类类芯芯片片中中都都有有自自动动去去抖抖动动的的硬件电路硬件电路9.2.2键盘工作原理n键盘可分为两类:非编码键盘和编码键盘。键盘可分为两类:非编码键盘和编码键盘。1.非编码键盘非非编编码码键键盘盘是是利利用用按按键键直直接接与与单单片片机机相相连连接接而而成成,它它通通常常使使用用在在按按键键数数量量较较少少, ,系系统统功功能能较较简简单单,需需处处理理的的任任务务较较少少的的场场合合,可可以以降降低低成
18、成本本、简简化化电路设计。非编码键盘可分为独立式和矩阵式。电路设计。非编码键盘可分为独立式和矩阵式。(1 1)独立式键盘:)独立式键盘:结结构构:一一组组相相互互独独立立的的键键盘盘,每每个个键键盘盘都都与与单单片片机机的的I/OI/O口口的的一一条条口口线线连连接,相互独立。独立式键盘的结构见图接,相互独立。独立式键盘的结构见图9-99-9。原原理理:当当任任何何一一个个键键被被按按下下时时,与与其其相相连连的的输输入入线线被被置置成成 “0”0”,平平时时该该线为线为“1”1”。通过检测。通过检测I/OI/O输入线的电平状态,判断哪个按键被按下。输入线的电平状态,判断哪个按键被按下。特点:
19、特点:接口简单,但若键较多,将占用许多接口简单,但若键较多,将占用许多I/OI/O线。线。图9-9独立式独立式键盘结构构*对对于于图图9-89-8的的键键盘盘,图图中中的的上上拉拉电电阻阻保保证证按按键键释释放放时时,输输入入检检测测线线上上有有稳稳定的高电平。定的高电平。pp键处理子程序键处理子程序键处理子程序键处理子程序KEYIN:MOVA,#0FFH;置;置P1口口为“1”,设置,设置P1口为输口为输入状态入状态MOVP1,AMOVA,P1;输入入键状状态CJNE A,#0FFH,QUDOU;有;有键按下,跳去抖按下,跳去抖动LJMP RETURN;无;无键按下,返回按下,返回QUDOU
20、:MOV R3,A;8个按个按键的状的状态送送R3保存保存LCALLDELAY10;调用延用延时子程序,子程序,软件去件去键抖抖动MOVA,P1;再一次;再一次读入入8个按个按键的状的状态CJNE A,R3,RETURN ;两次;两次键值比比较,不同,是抖,不同,是抖动引起,引起,转RETURNJNBACC.0,P0F;查询0号号键JNBACC.1,P1F;查询1号号键JNBACC.2,P2F;查询2号号键JNBACC.3,P3F;查询3号号键JNBACC.4,P4F;查询4号号键JNBACC.5,P5F;查询5号号键JNBACC.6,P6F;查询6号号键JNBACC.7,P7F;查询7号号键
21、pp键处理程序(续)键处理程序(续)键处理程序(续)键处理程序(续)LJMPRETURNP0F:LJMPPROM0;入口地址表;入口地址表P1F:LJMPPROM1P6F:LJMPPROM6P7F:LJMPPROM7PROM0:;0号号键功能程序功能程序LJMPRETURN;0号号键处理完返回理完返回键盘扫描描PROM7:;7号号键功能程序功能程序LJMPRETURN;7号号键处理完返回理完返回键盘扫描描RETURNRET(2 2 2 2)矩阵式(行列式)键盘)矩阵式(行列式)键盘)矩阵式(行列式)键盘)矩阵式(行列式)键盘结结构构:键键的的数数目目多多,将将键键按按行行列列排排成成矩矩阵阵形
22、形式式。矩矩阵阵式式键键盘盘由由行行线线和和列列线线组成,按键位于行、列线的交叉点上。图组成,按键位于行、列线的交叉点上。图9-109-10为为4444的矩阵式键盘结构。的矩阵式键盘结构。优点:优点:在按键数目较多的场合,节省在按键数目较多的场合,节省I/OI/O口线口线图9-1044矩矩阵式式键盘结构构n n矩阵式(行列式)键盘的按键识别矩阵式(行列式)键盘的按键识别矩阵式(行列式)键盘的按键识别矩阵式(行列式)键盘的按键识别矩阵式键盘按键的识别方法分为扫描法和反转法。矩阵式键盘按键的识别方法分为扫描法和反转法。扫描法扫描法p第第1 1步,识别键盘有无键按下:步,识别键盘有无键按下:列线输出
23、全列线输出全0 0然后输入行线状态,若行线状态为全然后输入行线状态,若行线状态为全1 1( 1111 1111 )则没有键按下;)则没有键按下;若行线状态一定不为全为若行线状态一定不为全为1 1,则一定有任一键按下。,则一定有任一键按下。p第第2 2步,识别出具体的键位:步,识别出具体的键位:逐逐列列扫扫描描,先先第第一一列列输输出出为为0 0,其其他他列列为为1 1,列列编编码码为为11101110。然然后后输输入入行行线线状状态态,若若行行线线状状态态为为全全1 1( 1111 1111 ),即即按按键键不不在在此此列列线线交交叉叉点点上上,继继续续扫描。扫描。第第二二列列输输出出为为0
24、0,其其他他列列为为1 1,列列编编码码为为11011101,再再输输入入行行线线状状态态,若若行行状状态态不是全不是全1 1,即按键在该列交叉点上,否则继续扫描。,即按键在该列交叉点上,否则继续扫描。uu每个键的键码每个键的键码每个键的键码每个键的键码负逻辑表示负逻辑表示-行列线数据求反组合,上例中的各键值分别行列线数据求反组合,上例中的各键值分别为:为:88H84H82H81H48H44H42H41H28H24H22H21H18H14H12H11H正逻辑表示正逻辑表示-行列线数据直接组合,图行列线数据直接组合,图9-109-10中的各键码分中的各键码分别为:别为:77H7BH7DH7EHB
25、7HBBHBDHBEHD7HDBHDDHDEHE7HEBHEDHEEHn n键盘接口完成的主要功能:键盘接口完成的主要功能:键盘接口完成的主要功能:键盘接口完成的主要功能:键盘扫描:判断是否有键按下;键盘扫描:判断是否有键按下;键识别:确定闭合键的行列位置;键识别:确定闭合键的行列位置;产生闭合键键码;产生闭合键键码;排除多键、串键(复按)及去抖动。排除多键、串键(复按)及去抖动。n键的识别和键功能实现键的识别和键功能实现键的识别由接口电路完成,即键盘接口问题;键的识别由接口电路完成,即键盘接口问题;键的功能实现由中断程序完成。键的功能实现由中断程序完成。n键处理子程序键处理子程序在计算机中每
26、一个键都对应一个处理子程序,得到闭合键的键码后,转相在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,转相应的健处理子程序,实现该键所设定的功能。应的健处理子程序,实现该键所设定的功能。n n键处理程序的流程如图键处理程序的流程如图键处理程序的流程如图键处理程序的流程如图9-129-129-129-12图9-12键处理流程理流程图9.351单片机键盘接口和键功能的实现n单片机的键盘键接口可以有多种方法实现。单片机的键盘键接口可以有多种方法实现。使用单片机本身的并行口或串行口;使用单片机本身的并行口或串行口;使用通用接口芯片(使用通用接口芯片(82558255、81558155等);等
27、);使用专用接口芯片如使用专用接口芯片如82798279,周立功公司的,周立功公司的ZLG7289AZLG7289A,ZLG7290BZLG7290B,MAX7219MAX7219,南京沁恒公司的,南京沁恒公司的CH451CH451,HD7279HD7279和和BC7281BC7281等。等。n在单片机应用系统设计中,一般都是把键盘和显示器放在一起在单片机应用系统设计中,一般都是把键盘和显示器放在一起考虑。也有的系统仅单独需要键盘或显示器。介绍几种实用的考虑。也有的系统仅单独需要键盘或显示器。介绍几种实用的键盘键盘/ /显示器接口的设计方案。显示器接口的设计方案。9.3.1利用AT89S51串
28、行口实现的键盘/显示器接口(举例)n使用使用AT89S51AT89S51的串行口的方式的串行口的方式0 0的输出方式,构成键盘的输出方式,构成键盘/ /显示器显示器接口,如接口,如图图9-139-13所示。所示。n8 8个个74LS16474LS164:74LS164(0)74LS164(0)74LS164(7)74LS164(7)作为作为8 8位位LEDLED数码管的数码管的段码段码输出口输出口,AT89S51AT89S51的的P3.4P3.4、P3.5P3.5作为两行键的行状态输入作为两行键的行状态输入线,线,P3.3P3.3作为作为TXDTXD引脚同步移位脉冲输出控制线,引脚同步移位脉冲
29、输出控制线,P3.3=0P3.3=0时,时,与门封死,禁止同步移位脉冲输出。这种方案主程序与门封死,禁止同步移位脉冲输出。这种方案主程序可不必可不必扫描显示器扫描显示器,软件设计简单,使,软件设计简单,使单片机有单片机有更多的时间更多的时间处理其处理其他事务他事务。n下面列出下面列出显示子程序显示子程序和和键盘扫描子程序键盘扫描子程序。图9-13用用AT89S51串行口串行口扩展展键盘/显示器示器n n显示子程序:显示子程序:显示子程序:显示子程序:DIR:SETB P3.3; P3.3=1,允,允许TXD脚同步移位脉冲脚同步移位脉冲输出出MOVR7,08H; 送出的段送出的段码个数个数MOV
30、R0,7FH; 7FH78H为显示数据示数据缓冲区冲区DL0: MOVA,R0; 取出要取出要显示的数送示的数送AADDA,0DH; 加上偏移量加上偏移量MOVCA,APC; 查段段码表表SEGTAB, 取出段取出段码MOVSBUF,A; 将段将段码送串行口的送串行口的SBUFDL1: JNB TI,DL1; 查询1个字个字节的段的段码输出完否?出完否?CLRTI; 1字字节的段的段码输出完,清出完,清TI标志志DECR0; 指向下一个指向下一个显示数据示数据单元元DJNZR7,DL0;段;段码个数个数计数器数器R7是否是否为0,如不,如不;为0,继续送段送段码CLRP3.3; 8个段个段码输
31、出完出完毕,关,关闭显示器示器输出出RET; 返回返回SEGTAB:DB0C0H,0F9H,0A4H,0B0H ;共阳极段;共阳极段码表表DB99H,92H,82H,0F8H,90HDB88H,83H,0C6H,0A1H,86HDB8FH,0BFH,8CH,0FFH,0FFHn显示子程序:显示子程序:n n键盘扫描子程序:键盘扫描子程序:键盘扫描子程序:键盘扫描子程序:KEYI: MOVA,00H; 判断有无判断有无键按下,按下, 使所有列使所有列线为0MOVSBUF,A; 扫描描键盘的(的(8)号)号74LS164输出出为;00H,使所有列,使所有列线为0KL0:JNBTI,KL0; 串行串
32、行输出完否?出完否?CLRTI; 串行串行输出完出完毕,清,清TIKL1: JNBP3.4,PK1; 第第1行有行有闭合合键吗?如有,跳?如有,跳PK1进行行处理理JBP3.5,KL1; 在第在第2行行键中有中有闭合合键吗?无?无闭合合键跳跳KL1PK1: ACALLDL10; 调用延用延时10ms子程,子程,软件消抖件消抖动 JNB P3.4,PK2; 判断是否由抖判断是否由抖动引起?引起? JBP3.5,KL1PK2: MOVR7,08H; 不是抖不是抖动引起的引起的 MOVR6,0FEH;判;判别是哪一个是哪一个键按下,按下,FEH为最左最左1列列为低低MOVR3,00H; R3为列号寄
33、存器列号寄存器 MOV A,R6KL5: MOVSBUF,A; 列列扫描,列描,列扫描描码从串行口从串行口输出出KL2: JNB TI,KL2;等待串行口;等待串行口发送完送完CLRTI;串行口;串行口发送完送完毕,清,清TI标志志JNB P3.4,PKONE ;读第第1行行线状状态,第,第1行有行有键闭合跳合跳PKONEJBP3.5,NEXT;读第第2行状行状态,2行某行某键否?否?MOVR4,08H;2行中有行中有键被按下,行首被按下,行首键号号08H送送R4AJMPPK3PKONE:MOVR4,00H;1行行键中有中有键按下,行首按下,行首键号号00H送送R4PK3:MOVSBUF,00
34、H ;等待;等待键释放,放,发送送00H使所有列使所有列线为低低KL3:JNBTI,KL3; 判判1个字个字节是否是否发送完送完毕 CLRTI; 发送完送完毕,清,清标志志KL4:JNBP3.4,KL4; 判行判行线状状态 JNB P3.5,KL4MOVA,R4; 两行两行线均均为高,高,说明明键已已释放放 ADDA,R3; 计算得算得键码ARETn键盘扫描子程序:键盘扫描子程序:NEXT:MOVA,R6;列;列扫描描码左移一位,判下一列左移一位,判下一列键RLAMOVR6,A; 记住列住列扫描描码于于R6中中INC R3; 列号增列号增1DJNZR7,KL5; 列列计数器数器R7减减1,8列
35、列键都都检查完完否?否?AJMPKEYI; 8列列扫描完,开始下一个描完,开始下一个键盘扫描周期描周期DL10: MOVR7,0AH; 延延时10ms子程序子程序DL:MOVR6,0FFHDL6:DJNZR6,DL6DJNZR7,DLRETn键盘扫描子程序:键盘扫描子程序:本本例例中中,如如只只需需LEDLED数数码码管管显显示示部部分分,可可把把键键盘盘部部分分的的电电路路去去掉即可;如只需键盘,可把掉即可;如只需键盘,可把LEDLED数码管部分的电路去掉。数码管部分的电路去掉。9.3.2使用8155作为键盘接口1.1.接口电路逻辑图接口电路逻辑图(见图(见图9-149-14)图9-1480
36、31用用8155扩展展I/O口口组成的矩成的矩阵式式键盘连线图8155PA口地址口地址7F01HPC口地址口地址7F03HI.I.判断有无键按下判断有无键按下PAPA口输出口输出00H00H,PCPC口输入行状态信号;口输入行状态信号;若若PC3PC01111PC3PC01111,有键按下,有键按下 II.II.去抖动去抖动延时延时510ms510ms后再判断有无键按下后再判断有无键按下III.III.确认哪个键被按下及其键号确认哪个键被按下及其键号81558155的的PAPA口依次输出下列扫描字:口依次输出下列扫描字:2.键扫描及识别过程键扫描及识别过程n81558155:PAPA口输出列扫
37、描信号,口输出列扫描信号,PCPC口输入行状态信号口输入行状态信号PAPA7 7PAPA6 6PAPA5 5PAPA4 4PAPA3 3PAPA2 2PAPA1 1PAPA0 01 11 11 11 11 11 11 10 0FEHFEH1 11 11 11 11 11 10 01 1FDHFDH0 01 11 11 11 11 11 11 17FH7FH,n则每个键的键值(列行组合)则每个键的键值(列行组合)FEE、FDE、FBE、F7E、EFE、DEE、BFE、7FEFED、FDD、FBD、F7D、EFD、DED、BFD、7FDFEB、FDB、FBB、F7B、EFB、DEB、BFB、7FB
38、FE7、FD7、FB7、F77、EF7、DE7、BF7、7F7n每个键的键号(自己安排)每个键的键号(自己安排)N=行首行首键号号+列号列号III.III.III.III.确认哪个键被按下及其键号(续)确认哪个键被按下及其键号(续)确认哪个键被按下及其键号(续)确认哪个键被按下及其键号(续)n8155的的PC口输入行状态可能为下列之一:口输入行状态可能为下列之一:PCPC5 5PCPC4 4PCPC3 3PCPC2 2PCPC1 1PCPC0 01 11 11 10 0EHEH1 11 10 01 1DHDH1 10 01 11 1BHBH0 01 11 11 17H7Hn等待键释放后再进行进
39、一步处理。等待键释放后再进行进一步处理。键扫描描程程序序框框图入口有键按下?延时12ms有键按下?NYNY键号入栈保存按键抬起?NY键号送A返回IV.IV.IV.IV.判断按键是否抬起(以防止重复进行键处理)判断按键是否抬起(以防止重复进行键处理)判断按键是否抬起(以防止重复进行键处理)判断按键是否抬起(以防止重复进行键处理) 3.键扫描程序键扫描程序键扫描程序键扫描程序ORG1000HKEY1:ACALLKS1;调用判断有无用判断有无键按下子程序按下子程序JNZLK1;有;有键按下,按下,转去抖去抖动AJMP KEY1;无;无键按下,返回按下,返回LK1:ACALLTM12S;延;延时12m
40、sACALLKS1;再;再查有无有无键按下按下JNZLK2;确;确实有有键按下,逐行按下,逐行扫描,确定具体描,确定具体键AJMP KEY1;无;无键按下,返回按下,返回LK2:MOVR2,#0FEH;首列;首列扫描字送描字送R2MOVR4,#00H;首列号;首列号R4LK4:MOVDPTR,#7F01H;首列;首列扫描字送描字送8155的的PA口口MOVA,R2;第一列;第一列扫描描MOVX DPTR,A;使第;使第i列列为0(R2中中Di位位为0)3.键扫描程序(续)键扫描程序(续)键扫描程序(续)键扫描程序(续)INCDPTRINCDPTR;指向;指向8155的的PC口口MOVX A,D
41、PTR;读入行状入行状态JBACC.0,LONE;0行无行无键按下,按下,转查1行行MOVA,#00H;0行有行有键按下,行首按下,行首键号号#00H送送AAJMP LKP;求;求键号号LONE:JBACC.1,LTWO;1行无行无键按下,按下,转查2行行MOVA,#08H;1行有行有键按下,行首按下,行首键号号#08H送送AAJMP LKP;求;求键号号LTWO:JBACC.2,LTHR ;2行无行无键按下,按下,转查3行行MOVA,#10H;2行有行有键按下,行首按下,行首键号号#10H送送AAJMP LKP;求;求键号号LTHR:JBACC.3,NEXT ;3行无行无键按下,按下,转查下
42、一列下一列MOVA,#18H;3行有行有键按下,行首按下,行首键号号#18H送送A3.键扫描程序(续)键扫描程序(续)键扫描程序(续)键扫描程序(续)LKP: ADDA,R4;求;求键号号 =行首行首键号号+列号列号PUSHACC;键号入号入栈LK3:ACALL KS1;等待;等待键释放放JNZLK3;未;未释放,放,继续等待等待POPACC;已;已释放,放,键号送号送ARETNEXT:INCR4;指向下一列,列号加;指向下一列,列号加1MOVA,R2;判断;判断8列列扫描完没有描完没有JNBACC.7,KND;8列列扫描完,返回描完,返回RLA;没;没扫描完,置下一列描完,置下一列扫描字描字
43、MOVR2,A;扫描字送描字送AAJMPLK4;继续下列下列扫描描KND:AJMPKEY1;8列列扫描完,返回描完,返回3.键扫描程序(续)键扫描程序(续)键扫描程序(续)键扫描程序(续)KS1:MOVDPTR,#7F01H;查有无有无键按下子程序按下子程序MOVA,#00HMOVX DPTR,A;8155PA口口输出全出全扫描字描字#00HINCDPTRINCDPTR;指向;指向8155的的PC口口MOVX A,DPTR;读入行状入行状态,若有,若有键按下,按下,则A0FFHCPLA;改成正;改成正逻辑,若有,若有键按下,按下,则A00HANLA,#0FH;屏蔽高四位;屏蔽高四位RET;子程
44、序返回,当有;子程序返回,当有键按下按下时,AA00HT12sm:MOVR7,#18H;12sm延延时子程序子程序TM:MOVR6,#0FFHTM6:DJNZ R6,TM6;td=1+(1+255*2+2)*24+2*MCDJNZ R7,TMRET4.键操作及功能处理键操作及功能处理键操作及功能处理键操作及功能处理n求出键号后要进行键处理:求出键号后要进行键处理:先判断是何种键,然后:先判断是何种键,然后:对数字键对数字键-送显示缓冲区显示;送显示缓冲区显示;对功能键对功能键-执行相应的功能键处理程序。执行相应的功能键处理程序。n设:设:015号键为数字键,即键号号键为数字键,即键号10H的是
45、数字键;的是数字键;1631号键为功能键,即键号号键为功能键,即键号10H的是功能键;的是功能键;其功能键处理程序入口地址分别为:其功能键处理程序入口地址分别为:*AAA、BBB、CCC、PPP。4.键操作及功能处理(续)键操作及功能处理(续)键操作及功能处理(续)键操作及功能处理(续)ORG8000HKEYADR:MOVA,BUFF;键号送号送ACLRCSUBB A,#10H;Y与与10H比比较JCDIGPRO;10H,数字,数字键,转KEYTBL:MOVDPTR,#JMPTBLRLA;使;使键值为0、2、4、6、偶数偶数AJMP A+DPTR则转入功能键处理程序清单如下:则转入功能键处理程
46、序清单如下:4.键操作及功能处理(续)键操作及功能处理(续)键操作及功能处理(续)键操作及功能处理(续)JMPTBL:AJMP AAA;2字字节指令散指令散转到到16个功能个功能键处理理AJMP BBB; 程序入口程序入口AJMP CCCAJMP DDDAJMP EEEAJMP FFFAJMP GGGAJMP HHHAJMP IIIAJMP JJJAJMP KKKAJMP LLLAJMP MMMAJMP NNNAJMP OOOAJMP PPP9.3.2各种专用的键盘/显示器接口芯片简介n使用键盘接口专用芯片,可省去编写键盘使用键盘接口专用芯片,可省去编写键盘/ /显示器动态扫描程显示器动态扫描
47、程序以及键盘去抖动程序编写的繁琐工作。序以及键盘去抖动程序编写的繁琐工作。n目前各种专用接口芯片种类繁多,各有特点,总体趋势是并目前各种专用接口芯片种类繁多,各有特点,总体趋势是并行接口芯片逐渐退出,串行接口芯片越来越多的得到应用。行接口芯片逐渐退出,串行接口芯片越来越多的得到应用。n早期的较为流行的键盘早期的较为流行的键盘/ /显示器芯片显示器芯片82798279,目前流行的键盘,目前流行的键盘/ /显示器接口芯片均采用串行通信方式,占用口线少。常见的显示器接口芯片均采用串行通信方式,占用口线少。常见的芯片有:芯片有:周立功公司的周立功公司的ZLG7289AZLG7289A、ZLG7290B
48、ZLG7290B、MAX7219MAX7219、南京、南京沁恒公司的沁恒公司的CH451CH451、HD7279HD7279和和BC7281BC7281等。等。1可编程键盘/显示器接口芯片8279n82798279是一种专用于键盘是一种专用于键盘/ /显示器的可编程接口电路,能对键盘显示器的可编程接口电路,能对键盘自动扫描,给出闭合键的键码,能自动向数码管显示器输出显自动扫描,给出闭合键的键码,能自动向数码管显示器输出显示代码和位代码。示代码和位代码。n其中键盘接口电路可与其中键盘接口电路可与6464键点阵式键盘联接,具有二键封锁或键点阵式键盘联接,具有二键封锁或N N键巡回功能,可自动消除按
49、键抖动。键巡回功能,可自动消除按键抖动。n显示器接口电路可与显示器接口电路可与8 8位或位或1616位数码管显示器联接。位数码管显示器联接。1.8279内部结构n电路逻辑分为三个部分:电路逻辑分为三个部分:(1)芯片接口控制逻辑)芯片接口控制逻辑数据缓冲器数据缓冲器I/OI/O控制电路控制电路(2)键盘接口控制逻辑)键盘接口控制逻辑扫描计数器扫描计数器扫描回送电路扫描回送电路键盘去抖动与控制电路键盘去抖动与控制电路88FIFO/88FIFO/传感器传感器RAMRAM与状态电路与状态电路控制与时序寄存器及时序控制电路控制与时序寄存器及时序控制电路1.8279内部结构(3)显示器接口控制逻辑)显示
50、器接口控制逻辑168168显示用显示用RAMRAM显示寄存器显示寄存器显示地址寄存器显示地址寄存器n电路逻辑结构示于图电路逻辑结构示于图9-151.8279内部结构内部结构8279内部内部结构构I/OI/O控制控制FIFO/FIFO/传感器传感器RAMRAM状态状态SL3-0SL3-0RL7-0RL7-0控制控制/ /选通选通移位移位时序时序与与控制控制扫描计数器扫描计数器回送回送4 48 8数据数据缓冲器缓冲器RD W/R CS ARD W/R CS A0 0DBDB7 7-DB-DB0 0CLKCLKRESETRESETIRQIRQ显示寄存器显示寄存器OUTAOUTA3-03-0OUTBO
51、UTB3-03-08 8控制与时序寄控制与时序寄存器存器显示地址显示地址寄存器寄存器168168显示显示RAMRAM88FIFO/88FIFO/传感器传感器RAMRAM键盘去抖动键盘去抖动与控制与控制BDBD图9-158279的的逻辑结构构8279内部结构图内部结构图读状态字读状态字1010读读FIFO RAMFIFO RAM或显示或显示RAMRAM00 010写命令字写命令字1100写显示写显示RAMRAM010 00 0操作操作A A0 0RDRDWRWRCSCS控制与定时寄存器控制与定时寄存器:寄存键盘及显示器工作方式,完成控制功能 定时控制定时控制:包括基本的计数器是可编程N计数器,N
52、由编程指定(231),对CLK分频,获得内部所需100kHz工作时钟;其他再分频,为键盘及显示器扫描提供扫描时钟4位的计数器,有译码、编码两种方式,由编程设定译码译码方式:最低两位经译码,由SL03输出,作为键盘及显示器的扫描信号.(任何时刻, SL03只有一个信号有效,实现4选1)编码编码方式:计数器的状态由SL03直接输出,再经外部译码,才能作为扫描信号.(实现16选1)(1)芯片接口控制逻辑实现实现 8279 和单片机接口,主要包括:和单片机接口,主要包括: n数据缓冲器数据缓冲器双双向向、三三态态的的数数据据缓缓冲冲器器用用于于芯芯片片内内部部总总线线和和系系统统总总线线的的连连接接,
53、进进行行单单片片机和机和 8279 8279 之间的数据传送,信号引脚为之间的数据传送,信号引脚为 DBODBODB7DB7。 nI/OI/O控制电路控制电路I I / / O O 控控制制电电路路用用于于接接收收单单片片机机方方面面送送来来的的控控制制信信号号,并并产产生生所所需需的的82798279内部控制信号,例如控制数据缓冲器的数据输入输出等。内部控制信号,例如控制数据缓冲器的数据输入输出等。n中断请求产生电路中断请求产生电路根据键盘存储区的状态产生中断请求信号。根据键盘存储区的状态产生中断请求信号。(2)键盘接口控制逻辑n扫描计数器扫描计数器扫扫描描计计数数器器电电路路用用于于为为键
54、键盘盘提提供供扫扫描描信信号号, 4 4 位位扫扫描描信信号号从从扫扫描描线线 SL3SL3SL0SL0输出,并具有两种输出形式输出,并具有两种输出形式译码方式(也称内部方式(也称内部译码形式)形式)指扫描代码直接由扫描线指扫描代码直接由扫描线SL0SL0SL3SL3输出,每次只有输出,每次只有1 1位是低电平(位是低电平(4 4选选1 1)编码方式(也称外部方式(也称外部译码形式)形式)指扫描代码经指扫描代码经SL0SL0SL3SL3外接译码器输出外接译码器输出SL3SL3SL0SL0输出波形见图输出波形见图9-169-16图9-16扫描描输出波形出波形(2)键盘接口控制逻辑(续)n控制与时
55、序寄存器及时序控制电路控制与时序寄存器及时序控制电路用于对键盘扫描进行控制。用于对键盘扫描进行控制。 时时序序控控制制部部件件包包括括基基本本定定时时计计数数器器,其其中中第第一一个个N N计计数数器器是是一一个个N N预预分分频频定定标器,可通过编程使内部时序与标器,可通过编程使内部时序与CPUCPU相适应。相适应。预预分分频频定定标标器器的的分分频频系系数数可可由由程程序序设设定定为为2 23131。使使内内部部计计数数频频率率为为100KHz100KHz时,给出时,给出5.1mS5.1mS的键盘扫描时间和的键盘扫描时间和10.3mS10.3mS的去抖动时间。的去抖动时间。其其它它计计数数
56、器器将将此此基基本本计计数数频频率率再再分分频频,以以提提供供适适当当的的键键扫扫描描、行行扫扫描描、键键盘矩阵扫描及显示器扫描时间。盘矩阵扫描及显示器扫描时间。(2)键盘接口控制逻辑(续)n回送缓冲器与键盘去抖动和控制电路回送缓冲器与键盘去抖动和控制电路输入每次扫描的列线输入每次扫描的列线RL0RL0 RL7RL7状态,以进行闭合键的搜索。状态,以进行闭合键的搜索。回送缓冲器具有锁存功能,对回送线回送缓冲器具有锁存功能,对回送线RLRL7RL07RL0上的信息进行缓冲和锁存。上的信息进行缓冲和锁存。在在键键盘盘工工作作方方式式下下,对对回回送送线线逐逐条条扫扫描描,以以确确定定该该行行中中哪
57、哪一一个个键键闭闭合合。当当去去抖抖动动电电路路测测得得某某一一按按键键闭闭合合后后,等等待待10mS10mS,然然后后再再重重新新检检查查该该键键是是否否闭闭合合,如如果果仍仍然然闭闭合合,那那么么该该键键在在阵阵列列中中的的地地址址及及SHIFTSHIFT和和CNTLCNTL的的状状态态被被送送入先进先出寄存器入先进先出寄存器FIFOFIFO。在在扫扫描描传传感感器器矩矩阵阵方方式式下下,每每次次扫扫描描按按键键时时直直接接把把回回送送线线上上的的内内容容送送入入传传感器感器RAMRAM的相应单元中去。的相应单元中去。在在选选通通输输入入方方式式下下,回回送送线线的的状状态态将将在在控控制
58、制/ /选选通通线线上上的的脉脉冲冲上上升升沿沿送送入入先进先出寄存器。先进先出寄存器。(2)键盘接口控制逻辑(续)nFIFO/FIFO/传感器传感器RAMRAM与状态电路与状态电路 FIFO/FIFO/传传感感器器RAMRAM是是一一个个双双功功能能88 88 RAMRAM,在在键键盘盘或或选选通通输输入入方方式式下下是是一一个个先进先出寄存器先进先出寄存器( (FIFOFIFO););信息输入时,每一组信息写入信息输入时,每一组信息写入RAMRAM中的下一单元,然后按写入顺序读出中的下一单元,然后按写入顺序读出; ;FIFOFIFO状态电路存放状态电路存放FIFOFIFO中的字符数目以及中
59、的字符数目以及FIFOFIFO满或空的状态满或空的状态; ;FIFOFIFO写入或读出次数超过写入或读出次数超过FIFOFIFO的容量时,视为出错的容量时,视为出错; ;在扫描传感器矩阵方式下,该存储器用作传感器在扫描传感器矩阵方式下,该存储器用作传感器RAMRAM; ;当检测到一个传感器状态发生变化时,当检测到一个传感器状态发生变化时,IRQIRQ变为高电平,向变为高电平,向CPUCPU发中断请求发中断请求(3)显示器接口控制逻辑n显示存储区显示存储区8279 8279 可连接可连接8 8位和位和1616位的位的 LED LED 显示器;显示器;为为给给每每位位显显示示器器提提供供显显示示数
60、数据据,在在8279 8279 芯芯片片中中有有一一个个168168的的RAMRAM存存储储区区,其其中中每每一一个个8 8位位 RAM RAM 单单元元对对应应一一位位LEDLED显显示示器器,即即0 0 到到 15 15 地地址址对对应应 LED LED 显示器的显示器的0 015 15 位,显示器的位,显示器的0 0位在最左边,位在最左边, 15 15 位在最右边。位在最右边。n显示缓冲器(显示更新寄存器)显示缓冲器(显示更新寄存器)用于为显示器提供段控数据;用于为显示器提供段控数据;使使用用时时,8279 8279 自自动动对对显显示示器器扫扫描描,将将显显示示缓缓冲冲器器中中的的数数
61、据据输输出出在在显显示示器器上显示出来。上显示出来。n n显示器地址寄存器及显示用显示器地址寄存器及显示用显示器地址寄存器及显示用显示器地址寄存器及显示用RAMRAMRAMRAM显显示示器器地地址址寄寄存存器器用用来来存存放放CPUCPU正正在在读读/ /写写的的字字节节地地址址,以以及及正正在在显显示示的的两两个个4 4位位的的半半字节地址。字节地址。读读/ /写地址由编程设定,也可设定每次读写地址由编程设定,也可设定每次读/ /写后地址自动加写后地址自动加1 1。在设定适当的工作方式和地址以后,在设定适当的工作方式和地址以后,CPUCPU可直接读出显示用可直接读出显示用RAMRAM中的内容
62、。中的内容。A A、B B两个半字节地址由两个半字节地址由82798279自动刷新,以便与自动刷新,以便与CPUCPU输出值相对应。输出值相对应。A A、B B两半字节可以分别输出,也可作为一个字节输出,由工作方式确定。两半字节可以分别输出,也可作为一个字节输出,由工作方式确定。数据送显示器的方式可设定为左端送入,也可以设定为右端输入。数据送显示器的方式可设定为左端送入,也可以设定为右端输入。 2.8279的信号引脚n82798279共有共有4040个引脚,采用双列直插式封装(见图个引脚,采用双列直插式封装(见图9-179-17)图9-178279引脚与引脚与逻辑符号符号图1402393384
63、37536635734833932103111301229132814271526162517241823192220218279RL2RL3CLKIRQRL4RL5RL6RL7RESETRDWRDB0DB1DB2DB3DB4DB5DB6DB7VSSVCCRL1RL0CNTL/STBSHIFTSL3SL2SL1SL0OUTB0OUTB1OUTB2OUTB3OUTA0OUTA1OUTA2OUTA3BDCSA0(a)引脚图CPU接口444键数据扫描显示数据(b)符号图VSSWRIRQBUSA0RESETCLKRDCSBDRL70SHIFTCNTL/STBSL30OUTA30OUTB308279n
64、n8279827982798279的引脚功能如下:的引脚功能如下:的引脚功能如下:的引脚功能如下:(1 1)数据线)数据线DB7DB0DB7DB0:数据输入数据输入/ /输出线,双向,在接口电路中与系统数据总线相连,输出线,双向,在接口电路中与系统数据总线相连,用以传送用以传送CPUCPU和和82798279之间的数据和命令。之间的数据和命令。 (2 2)地址线)地址线 CS#CS#:片选线。片选线。CS#=0CS#=0,选中,选中82798279。A0A0:信息特征线。当信息特征线。当A0=1A0=1时,为命令字及状态字地址;当时,为命令字及状态字地址;当A0=0A0=0时,为片内时,为片内
65、数据地址,故数据地址,故82798279芯片占用芯片占用2 2个端口地址。个端口地址。 (3 3)控制线)控制线 CLKCLK:时钟脉冲输入端。时钟脉冲输入端。(3 3 3 3)控制线)控制线)控制线)控制线RD#RD#:读读信信号号,输输入入,低低电电平平有有效效,将将缓缓冲冲器器中中的的数数据据读读出出,送送外外部部数数据据总线。总线。WR#WR#:写写信信号号,输输入入,低低电电平平有有效效,将将外外部部数数据据总总线线上上的的数数据据写写入入内内部部单单元。元。IRQIRQ:中中断断请请求求,输输出出,高高电电平平有有效效。当当键键被被按按下下,FIFO FIFO RAMRAM中中有有
66、数数据据时时,该信号有效。该信号有效。SL3SL0SL3SL0:扫扫描描输输出出线线,用用来来扫扫描描按按键键开开关关或或传传感感器器矩矩阵阵以以及及显显示示器器的的各各位数字。位数字。RL7RL0RL7RL0:键键扫扫描描输输入入(回回送送)线线,通通过过按按键键或或传传感感器器开开关关与与扫扫描描线线联联接接,内内设设上上拉拉电电路路,使使之之保保持持为为高高电电平平。当当某某一一按按键键闭闭合合时时,其其中中一一条条变变为为低低电平。在选通输入方式下可作为电平。在选通输入方式下可作为8 8条输入线。条输入线。(3 3 3 3)控制线)控制线)控制线)控制线SHIFTSHIFT:换换档档线
67、线。来来自自外外部部键键盘盘或或传传感感器器矩矩阵阵的的输输入入信信号号,它它是是82798279键键盘盘数数据据的的次次高高位位即即D6D6位位的的状状态态,该该位位状状态态控控制制键键盘盘上上/ /下下档档功功能能。在在传传感感器器方方式式和选通方式中,该引脚无用。和选通方式中,该引脚无用。 CNTL/STBCNTL/STB:控控制制/ /选选通通输输入入线线,高高电电平平有有效效。键键盘盘方方式式时时,键键盘盘数数据据最最高高位位(D7D7)的的信信号号输输入入到到该该引引脚脚,以以扩扩充充键键功功能能;选选通通方方式式时时,当当该该引引脚脚信信号号上升沿到时,把上升沿到时,把RL0RL
68、0RL7RL7的数据存入的数据存入FIFO RAMFIFO RAM中。中。 OUTA30OUTA30,OUTB30OUTB30:是是164164显显示示器器更更新新寄寄存存器器的的两两个个输输出出端端,输输出出数数据据与与扫扫描描线线(SL3SL0SL3SL0)同同步步,以以供供多多路路转转换换数数字字显显示示器器使使用用。两两个个端端口口可可并并为为一个一个8 8位端口使用。位端口使用。*OUTA30OUTA30:通常作为显示信号的高:通常作为显示信号的高4 4位输出线;位输出线; *OUTB30OUTB30:通常作为显示信号的低:通常作为显示信号的低4 4位输出线。位输出线。 (3 3 3
69、 3)控制线)控制线)控制线)控制线BD#BD#:空空格格显显示示,输输出出,低低电电平平有有效效。在在数数字字切切换换过过程程中中使使显显示示器器熄熄灭灭,或者由显示熄灭命令使显示器熄灭。或者由显示熄灭命令使显示器熄灭。RESETRESET:复位信号输入端,高电平有效。:复位信号输入端,高电平有效。VccVcc:5V5V电源。电源。VssVss:地。:地。 3.8279的工作方式(1) (1) 键盘工作方式键盘工作方式 82798279在在键键盘盘工工作作方方式式时时,可可设设置置为为双双键键互互锁锁方方式式和和N N键键循循回回方式方式n双键互锁方式:双键互锁方式:若若有有两两个个或或多多
70、个个键键同同时时按按下下时时,不不管管按按键键先先后后顺顺序序如如何何,只只能能识识别别最最后后一个被释放的键,并把该键值送入一个被释放的键,并把该键值送入FIFO RAMFIFO RAM中。中。 nN N键循回方式:键循回方式:一次按下任意个键均可被识别,按键值按扫描次序被送入一次按下任意个键均可被识别,按键值按扫描次序被送入FIFO RAMFIFO RAM中。中。(2 2 2 2)传感器传感器传感器传感器(扫描)(扫描)(扫描)(扫描)方式方式方式方式FIFO FIFO RAMRAM中中8 8个个单单元元用用于于寄寄存存传传感感器器的的现现时时状状态态,又又称称传传感感器器RAMRAM,其
71、其地地址址编号与扫描线顺序一致;编号与扫描线顺序一致;传感器方式是把传感器的开关状态送入传感器传感器方式是把传感器的开关状态送入传感器RAMRAM中中。当当CPUCPU对对传传感感器器阵阵列列扫扫描描时时,一一旦旦发发现现传传感感器器阵阵列列( (最最多多为为8888位位) )中中某某一一位状态发生变化时,产生位状态发生变化时,产生IRQIRQ(高电平),(高电平),中断响应后转入中断处理程序。中断响应后转入中断处理程序。(3 3)选通输入方式)选通输入方式与与8255A8255A通通输输入入端端口口的的功功能能完完全全一一样样,CNTL/STBCNTL/STB作作为为选选通通信信号号,上上升
72、升沿沿锁锁存存RL0RL0RL7RL7到到FIFO RAMFIFO RAM;(4) (4) (4) (4) 显示方式显示方式显示方式显示方式 p82798279的显示方式又可分为左端入口和右端入口方式的显示方式又可分为左端入口和右端入口方式; p显显示示数数据据只只要要写写入入显显示示RAMRAM则则可可由由显显示示器器显显示示出出来来,因因此此显显示示数据写入显示数据写入显示RAMRAM的顺序,决定了显示的次序的顺序,决定了显示的次序;左左端端入入口口方方式式:显显示示位位置置从从显显示示器器最最左左端端1 1位位(最最高高位位)开开始始,以以后后显显示示的字符逐个向右顺序排列;的字符逐个向
73、右顺序排列;显示器位置编号与显示显示器位置编号与显示RAMRAM地址一一对应地址一一对应(0(0号单元显示在号单元显示在0 0号显示器上号显示器上) );右右端端入入口口方方式式:显显示示位位置置从从显显示示器器最最右右端端1 1位位(最最低低位位)开开始始,已已显显示示的的字符逐个向左移位。字符逐个向左移位。p但无论左右入口,后输入的总是显示在最右边。但无论左右入口,后输入的总是显示在最右边。 4.8279的寄存器n82798279共有三个寄存器:共有三个寄存器:命令寄存器命令寄存器状态寄存器状态寄存器数据寄存器数据寄存器n命令和状态寄存器对应同一个地址。命令和状态寄存器对应同一个地址。 (
74、1 1)命令寄存器)命令寄存器p命令寄存器是命令寄存器是8 8位寄存器,只能写,不能读;位寄存器,只能写,不能读;p高高3 3位位( D7 D7 、 D6D6、 D5D5)是是命命令令的的特特征征位位,8 8种种不不同同的的状状态态组组合合代代表表着着不不同的命令。同的命令。p命令的格式见表命令的格式见表9-89-84.8279的寄存器(续)(2 2)状态寄存器)状态寄存器 p8279 8279 的状态寄存器为的状态寄存器为 8 8 位寄存器,只能读,不能写;位寄存器,只能读,不能写;p用用于于在在键键输输入入及及选选通通输输入入方方式式中中,指指出出键键数数据据缓缓冲冲器器 FIFO FIF
75、O RAM RAM 中中的的数数据据字节个数和是否出错。字节个数和是否出错。p状态字格式如表状态字格式如表9-39-3D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0D DU US/ES/EO OU UF FN N2 2N N1 1N N0 0DU:显示无效示无效标志志, 当清除命令尚未完成当清除命令尚未完成时,该位置位置1S/E:键盘输入方式下作特殊入方式下作特殊错误标志志,=1:多多键同同时按下按下O:溢出溢出标志志,向已向已满的的FIFORAM写写时置置1U:不足不足标志志,从已空的从已空的FIFORAM读时置置1F:表示表示 FIFORAM已已满(存有(存有 8个个键码
76、)N2N1N0:FIFORAM中字符的个数中字符的个数表表9-38279的状的状态字格式字格式4.8279的寄存器(续)n状态寄存器各位的意义状态寄存器各位的意义 D2D2,D1D1,D0D0(N2N2,N1N1,N0N0):):其值为其值为 FIFO RAM FIFO RAM 中数据的个数;中数据的个数;D3D3(F F):):D3=1D3=1,表示表示 FIFO RAM FIFO RAM 已满(存有已满(存有 8 8 个键码)个键码)D4D4(U U):):D4D4=1=1,表示,表示“不足不足”错误;错误;D5D5(O O):):D5=1D5=1,表示表示“超出超出”错误;错误; D6D
77、6(S/ES/E):):用于传感器矩阵输入方式,用于传感器矩阵输入方式,D6=1D6=1表示多键同时闭合;表示多键同时闭合;D7D7(DuDu):):显示无效标志。显示无效标志。 当清除命令尚未完成时,该位置当清除命令尚未完成时,该位置1 1。 4.8279的寄存器(续)(3 3)数据寄存器)数据寄存器p数数据据寄寄存存器器实实际际上上就就是是 FIFO FIFO RAM RAM 中中最最前前面面的的那那个个单单元元,其其内内容为被按键的信息,通过读它把键盘信息输入单片机。容为被按键的信息,通过读它把键盘信息输入单片机。p该寄存器的数据格式如表该寄存器的数据格式如表9-49-4所示:所示:D2
78、D1D0D2D1D0:闭合键的列号(由:闭合键的列号(由RL7RL7 RL0RL0值确定);值确定); D5 D4D3D5 D4D3:闭合键的行号(扫描计数值);:闭合键的行号(扫描计数值); D6D6: 换挡健换挡健 SHIFT SHIFT 的状态;的状态;D7D7:控制健:控制健 CNTL CNTL 的状态。的状态。p注注意意,在在传传感感器器扫扫描描方方式式和和选选通通输输入入方方式式中中,输输入入数数据据即即为为 RL7RL7RL0RL0的输入状态。的输入状态。n n8279827982798279数据输入数据输入数据输入数据输入/ / / /输出格式输出格式输出格式输出格式 p输入输
79、入/ /输出数据不仅要先确定地址口,而且数据存放也要按一输出数据不仅要先确定地址口,而且数据存放也要按一定格式,其格式在键盘和传感器方式有所不同。定格式,其格式在键盘和传感器方式有所不同。(1 1) 键盘扫描方式数据输入格式(见表键盘扫描方式数据输入格式(见表9-49-4) D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0CNTLDCNTLDSHIFT SHIFT SL2SL2SL1SL1SL0SL0由由RLx RLx 的的x x决定决定 D7D7:控制键:控制键 “ “CNTL”CNTL”状态状态 D6D6:控制键:控制键 “ “SHIFT”SHIFT”状态状态 D5 D4
80、D3D5 D4 D3:被按键所在列号(由:被按键所在列号(由SL0-SL2SL0-SL2)状态确定)状态确定) D2 D1 D0D2 D1 D0:被按键所在行号(由:被按键所在行号(由RL0-RL7RL0-RL7)状态确定)状态确定表表9-4键盘扫描方式数据描方式数据输入格式入格式n n8279827982798279数据输入数据输入数据输入数据输入/ / / /输出格式(续)输出格式(续)输出格式(续)输出格式(续) (2 2)传感器方式及选通方式数据输入格式)传感器方式及选通方式数据输入格式 D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0RL7RL7RL6RL6RL5RL
81、5RL4RL4RL3RL3RL2RL2RL1RL1RL0RL0p此种方式此种方式8 8位输入数据为位输入数据为RL0-RL7RL0-RL7的状态的状态p数据输入格式见表数据输入格式见表9-59-5表表9-5传感器及感器及选通方式的数据通方式的数据输入格式入格式5.8279的命令字及其格式n82798279的各种工作方式都要通过对命令寄存器的设置来实现。的各种工作方式都要通过对命令寄存器的设置来实现。n82798279共共有有8 8种种命命令令,通通过过这这些些命命令令设设置置工工作作寄寄存存器器,选选择择各各种种工作方式。工作方式。n命令寄存器共命令寄存器共8 8位,格式如下位,格式如下: :
82、 D7D6D5D4D3D2D1D0命令命令类型型命令内容命令内容5.8279的命令字及其格式(续)n82798279的一条命令由两大部分组成;的一条命令由两大部分组成;p命命令令寄寄存存器器高高3 3位位D7D7D5D5为为命命令令特特征征位位,表表征征命命令令类类型型。D7D7D5D5三位的状态可组合出三位的状态可组合出8 8种形式,对应种形式,对应8 8类命令。类命令。p命令寄存器的低命令寄存器的低5 5位位D4D4D0D0为命令的具体内容。为命令的具体内容。D7D6D5D4D3D2D1D0命令命令类型型命令内容命令内容n n8279827982798279的命令字类型设置的命令字类型设置
83、的命令字类型设置的命令字类型设置p每种特征所代表的命令如表每种特征所代表的命令如表9-69-6所示所示 D7 D6 D5D7 D6 D5命命 令令 类类 型型0 0 00 0 0键盘键盘/ /显示命令显示命令0 0 10 0 1时钟编程命令时钟编程命令0 1 00 1 0读读FIFO/FIFO/传感器命令传感器命令0 1 10 1 1读显示器读显示器RAMRAM命令命令1 0 01 0 0写显示命令写显示命令1 0 11 0 1显示禁止显示禁止/ /熄火命令熄火命令1 1 01 1 0清除命令清除命令1 1 11 1 1结束中断结束中断/ /出错方式设置命令出错方式设置命令表表9-68279命
84、令特征命令特征(1) (1) (1) (1) 键盘键盘键盘键盘/ / / /显示命令显示命令显示命令显示命令: : : :(特征位(特征位(特征位(特征位 D7D6D5=000D7D6D5=000D7D6D5=000D7D6D5=000)D4D4、D3D3两位用来设定两位用来设定4 4种显示方式种显示方式; ;D2D2、D1D1、D0D0三位用以设定三位用以设定8 8种键盘种键盘/ /显示扫描方式显示扫描方式键盘键盘/ /显示命令格式见表显示命令格式见表9-79-70 00 00 0D D4 4D D3 3D D2 2D D1 1D D0 0特征位特征位显示方式显示方式输入方式输入方式扫描方式
85、扫描方式*设置工作方式置工作方式0000:8 8字符字符, ,左入口左入口0101:1616字符字符, ,左入口左入口1010:8 8字符字符, ,右入口右入口1111:1616字符字符, ,右入口右入口 0000:键盘:键盘, ,双键锁定双键锁定0101:键盘:键盘,N,N键轮回键轮回1010:传感器扫描:传感器扫描1111:选通输入:选通输入 0 0:编码扫描:编码扫描 1 1:译码扫描:译码扫描表表9-78279的的键盘/显示命令格式示命令格式p显示器方式设置显示器方式设置(见表(见表9-8)9-8)(1) (1) (1) (1) 键盘键盘键盘键盘/ / / /显示命令(续)显示命令(续
86、)显示命令(续)显示命令(续)表表9-8 9-8 显示方式设置显示方式设置D4 D3D4 D3显示方式显示方式0 00 08 8个字符显示,左端入口方式个字符显示,左端入口方式0 10 11616个字符显示,左端入口方式个字符显示,左端入口方式1 01 08 8个字符显示,右端入口方式个字符显示,右端入口方式1 11 11616个字符显示,右端入口方式个字符显示,右端入口方式pp键盘方式设置:键盘方式设置:键盘方式设置:键盘方式设置:(1) (1) (1) (1) 键盘键盘键盘键盘/ / / /显示命令(续)显示命令(续)显示命令(续)显示命令(续)表表9-9 9-9 键盘键盘/ /显示扫描方
87、式设置显示扫描方式设置D2 D1 D0D2 D1 D0键盘,显示扫描方式键盘,显示扫描方式0 0 00 0 0编码扫描键盘,双键锁定编码扫描键盘,双键锁定0 0 10 0 1译码扫描键盘,双键锁定译码扫描键盘,双键锁定0 1 00 1 0编码扫描键盘,编码扫描键盘,N N键轮回键轮回0 1 10 1 1译码扫描键盘,译码扫描键盘,N N键轮回键轮回1 0 01 0 0编码扫描传感器矩阵编码扫描传感器矩阵1 0 11 0 1译码扫描传感器矩阵译码扫描传感器矩阵1 1 01 1 0选通输入,编码显示扫描选通输入,编码显示扫描1 1 11 1 1选通输入,译码显示扫描选通输入,译码显示扫描p译码扫描
88、(内译码):译码扫描(内译码):指扫描代码直接由扫描线指扫描代码直接由扫描线SL0SL3输出,每次只输出,每次只有有1位是低电平(位是低电平(4选选1););p编码扫描(外译码):编码扫描(外译码):是指扫描代码经是指扫描代码经SL0SL3外接译码器输出外接译码器输出由于键盘最大由于键盘最大88=64个键,由个键,由SL0SL2接接3:8译码器,译码器的译码器,译码器的8位输出位输出作为键盘扫描输出线(列线),作为键盘扫描输出线(列线),RL0RL7为输入线(行线)。为输入线(行线)。 8279最多驱动最多驱动16位显示器,故可由位显示器,故可由SL0SL3接接4:16译码器,译码器的译码器,
89、译码器的16位输出作为显示扫描输出线(位输出作为显示扫描输出线(16选选1),决定第几位显示。),决定第几位显示。显示字段码由显示字段码由OUTA0OUTA3和和OUTB0OUTB3输出。输出。 例例9-19-1:若希望设置:若希望设置82798279为键盘译码扫描方式、为键盘译码扫描方式、N N键轮回,显示键轮回,显示8 8个个字符、右端入口方式,确定其命令字。字符、右端入口方式,确定其命令字。 根据题目要求可进行分析,因为具有下列条件:根据题目要求可进行分析,因为具有下列条件:是键盘是键盘/ /显示命令特征位:显示命令特征位:D7 D6 D5=000 (D7 D6 D5=000 (表表9-
90、6) 9-6) ;8 8个字符右端入口显示:个字符右端入口显示:D4 D3=10D4 D3=10(表(表9-89-8);键盘译码扫描,键盘译码扫描,N N键轮回:键轮回:D2 D1 D0=011D2 D1 D0=011(表(表9-99-9);所以所以8 8位命令器存器状态位命令器存器状态D7D7D0=00010011BD0=00010011B,即该命令字,即该命令字13H13H送入命令寄存送入命令寄存器口地址则可满足题目要求。器口地址则可满足题目要求。 例例9-29-2:若已知命令字为:若已知命令字为08H08H,判断,判断82798279工作方式。工作方式。 因为命令字为因为命令字为08H0
91、8H,即,即D7D7D0=00001000BD0=00001000B,显然,显然D7 D6 D5=000D7 D6 D5=000,该条命令,该条命令为键盘为键盘/ /显示命令,显示命令,D4D3=01D4D3=01为为1616字符左端入口显示方式,字符左端入口显示方式,D2D1D0=000D2D1D0=000,键,键盘为编码扫描、双键锁定方式。盘为编码扫描、双键锁定方式。 (2 2 2 2)内部时钟设置命令()内部时钟设置命令()内部时钟设置命令()内部时钟设置命令( D7D6D5D7D6D5D7D6D5D7D6D5001 ) 001 ) 001 ) 001 ) 例例9-39-3:若:若827
92、9 CLK8279 CLK的输入信号频率为的输入信号频率为3.1 MHz3.1 MHz,则分频系数应,则分频系数应为为31D=1FH31D=1FH,于是,于是D4D4D0=11111D0=11111,控制字为:,控制字为:D7D7D0=D0=00111111B=3FH00111111B=3FH 表表9-10 9-10 设置内部时钟分频系数设置内部时钟分频系数0 00 01 1D4D4D3D3D2D2D1D1D0D0分频系数分频系数N(2-31)N(2-31)*分频目的:得到分频目的:得到100KHz的基本工作时钟的基本工作时钟(2 2 2 2)内部时钟设置命令(续)()内部时钟设置命令(续)(
93、)内部时钟设置命令(续)()内部时钟设置命令(续)(D7D6D5D7D6D5D7D6D5D7D6D5001) 001) 001) 001) n82798279的内部时钟信号是由外部输入的时钟信号经过分频产生;的内部时钟信号是由外部输入的时钟信号经过分频产生;n分频系数由分频系数由D4D0D4D0来设定,分频系数范围在来设定,分频系数范围在231231之间之间n有的设计会用单片机的有的设计会用单片机的ALEALE端接端接82798279的的CLKCLK端,但端,但ALEALE端输出的脉冲频率比端输出的脉冲频率比82798279所需工作时钟频率所需工作时钟频率(100KHz)(100KHz)高出很
94、多,通过设置分频系数就可使高出很多,通过设置分频系数就可使82798279得到所需的时钟频率。得到所需的时钟频率。例例9-4 9-4 已知已知80C5180C51的的f foscosc=12MHz=12MHz,要求,要求82798279的内部时钟信号频率的内部时钟信号频率为为100kHz100kHz,求分频系数,求分频系数N N。【解解】: f foscosc=12MHz=12MHz,f fALEALE=1/6 fosc=2MHz = f=1/6 fosc=2MHz = fCLKCLK N=2MHz/100kHz =20D=10100BN=2MHz/100kHz =20D=10100B 因此,
95、时钟编程命令字:因此,时钟编程命令字:00110100B=34H00110100B=34H。(3 3 3 3)读)读)读)读FIFO/FIFO/FIFO/FIFO/传感器传感器传感器传感器RAMRAMRAMRAM命令(命令(命令(命令(D7D6D5=010D7D6D5=010D7D6D5=010D7D6D5=010)(表)(表)(表)(表9-129-129-129-12)D2D2D0D0:为为82798279中中FIFOFIFO及传感器及传感器RAMRAM的首地址的首地址D3D3: 无效位。无效位。 D4 D4 :控制控制RAMRAM地址自动加地址自动加1 1位:位:D4=1D4=1时,时,C
96、PUCPU读完一个数据,读完一个数据,RAMRAM地址自动加地址自动加1 1,准备读下一个单元数据;,准备读下一个单元数据;D4=0D4=0时,时,CPUCPU读完一个数据,地址不变。读完一个数据,地址不变。 表表9-11 设置读设置读FIFO/传感器传感器RAM的地址格式的地址格式0 01 10 0D4(AI)D4(AI) D D2 2D D1 1D D0 0特征位特征位自动增量自动增量无效无效FIFO RAMFIFO RAM首地址首地址键盘方式无效键盘方式无效, ,写写0 00 0:读出后地址不变:读出后地址不变1 1:每次读出地址自动加:每次读出地址自动加1 1例例例例9-59-59-5
97、9-5:欲编程使单片机连续读:欲编程使单片机连续读:欲编程使单片机连续读:欲编程使单片机连续读8279827982798279内内内内FIFO/FIFO/FIFO/FIFO/传感器传感器传感器传感器RAMRAMRAMRAM中中中中000-111000-111000-111000-111单元的数据,设置读命令。单元的数据,设置读命令。单元的数据,设置读命令。单元的数据,设置读命令。 n分析:分析:因为要连续读数,地址又连续。所以最好设置为自动加因为要连续读数,地址又连续。所以最好设置为自动加1 1方式,即方式,即D4=1D4=1;RAMRAM内内首首地地址址000000,即即D2D2D0=000
98、D0=000,再再加加上上特特征征位位,所所以以该该命命令令控控制制字字为为:D7D7D0=01010000B=50H (D0=01010000B=50H (无用位无用位D3D3设为设为0)0);送送入入50H50H控控制制字字,在在执执行行读读命命令令时时,先先从从FIFO/FIFO/传传感感器器RAMRAM中中000000单单元元读读数数,读读完完一一个个数数,地地址址自自动动加加1 1,又又从从001001单单元元读读数数,依依次次类类推推,直直到到读读完完所所需需数据。数据。 (4 4 4 4)读显示缓冲器)读显示缓冲器)读显示缓冲器)读显示缓冲器(RAM)(RAM)(RAM)(RAM
99、)命令(命令(命令(命令(D7D6D5D7D6D5D7D6D5D7D6D5011011011011)n从从 8279 8279 向单片机读出显示数据(用于检查)之前,应先执行向单片机读出显示数据(用于检查)之前,应先执行该命令。命令格式如前表该命令。命令格式如前表9-119-11n命令中命令中 D3D3D0D0表示起始地址,表示起始地址, D4D4位为自动增量标志位为自动增量标志*D4D41 1时,每次读出后,时,每次读出后,RAMRAM地址自动加地址自动加 1 1*D4D40 0时,每次读出后,时,每次读出后,RAMRAM地址不加地址不加 1 1例例9-69-6 欲读显示欲读显示RAMRAM
100、中中10001000单元地址,求命令字。单元地址,求命令字。n分析:因为只读一个数,地址不需自动加分析:因为只读一个数,地址不需自动加1 1,即设置:,即设置:D4=0D4=0,特征位为,特征位为011011,地址为,地址为10001000,所以其控制命令字为:所以其控制命令字为:D7D7D0=01101000B=68HD0=01101000B=68H。 (5 5 5 5)写显示)写显示)写显示)写显示RAMRAMRAMRAM命令(命令(命令(命令(D7D6D5 = 100D7D6D5 = 100D7D6D5 = 100D7D6D5 = 100)n从单片机向从单片机向 8279 8279 写入
101、显示数据之前应先执行该命令命令中写入显示数据之前应先执行该命令命令中 D3D3D0D0表示起始地址,数据写入按左输入或右输入方式进行;表示起始地址,数据写入按左输入或右输入方式进行;nD4D4:地址自动加:地址自动加1 1控制位,为自动增量标志控制位,为自动增量标志D4D41 1时,每次写入后地址自动加时,每次写入后地址自动加 1 1。 D4=0D4=0,地址不加,地址不加1 1。nD3D3D0D0是欲写入的是欲写入的RAMRAM地址,若连续写入则表示地址,若连续写入则表示RAMRAM的首地址。的首地址。n命令格式同读显示命令格式同读显示RAMRAM(参考(参考表表9-119-11)。)。(6
102、 6 6 6)写入和消隐屏蔽命令()写入和消隐屏蔽命令()写入和消隐屏蔽命令()写入和消隐屏蔽命令( D7D6D5D7D6D5D7D6D5D7D6D5101 101 101 101 )格式见表格式见表格式见表格式见表9-129-129-129-12表表9-12 9-12 写入和消隐屏蔽命令的格式写入和消隐屏蔽命令的格式1 10 01 1D4D4 D3D3(IWIWA A)D2D2(IW(IWB B) )D1D1(BL(BLA A) )D0D0(BL(BLB B) )特征位特征位无效无效A A组禁写组禁写B B组禁写组禁写A A组消隐组消隐B B组消隐组消隐1 1:相应显示:相应显示RAMRAM
103、禁止写入禁止写入1 1:消隐:消隐(6 6 6 6)写入和消隐屏蔽命令(续)写入和消隐屏蔽命令(续)写入和消隐屏蔽命令(续)写入和消隐屏蔽命令(续) n设置了这条命令使接口的四位显示器相互独立。设置了这条命令使接口的四位显示器相互独立。nD3D3、 D2D2位用于写入屏蔽;位用于写入屏蔽;D3D31 1时,屏蔽时,屏蔽A A组,组,B B可以写入数据且不影响可以写入数据且不影响A A组;组; D2D21 1时,屏蔽时,屏蔽B B组,组,A A可以写入数据且不影响可以写入数据且不影响B B组;组;两位同时为两位同时为“ “ 1 ”1 ”时则不进行写入屏蔽。时则不进行写入屏蔽。nD1D1、D0D0
104、位用于消隐屏蔽;位用于消隐屏蔽;D1D11 1 时,消隐时,消隐A A组;组;D0D01 1 时,消隐时,消隐B B组;组;两位同时为两位同时为“ “ 1 ”1 ”时则不进行消隐屏蔽。时则不进行消隐屏蔽。 例例例例9-6 9-6 9-6 9-6 假设假设假设假设A A A A、B B B B两组灯均已被点亮,现在希望两组灯均已被点亮,现在希望两组灯均已被点亮,现在希望两组灯均已被点亮,现在希望A A A A组灯继续亮,组灯继续亮,组灯继续亮,组灯继续亮,B B B B组组组组灯熄灭,确定其命令字。灯熄灭,确定其命令字。灯熄灭,确定其命令字。灯熄灭,确定其命令字。n分析:分析:根据命令格式,根据
105、命令格式,A A组灯继续亮应禁止组灯继续亮应禁止A A组组RAMRAM再写入其他数据,再写入其他数据,故故D3=1D3=1;B B组显示熄灭组显示熄灭D0=1D0=1,除特征位外其余位设为除特征位外其余位设为“0 0”。故其控制命令字为:故其控制命令字为:D7D7D0=10101001B=A9HD0=10101001B=A9H (7 7 7 7)清除显示)清除显示)清除显示)清除显示RAMRAMRAMRAM和和和和FIFOFIFOFIFOFIFO中的内容命令(中的内容命令(中的内容命令(中的内容命令(D7D6D5D7D6D5D7D6D5D7D6D5110) 110) 110) 110) n该命
106、令用于清除显示、清除键输入标志和中断请求标志该命令用于清除显示、清除键输入标志和中断请求标志n命令中的命令中的 D4D4、D3 D3 、D2D2位用于设置清除方式位用于设置清除方式D4D3D2D4D3D21010,将显示,将显示RAM RAM 置成置成00H00H;D4D3D2D4D3D2110 110 ,将显示,将显示RAMRAM置成置成20H20H;D4D3D2D4D3D2111 111 ,将显示,将显示RAMRAM置成置成FFHFFH;D4D3D2D4D3D200,不清除显示,不清除显示 RAM RAM 。nD1D1:清除标志位。:清除标志位。 D1D11 1,清清除除FIFO FIFO
107、 状状态态标标志志,FIFOFIFO被被置置为为空空状状态态( (无无数数据据) ),并并复复位位中中断断请请求线求线 IRQ IRQ 。nD0D0:总清除。:总清除。D0D01 1,清除包括,清除包括FIFO RAMFIFO RAM和显示和显示RAMRAM。清除显示清除显示RAM RAM 大约需大约需100s100s,在此期间,单片机不能向显示,在此期间,单片机不能向显示RAMRAM写入数据。写入数据。 例:将全部显示例:将全部显示RAMRAM清清0 0,其命令字为:其命令字为:D7D7D0=11010001B=D1H D0=11010001B=D1H (7 7 7 7)清除(显示)清除(显
108、示)清除(显示)清除(显示RAMRAMRAMRAM和和和和FIFOFIFOFIFOFIFO中的内容)命令(续)中的内容)命令(续)中的内容)命令(续)中的内容)命令(续)(8 8 8 8)结束中断错误方式设置命令)结束中断错误方式设置命令)结束中断错误方式设置命令)结束中断错误方式设置命令(D7D6D5(D7D6D5(D7D6D5(D7D6D5111)111)111)111)n在传感器工作方式下,该命令用于结束传感器在传感器工作方式下,该命令用于结束传感器 RAM RAM 的中断请的中断请求。求。n此外,该命令还用于设置一种特定的错误工作方式。此外,该命令还用于设置一种特定的错误工作方式。n命
109、令字格式如表命令字格式如表9-139-13所示所示表表9-13 9-13 结束中断结束中断/ /设置错误方式设置错误方式D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D01 11 11 1E E 特征位特征位无效无效nD4=1D4=1时(其时(其D3-D0D3-D0位任意)有两种不同作用。位任意)有两种不同作用。 n n结束中断错误方式设置命令的作用结束中断错误方式设置命令的作用结束中断错误方式设置命令的作用结束中断错误方式设置命令的作用作作为为结结束束中中断断命命令令。在在传传感感器器工工作作方方式式中中,每每当当传传感感器器状状态态出出现现变变化化时时,扫扫描描检检测测电电路
110、路接接将将其其状状态态写写入入传传感感器器RAMRAM,并并启启动动中中断断逻逻辑辑,使使IRQIRQ变变高高,向向CPUCPU请请求求中中断断。并并且且禁禁止止写写入入传传感感器器RAMRAM。此此时时,如如传传感感器器RAMRAM读读出出地地址址的的自自动动递递增增特特征征没没有有置置位位(AI=0AI=0),则则中中断断请请求求IRQIRQ在在CPUCPU第第一一次次从从传传感感器器RAMRAM读读出出数数据据时时就就被被清清除除。若若自自动动递递增增特特征征已已置置位位(AI=1AI=1),则则CPUCPU对对传传感感器器RAMRAM的的读读出出并并不不能能清清除除IRQIRQ,而而必
111、必须须通通过过给给82798279写写入入结结束束中中断断/ /错错误误方方式式设设置置命命令令才才能能使使IRQIRQ变变低低。因因此此,在在传感器工作方式中,此命令用来结束传感器传感器工作方式中,此命令用来结束传感器RAMRAM的中断请求。的中断请求。 n n结束中断错误方式设置命令的作用结束中断错误方式设置命令的作用结束中断错误方式设置命令的作用结束中断错误方式设置命令的作用作作为为特特定定错错误误方方式式的的设设置置命命令令。在在82798279已已被被设设定定为为键键盘盘扫扫描描N N键键轮轮回回方方式式以以后后,如如果果CPUCPU给给82798279又又写写入入结结束束中中断断/
112、 /错错误误方方式式设设置置命命令令(E=1E=1)。则则82798279的的消消振振周周期期内内,如如果果发发现现有有多多个个键键被被同同时时按按下下,则则FIFOFIFO状状态态字字中中的的错错误误特特征征位位S/ES/E将将置置位位。并并产产生中断请求信号和阻止写入生中断请求信号和阻止写入FIFO RAMFIFO RAM。n错错误误特特征征位位S/ES/E在在读读出出FIFOFIFO状状态态字字时时被被读读出出。而而在在执执行行CF=1CF=1的的清除命令时被复位清除命令时被复位n82798279的编程通常编的编程通常编3 3个程序段:初始化、键盘服务程序和显个程序段:初始化、键盘服务程
113、序和显示器服务程序示器服务程序(1) (1) 初始化:写入初始化:写入3 3个命令字个命令字p清除控制字:清除控制字:考虑到应允许清除显示器,并将考虑到应允许清除显示器,并将FIFOFIFO和和RAMRAM复位或清零(复位或清零(0D1H0D1H)。)。p设置键盘和显示方式控制字设置键盘和显示方式控制字p设置时钟频率控制字:设置时钟频率控制字:(34H)设内部时钟时钟频率设内部时钟时钟频率100KHZ100KHZ,CLKCLK输入时钟频率输入时钟频率2MHZ2MHZ6.8279的编程使用(2) (2) (2) (2) 键盘服务程序:键盘服务程序:键盘服务程序:键盘服务程序:3 3 3 3个部分
114、个部分个部分个部分n写入写入读读FIFO/FIFO/传感器传感器RAMRAM控制字控制字,由按下键产生的的字符允许通过,由按下键产生的的字符允许通过FIFOFIFO读取;读取;n写入上述控制字后,再从状态口写入上述控制字后,再从状态口读取状态字读取状态字,查询,查询FIFO/FIFO/传感器传感器RAMRAM的状态的状态(是否有数据),(是否有数据),n若有,则从数据口读取扫描值若有,则从数据口读取扫描值SL0SL3SL0SL3,回送,回送RL0RL7RL0RL7,形成一个字节数据;,形成一个字节数据;n修改地址指针,依次输入修改地址指针,依次输入n n个键盘字,形成一个个键盘字,形成一个n
115、n字节的数据块字节的数据块 。(3) (3) (3) (3) 显示器服务程序显示器服务程序显示器服务程序显示器服务程序n写入显示写入显示RAMRAM控制字控制字n将字形码从数据口用指令输出,才能实现显示将字形码从数据口用指令输出,才能实现显示u8279与单片机的一般接口方法(连线图见图与单片机的一般接口方法(连线图见图9-17) 图9-1751单片机用片机用8279扩展展I/O连接接键盘与与8段段显示器示器初始化初始化82798279;把显示字符送到把显示字符送到82798279内部的一个内部的一个1616字节寄存器内;字节寄存器内;将字符转换成段码,经将字符转换成段码,经A0A0A3A3、B
116、0B0B3B3线把段码送到显示器;线把段码送到显示器;同时经同时经SL0SL0SL3SL3线发出线发出4 4位数位选通码;位数位选通码;4-164-16译码器对选通码进行译码后轮流选通各位显示器。译码器对选通码进行译码后轮流选通各位显示器。SL0SL0SL2SL2线同时连到线同时连到3-83-8译码器,该译码器的输出用于扫描键盘译码器,该译码器的输出用于扫描键盘8 8行;行;82798279经经8 8根返回线根返回线(RL0(RL0RL7)RL7)读取键盘的状态;读取键盘的状态;如果发现按键闭合则等待如果发现按键闭合则等待10ms10ms,颤动过去后再检验按键是否闭合;,颤动过去后再检验按键是
117、否闭合;uu工作流程工作流程工作流程工作流程若按键仍然闭合,则把被按键的键值选通输入若按键仍然闭合,则把被按键的键值选通输入82798279内部的先进先出内部的先进先出(FIFO)(FIFO)存存储器,同时经储器,同时经INTINT线发出一个高电平,指出线发出一个高电平,指出FIFOFIFO内已经有一个字符;内已经有一个字符;INTINT线连接到线连接到CPUCPU的中断请求输入线。当单片机接收到中断请求后,若开中断,的中断请求输入线。当单片机接收到中断请求后,若开中断,则转到键盘服务程序,从则转到键盘服务程序,从FIFOFIFO中读取按键的键值。中读取按键的键值。在这种接口中,单片机要做的事
118、仅是初始化在这种接口中,单片机要做的事仅是初始化82798279、送出要显示的字符、接到、送出要显示的字符、接到中断请求后读取按键的键值,其它工作均由中断请求后读取按键的键值,其它工作均由82798279自动完成。自动完成。uu工作流程工作流程工作流程工作流程7.8279应用举例(连线图见图9-18)接口与地址接口与地址P P2.02.0=1=1,对应命令,对应命令/ /状态寄存器;状态寄存器;P P2.02.0=0=0,对应数据寄存器。,对应数据寄存器。P P2.72.7=0=0:82798279被选通,则被选通,则命令命令/ /状态寄存器的地址:状态寄存器的地址:7FFFH(A0=1);7
119、FFFH(A0=1);数据寄存器的地址:数据寄存器的地址:7EFFH(A0=0)7EFFH(A0=0)。图9-18用用8279扩展展I/O口口连接接键盘与与8段段显示器示器按照图设计一个程序,在按照图设计一个程序,在按照图设计一个程序,在按照图设计一个程序,在6 6位位位位LEDLED数码管上依次显示从数码管上依次显示从数码管上依次显示从数码管上依次显示从0505这这这这6 6个数个数个数个数START: MOVDPTR,#7FFFH ;8279命令口地址命令口地址MOVA,#90H;8279写写显示示RAM命令字命令字MOVX DPTR,A;送命令字;送命令字MOVR0,#0;清零;清零 M
120、OVR1,#6;显示位数示位数D1:MOVDPTR,#TAB;调用用显示数据示数据MOVA,R0MOVC A,A+DPTRMOVDPTR,#7EFFH ;8279数据口地址数据口地址MOVX DPTR,A;写;写显示示RAMINCR0;寄存器内容加;寄存器内容加1DJNZR1,D1;R1内容减内容减1不不为0则继续执LJMPSTART;D1,为零零则结束。束。TAB:DB3FH,06H,5BH,4FH,66H DB6DH, 7DH,07H,7FH,6FH按照图设计一个程序,读入键盘输入,并判断是哪个按键被按照图设计一个程序,读入键盘输入,并判断是哪个按键被按照图设计一个程序,读入键盘输入,并判
121、断是哪个按键被按照图设计一个程序,读入键盘输入,并判断是哪个按键被按下。按下。按下。按下。MOV DPTR, #7FFFH ;8279命令口地址命令口地址MOV A,#0D1H;8279清清显示示RAM命令字命令字MOVXDPTR,ALOOP:MOVXA,DPTR;读状状态字字ANL A,#0FHJZLOOP;有;有键按下?没有按下?没有则返回返回MOV A,#0A0H;显示示/消消隐命令命令MOVXDPTR,AMOVA,#40H;读FIFO命令命令MOVXDPTR,AMOV DPTR, #7EFFH ;读键值MOVXA,DPTRMOV R1,Auu单片机与单片机与单片机与单片机与827982
122、79的具体接口电路(见图的具体接口电路(见图的具体接口电路(见图的具体接口电路(见图9-199-19)图9-1951单片机用片机用8279扩展展I/O接口接口连接接键盘与与8段段显示器示器uu分析分析分析分析8031的的P2.7接到接到8279的片选端,最低位地址的片选端,最低位地址A0接到接到8279的的C/D端,因此该接口对用户来说只有二个口地址:端,因此该接口对用户来说只有二个口地址:p命令口地址:命令口地址:7FFFHp数据口地址:数据口地址:7FFEH图中图中8279外接外接48键盘和键盘和8位共阴极位共阴极LED显示器,采用显示器,采用编码扫描编码扫描方式方式,译码器,译码器74L
123、S138对扫描线译码后一方面接键盘的列线,对扫描线译码后一方面接键盘的列线,同时通过驱动器接到显示器上。同时通过驱动器接到显示器上。INI79:MOV DPTR,7FFFH;清除命令;清除命令8279MOV A,0D1HMOVX DPTR,AWNDU:MOVX A,DPTR ;等;等8279清除清除结束束JBACC.7,WNDUMOV A,0 ;方式命令;方式命令8279MOVX DPTR,AMOV A,34H ;扫描描频率率设置命令置命令8279MOVX DPTR,AMOV IE,84H ;允;允许8031中断中断RETuu82798279初始化程序:初始化程序:初始化程序:初始化程序:uu
124、显示器更新程序:显示器更新程序:显示器更新程序:显示器更新程序:RDIR:MOV DPTR,7FFFH ;命令字口地址;命令字口地址MOV A,90H ;写;写显示示RAM命令命令8279MOVX DPTR,AMOV R0,78H ;显示示缓冲器首地址冲器首地址R0MOV R7,8MOV DPTR,7FFEH ;数据口地址;数据口地址RDLO: MOV A,R0;取;取显示数据示数据ADD A,5 ;加偏移量;加偏移量MOVCA,A+PC;查表表转换为段段码数据数据MOVXDPTR,AINCR0DJNZR7,RDLORETSEG:DB3FH,06H,5BH,4FH;根据硬件;根据硬件线路路设计
125、的段的段码DB66H,6DH,7DH,07HDB7FH,6FH77H,7CHPKEYI: PUSHPSWPUSHDPLPUSHDPHPUSHACCPUSHBSETBPSW.3 ;选工作寄存器工作寄存器1区区MOV DPTR,7FFFH;读FIFO状状态字字MOVX A,DPTRANL A,0FHJZPKYR ;判;判FIFO中是否有数据中是否有数据?MOV A,40H ;读FIFO命令命令8279MOVX DPTR,AMOV DPTR,7FFEHMOVX A,DPTR ;读数据数据MOV R2,AANL A,38H ;计算算键值RRAuu键输入中断服务程序:键输入中断服务程序:键输入中断服务程
126、序:键输入中断服务程序:RRARRAMOV B,04HMUL ABXCH A,R2ANL A,7ADD A,R2MOV R0,40 ;键值(40H)指出的指出的环形形缓冲器冲器单元元MOV R0,AINCR0MOV A,R0ANL A,3FH ;环形形缓冲器指冲器指针处理理ORL A,30HMOV 40H,ASETB0;置;置标志供主程序志供主程序查询处理理PKYR: POP BPOP ACCPOP DPHPOP DPLPOP PSWRETI2专用接口芯片HD7279实现的键盘/显示器控制1.1.HD7279AHD7279A简介简介n能能同同时时驱驱动动8 8个个共共阴阴极极LEDLED数数码
127、码管管(或或6464个个独独立立的的LEDLED发发光光二二极极管管)和和6464(8 8 8 8)键键的的编编码码键键盘盘矩矩阵阵。控控制制LEDLED数数码码管管采采用用动动态态扫扫描描的的循循环环显显示示方方式。式。n与单片机采用与单片机采用串口方式串口方式,仅占,仅占4 4条口线条口线,接口简单;,接口简单;n内内部部有有译译码码器器,可可直直接接接接收收BCDBCD码码或或十十六六进进制制码码,同同时时具具有有两两种种译译码码方方式式,实实现现LEDLED数数码码管管位位寻寻址址和和段段寻寻址址,可可方方便便地地控控制制每每位位LEDLED数数码码管管中中任任意意一一段段是否发光;内
128、部有驱动器,可直接驱动不超过是否发光;内部有驱动器,可直接驱动不超过25.4mm25.4mm的的LEDLED数码管。数码管。n片选信号输入,易实现多于片选信号输入,易实现多于8 8位显示器或多于位显示器或多于6464键的键盘控制。键的键盘控制。n具有自动消除键抖动并识别有效键值的功能。具有自动消除键抖动并识别有效键值的功能。nHD7279AHD7279A芯芯片片占占用用口口线线少少,外外围围电电路路简简单单,具具有有较较高高性性价价比比,已已在在键键盘盘/ /显显示器接口的设计中获得广泛应用。示器接口的设计中获得广泛应用。(1 1 1 1)HD7279AHD7279AHD7279AHD7279
129、A引脚说明与电气特性引脚说明与电气特性引脚说明与电气特性引脚说明与电气特性nHD7279AHD7279A为为2828脚脚标标准准双双列列直直插插式式封封装装(DIPDIP),单单一一+5V+5V供供电电。其其引引脚脚如如图图9-9-2020所示,引脚功能见表所示,引脚功能见表9-139-13。 图9-20HD7279A的引脚的引脚表表表表9-13HD7279A9-13HD7279A的引脚功能的引脚功能的引脚功能的引脚功能n nHD7279AHD7279AHD7279AHD7279A的引脚功能的引脚功能的引脚功能的引脚功能u与键盘、数码管相连的引脚与键盘、数码管相连的引脚pDIG0DIG0DIG
130、7DIG7:连数码管时作为位驱动输出端,连接连数码管时作为位驱动输出端,连接8 8只只LEDLED数码管的共阴极;数码管的共阴极;pSASASGSG、DPDP:对对于于数数码码管管控控制制,作作为为段段驱驱动动输输出出端端。分分别别连连接接至至LEDLED数数码码管管的的a ag g段的阳极,而段的阳极,而DPDP脚连至小数点脚连至小数点dpdp的阳极。的阳极。pDIG0DIG0DIG7DIG7、DPDP、SASASGSG:对对于于键键盘盘控控制制,分分别别是是6464键键的的键键盘盘的的列列线线和和行行线,完成对键盘的译码和键值识别。线,完成对键盘的译码和键值识别。p8888矩矩阵阵阵阵列列
131、中中的的每每个个键键值值(见见图图9-249-24)可可用用读读键键盘盘命命令令读读出出,键键值值范范围围是是00H00H3FH3FH。u与单片机连接仅需与单片机连接仅需4 4条口线:条口线:CS#CS#、DATADATA、CLKCLK和和KEYKEY。pCS#CS#:片片选选端端,输输入入。当当单单片片机机访访问问HD7279AHD7279A芯芯片片(写写入入命命令令、显显示示数数据据、位地址、段地址或读出键值等)时,应将其置为低电平。位地址、段地址或读出键值等)时,应将其置为低电平。n nHD7279AHD7279AHD7279AHD7279A的引脚功能的引脚功能的引脚功能的引脚功能u与单
132、片机连接的与单片机连接的4 4条口线:条口线:CS#CS#、DATADATA、CLKCLK和和KEYKEY。pCS#CS#:片片选选端端,输输入入。当当单单片片机机访访问问HD7279AHD7279A芯芯片片(写写入入命命令令、显显示示数数据据、位地址、段地址或读出键值等)时,应将其置为低电平。位地址、段地址或读出键值等)时,应将其置为低电平。pDATADATA:串串行行数数据据端端,当当单单片片机机向向HD7279AHD7279A芯芯片片发发送送数数据据时时,DATADATA为为输输入入端端;当单片机从当单片机从HD7279AHD7279A芯片读入键值时,芯片读入键值时,DATADATA为输
133、出端。为输出端。pCLKCLK:数数据据串串行行传传送送的的同同步步时时钟钟输输入入端端,时时钟钟的的上上升升沿沿将将数数据据写写入入HD7279AHD7279A中或从中或从HD7279AHD7279A中读出数据。中读出数据。pKEYKEY:为为按按键键信信号号输输出出端端。在在无无键键按按下下时时为为高高电电平平;在在有有键键按按下下时时变变为为低低电电平,并且一直保持到该按下键至释放为止。平,并且一直保持到该按下键至释放为止。n nHD7279AHD7279AHD7279AHD7279A的引脚功能的引脚功能的引脚功能的引脚功能u其它引脚其它引脚pRESET# RESET# :为为复复位位端
134、端,由由低低电电平平变变为为高高电电平平,并并经经过过181825ms25ms复复位位结结束束。通通常常,该该端端接接+5V+5V即即可可。若若对对可可靠靠性性要要求求较较高高,则则可可外外接接复复位位电电路路,或或直直接由单片机控制。接由单片机控制。pRCRC:用于外接振荡元件,其典型值为用于外接振荡元件,其典型值为R=1.5kR=1.5k ,C=15pFC=15pF。pNCNC:悬空。悬空。uHD7279AHD7279A的电气特性如表的电气特性如表9-149-14所示。所示。表表9-14HD7279A的的电气特性气特性(2 2)控制命令介绍)控制命令介绍n控制命令由控制命令由6 6条条纯命
135、令纯命令、7 7条条带数据命令带数据命令和和1 1条条读键盘命令读键盘命令组成组成纯命令(6条)所有纯命令都是单字节,见表所有纯命令都是单字节,见表9-159-15。表表9-15HD7279A的的纯命令命令均均由由双双字字节节组组成成,第第一一字字节节为为命命令令标标志志码码(有有的的还还有有位位地地址址),第第二二字字节节为显示内容。为显示内容。a.a.按方式按方式0 0译码显示命令译码显示命令第一字节的第一字节的D7D3=10000D7D3=10000,是,是0 0方式译码的标志码。方式译码的标志码。带数据命令(7条)a.a.按方式按方式0 0译码显示命令译码显示命令命命令令中中的的a2a
136、2、a1a1、a0a0表表示示LEDLED数数码码管管的的位位地地址址,表表示示显显示示数数据据是是送送给给哪哪一一位位LEDLED的;的;L1L1表示表示LEDLED最低位,最低位,L8L8表示表示LEDLED最高位,具体位地址的译码见表最高位,具体位地址的译码见表9-169-16。带数据命令(7条)表表9-16 9-16 位地址译码表位地址译码表a2a2a1a1a0a0LEDLED的位的位0 00 00 0L1L10 00 01 1L2L20 01 10 0L3L30 01 11 1L4L41 10 00 0L5L51 10 01 1L6L61 11 10 0L7L71 11 11 1L8
137、L8a.a.按方式按方式0 0译码显示命令译码显示命令命命令令中中的的d3d3、d2d2、d1d1、d0d0为为显显示示数数据据,收收到到这这些些数数据据后后,HD7279AHD7279A按按表表9-179-17所示的规则译码和显示。所示的规则译码和显示。dpdp为小数点显示控制位,为小数点显示控制位,dp=1dp=1时,小数点显示,时,小数点显示,dp=0dp=0时,小数点不显示。时,小数点不显示。命令中的命令中的为无影响位。为无影响位。带数据命令(7条)表表9-17 9-17 方式方式0 0译码显示表译码显示表D3d0D3d0(十六进制)(十六进制)LEDLED显示显示D3d0D3d0(十
138、六进制)(十六进制)LEDLED显示显示0H0H0 08H8H8 81H1H1 19H9H9 92H2H2 2AHAH- -3H3H3 3BHBHE E4H4H4 4CHCHH H5H5H5 5DHDHL L6H6H6 6EHEHP P7H7H7 7FHFH无显示无显示a.a.按方式按方式0 0译码显示命令译码显示命令例例如如,命命令令第第一一字字节为80H,第第二二字字节为08H,则L1位位LED显示示内内容容为8,小数点,小数点dp熄熄灭:命命令令第第一一字字节为87H,第第二二字字节为8EH,则L8位位LED显示示内内容容为P,小小数数点点dp点亮。点亮。带数据命令(7条)表表9-17
139、9-17 方式方式0 0译码显示表译码显示表D3d0D3d0(十六进制)(十六进制)LEDLED显示显示D3d0D3d0(十六进制)(十六进制)LEDLED显示显示0H0H0 08H8H8 81H1H1 19H9H9 92H2H2 2AHAH- -3H3H3 3BHBHE E4H4H4 4CHCHH H5H5H5 5DHDHL L6H6H6 6EHEHP P7H7H7 7FHFH无显示无显示b.b.按方式按方式1 1译码显示命令译码显示命令第一字节的第一字节的D7D3=11001D7D3=11001,是,是1 1方式译码的标志码。方式译码的标志码。其余各位与其余各位与0 0方式译码显示含义基本
140、相同。方式译码显示含义基本相同。a2a2、a1a1、a0a0位地址译码表如表位地址译码表如表9-169-16所示所示d3d3、d2d2、d1d1、d0d0及及dpdp为为显显示示数数据据,LEDLED显显示示的的内内容容与与十十六六进进制制相相对对应应,如如表表9-189-18所示所示带数据命令(7条)b.b.按方式按方式1 1译码显示命令译码显示命令例例如如,命命令令第第一一字字节为C8H,第第二二字字节为09H,则L1位位LED显示示内内容容为9,小数点,小数点dp熄熄灭;命命令令第第一一字字节为C9H,第第二二字字节为8FH,则L2位位LED显示示内内容容为F,小小数数点点dp点亮。点亮
141、。带数据命令(7条)表表9-18 9-18 方式方式1 1译码显示表译码显示表d3d0d3d0(十六进制)(十六进制)ledled显示显示d3d0d3d0(十六进制)(十六进制)ledled显示显示0H0H0 08H8H8 81H1H1 19H9H9 92H2H2 2AHAHA A3H3H3 3BHBHB B4H4H4 4CHCHC C5H5H5 5DHDHD D6H6H6 6EHEHE E7H7H7 7FHFHF Fc.c.不译码显示命令不译码显示命令第一字节的第一字节的D7D3=10010D7D3=10010,是,是不译码显示命令不译码显示命令的标志码。的标志码。命令中的命令中的a2a2、
142、a1a1、a0a0仍为位地址,译码表如表仍为位地址,译码表如表9-169-16所示。所示。第第2 2字字节节仍仍为为LEDLED显显示示内内容容,其其中中dpdp和和A AG G分分别别代代表表LEDLED的的小小数数点点和和对对应应的的段段,当取值为当取值为1 1时,该段点亮;取值为时,该段点亮;取值为0 0时,该段熄灭,见表时,该段熄灭,见表9-199-19。带数据命令(7条)c.c.不译码显示命令不译码显示命令带数据命令(7条)表表9-19不不译码方式方式译码显示表示表该方式可在指定位上显示字符。该方式可在指定位上显示字符。例例如如,若若命命令令第第一一字字节为95H,第第二二字字节为3
143、EH,则在在L6位位LED上上显示示字字符符U,小数点,小数点dp熄熄灭。d.d.闪烁显示命令闪烁显示命令带数据命令(7条)该命令规定了每个数码管的闪烁属性。该命令规定了每个数码管的闪烁属性。第一字节的第一字节的D7D3=10001000D7D3=10001000,是闪烁显示命令的标志码。,是闪烁显示命令的标志码。d8d8d1d1分别对应分别对应L8L8L1L1位位数码管,其值为数码管,其值为1 1时,时,LEDLED不闪烁;其值为不闪烁;其值为0 0时,时,LEDLED闪烁。如表闪烁。如表9-209-20所示,所示,该命令默认所有数码管均不闪烁。该命令默认所有数码管均不闪烁。d.d.闪烁显示
144、命令闪烁显示命令带数据命令(7条)例如,命令第一字例如,命令第一字节为88H,第二字,第二字节为97H,则L7、L6、L4位位LED闪烁。表表9-20LED闪烁特性特性e.e.消隐控制命令消隐控制命令带数据命令(7条)该命令规定了每个数码管的消隐属性。该命令规定了每个数码管的消隐属性。第一字节的第一字节的D7D3=10011000D7D3=10011000,是消隐控制命令的标志码。,是消隐控制命令的标志码。d8d8d1d1分别对应分别对应L8L8L1L1位数码管,其值为位数码管,其值为1 1时,时,LEDLED显示;值为显示;值为0 0时,消隐,时,消隐,如表如表9-219-21所示。所示。应
145、注意至少要有一个应注意至少要有一个LEDLED数码管保持显示,如全部消隐,该命令无效。数码管保持显示,如全部消隐,该命令无效。e.e.消隐控制命令消隐控制命令带数据命令(7条)例例如如,命命令令第第一一字字节为98H,第第二二字字节为81H,则L7、L6、L5、L4、L3、L2位位LED消消隐。表表9-21LED消消隐特性特性f.f.段点亮命令段点亮命令带数据命令(7条)该命令可控制点亮某个该命令可控制点亮某个LEDLED数码管中的某一段或独立的数码管中的某一段或独立的6464个个LEDLED发光二极管发光二极管中的某一个。中的某一个。第一字节的第一字节的D7D3=11100000D7D3=1
146、1100000,是段点亮命令的标志码。,是段点亮命令的标志码。d5d5d0d0取值为取值为00H00H3FH3FH,点亮段见表,点亮段见表9-229-22。例例如如,命命令令第第一一字字节为E0H,第第二二字字节为00H,则点点亮亮L1位位LED的的g段段;第二字第二字节为10H,则点亮点亮L3位位LED的的g段段f.f.段点亮命令段点亮命令带数据命令(7条)表表9-22段点亮段点亮/关关闭对应表表g.g.段关闭命令段关闭命令带数据命令(7条)该命令可控制关闭某个数码管中的某一段该命令可控制关闭某个数码管中的某一段第一字节的第一字节的D7D0=11000000D7D0=11000000,是段关
147、闭命令的标志码。,是段关闭命令的标志码。d5d5d0d0的取值为的取值为00H00H3FH3FH,所对应的关闭段同表,所对应的关闭段同表9-229-22,仅将点亮段变为关,仅将点亮段变为关闭段。闭段。例例如如,命命令令第第一一字字节为C0H,第第二二字字节为00H,则关关闭L1位位LED的的g段段;第二字第二字节为10H,则关关闭L3位位LED的的g段。段。读取键盘命令读取键盘命令n该命令从该命令从HD7279AHD7279A读出当前按键值。读出当前按键值。n命令命令第一字节为第一字节为15H15H,表示单片机写到,表示单片机写到HD7279AHD7279A是读键命令,是读键命令,n命令命令第
148、二字节第二字节d7d7d0d0为从为从HD7279AHD7279A中读的按键值,其范围为中读的按键值,其范围为00H00H3FH3FH。n当当按按键键按按下下时时,KEYKEY引引脚脚从从高高电电平平变变为为低低电电平平,并并保保持持到到按按键键释释放放为为止止。在在此此期期间间,若若HD7279AHD7279A收收到到来来自自单单片片机机的的读读键键盘盘命命令令15H15H,则则HD7279AHD7279A向向单单片机输出当前的按键代码。片机输出当前的按键代码。n注注意意,HD7279AHD7279A只只能能给给出出其其中中一一个个按按下下键键的的代代码码,不不适适合合需需要要两两个个或或两
149、两个个以以上上键键同同时时按按下下的的场场合合。如如果果确确实实需需要要双双键键组组合合使使用用,可可在在单单片片机机某某位位I/OI/O引脚接一键,引脚接一键,HD7279AHD7279A所连键盘共同组成双键功能。所连键盘共同组成双键功能。时序时序nHD7279AHD7279A采采用用串串行行方方式式与与单单片片机机通通信信,串串行行数数据据从从DATADATA引引脚脚送送入入或或输输出出,并并与与CLKCLK端端同同步步。当当片片选选信信号号CS#CS#变变为为低低电电平平后后,DATADATA引引脚脚上上的的数数据据在在CLKCLK脉脉冲冲上升沿作用下写入或读出上升沿作用下写入或读出HD
150、7279AHD7279A的数据缓冲器。的数据缓冲器。(3 3)命令时序)命令时序a.a.纯命令时序纯命令时序n单单片片机机发发出出8 8个个CLKCLK脉脉冲冲,向向HD7279AHD7279A发发出出8 8位位命命令令,DATADATA引引脚脚最最后后为为高高阻阻态态,如图如图9-219-21所示。所示。图9-21纯命令命令时序序b.b.带数据命令时序带数据命令时序n单单片片机机发发出出1616个个CLKCLK脉脉冲冲,前前8 8个个向向HD7279AHD7279A发发送送8 8位位命命令令;后后8 8个个向向HD7279AHD7279A传送传送8 8位显示数据,位显示数据,DATADATA
151、引脚最后为高阻态,如图引脚最后为高阻态,如图9-229-22所示。所示。图9-22带数据命令数据命令时序序(3)命令时序c.c.读键盘命令时序读键盘命令时序n单单片片机机发发出出1616个个CLKCLK脉脉冲冲,前前8 8个个向向HD7279AHD7279A发发送送8 8位位命命令令;发发送送完完之之后后DATADATA引引脚脚为为高高阻阻态态;后后8 8个个CLKCLK由由HD7279AHD7279A向向单单片片机机返返回回8 8位位按按键键值值,DATADATA引引脚脚为为输输出出状状态态。最最后后一一个个CLKCLK脉脉冲冲的的下下降降沿沿将将DATADATA引引脚脚恢恢复复为为高高阻阻
152、态态,如图如图9-239-23所示。所示。 图9-23读键盘命令命令时序序(3)命令时序n保保证证正正确确的的时时序序是是HD7279AHD7279A正正常常工工作作的的前前提提条条件件。当当选选定定HD7279AHD7279A的的振振荡荡元元件件RCRC和和单单片片机机的的晶晶振振之之后后,应应调调节节延延时时时时间间,使使时时序序中中的的T1T1T8T8满满足足表表9-9-2323要求。要求。n应仔细调整应仔细调整HD7279AHD7279A时序,使其运行时间接近最短。时序,使其运行时间接近最短。(3)命令时序表表9-23T1T8数据数据值(单位:位:s)2.AT89S51单片机与HD72
153、79A接口设计(1 1)硬件接口电路)硬件接口电路n图图9-249-24为为单单片片机机与与HD7279AHD7279A的的接接口口电电路路,外外接接振振荡荡元元件件为为典典型型值值,晶晶振振频频率率为为12MHz12MHz。上电后,。上电后,HD7279AHD7279A大约经过大约经过151518ms18ms的时间才进入工作状态。的时间才进入工作状态。n单单片片机机判判断断键键盘盘矩矩阵阵中中是是否否有有按按键键按按下下,是是通通过过KEYKEY脚脚电电平平来来判判断断的的。使使用用中断方式时,可将中断方式时,可将KEYKEY脚接至单片机的外部中断输入端,并设置成跳沿触发。脚接至单片机的外部
154、中断输入端,并设置成跳沿触发。nHD7279AHD7279A控控制制显显示示器器时时,应应连连接接共共阴阴极极显显示示器器。对对于于不不使使用用的的按按键键和和显显示示器器,可可以以不不连连接接。省省去去的的显显示示器器或或对对显显示示器器设设置置的的消消隐隐、闪闪烁烁属属性性,均均不不影影响响键盘的使用。键盘的使用。n除非不用显示器,否则串联在除非不用显示器,否则串联在DPDP及及SASASGSG引线上的引线上的200200电阻不可省去电阻不可省去(1 1 1 1)硬件接口电路)硬件接口电路)硬件接口电路)硬件接口电路n如如果果不不使使用用键键盘盘,图图9-249-24所所示示的的与与键键盘
155、盘连连接接的的10k10k 电电阻阻和和100k100k 电电阻阻便便可可省去。如果使用键盘,电路中的省去。如果使用键盘,电路中的100k100k 下拉电阻则不可省去。下拉电阻则不可省去。nHD7279AHD7279A采采用用动动态态循循环环扫扫描描方方式式,如如果果采采用用普普通通的的LEDLED数数码码管管亮亮度度不不够够,则则可采用高亮度或超高亮度型号的可采用高亮度或超高亮度型号的LEDLED数码管。数码管。n图图9-249-24所示的所示的3 3、5 5、2626引脚悬空。引脚悬空。图9-24AT89S51单片机与片机与HD7279A的接口的接口电路路(2 2 2 2)驱动程序设计)驱
156、动程序设计)驱动程序设计)驱动程序设计n根根据据图图9-249-24,编编程程实实现现当当有有按按键键按按下下时时,单单片片机机读读取取该该按按键键的的代代码码并并将将其其显示在显示在LEDLED数码管上。数码管上。n程程序序中中使使用用单单片片机机内内RAMRAM的的29H29H和和28H28H两两个个单单元元。29H29H单单元元位位地地址址为为48H48H4FH4FH;28H28H单元位地址为单元位地址为40H40H47H47H。发发送送29H29H单单元元中中的的数数据据到到HD7279AHD7279A,高高位位在在前前。程程序序入入口口条条件件为为 CS#=1CS#=1,CLKCLK
157、= =0 0。SETB P1.0;CS#=1CLRP1.1;CLK=0SEND:MOVR2,#08H;发送送8位数据位数据CLRP1.0;CS#=0LCALLDELY1;延;延时50 s(T1)LOOP1:MOVC, 4FH; 29H单 元元 的的 D7位位 传 至至HD7279AMOVP1.2,C;数据出;数据出现在在DATA引脚上引脚上SETB P1.1;置;置CLK为高高电平,平, 数据写入数据写入HD7279AMOVA,29H;待;待发数据左移数据左移1位位RLAMOV29H,ALCALLDELY2;延;延时8 s(T2)CLRP1.1;置;置CLK为低低电平平LCALLDELY2;延
158、;延时8 s(T3)DJNZ R2,LOOP1;检测8位数据是否位数据是否发送完送完毕CLRP1.2;发送完送完毕,DATA为低低电平(平(输出状出状态) RET;返回;返回(2 2 2 2)驱动程序设计)驱动程序设计)驱动程序设计)驱动程序设计发发送送29H29H单单元元中中的的数数据据到到HD7279AHD7279A,高高位位在在前前。程程序序入入口口条条件件为为 CS#=1CS#=1,CLKCLK= =0 0。CLRP1.0;CS#=0CLRP1.1;CLK=0RESE:MOVR2,#08H;接收;接收8位数据位数据SETB P1.2;P1.2输出出锁存器存器为高高电平,平, 准准备输入
159、入LCALLDELY3;延;延时25 s(T5)LOOP2:SETBP1.1 ;置置CLK为高高电平平,读出出HD7279A数据数据LCALLDELY2;延;延时8 s(T6和和T7)MOVA,28H;接收数据左移;接收数据左移1位位(2 2)驱动程序设计)驱动程序设计读入的键码送到读入的键码送到28H28H单元,高位在前。程序入口条件为:单元,高位在前。程序入口条件为:CS# =CS# =0 0,CLKCLK= =0 0RLAMOV28H,AMOVC,P1.2;接收;接收1位数据位数据MOV40H,C;读入数据存入入数据存入28H的的D0位位CLRP1.1;置;置P1.1为低低电平平LCAL
160、LDELY2;延;延时8 s(T3)DJNZ R2,LOOP2;检测8位数据是否位数据是否发送完送完毕CLRP1.2; 接接 收收 完完 毕 , DATA引引 脚脚 置置 低低 电 平平 RET;返回;返回(2 2)驱动程序设计)驱动程序设计读入的键码送到读入的键码送到28H28H单元,高位在前。程序入口条件为:单元,高位在前。程序入口条件为:CS#=CS#=0 0,CLKCLK= =0 0MOVP1,#0F9H;CS#=1,KEY=1,CLK=0,DATA=0LCALLDELY4;延;延时25msMOV29H,#0A4H;复位命令;复位命令LCALLSENDSETB P1.0; CS#=1M
161、AIN: JBP1.3,MAIN;检测键盘, 无按无按键下下则等待等待MOV29H,#15H;发读键盘命令命令LCALLSEND;写入;写入HD7279ALCALLRESE;读键值到到28H单元元查询方式读键值并显示查询方式读键值并显示(2 2)驱动程序设计)驱动程序设计SETB P1.0;CS# =1MOVB,#0AH;十六;十六进制制键值转换成成BCD码MOVA,28HDIVABMOVR1,A;十位;十位暂存于存于R1MOV29H,#81H;按方式;按方式0译码显示在示在L2位位LEDLCALLSEND;命令写入;命令写入HD7279ALCALLDELY3;延;延时25 s(T4)MOV2
162、9H,R1LCALLSEND;显示十位示十位(2 2)驱动程序设计)驱动程序设计查询方式读键值并显示查询方式读键值并显示SETBP1.0; CS# =1MOV29H,#80H;按方式;按方式0译码显示在示在L1位位LEDLCALLSENDLCALLDELY3;延;延时25 s(T4)MOV 29H,B;显示个位示个位LCALLSENDSETBP1.0;CS#=1WAIT: JNBP1.3,WAIT;等待按;等待按键释放放SJMPMAIN上述程序中的各延时子程序上述程序中的各延时子程序DELY1DELY3DELY1DELY3由用户自行编写。由用户自行编写。(2 2)驱动程序设计)驱动程序设计查询方式读键值并显示查询方式读键值并显示