mussBAschaffen 发表于 2013-5-27 23:30:37

如何利用74hc595芯片进行多个小灯泡的选择控制

由于digital i|o口不够用,因此希望通过74hc595芯片进行端口扩充,不过看了一圈帖子发现只能同时对端口进行共同控制。
我希望能够实现,例如:if a>b,则led1亮,不知道595能否实现这一功能,求各种意见~

zjyylj 发表于 2013-5-28 00:32:55

用锁存的方式可以独立控制八个

mussBAschaffen 发表于 2013-5-28 10:27:49

zjyylj 发表于 2013-5-28 00:32 static/image/common/back.gif
用锁存的方式可以独立控制八个

不是特别明白,能具体点么?
不太明白如何读取各个小灯泡的地址,以便控制他们。

学长 发表于 2013-5-28 11:04:23

mussBAschaffen 发表于 2013-5-28 10:27 static/image/common/back.gif
不是特别明白,能具体点么?
不太明白如何读取各个小灯泡的地址,以便控制他们。

读取没办法..
只能输出
串列转并列

mussBAschaffen 发表于 2013-5-28 13:36:25

学长 发表于 2013-5-28 11:04 static/image/common/back.gif
读取没办法..
只能输出
串列转并列

嗯,是输出需要单独控制
串列转并列?

学长 发表于 2013-5-28 15:07:50

mussBAschaffen 发表于 2013-5-28 13:36 static/image/common/back.gif
嗯,是输出需要单独控制
串列转并列?

74ch595 就是位移寄存器, 输入的串列数据可以变成并列输出。

mussBAschaffen 发表于 2013-5-28 15:35:48

学长 发表于 2013-5-28 15:07 static/image/common/back.gif
74ch595 就是位移寄存器, 输入的串列数据可以变成并列输出。

嗯,这个效果能达到
可能我问题没有问清楚的缘故吧,我现在用的是Uno的板子,然后digital的 IO口不够用,希望扩展一下端口,所以选了595芯片,最终目的是测试多个数据然后用扩展芯片上相对应接的小灯泡闪烁达到报错的功能,看起来595并不能够实现

学长 发表于 2013-5-28 19:04:10

如果只是 LED 的话.. 正好 74ch595 能够胜任

mussBAschaffen 发表于 2013-5-28 21:46:54

学长 发表于 2013-5-28 19:04 static/image/common/back.gif
如果只是 LED 的话.. 正好 74ch595 能够胜任

恩,只是led,可能本人过于愚蠢,不知道怎么修改代码达到这效果。。能指点一下么

学长 发表于 2013-5-28 23:05:55

mussBAschaffen 发表于 2013-5-28 21:46 static/image/common/back.gif
恩,只是led,可能本人过于愚蠢,不知道怎么修改代码达到这效果。。能指点一下么

贴一段 我教学用的代码给你
你看看 我就不解释了... 不懂的你再问就好了


#define PIN_DATA 11
#define PIN_CLOCK 12
#define PIN_LATCH 8

int rollingInterval = 200; // 闪烁时间 ms
int oldTime, newTime = 0 ;
int lightState = B00000000;

void setup(){
pinMode(PIN_DATA,OUTPUT);
pinMode(PIN_CLOCK,OUTPUT);
pinMode(PIN_LATCH,OUTPUT);
oldTime = millis();
}

void loop(){
newTime = millis();
if ( newTime - oldTime >= rollingInterval){
    switch (lightState){
      case B00000000:
      lightState = B00000001;
      break;
      case B00000001:
      lightState = B00000010;
      break;
      case B00000010:
      lightState = B00000100;
      break;
      case B00000100:
      lightState = B00001000;
      break;
      case B00001000:
      lightState = B00010000;
      break;
      case B00010000:
      lightState = B00100000;
      break;
      case B00100000:
      lightState = B01000000;
      break;
      case B01000000:
      lightState = B10000000;
      break;
      case B10000000:
      lightState = B00000001;
      break;
    }
    digitalWrite(PIN_LATCH,LOW);
    shiftOut(PIN_DATA,PIN_CLOCK,MSBFIRST,lightState);
    digitalWrite(PIN_LATCH,HIGH);
    oldTime = newTime;
   
}
}

mussBAschaffen 发表于 2013-5-29 09:49:38

学长 发表于 2013-5-28 23:05 static/image/common/back.gif
贴一段 我教学用的代码给你
你看看 我就不解释了... 不懂的你再问就好了



发现一个小问题,扩展芯片是不是不能接arduino uno板子上d0和d1引脚上的?

学长 发表于 2013-5-29 10:14:00

mussBAschaffen 发表于 2013-5-29 09:49 static/image/common/back.gif
发现一个小问题,扩展芯片是不是不能接arduino uno板子上d0和d1引脚上的?

可以 程序记得跟著改
相关的接法... 可以找论坛内其他帖子..
这些帖子,接法正确, 只是说明不正确了

mussBAschaffen 发表于 2013-5-29 10:23:11

学长 发表于 2013-5-29 10:14 static/image/common/back.gif
可以 程序记得跟著改
相关的接法... 可以找论坛内其他帖子..
这些帖子,接法正确, 只是说明不正确了

可能刚才接线的时候没插好,所以接了d0,d1之后有一些小问题,现在可以了
待会改完代码试一下,可能还会有问题要请教,不过还是先谢过啦~

学长 发表于 2013-5-29 10:57:31

mussBAschaffen 发表于 2013-5-29 10:23 static/image/common/back.gif
可能刚才接线的时候没插好,所以接了d0,d1之后有一些小问题,现在可以了
待会改完代码试一下,可能还会 ...

ok 有问题 再开新帖吧... 这帖拉太长了..

mussBAschaffen 发表于 2013-5-29 11:11:40

学长 发表于 2013-5-29 10:57 static/image/common/back.gif
ok 有问题 再开新帖吧... 这帖拉太长了..

恩,好的

页: [1]
查看完整版本: 如何利用74hc595芯片进行多个小灯泡的选择控制