|
首先把图晒出来先
这是原理图:
这是面包板的
这是程序:
- /**
- 定义芯片接口
- */
- #define DS 9
- #define OE 8
- #define ST_CP 7
- #define SH_CP 6
- #define MR 5
- void setup(){
- Serial.begin(9600);
- pinMode(DS,OUTPUT);
- pinMode(OE,OUTPUT);
- pinMode(ST_CP,OUTPUT);
- pinMode(SH_CP,OUTPUT);
- pinMode(MR,OUTPUT);
- digitalWrite(OE,LOW); //允许芯片输出
- }
- void loop(){
- delay(50);
- digitalWrite(MR,LOW); //清空移位寄存器
- delay(30);
- digitalWrite(MR,HIGH); //使移位寄存器有效
- delay(3000);
-
- int x=255; //把这个数字转换成二进制后当作输出显示,255转换成二进制就是8个1
- for(int i=0;i<8;i++){
- //i<8是只转换8位二进制,最大就是255
- if(x%2==1){
- //转换后如果该位是1就放入高电平芯片DS口
- digitalWrite(DS,HIGH);
- }else{
- //转换后如果该位是0就放入低电平芯片DS口
- digitalWrite(DS,LOW);
- }
- Serial.println(x);
- x=x/2; //这个是转换二进制的逻辑
- delay(50);
- digitalWrite(SH_CP,HIGH);
- delay(50);
- digitalWrite(SH_CP,LOW);
- /**
- 把SH_CP移位寄存器口,置高50微秒后置低,移位寄存器里的数据移动
- */
- delay(50);
- digitalWrite(ST_CP,HIGH);
- delay(50);
- digitalWrite(ST_CP,LOW);
- /**
- 把存储寄存器置高50微秒,移位寄存器的数据放到存储寄存器显示
- */
- delay(1000);
- }
- for(int i=0;i<5;i++){
- digitalWrite(OE,HIGH);
- delay(1000);
- digitalWrite(OE,LOW);
- /**
- 把允许输出改变,使所有口闪烁
- */
- delay(1000);
- }
- }
复制代码
各位大神,我发现一个问题,不知道是怎么回事,求教一下:
1、重启模块的时候,芯片 Q0口,也就是15口的这个灯,总是亮的,等到数据移动的时候才能正常亮或者灭
2、在位移过程中,发现 只要芯片 Q7 口 的数据为1的话,Q7S的接口也亮,而且Q7S的口灯先亮,这个Q7S的灯先亮了过0.1秒这样Q7口才亮
问一下,这个到底怎么回事呢,还有我理解这个74HC595芯片有没有错误???
谢谢,谢谢 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|