74HC595是一个串行移位寄存器,两块芯片级联,芯片U1的串行输出引脚连接芯片U2的串行输入引脚。当串口输入8个镇戚比特数据data1时,数据data1在U1芯片中;当串口再次输入8个比特数据data2时,data1进入到芯片U2中,data2留在芯片U1中。
综上所述,Arduino单片机应该给数码管扩展板两个char形数据,data1是数码管显示的数字,data2是让哪个数码管亮的位置信息。两个Byte的数据串行发送完毕后,RCLK接口输出一个上升沿信号,所有的数据由寄存器传送到锁存器中。
顺便强调一下,下面电路图中的P2是连接单片机的接口,P1是多块扩展板的级联接口。不要把线接错了呦!
想要看74HC595原理的朋友,可以查看下面的链接:
https://wenku.baidu.com/view/d69cdbbc19e8b8f67c1cb977.html
扩展板的驱动函数可以用下面的程序:
https://github.com/supermfc/Tube595
程序应该没有问题,因为我的电路板接口接反了,所以被迫研究了扩展板和芯片的原理,全是泪水啊!
Arduino IDE中有一个库函数shiftOut,可以方便地实现串迟旅改并转换。顺便给IDE点个赞,reference功能很好用。
这个简樱芦单:做显示表的时候除了做0~9之外,再做渗轿一个不显示丛颂肆的,比如,数码管对应0不显示,那就把0x00也加在表中的第10位,当秒表小于10(为0001~0009)时,前面的000都以tab[10]来查表,不就不会显示了吗。如此类推0010~0099,0100~0999也是一样4x7-segment数码管通常都有驱动IC在内,不知迅蠢你手上的是74HC595,还是MAX7221/7219?若枣昌仿是没有驱动IC,那就更麻烦,要重新写一个字库驱动,凳纤会有点闪烁和延时。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)