winking 发表于 2014-12-8 20:36:22

arduino中shiftOut()函数控制74hc595的的问题!

shiftOut(dataPin,clockPin,MSBFIRST,val);
这个函数形参中的val表示什么?
其中的数组a={3,159,37,13,153,73,65,27,1,9};为何可以让8个小灯一个个逐渐亮起?
用1表示亮0表示灭则显示效果为:00000001      00000011      00000111      00001111      00011111      00111111       01111111      11111111 最后一直保持11111111状态。(大家凑活看。。。)
代码:
int latchPin = 5;
int clockPin = 4;
int dataPin = 2;
void setup ()
{
pinMode(latchPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(dataPin,OUTPUT);
}
void loop()
{
int a={3,159,37,13,153,73,65,27,1,9};
for(int x=0; x<10; x++)
{
    digitalWrite(latchPin,LOW);
    shiftOut(dataPin,clockPin,MSBFIRST,a);
    digitalWrite(latchPin,HIGH);
    delay(1000);
}

}

努力微笑 发表于 2014-12-9 16:31:40

74HC595有8个IO口,对应二进制的8个数,拿a={3,159,37,13,153,73,65,27,1,9};中的 “3”来说,
十进制的“3”是二进制的“00000011”,“1”是高电平(可以理解为开)“0”是低电平(可以理解为关),以从右到左的顺序,现象就是接Q0和Q1的LED是亮的,其他6个是灭的,,,以此类推

winking 发表于 2014-12-10 19:35:02

努力微笑 发表于 2014-12-9 16:31 static/image/common/back.gif
74HC595有8个IO口,对应二进制的8个数,拿a={3,159,37,13,153,73,65,27,1,9};中的 “3”来说,
十进制 ...

请问shiftOut()函数中的两个形参clockpin应该与什么与74ch595上的哪个角相连,是SH_CP还是ST_CP,还有SH_CP和ST_CP哪个是latchpin(或者说哪个是上升沿时为写入数据),问题有点多,谢谢!

winking 发表于 2014-12-10 19:38:25

winking 发表于 2014-12-10 19:35 static/image/common/back.gif
请问shiftOut()函数中的两个形参clockpin应该与什么与74ch595上的哪个角相连,是SH_CP还是ST_CP,还有SH_ ...

追问一下,如果将shiftOut()函数形参中bitOrder由MSBFIRST变为LSBFIRST是不是相当于,让数据从取Q7~Q0读,变成了从Q0~Q7读?

北斗 发表于 2015-1-26 15:25:56

根据74hc595的datasheet, clockpin对应的是SH_CP(shift register clock input),是时钟信号。latchpin对应的是ST_CP,时序图里可以看到上升沿有效。

追问里,MSBFIRST和LSBFIRST分别是高位先传和低位先传,你的理解是对的。

千羽杨 发表于 2015-7-26 15:42:33

北斗 发表于 2015-1-26 15:25 static/image/common/back.gif
根据74hc595的datasheet, clockpin对应的是SH_CP(shift register clock input),是时钟信号。latchpin对 ...

搜74HC595的使用看到这个帖子,MSBFIRST从高到底读,LSBFIRT从低到高读,但是74HC595的8个脚都是按Q7至Q0的顺序进行赋值的
页: [1]
查看完整版本: arduino中shiftOut()函数控制74hc595的的问题!