七段显示器的原理
显示器是单片机应用系统常用的设备,包括LED、LCD等。LED显示器由若干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点就发光。控制相应的二极管导通,就能显示对应字符。
七段LED通常构成字形“8”,还有一个发光二极管用来显示小数点。各段LED显示器需要由驱动。在七段LED显示器中,通常将各段发光二极管的阴极或阳极连在一起作为公共端,这样可以使驱动电路简单。将各段发光二极管阳极连一起的叫共阳极显示器,用低电平驱动;将阴极连在一起的叫共阴极显示器,用高电平驱动。
1.静态显示
所谓静态显示,是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。静态显示有并行输出和串行输出两种方式。
对于静态显示方式,LED显示器由接口芯片直接驱动,采用较小的驱动电流就可以得到较高的显示亮度。但是,并行输出显示的十进制位数时,需要并行I/O接口芯片的数量较多。
该系统设计时采用了并行输出静态显示的方式,使用静态显示能够减少CPU的负担,使CPU能有更多的时间进行其他的工作。电路原理如下图,由74LS138译码选择两片74LS373中的一片工作时,通过数据总线将要显示的数据锁存到74LS373中,一直到新的数据锁存近来才改变显示值。
显示控制程序:
DISP1: MOV DPTR,#0C000H ;要显示的第一个数的地址
MOV A,#00000110B ;要显示的数字为1
MOVX @DPTR,A ;送出数据显示
DISP2: MOV DPTR,#0B000H;第二个数位于0B000H
MOV A,#01011010B ;要显示的数字为2
MOVX @DPTR,A ;送出数据显示
矩阵式键盘及其接口
矩阵式键盘采用行列结构,按键设置在行列的交点上。当口线数为8时,可以将4根口线定义为行线,另4根口线定义为列线,形成4×4键盘,可以配置16个按键。
矩形式键盘的行线通过电阻接+5V(芯片内部有上拉电阻时,就不用外接了),当键盘上没有键闭合时,所有的行线与列线是断开的,行线均呈高电平。
当键盘上某一键闭合时,该键所对的行线与列线短接。此时该行线的电平将电被短接的列线电平所决定。
判有无按键按下。将行线接至单片机的输入口,列线接至单片机的输出口。首先使所有列线为低电平,然后读行线状态,若行线均为高电平,则没有键按下;若读出的行线状态不全为高电平,则可以断定有键按下。
执行该程序后,可以获得按下键所在的行列位置,此种键识方法称为扫描法。从原理上易于理解,但当所按键在最后一列时,所需扫描次数较多。
采用线反转法完成所按键的识别。先把列线置成低电平,行线置成输入状态,读行线;再把行线置成低电平,列线输入状态,读列线。有键按下时,由两次所读状态即可确定所按键的位置。示例程序如下:
SMKEY:
MOV P1,#OFH ; 置P1口高4位为“0”、低4位为输入状态位为输入状态
MOV A,P1 ; 读P1口
ANL A,#OFH ; 屏蔽高4位
CJNE A,#OFH,HKEY ; 有键按下转回
CJNE SMKEY ; 无键按下转回
HKEY: LCALLDELAY10 ; 延时10ms,去抖
MOV A,P1 ;
ANL A,#OFH ;
MOV B,A ; 行线状态在B的低4位
CJNE A,#OFH,WKEY ;
确认有键按下,转判哪一键按一下
SJMP SMKEY ; 是抖动转回
WKEY: MOV P1,#OFOH ; 置P1口高4位为输入、低4
位为“0”
MOV A,P1 ;
ANL A,#OFOH ; 屏蔽低4位
ORL A,B ; 列线状态在高4位,与行线状态合成于B 中
… … ; 键处理 |