不知名的有DIO、SCK、RCK引脚的四位LED数码管模块



不知名的有DIO、SCK、RCK引脚的四位LED数码管模块_第1张图片

误买了这货,卖家说没有Arduino的代码。我看了下,核心部件是两片74HC595做了级联,感觉还是自己折腾一把试试看吧,于是开始折腾,参考外文网站的一些算法和解释,最后还真有了眉目。


过程就不多说了,直接上结论。在某个位置上显示某个值的代码为:

digitalWrite(rck, LOW);
shiftOut(dio, sck, MSBFIRST, 数字);
shiftOut(dio, sck, MSBFIRST, 位置);
digitalWrite(rck, HIGH);

因为是两片74HC595做级联,所以相当于变成了16位的移位寄存。其中,前8位用来显示7段码(和小数点),后8位用来指示由哪个位置上的数码单元显示。

DIO相当于位输入,RCK相当于各位输入确认的时钟,SCK相当于整体输入确认的时钟。

对于每个数码单元,a-g的排列是:8字中间那一横是a,然后从左上那一竖开始顺时针画圈数,分别是b-g。DIO输入次序是:第一位是小数点,第二位到第八位是a-g。需要亮的段写1,反之则写0。
所以0-9十个数字的二进制值是:
byte num[10] = {
                B00111111, B00000110, B01011011, B01001111, B01100110,
                B01101101, B01111101, B00000111, B01111111, B01101111
               };

小数点和负号分别是:
byte dot = B10000000;
byte neg = B01000000;

对于位选,规律是:从左到右,选中第一位的代码是 B11111110,第二位是B11111101,以此类推。所以位置代码为:
byte pos[4] = {0xFE, 0xFD, 0xFB, 0xF7};

有了这些基础,剩下的就好办了,顺手又焊了个18B20做温度计。



不知名的有DIO、SCK、RCK引脚的四位LED数码管模块_第2张图片

你可能感兴趣的:(树莓派,&,Arduino)