单片机常用的显示器有发光二极管(LED)和液晶显示器(LCD)两种。
图8-10 数码管外形图 |
LED分为共阴极和共阳极两种结构形式。共阴极LED中发光二极管的阴极连接在一起,通常接地,当某个二极管的阳极为高电平时,相应的段就发光显示。同样,共阳极LED的公共阳极接高电平,某个阴极接低电平时,相应的段被点亮显示。这里以7段显示器为例进行说明,如图8-10所示。
为显示不同的字型,显示器各字段所加的电平不同,编码也随之不同。7段显示器的字型与共阴极时编码的对应关系如表8-2所示。
从原理图可知,把共阴极编码按位求反后,即得到相应的共阳极编码。
“米”字型LED组成的字型比7段显示器更加丰富,而点阵LED还可以显示汉字和图形。显然,上述编码与各字段在字节中的排列顺序有关,即与数据总线和字段的对应关系相关。
表8-2 共阴极7段显示器字型编码表
显示字符 |
共阴极段码 |
共阳极段码 |
显示字符 |
共阴极段码 |
共阳极段码 |
0 |
3FH |
C0H |
C |
39H |
C6H |
1 |
06H |
F9H |
D |
5EH |
A1H |
2 |
5BH |
A4H |
E |
79H |
86H |
3 |
4FH |
B0H |
F |
71H |
8EH |
4 |
66H |
99H |
H |
76H |
89H |
5 |
6DH |
92H |
L |
38H |
C7H |
6 |
7DH |
82H |
P |
73H |
8CH |
7 |
07H |
F8H |
R |
31H |
CEH |
8 |
7FH |
80H |
U |
3EH |
C1H |
9 |
6FH |
90H |
Y |
6EH |
9lH |
A |
77H |
88H |
无显示 |
00H |
FFH |
B |
7CH |
83H |
|
|
|
N个LED可组成N位LED显示器。通常,控制线分为字位选择线和字型(字段)选择线,位选线为各个LED的公共端,用来控制该LED是否点亮,而段选线确定显示字符的字型。根据不同的显示方式,位选线和段选线的连接方法也有所区别。
LED显示方式分为静态显示和动态显示两种。
在静态显示方式下,LED显示器中各位的公共端(共阴极或共阳极)连接在一起,而每位的段选线分别与8位锁存器输出相连接。每个显示字符经锁存器输出后,LED即保持连续稳定显示,直到输出下一个显示字符。
采用静态显示方式时,编程比较简单,电流始终流过每个点亮的字段,亮度较高,但占用的输出口线较多,消耗功率较大。
在单片机应用系统中,常采用MCl4495芯片作为LED的静态显示接口,它可以和LED显示器直接相连。MCl4495芯片的引脚和内部结构如图8-11所示。它是由4位锁存器、地址译码和笔段ROM阵列以及带有限流电阻的驱动电路(输出电流为10mA)三部分电路组成的。图中,A、B、C、D为二进制码(或BCD码)输入端;为锁存控制端,为低电平时可以输入数据,为高电平时锁存输入数据;h+i为输入数据大于等于10指示位,若输入数据大于或等于10,则h+i输出高电平,否则输出为低电平;为输入等于15指示位,若输入数据等于15,则输出高电平,否则为高阻状态。
MCl4495芯片的作用是输入被显示字符的二进制码(或BCD码),并把它自动转换成相应字形码,送给LED显示。图8-12为采用MCl4495芯片的4位静态LED显示器接口电路。图中,P1.7~P1.4用于输出欲显示字符的二进制码(或BCD码),P1.2=0用于控制二一四译码器工作,P1.1和P1.0经译码器输出后控制MCl4495中哪一位接收P1.7~P1.4上的代码。
(a)引脚 (b)逻辑框图
图8-11 MCl4495引脚和逻辑框图
图8-12 4位静态LED显示器接口
【例8-4】设8031单片机内部RAM的20H和21H单元中有4位十六进制数(20H中为高两位),请编出能在图8-12电路中自左到右显示出来的程序。
解:相应程序如下。
ORG 1000H
SDISPLAY: MOVA,20H ;20H中数送A
ANLA,#0F0H ;截取高4位
MOVP1,A ;送1#MCl4495
MOVA,20H ;20H中数送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
INC A ;A1A0指向2#MCl4495
MOV P1,A ;送2#MCl4495
MOV A,21H ;21H中数送A
ANL A,#0F0H ;截取高4位
ADD A,#02H ;A1A0指向3#MCl4495
MOV P1,A ;送3#MCl4495
MOV A,21H ;21H中数送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
ADD A,#03 ;A1A0指向4#MCl4495
MOV P1,A ;送4#MCl4495
RET
END
在本例中,被显字符是由硬件MCl4495转换成字形码的,但也可采用软件法转换成字形码。采用软件法转换时,图8-12中MCl4495应由8位锁存器替代。静态显示所需的硬件开销大,CPU也无法预先知道什么时候需要改变LED的被显示字符。
为了减少硬件开销,提高系统可靠性和降低成本,单片机控制系统通常采用动态扫描显示。如图8-13所示为8031通过8155对6只共阳LED的接口电路。图中,B口和所有LED的a、b、c、d、e、f、g、sp引线相连,各LED控制端G和8155 C口相连,故B口为字形口,C口为字位口,CPU可以通过C口控制各LED是否点亮。8155的端口地址分配如下:
8000H 命令/状态口
8001H A口
8002H B口(字形口)
8003H C口(字位口)
8004H 定时器低8位口
8005H 定时器高8位口
8000H~FFFFH 8155 110重叠地址区
0000H~00FFH 8155 RAM基本地址区
0000H~7FFFH 8155 RAM重叠地址区
动态显示采用软件法把欲显示的十六进制数(或BCD码)转换为相应字形码,故它通常需要在RAM区建立一个显示缓冲区。显示缓冲区内包含的存储单元个数常和系统中LED显示器个数相等。显示缓冲区的起始地址很重要,它决定了显示缓冲区在RAM中的位置。
图8-13 8031通过8155对LED的接口电路
图8-14 例8-5的显示缓冲区 |
【例8-5】请根据图8-13编出能在LED5~LED0上显示1995.6的动态显示子程序。
解:设显示缓冲区放在CPU内部RAM中,起始地址为70H,显示缓冲区中被显示字符的字形码表的地址偏移量应预先放入,如图8-14所示。
相应程序为:
ORG 0600H
DISPLY:MOV A,#06H ;方式控制字06H送A
MOV DPTR,#8000H
MOVX @DPTR,A ;方式控制字送8155命令口
DISPLYl: MOV R0,#70H ;显示缓冲区始址送R0
MOV R3,#0FEH ;字位码初始值送R0
MOV A,R3
LDO: MOV DPTR,#8003H ;C口地址送DPTR
MOVX @DPTR,A ;字位码送C口
MOV DPTR,#8002H ;B口地址送DPTR
MOV A,@R0 ;待显字符地址偏移量送A
ADD A,#13 ;对A进行地址修正
MOVC A,@A+PC ;查字形码表
MOVX @DPTR,A ;字形码送B口
ACALL DELAY ;延时1ms
INC R0 ;修正显示缓冲区指针
MOV A,R3 ;字位码送A
JNB ACC.5,LD1 ;若显示完一遍,则LD1
RL A ;字位码左移一位
MOV R3,A ;送回R3
AJMP LD0 ;显示下一个数码
LDl: RET
DTAB: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H, 82H,0F8H,80H,90H
DB 88H, 83H,0C6H,0A1H,86H
DB 8EH,0FFH,0CH,89H,7FH
DB 0BFH
DELAY: MOV R,#02H ;延时1ms程序
DELAY1:MOV R 6,#0FFH
DELAY2:DJNZ R6,DELAY2
DJNZ R7,DELAYl
RET
END
LCD(Liquid Crystal Display)是液晶显示器的缩写,它是在两片玻璃之间夹上10μm~12μm的薄层液晶流体制成的。LCD是一种被动式显示器,利用液晶能改变光线通过方向的特性,来达到显示的目的。LCD的工作电流为μA级,寿命长,厚度约为LED的1/3,显示清晰美观,具有功耗低、抗干扰能力强的优点,广泛应用于仪器仪表、控制系统以及笔记本计算机和手持电子产品。
LCD有各种分类方式,按显示排列形式可分为笔段型、字符型和点阵图形型。
笔段型类似于LED显示,是以长条状显示像素组成一位显示,主要用于显示数字,也可显示英文字母或特殊字符,通常有六段、七段、八段、九段、十四段和十六段等,其中七段显示最常用,广泛用于万用表等数字仪表、计算器、电子表等电子产品中。
点阵字符型LCD模块由若干个5×7或5×10点阵组成,每个点阵用来显示一个字符,专门用来显示字母、数字、符号等,常用在各种单片机系统中。
点阵图形型是在一块液晶板上排列了多行或多列矩阵形式的晶格点,点的大小可根据显示的清晰度来设计,广泛用于计算机、液晶电视、游戏机等设备。
与LED的驱动方式不同,由于直流驱动LCD会使液晶体产生电解和电极老化,大大降低使用寿命,因此LCD的驱动信号多是交流电压,通常为30Hz~150Hz的方波,其工作时的静态直流电压不能大于50 mV,一般采用CMOS门电路来驱动LCD。
LCD电路工作时,必须有相应的控制器、驱动器,还需要有存储命令和字符的RAM和ROM。目前,这些电路已被设计组合在一块电路板上,称为液晶显示模块LCM(Liquid Crystal Module)。这样,LCM与单片机接口大大简化,只需按照液晶模块的时序,写入命令和显示内容即可完成显示。LCM包括字符型和图形型两种。
常用的液晶模块有Intersil公司的ICM系列,以及日本HITACHI(日立)和韩国SAMSUNG(三星)等公司的不同种类的产品,国产的LCM系列也很丰富。LCD与单片机的接口有并行方式和串行方式两种。
(1)LCD与单片机的并行接口。
设计接口电路首先应选择译码驱动电路,并使其具有输入锁存功能。并行接口芯片有4段LCD驱动器4054,4线—7段译码器(BCD输入)CD4055/4056、MCl4543/14544等。
LCD/LCM与单片机的硬件接口电路主要包括正确连接其片选控制、读、写和并行数据总线。此外,LCD通常还有亮度调节等辅助功能。
一般地,软件编程应注意两点:第一,应先对LCD进行初始化;第二,每次向LCD写显示内容前,应检查LCD的状态,在空闲时才能写入数据。
并行LCD模块产品非常丰富,目前应用广泛的产品有基于HITACHI公司HD系列LCD控制器/驱动器的液晶模块,如HD44780/44100,内置字符发生器ROM可显示192种字符;并有64B的自定义字符RAM;80B内部RAM;接口特性适配Motoro1a公司M6800系列CPU的操作时序;单+5V电源供电。
(2)LCD与单片机的串行接口。
目前,串行接口的LCD已得到越来越多的应用,典型的接口芯片如Philips公司的PCF 8577/8578/8579 LCD驱动器等。LCD串行接口的协议有多种,从应用数量来看,符合12C总线串行接口的LCD产品相对还比较少。