LED数码显示器的连接与编程
在单片机系统中,通常用LED数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
八段LED显示器
引入:还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,可以拼成各种各样的图形,LED显示器实际上也是这么一个东西。
 
八段LED显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。如下图所示。`共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba对应于一个字节(8位)的D7 
D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴LED显示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,显示器显示"P"字符,即对于共阴极LED显示器,“P”字符的字形码是73H。如果是共阳LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。这里必须注意的是:很多产品为方便接线,常不按规则的方法去对应字段与位的关系,这时字形码就必须根据接线来自行设计了,后面我们会给出一个例子。
入口:把要显示的数分别放在显示缓冲区60H-65H共6个单元中,并且分别对应各个数码管LED0-LED5。 
出口:将预置在显示缓冲区中的6个数成相应的显示字形码,然后输出到显示器中显示。显示程序如下:DISP: 
MOV SCON,#00H ;初始化串行口方式0 
MOV R1,#06H 
;显示6位数 
MOV 
R0,#65H ;60H-65H为显示缓冲区 
MOV 
DPTR,#SEGTAB ;字形表的入口地址LOOP: 
MOV A,@R0 ;取最高位的待显示数据 
MOVC 
A,@A+DPTR ;查表获取字形码 
MOV 
SBUF,A ;送串口显示DELAY: 
JNB TI,DELAY ;等待发送完毕 
CLR TI 
;清发送标志 
DEC R0 
;指针下移一位,准备取下一个待显示数 
DJNZ 
R1,LOOP ;直到6个数据全显示完。 
RET 
SETTAB: 
;字形表,前面有介绍,以后我们再介绍字形表的制作。 
DB 03H 
9FH 27H 0DH 99H 49H 41H 1FH 01H 09H 0FFH ; 
0 1 2 3 4 5 6 7 8 9 消隐码测试用主程序 
ORG 0000H 
AJMP START 
ORG 30HSTART: MOV SP,#6FH 
MOV 65H,#0 MOV 
64H,#1 MOV 
63H,#2 MOV 
62H,#3 MOV 
61H,#4 MOV 
60H,#5 LCALL 
DISP SJMP 
$如果按图示数码管排列,则以上主程序将显示的是543210,想想看,如果要显示012345该怎样送数? 
下面我们来分析一下字形表的制作问题。先就上述“标准”的图形来看吧。写出数据位和字形的对应关系并列一个表如下(设为共阳型,也就是相应的输出位为0时笔段亮)
| 
       数据位  | 
    
       D7  | 
    
       D6  | 
    
       D5  | 
    
       D4  | 
    
       D3  | 
    
       D2  | 
    
       D1  | 
    
       D0  | 
    
       字形码  | 
  
| 
       笔段位  | 
    
       A  | 
    
       B  | 
    
       C  | 
    
       D  | 
    
       E  | 
    
       F  | 
    
       G  | 
    
       H  | 
  |
| 
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       1  | 
    
       03H  | 
  
| 
       1  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       1  | 
    
       1  | 
    
       1  | 
    
       1  | 
    
       9FH  | 
  
| 
       2  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       1  | 
    
       1  | 
    
       27H  | 
  
| 
       3  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       1  | 
    
       0  | 
    
       1  | 
    
       0DH  | 
  
| 
       4  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       99H  | 
  
| 
       5  | 
    
       0  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       49H  | 
  
| 
       6  | 
    
       0  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       41H  | 
  
| 
       7  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       1  | 
    
       1  | 
    
       1  | 
    
       1  | 
    
       1FH  | 
  
| 
       8  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       01H  | 
  
| 
       9  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       0  | 
    
       0  | 
    
       1  | 
    
       09H  |