单片机应用系统中常使用LED作为显示器,在需多位LED显示时,为了简化电路,降低成本,常将所有门的选线并联在一起,由一个8位I/O口控制,而共阴(阳)I/O线受控制,实现各部分时选通。如图1所示为6位LED动态显示接口电路。
表1 控制符号
表2 共阳型字符表
由于所有6位选线皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方***流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示相应字符。如此轮流,使每位分时显示该位应显示字符,根据人眼视觉特性,当LED所加信号频率大于50Hz时,人眼不能感觉其变化,所以每位显示的间隔不能超过20ms,也就是说要在20ms之内分时的点亮所有LED,LED越多所分的时间越短,亮度就会不足;如果增加点亮时间,又会使扫描频率下降,有闪烁感容易造成人眼的彼劳,这种方式就是我们大家常用的动态扫描方式,这种扫描方式仅适用于LED不超过10个时的场合。如果现在需要24个甚至更多,是否一定得采用专门驱动电路?能否在不增加硬件开销又能解决问题?这就是本文介绍的一种全新的思路,电路连接如图示2。其硬件电路与常规的动态扫描方式完全一样,主要差别就是在控制方法的不同。
若LED为共阳型,段选2的控制信号先使a段为低电平,其余b、c、d、e、f、g、dp段全为高电平,这样led1、led2....led23、led24是否要点亮其中的a划还要受段选1的控制,段选1又是由待显示的数据控制,然后段选2的控制信号再轮流使b、c、d、e、f、g、dp为低电平,依次扫描,即每个字是一笔一笔受控是否需要点亮,这样只要8次循环,就可完成一次显示,而不必考虑接入LED的个数。如要显示3个数字为1、2、3(led1、led2、led3),则加入的控制信号见表1,共阳型字符表见表2。
某项目控制系统需要显示24个数字,考虑到单片机I/O资源有限,按常规方法必需扩展I/O,这样就使电路复杂又增加了硬件成本,能否以软代硬就成为设计的关键所在。图3所示的电路中采用上面介绍的方法,用软件方式显示24个数字,电路采用了4片74LS164,1片MC1413(ULN2003),单片机只需通过RXD、TXD就可控制显示,软件流程图如图4所示。
表1 控制符号
段选2 |
段选1 | ||||||||||
a |
b |
c |
d |
e |
f |
g |
dp |
Led1 |
led2 |
led3 | |
第1次 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
第2次 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
第3次 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
第4次 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
第5次 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
第6次 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
第7次 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
第8次 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
表2 共阳型字符表
字形 |
a |
b |
c |
d |
e |
f |
g |
dp |
编码 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
FC |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
60 |
2 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
DA |
3 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
F2 |
4 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
66 |
5 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
B6 |
6 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
BE |
7 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
E0 |
8 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
FE |
9 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
F6 |
由于所有6位选线皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方***流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示相应字符。如此轮流,使每位分时显示该位应显示字符,根据人眼视觉特性,当LED所加信号频率大于50Hz时,人眼不能感觉其变化,所以每位显示的间隔不能超过20ms,也就是说要在20ms之内分时的点亮所有LED,LED越多所分的时间越短,亮度就会不足;如果增加点亮时间,又会使扫描频率下降,有闪烁感容易造成人眼的彼劳,这种方式就是我们大家常用的动态扫描方式,这种扫描方式仅适用于LED不超过10个时的场合。如果现在需要24个甚至更多,是否一定得采用专门驱动电路?能否在不增加硬件开销又能解决问题?这就是本文介绍的一种全新的思路,电路连接如图示2。其硬件电路与常规的动态扫描方式完全一样,主要差别就是在控制方法的不同。
若LED为共阳型,段选2的控制信号先使a段为低电平,其余b、c、d、e、f、g、dp段全为高电平,这样led1、led2....led23、led24是否要点亮其中的a划还要受段选1的控制,段选1又是由待显示的数据控制,然后段选2的控制信号再轮流使b、c、d、e、f、g、dp为低电平,依次扫描,即每个字是一笔一笔受控是否需要点亮,这样只要8次循环,就可完成一次显示,而不必考虑接入LED的个数。如要显示3个数字为1、2、3(led1、led2、led3),则加入的控制信号见表1,共阳型字符表见表2。
某项目控制系统需要显示24个数字,考虑到单片机I/O资源有限,按常规方法必需扩展I/O,这样就使电路复杂又增加了硬件成本,能否以软代硬就成为设计的关键所在。图3所示的电路中采用上面介绍的方法,用软件方式显示24个数字,电路采用了4片74LS164,1片MC1413(ULN2003),单片机只需通过RXD、TXD就可控制显示,软件流程图如图4所示。
评论
查看更多