上一篇介绍了如何控制1位数码管,接下来就是控制4位数码管,其实就是4个一位数码管拼起来构成的,但是4位数码管的引脚只比一位数码管多了2个。通过查找资料可知,4位数码管中的a、b、c、d、e、f、g、d是四个数码管公用的,然后每个数码管对应一个电源引脚,如果引脚接地是共阳极四位数码管,如果是接正极则是共阴极四位数码管。通过用万用表测量,我的4位数码管是共阳极的4位数码管。
电路连线图如下:
![C+Arduino控制4位数码管 - gc_2299 - gc_2299的博客 C+Arduino控制4位数码管 - gc_2299 - gc_2299的博客](http://img0.ph.126.net/lUHooBGVvBt6j1vSLIAeRQ==/2002975934374622637.png)
实际的连线图如下:
![C+Arduino控制4位数码管 - gc_2299 - gc_2299的博客 C+Arduino控制4位数码管 - gc_2299 - gc_2299的博客](http://img1.ph.126.net/Z5U6B1WJ31uBwFrz1E0bwg==/6598192368090225190.jpg)
1)数码管0和1的电源引脚一开始放在了Arduino的0和1数字引脚,因为Arduino要和C#进行串口通信,需要用到数字引脚0和1,导致程序运行时出现莫名其妙的显示,后来把数码管0和1的电源引脚放在了12和13处,重新运行程序就可以了。
2)同时在4位数码管的每个数码管上显示不同的数字,比如显示1234,由于4个数码管是公用a-h引脚,如果设置了a-h的值,则四个数码管上显示的数字是一样的(每个数码管独立的引脚只有电源引脚,led引脚是公用的)。通过查阅网上的文章,发现只有特别快速的分别显示每个数码管的内容,速度特别快的情况下,就会超过人眼的识别速度,这样人眼就看到了正常的数字。其实4个数码管上的数字是串行显示的,只不过刷新速度特别快,人眼分辨不出来。
C# 程序主要的功能如下:
1)列出本机上所有的串口
2)打开指定的串口
3)发送LOOP命令给Arduino控制4位数码管循环显示数字0-F
4)发送NUM命令给Arduino控制4位数码管显示指定的数字
5)发送CLEAR命令清空数码管上的内容
代码可以在下列网址中下载:
https://github.com/guochao2299/ShowNumberIn4BitLED
程序运行效果如下: