之前我们做过了一个Arduino开发板连接4位数码管的动态显示实验,采用时钟中断方式后,已经能够很好地满足我们的数字显示。4位数码管价格很低廉,显示效果也不错,不过对连接Arduino来说,有个很大的弱点,就是需要占用Arduino开发板的12个IO数字端口,而最常用的arduino UNO开发板一共才有D0到D13的14个IO数字端口。
为减少Arduino的数字端口占用,本次我们选择了一个串行的4位数码显示模块,该显示模块只要5根接线与Arduino连接,其中3根为数据线,2根为电源线,因此实际只占用了3个数字端口。
该串行4位数码显示模块通过2片74HC595芯片控制4位数码管,我们不用过多关注芯片内部工作原理,只要正确地将该显示模块连接到Arduino的数字端口,然后通过程序将数字显示到指定的数码管上即可。
该显示模块有5个引脚,分别是:VCC、SCLK、RCLK、DIO、GND,其中VCC接5V电源,GND接地,SCLK用来接收同步时钟,RCLK用来控制数据的输出,DIO用来接收串行数据的输入。不过我们只要将SCLK理解为接收7段数码管的段码,RCLK理解为接收数码管的编号或称作位码(即第几个数码管)。如下图所示:
串行4位数码显示模块与之前直接连接4位数码管的显示原理相同,也是采用“动态扫描显示”的方法进行显示,即依次显示第1位数码管、第2位数码管、第3位数码管、第4位数码管,此方法是利用人眼的视觉残留,当扫描显示的频率大于25帧/秒,我们看到的就是每个数码管同时都在显示。同样为解决在主循环中进行显示处理,有可能造成显示不正常情况,我们还是采用Arduino的时钟中断来进行“动态扫描显示”,时钟中断间隔定为5ms。
本次实验采用Arduino UNO开发板,显示模块的SCLK、RCLK、DIO引脚依次接到Arduino的D2、D3、D4&#x