使用arduino与两块74HC595级联后串转并

74hc595.jpg

2012-9-17 03:28 上传
(49.85 KB)





首先,先把单个74HC595连好,并且能正常工作,关于单个连接请参考这个 http://www.geek-workshop.com/thread-203-1-1.html





然后级联 把第一块的Q7'连接到第二块的DS,然后第一块的Pin_ST_CP并联到第二块的Pin_ST_CP,第一块的Pin_SH_CP并联到第二块的Pin_SH_CP



借别人的图

1465640203733890000.jpg

2012-9-17 03:28 上传
(92.63 KB)





以下是我的arduino的程序部分



const byte Pin_ST_CP=8;

const byte Pin_DS=9;

const byte Pin_SH_CP=10;

void setup()

{

Serial.begin(9600);

pinMode(Pin_ST_CP,OUTPUT);//ST_CP

pinMode(Pin_DS,OUTPUT);//DS

pinMode(Pin_SH_CP,OUTPUT);//SH_CP

digitalWrite(Pin_ST_CP,LOW);

}



void loop()

{

if(Serial.available())

{

char Buff[2];

Serial.readBytes(Buff,sizeof(Buff));

//Buff[

test.jpg

2012-9-17 02:49 上传
(109.68 KB)





所以,如果你使用自带的串口编辑器,它发送的不是十六进制,而是字符串,产生的结果可能会与你设想的不一样





这里有必要说明一下程序,特别是发送时高低位的区别MSBFIRST 和 LSBFIRST 的区别



74HC595的接收:当SH_CP上升沿时移位寄存器中的数据依次移动一位,即Q0中的数据移到Q1中,Q1中的数据移到Q2中,依次类推;下降沿时移位寄存器中的数据保持不变



就如下表,我们发送十进制的2,二进制是00000010



MSBFIRST

00000010

01000000

12345678 -->对应595的Q0~Q7

高位先发送,对应Q0~Q7是倒序关系



LSBFIRST

00000010

00000010

12345678 -->对应595的Q0~Q7

低位先发送,对应Q0~Q7是顺序关系





74HC595的级联,数据也是先从第一块开始,一直迁移到第二块,就像往杯子倒水一样,最前面的水向下倒





OK,就到这里,可能写得不太好,希望大家能看懂
via - 极客工坊

标签: Arduino教程