用8引脚的微控制器控制带多个LED的两位数字显示
扫描二维码
随时随地手机看文章
8引脚微控制器能支持丰富的外设功能。不过,由于芯片电源需要占用两个引脚,所以,最多可用I/O引脚数目常常只有6个。这样以来,采用这些器件设计系统的难度就可能比较大,特别是如果这些系统所包含的显示要求很高时。
一般地,Charlieplexing方法可使N个I/O引脚控制N*(N1)倍的LED。例如,图1示出了微控制器的5个引脚接了20个LED。在上述Charlieplexed表示中,其中一个引脚被设置为逻辑“1”输出引脚,另一个脚被设置为逻辑“0”输出引脚。其余引脚设置为高阻态输入。
因此,在任何给定的时间内,只有一个LED导通。在适当的延迟后,通过改变引脚配置,使该LED截止,下一个LED导通。每个LED导通的速率必须大于50Hz,以避免出现看得见的闪烁。所以,对20个LED,总显示刷新率应该至少为1,000Hz。
图1:微控制器的5个引脚接了20个LED。
我们的应用需要一个最大计数为200的计数器。本来可简单地使用一个相称的复杂微控制器,但是我们最后还是决定尝试采用最廉价而现成的8引脚微控制器,最终选择了AtmelAVRATtiny15。计数器的输入来自一个按扭开关,因此6个I/O引脚中只有5个可用于显示。因为计数器是面向对十六进制熟悉的工程师,所以,我们决定采用两位数字显示,显示范围为00~FF(Hex),即便如此,装好两位数字显示似乎也很难。
我们采用Charlieplexed显示,按需要的两位数字,7段格式排列LED,以实现设计目的(图2)。我们选择了3mm的高亮度LED,7段显示的每一段都由3个LED组并联而成。
图2:采用Charlieplexed显示,按需要的两位数字,7段格式排列LED。
所有电阻都是100Ω、1/4WCFR。通过LED的峰值电流大约是30mA(5V电源),而系统能在3V~6V电源电压范围任意电压下工作。刷新率设置为1,000Hz,由ATtiny15的1.6MHz内部系统时钟产生。该电路也适合与许多ATtiny器件或者8引脚PIC微控制器结合使用。
虽然我们的方案是针对一个简单计数器,但系统是可扩展的,可将显示增加到2-1/2位格式。此外,很多8引脚微控制器都内置有一个模-数转换器通道,该通道可与2-1/2位显示一起使用,构成电压表。同样地,利用该技术也能实现具有自动量程修正功能的频率计数器。
Charlieplexing的不足之处是流过每个LED的电流占空周期低。由于在任意给定的时间内只有一个LED导通,所以占空周期是1/[N*(N1)]。对于20个LED,流过每个LED电流的占空周期将只有5%。随着LED数目的增加,占空周期缩短。因此,要保持流过LED的平均电流一定,峰值电流必须按比例增大。在某些点上,峰值电流将超过LED的额定值,不能再用Charlieplexing。
另一个需要考虑的是,只能使用那些每个引脚都能配置为输出及高阻输入的微控制器。因此,典型的8051不适合控制CharlieplexedLED显示。