键盘显示接口技术Word下载.docx
《键盘显示接口技术Word下载.docx》由会员分享,可在线阅读,更多相关《键盘显示接口技术Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
7号键按下转P7F标号地址
JNP
START
无键按下就返回
POF:
LJMP
PL0
P1F:
PL1
:
:
P7F:
PL7
入口地址表
PL0:
…
0号键功能程序
0号键执行返回
PL1:
…
START
PL7:
由以上程序可知,各个按键由软件设置了优先级,优先顺序为0~7
矩阵式键盘接口设计
矩阵式键盘工作原理
将I/O口线的一部分作为行线,另一部分作为列线,按键设置在行线和列线的交叉点上,这就构成了矩阵式键盘。
矩阵式键盘中按键的数量可达行线数n乘以列线数m,如4行、4列的矩阵键盘的按键数可以达到4×
4=16个。
由此可见矩阵式键盘在按键较多时,可以节省I/O口线。
8位单片机系统常用键盘大小有4×
4、4×
8、8×
8等。
下面以4×
4矩阵式键盘为例说明矩阵式键盘的工作原理,电路原理图如图7-2所示。
从图7-2可见,8条I/O口线分为4条行线和4条列线,按键设置在行线和列线交点上,即按键开关的两端分别接在行线和列线上。
行线通过一个电阻接到+5V电源上,在没有键按下时,行线处于高电平状态。
判断是否有键按下的方法分下面几步:
(1)向所有的列线I/O口输出低电平后,将行线的电平状态读人累加器A中。
若无键下,行线仍保持高电平状态,若有键按下,行线至少应有一条为低电平。
(2)确定有键按下后,求键码。
求键码的方法是:
依次从一条列线上输出低电平,然后检查各行线的状态,若全为高电平,说明该闭合键不在该列,若不全为1,则说明闭合键在该列,且在变为低电平的行的交点上。
值得注意的是,在键盘处理程序中,每个键都被赋予了一个键号,由从列线I/O口输出的数据和从行线I/O口读入的数据可以求出闭合键的键号。
矩阵式键盘工作方式
在单片机应用系统中,非编码键盘由CPU通过键盘处理程序完成整个工作过程。
相对CPU来说,按键闭合是随机发生的,键盘处理程序必须能够及时捕捉到闭合的键,并求出其键码。
按照这一过程的不同,非编码键盘的工作方式可分为程序扫描方式和中断扫描方式。
1.程序扫描方式
一般情况下,在单片机应用系统中,键盘处理只是CPU工作的一部分。
为了能及时发现有键按下CPU必须不断调用键盘处理程序,对键盘进行扫描,因此称为程序扫描方式。
图7-3是由8051与一种矩阵式键盘构成的接口电路。
由8155扩展的I/O口作为行线和列线,构成具有32键的4×
8的矩阵式键盘。
行线与8l55的PC0—PC3相连,列线与PA口的8条线相连,键码如图7-3所示。
键盘工作过程如下:
⑴判断键盘中有无键按下。
如PA口输出00H,再将PC口的状态读入,若PC0~PC3全为1,说明无键按下,若不全1,则有键按下。
⑵消除抖动。
当发现有键按下时,延时一段时间后再判断键盘的状态,若仍有键保持按下状态,则可断定有键按下,否则认为是抖动。
⑶求键号与键值。
键号是键盘上各键的编号如1、2、3、…31。
键值是根据扫描原理,各键所对应的16进制数码。
结合图7-3,键号与键值对应关系如下:
①键号按照行首键号与列号相加的方法排列
列号0、1、2、3、4、5、6、7…
行首号是0、8、16、24,如10=8(行首号)+2(列号)
②键值为列值加行值
“0”号键对应列线PA0=0,其它全为“1”列值为FE;
行线中PC0=0,其它的全为“1”,高4位没有用,以“X”表示。
行值为XE,故“0”号键对应键值为“FEXE”,如此类推。
⑷等待闭合键释放。
为了避免一次闭合多次求其键,等待闭合键释放后再将键码送入A。
键盘处理程序流程图如图7-4所示,程序如下:
设主程序已把8155初始化PA口基本输出口,PC口为基本输入口。
KEY:
LCALL
KS
;
判别有无键按下
JNZ
K1
有键按下转K1
DELAY
无键按调用延时子程序
AJMP
KEY
返回重新查询
K1:
加长延时,消除键抖动
DELAY
再次查询有无键按下
K2
有键按下,转逐列扫描
误读键,返回
K2:
R2,#0FEH;
首列扫描字送R2
R4,#00H
首列号送R4
K3:
DPTR,#PA
A口地址送DPTR
A,R2
MOVX
@DPTR,A
列扫描字送8155A口
INC
DPTR
A,@DPTR
读取行扫描值
JB
ACC.0,L1
第0行无键按下,转查第1行
A,#00H
第0行有键按下,行首键号送A
LK
转求键号
L1:
ACC.1,L2
第1行无键按下,转查第2行
A,#08H
第1行有键按下,行首键号送A
L2:
ACC.2,L3
第2行无键按下,转查第3行
A,#20H
第2行有键按下,行首键号送A
L3:
ACC.3,NEXT
第3行无键按下,改查下一列
A,#18H
第3行有键按下,行首键号送A
LK:
ADD
A,R4
形成键码送A
PUSH
ACC
键码
K4:
LCALLDELAY
LCALLKS
等待键释放
JZ
K4
未释放,等待
POP
A
键释放,弹出键码
RET
NEXT:
R4
修改列号
JNB
ACC.7,KEY
8列扫描完返回KEY
RL
未扫描完扫描字左移一位
R2,A
扫描字存R2
K3
KS:
A口地址送入DPTR
全扫描字送A
MOVX
全扫描字PA口
INC
DPTR
指向C口
MOVC
读入PC口状态
CPL
变正逻辑、高电平表示有键按下
ANL
A,#0FH
屏蔽高4位
RET
DELAY:
R7,#0FFH
LP0:
R6,#0FFH
LP:
NOP
DJNZ
R6,LP
R7,LP0
延时子程序
在程序中KS为查询有无键按下的子程序;
DELAY为延时子程序。
2.中断扫描方式
采用扫描方式,无论有无键按下CPU都要定时扫描,特别是在那些按键次数不多的系统,反复空扫描,浪费了CPU的大量时间。
为了提高CPU的效率,常采用中断方式。
所谓中断方式就是当有按键按下时发出中断请求信号,中断响应后转入中断服务子程序,再去抖动、求键码和处理按键等工作。
图7-5所示为中断扫描方式的接口电路图。
矩阵式键盘与8051单片机的P1口直接相连,其中P1.7~P1.4经二极管与行线连接,P1.3~P1.0与列线连接,另一端经电阻与+5V电源相连。
列线与一个与门的输入端相连,与门输出端接8051的。
当P1.7~P1.4全为0状态时,若无键闭合,保持高电平,若有键闭合时,变为低电平,CPU开中断时,就会响应中断,转向中断服务程序。
由于中断方式键盘处理过程和程序扫描方式大致相同,这里不再作详细介绍。
LED显示器及接口设计
LED显示器结构
LED显示器内部由发光二极管组成,其外形如图7-6(a)所示。
根据内部二极管连接方式,数码管结构又分为共阳极型和共阴极型。
在数码管中,若将二级管的阳极连在一起,则称为共阳极型;
若将二极管的阴极连在一起,则称为共阴极型,如图7-6(b)所示。
由图7-6(a)可见,a~g分别为8个发光二极管,h为小数点。
在实际应用中,数码管的各个管脚要接限流电阻,而且外接电阻阻值只要保证管子正常发光即可,一般各管电流在10mA较合适。
电流太大,耗电量大,电流太小,发光度不够。
显示字型和字段码关系
当发光二极管导通时,它就会发光。
每个二极管就是一个笔划。
若干个二极管发光时,就构成了一个显示字符,不同的发光段亮,可组成不同字型。
输入到数码管h、a、b、c、d、e、f、g的二进制码称为字形码,数码管显示的结构为字形。
表7-1为显示字形与共阳极和共阴极两种接法的字形码对应关系。
LED与单片机接口
LED显示器有两种工作方式,即静态显示方式和动态显示方式。
1.静态显示方式及其接口电路
在静态显示方式下,每位数码管的a~h端与一个8位的I/O口相连。
当要在某一位数码管上显示字符时,只要从对应的I/O口输出并锁存其显示代码即可。
静态显示方式的特点为:
数码管中的a~h端LED恒定导通或截止,直到显示字符改变。
图7-7为由MCSl449与8051构成的多位数码管静态显示器接口电路。
MC14495是一个BCD七段锁存译码驱动器,其输出不需外接电阻可直接和LED数码管相连。
MC14495的输人锁存选通信号=0时,允许数据输入到其内部锁存器中;
=1时,输人数据被锁存。
由图7-7可见,被显示的数据直接由P1口的低4位输出,P1.4~P1.6接74LS138译码器的输入端,用来选择数码管,译码输出端Y0~Y7控制各MC14495的选通端,为低电平则输出数据显示。
P1.7用来控制多位显示器数据字符的改写和锁存。
当P1.7为高电平时,允许改写各位的显示字符。
下面是将显示缓冲区78H~7FH中的BCD码送数码管显示的程序。
DIR:
R0,#78H
置首地址
R2,#00H
初始化位计数器
R7,#08H
置循环次数
SETB
P1.7
LOOP:
A,R2
SWAP
A
A,@R0
显示数据送低4位
P1,A
输出显示数据和位地址
R0
指向下一位
R2
指向下一个数
DJNZ
R7,LOOP
CLR
2.动态显示方式及其接口电路
所谓动态显示方式就是一位一位轮流的点亮各位数码管,其特点为:
每一时刻只能有1位数码管被点亮,并各位依次轮流被点亮;
对于每一位来说,每隔一段时间点亮一次。
数码管的点亮既跟点亮时的电流有关,也跟点亮时间和间隔时间的比例有关,通过调整电流和时间参数,可实现亮度较高较稳定的显示。
如图7-8是8051单片机通过8155扩展的6位动态数码管接口电路。
由图可见,8155的A口作为位选口,经反相器7545N接数码管公共极,B口作为数据口,经同相驱动器7407接数码管的各段。
程序流程图如图7-9所示,设显示数据的缓冲区为79H~7EH。
程序如下:
DIR:
R0,#79H
显示数据缓冲区首地址R0
R3,#01H
使数码管最右边位亮
A,R3
LD0:
DPTR,#0101H
扫描值送PA口(0101H为
PA口地址)
@DPTR,A
DPTR
数据指针指向PB口
A,@R0
取显示数据
ADD
A,@12H
加上偏移量
A,@A+PC
取出字形
@DPTR,A
送出显示
ACALLDLL
调用延时子程序
R0
数据缓冲区地址加1
A,R3
JB
ACC.5,LD1
扫描到第六位数码吗?
RL
没有
R3,A
R3左移,扫描下一个数码
AJMP
LD0
LD1:
DSEG:
DB
3FH,06H,5BH,4FH,66H,6DH
DSEG1:
7DH,07H,67H,77H,7CH
DSEG2:
39H,5EH,79H,71H,73H,3EH
DSEG3:
31H,6EH,1CH,23H,40H,03H
DSEG4:
18H,00H,00H,00H
DL1:
R7,#02H
DL:
R6,#0FFH
DL6:
DJNZR6,DL6
DJNZR7,DL
LCD液晶显示器
液晶显示器是一种功耗极低的显示器件。
随着液晶显示技术的发展,LCD显示器的规格众多,其专用驱动芯片也相互配套,使LCD在控制和仪表系统中广泛应用提供了极大的方便。
LCD的原理
LCD是一种被动显示器,具有功耗低,显示信息大,寿命长和抗干扰能力强等优点,在低功耗的单片机系统中得到大量使用。
LCD本身不发光只是调节光的亮度,目前市面上的LCD显示器都是利用液晶的扭曲——向列效应制成,这是一种电场效应,夹在两片导电玻璃电极间的液晶经过一定处理,它内部的分子呈90°
的扭曲,当线性偏振光透过其偏振面便会旋转90°
。
当在玻璃电极上加上电压后,在电场作用下,液晶的扭曲结构消失,其旋光作用也消失,偏振光便可以直接通过。
当去掉电场后液晶分子又恢复其扭曲结构。
把这样的液晶置于两个偏振片之间,改变偏振片相对位置就可得到白底黑字或黑底白字的显示形式。
LCD显示器的分类
1.按排列形式分类
可分为笔段型、字符型和点阵图形型。
(1)笔段型:
以长条状显示像素组成一位显示,主要用于数字显示,也可用于显示西文字母或某些字符,通常有六段、七段、八段、九段、十四段和十六段等,在形状上总是围绕数字“8”的结构变化。
(2)字符型:
专门用来显示字母、数字、符号等的点阵型液晶显示模块。
在电极图形设计上它是由若干个5×
7或5×
11点阵组成,每一个点阵显示一个字符。
(3)点阵图形型:
在一平板上排列多行和多列,形成矩阵形式的晶格点,点的大小可根据显示的清晰度来设计。
2.按采光方法分类
由于液晶显示自己不发光,完全借助外部光源来显示。
因此按采光方式可分为:
(1)自然采光:
利用周围环境光为显示光源,靠LCD背面的反射膜将射入的自然光从正面反射出来显示。
(2)背光源采光:
在液晶显示器件上增加背光源,用以增加显示器件的清晰度和稳定性。
背光背光源的安装方式分为边光式和背光式。
边光式即在显示器的侧面,将光源按线型配置,还要在显示器的背面配以特殊设计的散射板或反射板,以使得背景光源均匀一致;
背光式即在显示器的背面配置一个面光源。
3.按LCD的显示驱动方式分类
(1)静态驱动法:
振荡器的脉冲信号分频后直接施加在背电极BP上,段电极脉冲直接加在某一段上。
(2)动态驱动法:
在多个显示像素驱动时,将像素排列成矩阵结构,分别称为行电极和列电极。
采用类似于CRT光栅动态扫描的方法。
循环地给行电极施加选择脉冲并同时给需要显示数据的列电极相应的选择脉冲,进行逐行顺序扫描。
(3)双频驱动法:
利用液晶介电常数与驱动电压频率的相互关系,使用两种不同的驱动电压频率来改变液晶显示器件上各像素分子的取向使其达到良好的显示效果。
4.按控制器的安装方式分类
(1)内藏式:
把控制器和驱动都用厚膜电路做在液晶显示模块印制底板上,只需外部接口的数字信号或模拟信号即可驱动显示器。
(2)不含控制器方式:
这种LCD需要另外选配相应的驱动控制器才能工作。
LCD字符型液晶显示接口技术
1.字符型液晶显示模块接口电路
DMC系列字符型液晶显示应用很广泛,其控制器均采用HD44780或其可替换集成电路。
由单片机输出直接控制HD44780及其时序。
字符型液晶显示与两个控制器连接方框图如图7-10所示。
单片机与字符型LCD显示模块的连接方法分为直接访问和间接访问两种。
(1)直接访问方式:
把字符型液晶显示模块作为存储器或I/O接口设备直接连到单片机总线上,这是采用8位数据传输形式,数据端DB0~DB7直接与单片机的数据线相连,RS信号和信号利用单片机的地址线控制。
E信号则由MPU的和信号共同控制,以实现HD44780所需的接口时序。
图7-11给出了以存储器访问方式对液晶显示驱动的控制电路。
图7-11是最简单的连接电路,可作为初步使用字符型液晶显示模块的人们调试、了解LCD显示器性能的电路。
图中,首先P0接口产生的地址信号被锁存在74LS373内,其输出给出了RS的控制信号,和经过与非门打开了E信号的控制门。
接着、和P0接口的数据传输将实现对字符型LCD显示模块的每一次访问。
在写操作过程中,HD44780要求E信号结束后,数据线上的数据要保持10ns以上的时间,而单片机8051的P0接口在信号失效后将有116ns(以6MHz晶振计算)的数据保持时间,足以满足该项控制时间的要求。
在读操作过程中,HD44780在E信号为高电平时就将所需数据送到数据线上,E信号结束后,数据可保持20ns,这满足了8051对该时序的要求。
2.字符型液晶显示模块操作程序
单片机对字符型LCD显示模块的操作是通过软件实现的。
每一次访问都要先对忙标志BF进行识别,当BF=0时,HTD44780允许单片机访问时,再进行下一步操作。
例1HD44780初始化程序
PR4:
R0,#INSADD
R2,#03H
循环量
P41:
A,
#30H
@R0,A
ACALLT
DJNZ
R2,P41
A,#00H
功能设置指令代码
R2,#01H
清屏指令代码
ACALLPR1
调写指令子程序
R2,#06H
输入方式指令代码
ACALLPR1
R2,#0EH
显示方式指令代码
例2读忙标志BF和地址计数器AC值子程序A存储当前BF及AC值,ACC.7=BF,ACC.6~ACC.0=AC,程序为:
PRO:
R0,#INSADD
指令入口地址
MOVXA,@R0
读BF及AC值
例3PR1写指令代码子程序,PR2写入数据子程序,PR3读数据子程序。
PR1:
R0,#INSADD
写指令代码子程序,R2存储指令代码
MOVXA,@R0
ACC.7,PR1
判BF值
A,R2
MOVX@R0,A
写入指令代码
PR2:
写入数据子程序,R2存储输入数据
ACC.7,PR2
R0,#DATADD
数据口地址
MOVX@R0,A
PR3:
读数据子程序,A存储器读出数据
MOVXA,@R0
ACC.7,PR3
R0,#DATADD
MOVXA,@R0
(2)间接控制方式:
把字符型液晶显示模块作为终端设备连接到单片机的并行口上或使用