误买了这货,卖家说没有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做温度计。