扩展arduino-595

扩展arduino-595

ID:18990865

大小:1000.00 KB

页数:9页

时间:2018-09-25

扩展arduino-595_第1页
扩展arduino-595_第2页
扩展arduino-595_第3页
扩展arduino-595_第4页
扩展arduino-595_第5页
资源描述:

《扩展arduino-595》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、扩展Arduino:数字输出端口3Comments·PostedbyflamingoedainArduino随着你对Arduino的深入理解和应用,相信很快就会遇到Arduino端口不够用的情况了。比如你可能需要在你的项目里控制更多的LED或者继电器,但却发现12似乎是一个很难超越的数字;或者你的声音项目里需要更多的电位器,但是Arduino板上6个模拟输入接口的限制却让你捉襟见肘。如果此时Arduino的处理能力还尚能满足你的要求,只是接口数目不够,能够采用的一种办法就是对Arduino的数字端口和模拟端口进行扩展。下图就是一个Arduino数字输出端口扩展板,利用它原理上你

2、可以将Arduino上的3个数字输出端口扩展成8个数字输出端口,通俗说来就是3个换8个;-)实验这块板最简单的办法是用三根数字连接线,分别将该扩展板上的SCK,RCK和SER引脚与传感器扩展板上的数字I/O的8、9和10号引脚相连接:相应的测试代码如下所示:intdataPin=8;//SERintlatchPin=9;//RCKintclockPin=10;//SCKvoidsetup(){pinMode(latchPin,OUTPUT);pinMode(clockPin,OUTPUT);pinMode(dataPin,OUTPUT);}voidloop(){for(intj

3、=0;j<255;j++){//starttransmitdatadigitalWrite(latchPin,LOW);shiftOut(dataPin,clockPin,MSBFIRST,j);//endtransmitdatadigitalWrite(latchPin,HIGH);delay(500);}}上述代码中最核心的是对函数shiftOut()的调用,它的作用往扩展板上的8个数字引脚上写一个字节,该字节的每一位分别对应扩展板上8个数字输出I/O引脚中的一个。除此之外,shiftOut()函数在调用之前需要调用digitalWrite()将RCK置低,调用完成之后再置

4、高,这是由芯片的控制时序决定的:-)程序运行时的效果相当于一个递增的计数器,在扩展板的8个输出端口上分别接8个LED灯,可以看到相应的累加效果:今天调试8*8双色LED显示屏,用三个74HC595级联,一点心得:  1、连接方式:三个595的11、12脚相连,第一级的14脚接MCU的串行数据输出,第一级的9(QH)接第二级的14脚,第二级的9(QH)接第三级的14脚,如有更多级可以一直串下去。  2、数据输出:先将第三级(最后一级)的数据输出(只需发出移位脉冲,不要发锁存脉冲),然后是上一级,直到所有级的数据全部发完(数据现在是一一对应),这时MCU发出锁存脉冲,这样数据即可对

5、号入座了。  以上信息希望对刚开始用595的朋友有用,由于水平有限,不足或错误之处请各位多多指教。如果读到这你以为一切就结束了的话,那可就大错特错了;-)除了单个使用之外,这一扩展板其实是可以通过相应的连接线实现级连的。也就是说,如果两块相连的话,你就可以用Arduino上的三个数字I/O端口扩展出16个数字输出端口,如果三块相连的话,你就可以用Arduino上的三个数字I/O端口扩展出24个数字输出端口来。理认上讲这样的扩展是可以一直做下去的,但受限于处理器的处理能力和电源大小、外部干扰等的影响,这样的扩展在实际应用中当然是有一定限制的,至于是多少嘛,那就得由实际的应用场景来

6、决定了。下面来看两块数字输出扩展板如果级联使用。在上述接好的电路的基础上,我们只需要再用一根数字输出扩展板连接线,将第一块数字输出扩展板上的输出端口(OUTPUT),与第二块数字输出扩展板上的输入端口(INPUT)连接起来,电路部分就算完成了:程序部分我们对上面的程序做一点点小的修改,由于是两块数字输出扩展板,因此我们需要分别调用两次shiftOut()函数,来为两块数字输出扩展板分别设置不同的值:intdataPin=8;//SERintlatchPin=9;//RCKintclockPin=10;//SCKvoidsetup(){pinMode(latchPin,OUTPU

7、T);pinMode(clockPin,OUTPUT);pinMode(dataPin,OUTPUT);}voidloop(){for(intj=0;j<255;j++){//starttransmitdatadigitalWrite(latchPin,LOW);shiftOut(dataPin,clockPin,MSBFIRST,j);shiftOut(dataPin,clockPin,MSBFIRST,255-j);//endtransmitdatadigitalWrite(latchP

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。