一般我们在arduino开发板上显示数字,通常采用多位数码管进行显示,而多位数码管实际是采用“动态扫描显示”的方法进行显示,即依次显示第1位数码管、第2位数码管、第3位数码管、第4位数码管……此方法是利用人眼的视觉残留,当扫描显示的频率大于25帧/秒,我们看到的就是每个数码管同时都在显示。目前大多数arduino的样本程序都是在主循环中不断地进行循环显示,但这样的做法有一个很大问题。如果主循环中的一次循环需要运行较长时间(超过40ms),那显示频率就会低于25帧/秒,从而看到的显示是抖动的,甚至内容是跳跃的。
为保证显示频率大于25帧/秒,我们可以采用arduino的时钟中断来进行“动态扫描显示”。首先要设置合适的时钟中断间隔,每次中断显示一位数码管,以及25帧/秒的最低显示要求,中断时间间隔必须小于10ms(1000ms/4/25),为提高显示质量,本程序采用了中断间隔为5ms。
本次实验采用arduino UNO,所用的4位数码管型号为共阴3641AS,下面是该管的引脚图:
(我图片上传了半个小时也未完成,请各位自行上网查找该管引脚图吧)
为接线方便,依次将3641AS的1到12引脚接到arduino的D2到D13,实际接线图如下:
(我图片上传了半个小时也未完成,各位只要将3641AS的1到12引脚接到arduino UNO的D2到D13这12个IO口即可)
完整程序(该程序经过测试)如下: