LED显示器的工作原理
LED显示器的主要部分是七段发光管
,这七段发光段分别称为a、b、c、d、e、f、g
有的产品还附带有一个小数点DP
。通过7个发光段的组合,可以显示0 ~ 9
和 A ~ F
共16个字母数字,从而实现十六进制数的显示。
LED显示器有共阳和共阴两种结构。
共阳极结构: 数码显示端输入低电平有效
,当某一段得到低电平
时,则发光
。
例:
比如a、b、d、e、g为低电平,而其他段为高电平时,显示数字2
共阴极结构: 数码显示端输入高电平有效
,当某一段得到高电平
时,则发光
。
CPU通过8255A往LED传输七段代码,8255A的端口本身是8位的,因此,有1位悬空未用
。
由于LED的一个段发光时,通过的平均电流为10mA左右,所以采用共阴极LED
时,阴极接地
,而阳极要加驱动电路
。用共阴极LED时,如驱动器输出为1,则对应的段发光。
采用专用芯片进行LED段译码
采用专用带驱动器的LED显示器段译码器,可以实现对BCD码的译码,但不能对大于9的二进制数译码。
连接:
7447有4位输入
,7位输出
。使用时,只要将7447的输入端
与主机系统输出端口
的某4位相连,而7447的7位输出
直接与LED显示器的a~g
相接,便可以实现对1位BCD码的显示。
软件译码法
用共阳极数码管来实现1位数字的LED显示。设要显示数字放在DATA单元中,而LEDADD为代码表首址。
DISP:
LEA AL,[DATA]
MOV BX,OFFSET LEDADD ;取LEDADD的偏移地址放入BX
XLAT LEDADD ;换码指令,AL=BX+AL
OUT DX,AL
LEDADD DB 40H ;0的段码
DB 79H ;1的段码
DB 24H ;2的段码
...
DB 0EH ;F的段码
静态显示与动态显示
静态显示: 就是当显示器显示某一个字符时,相应的发光二极管恒定地导通或截至。
优点:显示稳定,系统在运行过程中,仅仅在需要更新显示内容时,CPU才执行一次显示更新子程序,这样大大节省了CPU时间,提高CPU的工作效率。
缺点:每个七段显示器都需要一个8位输出口控制。位数较多时,显示口随之增加。
❓动态显示:一位一位的轮流点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。
若显示器的位数不大于8,则控制显示器公共极的电位
只需要一个8位口
(扫描口,又称为位口
),控制各位显示器所显示的字形也需要一个8位口
(称为段口
)
通过位、段
控制端口的共同作用才能确定哪个数码管
显示什么数码
例如:
8位共阴极显示器
和8255A的连接电路如图所示。这里以8255A的A端口做位口,B端口做段口。
对于图的8位显示器,在内存中开辟8个字节的显示缓冲器单元,分别存放8位显示器的显示数据,8255A的A端口中有一位为高电平,即8位显示器中仅有一位公共阴极为低电平,其他位为高电平,8255A的B端口输出相应位显示数据的段数据,使某一位显示一个字符,其他位为暗,依次地改变端口A输出高电平的位,8位显示器就显示出缓冲器中显示数据所确定的字符。
下面给出动态显示预存在显示缓冲区中的01234567的程序段。
设8255A的端口地址为:
A端口:00C0H B端口:00C2H
C端口:00C4H D端口:00C6H
A组
和B组
均工作于方式0
,A、B端口
为输出
,C端口未用
。
方式控制字为80H
DISBUF DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DISINT:
MOV DX,00C6H ;控制口
MOV AL,80H ;控制字,A、B端口工作于方式0,A,B口输出
OUT DX,AL
DIS:
MOV BH,80 ;位选
MOV BL,8
MOV SI,OFFSET DISBUF
DISLOP:
MOV AL,BH
MOV DX,00C0H
OUT DX,AL;向A口送位码
MOV DX,00C2H
MOV AL,[SI]
OUT DX,AL;向B口送段码
SHR BH,1
INC SI
CALL DL1MS
DEC BL
JNZ DISLOP
JMP DIS
DL1MS:
MOV CX,022BH
WAT:
LOOP WAT
RET
①②③④⑤⑥⑦⑧⑨⑩