键盘和LED显示实例_第1页
键盘和LED显示实例_第2页
键盘和LED显示实例_第3页
键盘和LED显示实例_第4页
键盘和LED显示实例_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

1、第三节、键盘/显示器接口实例一、利用8155芯片实现键盘/显示器接口二、利用8051的串行口实现键盘/显示器接口三、利用8279专用键盘/显示器接口芯片实现键盘/显示器接口四、利用7289芯片实现键盘/显示器接口一、利用8155芯片实现键盘/显示器接口1.接口电路一、利用8155芯片实现键盘/显示器接口1.接口电路 8031外扩一片8155,8155的RAM地址为7E007EFFH,I/O口地址为7F00H7F05H。 8155的PA口为输出口,控制键盘的列线的电位,同时又是6位显示器的扫描口。PB口作为显示器的段数据口,8155的PC口作为键输入口,PC0PC3接4根行线。 图中75452为

2、反相驱动器,7407为同相驱动器。一、利用8155芯片实现键盘/显示器接口2.接口程序设计 对于图中的6位显示器,在8031内部RAM中设置6个显示缓冲单元79H7EH,分别存放显示器的6位字符代码,显示时先通过软件转换为段码。 8155的PA口输出位选择信号,8155H的PB口输出相应位的段数据。8155芯片实现键盘/显示器接口程序显示子程序清单:DIR: MOV DPTR,#7F00H ;8155初始化 MOV A,#03H MOVX DPTR,A MOV R0,#79H ;置缓冲器指针初值 MOV R3,#01H ;扫描位初值 LD0: MOV DPTR,#7F02H ;关显示 MOV

3、A,#00H MOVX DPTR,A MOV DPTR,#7F01H ;扫描模式8155PA口 MOV A,R38155芯片实现键盘/显示器接口程序 MOVX DPTR,A INC DPTR MOV A,R0 ;取显示数据 ADD A,#17H ;加偏移量 MOVC A,A+PC ;查表取段数据DIR1: MOVX DPTR,A ;段数据8155PB口 ACALL DL1 ;延时1ms INC R0 MOV A,R3 JB ACC.5,LD1 ;6位都显示完? RL A ;未完,准备显示下一位 MOV R3,A8155芯片实现键盘/显示器接口程序 AJMP LD0LD1 : RETDL1 :

4、MOV R7,#02H ;延时子程序DL : MOV R6,#0FFHDL6 : DJNZ R6,DL6 DJNZ R7,DL RETDSEG: DB 3FH,06H, ;段数据表一、利用8155芯片实现键盘/显示器接口2.接口程序设计 键输入子程序,先调用KS1子程序,判断有无键闭合。若有键闭合,则进一步分析此按键在哪一行、哪一列,并进而获得键读数。程序中多处调用显示子程序,是为了使显示器保持稳定显示,有时还起到延时的作用。8155芯片实现键盘/显示器接口程序键输入子程序清单: KEY1:ACALL KS1 ;调用判有无键闭合子程序 JNZ LK1 ;有键闭合,转 NI: ACALL DIR

5、 ;无键,调用显示子程序延迟6ms AJMP KND ;无键返回 LK1: ACALL DIR ;延迟12ms ACALL DIR ACALL KS1 ;调用判有无键闭合子程序 JNZ LK2 ;有键闭合 ACALL DIR ;无键,调用显示子程序延迟6ms AJMP KND ;返回8155芯片实现键盘/显示器接口程序LK2: MOV R2,#0FEH ;扫描模式R2 MOV R4,#00H ;列计数器置初值LK4: MOV DPTR,#7F01H ;扫描模式8155PA口 MOV A,R2 MOVX DPTR,A INC DPTR INC DPTR MOVX A,DPTR ;读8155PC口

6、 JB ACC.0,LONE ;0行无键,转判1行 MOV A,#00H ;0行有键闭合, 首键号0A AJMP LKP8155芯片实现键盘/显示器接口程序LONE: JB ACC.1,LTWO ;1行无键,转判2行 MOV A,#08H ;1行有键闭合,首键号8A AJMP LKPLTWO: JB ACC.2,LTHR ;2行无键,转判3行 MOV A,#10H ;2行有键闭合, 首键号10H A AJMP LKPLTHR: JB ACC.3,NEXT ;转判下一列 MOV A,#18H ;3行有键闭合, 首键号18H ALKP: ADD A,R4 PUSH A ;键号进栈保护8155芯片实

7、现键盘/显示器接口程序LK3: ACALL DIR ;判键释放否 ACALL KS1 JNZ LK3 POP A ;键号A RETNEXT: INC R4 ;列计数器加1 MOV A,R2 ;判是否已扫描到最后一列 JNB ACC.7,KND ;是,无键入再查 RL A ;未到最后列,扫描模式左移一位 MOV R2,A AJMP LK48155芯片实现键盘/显示器接口程序KND: MOV A , #0FFH ;无键,置A为全1,返回 RETKS1 : MOV DPTR,#7F01H ;全“0”扫描口 MOV A,#00H MOVX DPTR,A INC DPTR INC DPTR MOVX A

8、,DPTR ;读入键状态 CPL A ANL A,#0FH ;屏蔽高位 RET二、利用8051的串行口实现键盘/显示器接口 应用8051的串行口方式0输出,在串行口外接74LS164移位寄存器,构成键盘/显示器接口,其硬件接口电路如下图所示:二、利用8051的串行口实现键盘/显示器接口二、利用8051的串行口实现键盘/显示器接口 图中下边的8个74LS164作为8位七段显示器的静态显示口,上边的74LS164作为键扫描输出口,8051的P3.4、P3.5作为键输入线,P3.3作为同步脉冲输出控制线。 这种静态显示方式显示亮度高、不闪烁。CPU不必频繁地为显示服务,软件设计比较简单,从而使单片机

9、有更多的时间处理其它事务。 下面分别列出显示子程序和键盘扫描子程序的清单。二、利用8051的串行口实现键盘/显示器接口显示子程序:DIR: SETB P3.3 ;开放显示输出 MOV R7,#08H ;8位显示器计数 MOV R0,#7FH ;7FH78H为显示缓冲器DL0: MOV A,R0 ;取出要显示的数 ADD A,#0DH ;加上偏移量 MOVC A,A+PC ;查表取出字形数据 MOV SBUF,A ;送出显示DL1: JNB TI,DL1 ;输出完否? CLR TI ;完,清中断标志 DEC R0 ;准备再取下一个数 DJNZ R7,DL0 CLR P3.3 ;关闭显示器输出 R

10、ET ;返回二、利用8051的串行口实现键盘/显示器接口显示子程序:SEGTAB: DB 0C0H,0F9H,0A4H,0B0H,99H ;0,1,2,3,4 DB 92H,82H,0F8H,90H,88H ;5,6,7,8,9 DB 83H,0C6H,0A1H,86H,8FH ;A,B,C,D,E DB 0BFH,8CH,0FFH,0FFH ;F,-,P,暗键盘扫描子程序: KEY: MOV A , #00H MOV SBUF , A ;使扫描键盘的164输出为00H KL0: JNB TI , KL0 ;输出完否? CLR TI ;清0中断标志 KL1: JNB P3.4 , PK1 ;第

11、一行键中有闭合键吗?有转 JB P3.5 , NOKEY ;在第二行键有闭合键吗?无转二、利用8051的串行口实现键盘/显示器接口键盘扫描子程序:PK1: ACALL DL10 ;延时 JNB P3.4 , PK2 ;是否抖动引起的?不是,转PK2 JB P3.5 , NOKEY ;是抖动引起的PK2: MOV R7 , #08H ;不是抖动引起的,由R7控制8列 MOV R6 ,#0FEH ;判别是哪个键被按下,从最左开始 MOV R3 , #00H ;列计数,最左列开始,键读数由 ;该行首键号加上列号码 MOV A , R6KL5: MOV SBUF , A KL2: JNB TI , K

12、L2 ;等待串行口发送完 CLR TI JNB P3.4 , PKONE ;是第一行某键否?是,转 JB P3.5 , NEXT ;是第二行某键否?不是,转 二、利用8051的串行口实现键盘/显示器接口键盘扫描子程序: MOV R4 , #08H ;第二行有键被按下, ;首键号08HR4 AJMP PK3 PKONE: MOV R4 , #00H ;第一行有键被按下, ;首键号00HR4 PK3: MOV SBUF , #00H ;等待键释放 KL3: JNB TI , KL3 CLR TI KL4: JNB P3.4 , KL4 ;检测键释放 JNB P3.5 , KL4 MOV A , R

13、4 ;键释放,取得键码 ADD A , R3 ;键码等于行首键号列号码 RET二、利用8051的串行口实现键盘/显示器接口键盘扫描子程序:NEXT : MOV A , R6 ;判下一列键是否按下 RL A MOV R6 , A INC R3 DJNZ R7 , KL5 ;8列键都检查完否?未完继续NOKEY: MOV A , #0FFH ;完了,无键,置A为全1 RET ;返回DL10: MOV R7 , #0AH ;延时10ms子程序DL: MOV R6 , #0FFHDL6: DJNZ R6 , DL6 DJNZ R7 , DL RET三、利用8279专用键盘显示器接口芯片实现键盘显示器接

14、口 8279是Intel公司生产的专用可编程键盘和显示器接口芯片。可实现对键盘/显示器的自动扫描,并识别键盘上闭合键的键号,不仅可以大大节省CPU对键盘/显示器的操作时间,而且显示稳定,接口程序简单。三、利用8279专用键盘显示器接口芯片实现键盘显示器接口(一)8279的引脚及内部结构8279的引脚及逻辑结构图如下所示:三、利用8279专用键盘显示器接口芯片实现键盘显示器接口(一)8279的引脚及内部结构8279的内部结构图如下所示:(一)8279的引脚及内部结构 1. I/O控制和数据缓冲器 双向的三态数据缓冲器将内部总线和外部总路线DB07连接,用于传送CPU和8279之间的命令、数据和状

15、态。 CS片选信号,低电平有效。 A0:用以区分信息的特性。当A0为1时,CPU写入8279的信息为命令,CPU从8279读出的信息为状态。当A0为0时,I/O信息都为数据。(一)8279的引脚及内部结构 2. 控制逻辑 控制与定时寄存器用于寄存键盘及显示器的工作方式,锁存操作命令,通过译码产生相应的控制信号,使8279的各个部件完成一定的控制功能。 定时控制逻辑含有一个可编程的5位计数器,对外部输入时钟信号进行分频,以产生100kHz的内部定时信号。外部时钟输入信号的周期不小于500ns。(一)8279的引脚及内部结构 3. 扫描计数器 扫描计数器有两种输出方式: 外部译码方式,计数器以二进

16、制方式计数,4位计数状态从扫描线SL0SL3输出。经外部译码器译出16位扫描线; 内部译码方式,即扫描计数器的低二位经片内译码器译码后从SL0SL3输出,直接作为扫描信号。 (一)8279的引脚及内部结构 4. 键输入控制 这个部件完成对键盘的自动扫描,锁存RL0RL7的键输入信息,搜索闭合键,去除键的抖动,并将键输入数据写入内部先进先出存贮器FIFO RAM。(一)8279的引脚及内部结构 5. FIFO RAM和显示缓冲器RAM 8279具有8个先进先出(FIFO)的键输入缓冲器,并提供16个字节的显示缓冲器RAM。 将段码写入显示缓冲器RAM,8279自动对显示器扫描,将其内部显示缓冲器

17、RAM中的数据在显示器上显示出来。(一)8279的引脚及内部结构 5. FIFO RAM和显示缓冲器RAM IRQ为中断请求输出线,高电平有效。当FIFO RAM缓冲器中存有键盘上闭合键的信息时,IRQ线升高,向CPU请求中断,当CPU将缓冲器中的输入键信息全部读取时,中断请求线下降为低电平。(一)8279的引脚及内部结构 5. FIFO RAM和显示缓冲器RAM SHIFT、CNTL/STB为控制键输入线,由内部拉高电阻拉成高电平,也可由外部控制按键拉成低电平。 RL0RL7为反馈输入线,作为键输入线,由内部拉高电阻拉成高电平,也可由键盘上按键拉成低电平。(一)8279的引脚及内部结构 5.

18、 FIFO RAM和显示缓冲器RAM SL0SL3为扫描输出线,用于对键盘显示器扫描。 OUTB03、OUTA03为显示段数据输出线,可分别作为两个半字节输出,也可作为8位段数据输出口,此时OUTB0为最低位,OUTA3为最高位。(一)8279的引脚及内部结构 5. FIFO RAM和显示缓冲器RAM BD为消隐输出线,低电平有效,当显示器切换时或使用显示消隐命令时,将显示消隐。 RESET为复位输入线,高电平有效,当RESET输入端出现高电平时,8279被初始复位。(二)8279的操作命令字 8279内部的命令寄存器和状态寄存器合用一个地址(由A0C/D1选中),对其写入的是命令,读出的是状

19、态。 8279共有8条命令,每条命令8位,用其中的高三位(特征位)来区分8条命令。(二)8279的操作命令字 (1)键盘/显示器方式设置命令字000DDKKK键盘工作方式选择设置显示方式特征位(二)8279的操作命令字 (1)键盘/显示器方式设置命令字D4D3两位用来设定显示方式,其定义如下: D4D3显示器方式008个字符显示左边输入0116个字符显示左边输入108个字符显示右边输入1116个字符显示右边输入(二)8279的操作命令字 (1)键盘/显示器方式设置命令字 CPU将显示数据写入缓冲器RAM单元,有左边输入和右边输入两种方式。左边输入地址为0 15的显示缓冲器,分别对应于显示器的0

20、(左)位15(右)位。CPU依次从0地址或某一个地址开始将段数据写入显示缓冲器。 当16个显示缓冲器都已写满(从0地址开始写,写了16次)时,第17次写,再从0地址开始写入,写入过程如下: (二)8279的操作命令字 (1)键盘/显示器方式设置命令字(二)8279的操作命令字 (1)键盘/显示器方式设置命令字 右边输入方式是移位输入方式,输入数据总是写入右边的显示缓冲器,数据写入显示缓冲器后,原来缓冲器的内容左移一个字节,原最左边显示器缓冲器的内容被移出。写入过程如下: 在右边输入方式中,显示器的各位和显示缓冲器RAM的地址并不是对应的。(二)8279的操作命令字 (1)键盘/显示器方式设置命

21、令字1(二)8279的操作命令字 (1)键盘/显示器方式设置命令字D2、D1、D0为键盘工作方式选择位,见下表: (二)8279的操作命令字 (1)键盘/显示器方式设置命令字 键扫描方式:扫描线SL3SL0(或经外部译码后)和返回线RL7RL0与矩阵式键盘的行、列线相连,当有按键时8279自动识别,并将被按键的行列信息送入FIFO RAM 同时产生IRQ信号。(二)8279的操作命令字 (1)键盘/显示器方式设置命令字 扫描传感矩阵方式:片内去抖动逻辑被禁止,能对每一行传感器的状态进行扫描,当扫描的行中任何一个列位状态发生变化时便自动产生IRQ信号,并将返回线状态直接送往传感器RAM(即FIF

22、O RAM)(二)8279的操作命令字 (1)键盘/显示器方式设置命令字 选通输入方式:返回线RL7RL0作为选通输入口,CNTL/STB作为选通信号输入端。在选通信号CNTL/STB上升沿将返回线上的数据传送到FIFO RAM中。(二)8279的操作命令字 (1)键盘/显示器方式设置命令字 双键互锁,当键盘中同时有两个以上的键被按下时,任何一个键的编码信息均不能进入FIFO RAM中,直至仅剩下一键保持闭合时,该键的信息方能进入FIFO,这种工作方式可以避免部分误操作信号进入计算机。(二)8279的操作命令字 (1)键盘/显示器方式设置命令字 N键依次读出方式:当多个键同时按下时,则所有键均

23、以扫描顺序被识别,按键信息依次写入FIFO RAM中。(二)8279的操作命令字 (2)时钟编程命令字 8279的内部定时信号由外部的输入时钟经过分频后产生,分频系数由时钟编程命令字确定,时钟编程命令字格式如下:001PPPPP分频系数特征位(二)8279的操作命令字 (2)时钟编程命令字 D4-D0为分频系数,可在231次分频中进行选择,将进入8279的时钟频率进行N次分频后,可获得8279内部所需的100khz的时钟。(二)8279的操作命令字 (3)读FIFO RAM命令字010AIXAAA特征位起始地址起始地址自动增量标志(二)8279的操作命令字 (3)读FIFO RAM命令字010

24、AIXAAA 在键扫描方式中,AI、AAA均被忽略,CPU读键输入数据时,总是按先进先出的规律读出,直至输入键 全部读出为止。 在传感器矩阵扫描中,若AI1,CPU则从起始地址开始依次读出,每次读出后地址自动加1;AI0时,CPU仅读一个单元的内容。(二)8279的操作命令字 (4)写显示缓冲器RAM命令字100AIAAAA特征位起始地址自动增量标志起始地址(二)8279的操作命令字 (4)写显示缓冲器RAM命令字100AIAAAA 当CPU执行写显示缓冲RAM时,首先用该命令字给出要写入的显示缓冲器RAM的地址。四位二进制代码AAAA用来寻址显示缓冲器RAM的一个缓冲单元,若AI1,则CPU

25、在第一次写入时须给出地址,以后每次写入,地址自动加1,直至所有显示缓冲器RAM全部写毕。(二)8279的操作命令字 (5)读显示缓冲器RAM命令字011AIAAAA特征位起始地址起始地址自动增量标志(二)8279的操作命令字 (5)读显示缓冲器RAM命令字011AIAAAA 在CPU读显示数据之前,必须先输出读显示缓冲器RAM的命令。四位二进制代码AAAA用来寻址显示缓冲器RAM的一个缓冲单元,AI为自动增量标志,若AI1,则CPU每次读出后,地址自动加1。(二)8279的操作命令字 (6)显示屏蔽消隐命令字101XIWAIWBBLABLB屏蔽A组显示缓冲器RAM屏蔽B组显示缓冲器RAM消隐A

26、组显示输出消隐B组显示输出特征位(二)8279的操作命令字 (6)显示屏蔽消隐命令字 高3位101为该命令字的特征位。IWA和IWB分别用以屏蔽A组和B组显示缓冲器RAM。在使用双4位显示器时,即OUTA0-3和OUTB0-3独立地作为两个半字节输出时,可改写显示缓冲器RAM中的低半字节而不影响高半字节的状态(D31),反之D21时可改写高半字节而不影响低半字节。 BL位是消隐特征位,要消隐两组显示输出,必须使D0,D1同时为1,BL0时,则恢复显示。(二)8279的操作命令字 (7)清除命令字110CDCDCDCFCA总清特征位清除FIFO RAM位设置清除显示RAM的方式特征位(二)827

27、9的操作命令字 (7)清除命令字设置清除显示RAM方式1 0 X:将显示RAM全部清“0”1 1 0:将显示RAM全部清成20H1 1 1:将显示RAM全部置“1”0 X X :若CA0,则不清除若CA1,则D3D2仍有效即根据D3D2的内容将显示RAM清“0”、置“1”、或清成20H 清除显示RAM大约需要100us,在此期间,不能向显示RAM写数据。CD CD CD(二)8279的操作命令字 (7)清除命令字CA0不清除不清除1清除FIFO和显示RAM,显示RAM清 除方式由D3、D2决定。用来置空FIFO RAM,执行CF1的清除命令,FIFO RAM 被置空,使IRQ线复位,同时显示R

28、AM的地址被置“0”。CF(二)8279的操作命令字 (8)结束中断/错误方式设置命令111EXXXX其中:D7D6D5111为该命令的特征位。此命令有两种不同的作用。特征位(二)8279的操作命令字 (8)结束中断/错误方式设置命令.作为结束中断命令。在传感器工作方式中。每当传感器状态出现变化时,扫描检测电路将其状态写入传感器RAM中,并启动中断逻辑,使IRQ变高,向CPU请求中断,并且禁止写入传感器RAM。此时,若传感器RAM读出地址自动增量标志AI1,CPU对传感器RAM的读出并不能清除IRQ,而必须通过给8279写入结束中断/错误方式设置命令(E1)才能使IRQ变低,结束传感器RAM的

29、中断请求。(二)8279的操作命令字 (8)结束中断/错误方式设置命令.作为特定错误方式设置命令。在8279已被设定为键盘扫描N键依次读出方式以后,如果CPU给8279又写入结束中断/错误方式设置命令(E=1),则8279将以一种特定的错误方式工作。这种方式的特点是:在8279的消颤周期内,如果发现多个按键同时按下,则状态字中的错误特征位S/E将置1,并产生中断请求信号和阻止写入FIFO RAM。(二)8279的操作命令字 上述八种用于确定8279操作方式的命令字皆由D7D6D5特征位确定,输入8279后能自动寻址相应的命令寄存器。因此,写入命令字时唯一的要求是使数据选择信号A0=1。(三)状

30、态字节 8279的状态字节用于键输入和选通输入方式中,指出FIFO RAM中的字符个数和是否出错,状态字的格式如下:DUS/EOUFNNN(三)状态字节DUS/EOUFNNN表示FIFO RAM中数据的个数为1时表示FIFO RAM已满当FIFO RAM为空时,若CPU读FIFO则置“1”标志当FIFO RAM已满,又输入一个字符,发生溢出,该位置置1错误的特征位在清除命令执行期间该位为1,此时对显示RAM的写操作无效(三)状态字节错误特征位1、在传感器矩阵方式,当几个 传感器同时闭合时,该位置1。2、在键扫描,N键依次读出,且 工作在特定错误工作方式时, 若S/E=1,表示出现了多键同 时按

31、下的错误。(四)输入数据格式 在键扫描方式中,键输入数据格式如下:CNTLSHIFTSCANSCANSCANRETURN RETURN RETURN指出输入键据的列号(RL0-7状态确定)指出输入键所在的行号(扫描计数值)指出控制键SHIFT的状态。指出控制键CNTL的状态。(四)输入数据格式 控制键CNTL、SHIFT为单独的开关键 。CNTL与其它键连用作为特殊命令键,SHIFT可作为上下档控制键。若与键盘(88)配合,使键盘各键具有上、下键 功能,这样键盘可扩充到128个键。CNTL线可接一键用作控制键,这样,最多可扩充到256键。 2、在传感器扫描方式或选通输入方式中,输入数据即为RL

32、7RL0的输入状态。RL7RL6RL5RL4RL3RL2RL1RL0D7D0(五)8279与键盘/显示器接口 下图为8位显示器、48键盘和8279的接口电路。图中键盘的行线接8279的RL0RL3,8279用外部译码方式,SL0-SL2经74LS138(1)译码输出Y0Y7接键盘的列线,SL0SL2又由74LS138(2)译码输出Y0Y7,经驱动后输出到显示器各位的公共阴极,输出线OUTB0-3、OUTA0-3作为8位段数据输出口。(五)8279与键盘/显示器接口 BD控制74LS138(2)的译码。当位切换时,BD输出低电平,使74LS138(2)输出全为高电平。 当键盘上出现有效的闭合键时

33、,键输入数据自动地进入8279的FIFO RAM存储器,并向8051请求中断,8051响应中断读取FIFO RAM的输入键值。 要更新显示器输出,仅需改变8279中显示缓冲器RAM中的内容。(五)8279与键盘/显示器接口 上图中,8279的命令/状态口地址为7FFFH,数据口地址为7FFEH,键输入中断服务程序和更新显示器的输出子程序流程图如下所示:键输入中断服务程序流程显示输出子程序流程(五)8279与键盘/显示器接口 8279与键盘/显示器接口程序清单如下:初始化程序清单:INITl:SETB EX1 ;开INT1中断 MOV DPTR ,#7FFFH MOV A,#0DlH ;清除命令

34、 MOVX DPTR,ALP: MOVX A,DPTR ;读状态字节 JB ACC.7,LP MOV A,#00H ;键盘/显示器方式设置命令 MOVX DPTR,A MOV A,#2AH ;时钟编程命令 MOVX DPTR,A SETB EA 1INT1INT(五)8279与键盘/显示器接口 8279与键盘/显示器接口程序清单如下:键输入中断服务程序清单:PINTl:PUSH PSW PUSH DPH PUSH DPL PUSH ACC MOV DPTR , #7FFFH ;输出读FIFO命令 MOV A , #40H MOVX DPTR ,A MOV DPTR , #7FFEH MOVX

35、A , DPTR ;此接口中只要将键信息 ;的b5b4b3与b2b1b0交换即得到键值。 MOV B , A ANL A , #07H ;取b2b1b0RL A ;左移3次RL ARL AMOV R2 , AMOV A , BANL A , #38H ;取b5b4b3RR A ;右移3次RR A RR A ORL A , R2 ;合并得到键值MOV B , A ;键值在B中(五)8279与键盘/显示器接口 (五)8279与键盘/显示器接口 8279与键盘/显示器接口程序清单如下:PRI1: POP A POP DPL POP DPH POP PSW RETI显示子程序:DIR: MOV DPT

36、R , #7FFFH ;输出写显示RAM命令 MOV A , #90H ;0地址开始自动增1 MOVX DPTR , A MOV R0 , #70H ;显示缓冲区指针初值 MOV R7 , #08H ;8位显示器计数初值 MOV DRTR , # 7FFEH(五)8279与键盘/显示器接口 8279与键盘/显示器接口程序清单如下:DL0: MOV A , R0 ADD A , #05H MOVC A , A+PC ;转换为段数据 MOVX DPTR , A ;写入显示RAM INC R0 DJNZ R7 , DL0 RETADSEG: DB 3FH,06H,5BH,4FH ;段数据表(共阴极)

37、四、利用7289芯片实现键盘 /显示接口 7289是具有SPI串行接口功能的可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。 7289内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外,还具有多种控制指令如消隐、闪烁、左移、右移、段寻址等。 7289具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。 (一)概述(一)概述串行接口无需外围元件可直接驱动LED各位独立控制译码/不译码及消隐和闪烁属性(循环)左移/(循环)右移指令具有段寻址指令方便控制独立L

38、ED64 键键盘控制器内含去抖动电路 7289特点:(一)概述(一)概述四、利用7289芯片实现键盘 /显示接口(一)概述(一)概述引脚名称说 明1,2VDD正电源3,5NC悬空4VSS接地6/CS片选输入端,此引脚为低电平时,可向芯片发送指令及读取键盘数据7CLK 同步时钟输入端,向芯片发送数据及读取键盘数据时,此引脚电平上升沿表示数据有效8DATA串行数据输入/输出端。当芯片接收指令时,此引脚为输入端;当读取键盘数据时,此引脚在读指令最后一个时钟的下降沿变为输出端(一)概述(一)概述9/KEY按键有效输出端,平时为高电平,当检测到有效按键时,此引脚变为低电平10-16SG-SA段g段a驱动

39、输出17DP小数点驱动输出18-25DIG0-DIG7数字0数字7驱动输出26OSC2振荡器输出端27OSC1振荡器输入端28/RESET复位端1. 纯指令(1) 复位(清除)指令 当7289 收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。 执行该指令后,芯片所处的状态与系统上电后所处的状态一样。(二)控制指令:(二)控制指令:(2)测试指令 该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试。 (二)控制指令:(二)控制指令:(3)左移指令 使所有的显示自右向左(从第1 位向第8 位)移动一位(包括处于消隐状态的显示位),但对各位所设置的消隐及闪烁属性不

40、变。移动后,最右边一位为空(无显示)。(二)控制指令:(二)控制指令: 例如,原显示为: 其中第2位2和第4 位4为闪烁显示,执行了左移指令后,显示变为 第二位3和第四位5为闪烁显示。 (二)控制指令:(二)控制指令:(4)右移指令 与左移指令类似,但所做移动为自左向右(从第8位向第1位)移动,移动后,最左边一位为空。 (二)控制指令:(二)控制指令:(5)循环左移指令: 与左移指令类似,不同之处在于移动后原最左边一位(第8位)的内容显示于最右位(第1位)。例如:执行完循环左移指令后的显示为(二)控制指令:(二)控制指令:(6)循环右移指令 与循环左移指令类似,但移动方向相反。 (二)控制指令

41、:(二)控制指令:2.带有数据的指令:(1)下载数据且按方式0译码 a) 此命令由二个字节组成,前半部分为指令,其中a2, a1, a0 为位地址,见下表: (二)控制指令:(二)控制指令:(二)控制指令:(二)控制指令:2.带有数据的指令:(1)下载数据且按方式0译码 b)第二字节为数据,x=无影响; c)小数点的显示由DP位控制,DP=1时,小数点显示, DP=0时,小数点不显示; d)d0d3为数据,收到此指令时,zlg7289A按以下规则(译 码方式0)进行译码。 (二)控制指令:(二)控制指令:2.带有数据的指令:(1)下载数据且按方式0译码方式0译码(二)控制指令:(二)控制指令:

42、2.带有数据的指令:(2)下载数据且按方式1译码 X=无影响 此指令与上一条指令基本相同,所不同的是译码方式,该指令的译码按下表进行: (二)控制指令:(二)控制指令:方式1译码(二)控制指令:(二)控制指令:2.带有数据的指令:(3)下载数据,但不译码其中:(1)a2 a1 a0 为位地址,(2)A-G和DP为显示数据,分别对应8段LED数码管的 各段。当相应的数据位为1时该段点亮,否则不亮。 (二)控制指令:(二)控制指令:2.带有数据的指令:(4)闪烁控制 此命令控制各个数码管的消隐属性。d1d8 分别对应数码管18,0=闪烁,1=不闪烁。开机后,缺省的状态为各位均不闪烁。 (二)控制指

43、令:(二)控制指令:2.带有数据的指令:(5)消隐控制 此命令控制各个数码管的消隐属性。d1d8 分别对应数码管18,1=显示,0=消隐。 当某一位被赋予了消隐属性后,7289在扫描时将跳过该位,该位不被显示,但写入的值将被保留。将该位重新设为显示状态后,最后一次写入的数据将被显示出来。 注意:至少应有一位保持显示状态,如果消隐控制指令中d1d8全部为0,该指令将不被接受,7289保持原来的消隐状态不变。 (二)控制指令:(二)控制指令:2.带有数据的指令:(6)段点亮指令 此为段寻址指令,作用为点亮数码管中某一指定的段,或LED矩阵中某一指定的LED。指令中,X=无影响;d0d5段地址,范围

44、从00H 3FH,具体分配为: 第1个数码管的G段地址为00H,F段为01H, . A段为06H,小数点DP为07H,第2个数码管的G段为08H,F段为09H, ,依此类推直至第8个数码管的小数点DP地址为3FH。 (二)控制指令:(二)控制指令:2.带有数据的指令: (7)段关闭指令 段寻址命令,作用为关闭(熄灭)数码管中的某一段,指令结构与段点亮指令相同 。(二)控制指令:(二)控制指令:2.带有数据的指令: (8)读键盘数据指令 该指令从7289读出当前的按键代码。与其它指令不同,此命令的前一个字节0001010B为单片机传送到7289的指令,而后一个字节d0d7则为7289返回的按键代

45、码,其范围是03FH(无键按下时为0Xff), (二)控制指令:(二)控制指令:(三)SPI串行接口7289的指令结构有三种类型: 1.不带数据的纯指令,指令的宽度为8个BIT,即微处理器需发送8个CLK 脉冲。 2.带有数据的指令,宽度为16个BIT,即微处理器需发送16个CLK脉冲。 3.读取键盘数据指令,宽度为16 个BIT,前8个为微处理器发送到7289的指令,后8个BIT为7289返回的键盘代码。执行此指令时,7289的DATA端在第9个CLK脉冲的上升沿变为输出状态,并与第16个脉冲的下降沿恢复为输入状态,等待接收下一个指令。 串行接口时序图:1.纯指令(三)SPI串行接口串行接口

46、时序图:1.带数据指令(三)SPI串行接口(三)SPI串行接口串行接口时序图:1.读键盘指令(三)SPI串行接口串行接口时序图:ssssssss参 数意 义最小值典型值最大值单位T1从CS下降沿至CLK脉冲时间2550250T2传送指令时CLK脉冲宽度58250T3字节传送中CLK脉冲时间间隔58250sss(三)SPI串行接口串行接口时序图:参 数意 义最小值典型值最大值单位T4指令与数据时间间隔1525250T5读键盘指令中指令与输出数据时间间隔1525250T6输出键盘数据建立时间58T7读键盘数据时CLK脉冲宽度58250T8读键盘数据完成DATA转为输入状态时间5sssss(四)应用

47、设计实例(四)应用设计实例 以下为7289与8051单片机的接口例程。当系统开机时显示HELLO,键盘采用中断模式;当用户按下键盘时,进入中断服务模式,读取按键的键值并存放在REC_BUF之中。 BIT_CNT DATA 30H ; 定义BIT_CNT 为内部RAM的30HDELAY1 DATA 31H ; 定义DELAY1 为内部RAM的31HDELAY DATA 33H ; 定义DELAY 为内部RAM的33HDECIMAL DATA 32H ; 定义DECIMAL 为内部RAM的32HREC_BUF DATA 20H ; 定义REC_BUF 为内部RAM的20HSEND_BUF DATA 21H ; 定义SEND_BUF 为内部RAM的21HCS BIT P1.1 ; 定义CS 为P1

温馨提示

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

评论

0/150

提交评论