三片 595 聯級控制雙色點陣(共陰)顯示
IMG_20181216_210817.jpg (198.03 KB, 下載次數: 53)
下載附件
2018-12-16 21:18 上傳
IMG_20181216_210820_1.jpg (212.45 KB, 下載次數: 45)
下載附件
2018-12-16 21:18 上傳
問題:綠色總是少顯示一列. 有高手看看代碼指出問題. (有誰做過 三片595 控制雙色點陣,歡迎交流)
代碼:
#include <TimerOne.h>
int latchpin = 8;
int clockpin = 12;
int datapin = 11;
int i;
int j;
int k;
void setup()
{
pinMode (latchpin,OUTPUT);
pinMode (clockpin,OUTPUT);
pinMode (datapin,OUTPUT);
}
void loop(){
//綠色全亮
digitalWrite(latchpin,LOW);
shiftit1(B00000000);
shiftit0(B11111111);
digitalWrite(latchpin,HIGH);
delay(1000);
//紅色全亮
digitalWrite(latchpin,LOW);
shiftit2(B00000000);
shiftit0(B11111111);
digitalWrite(latchpin,HIGH);
delay(1000);
}
//陰極 595
void shiftit0(byte dataout){
int i=0;
boolean pinstate;
digitalWrite (datapin,LOW);
digitalWrite(clockpin,LOW);
for (i = 0;i < 8;i ++){
digitalWrite(clockpin,LOW);
if(dataout &(1 << i)){pinstate = HIGH;}else{pinstate = LOW;}
digitalWrite(datapin,pinstate);
digitalWrite(clockpin,HIGH);
digitalWrite(datapin,LOW);
}
digitalWrite(clockpin,LOW);
}
//綠色 595
void shiftit1(byte dataout){
int j=0;
boolean pinstate;
digitalWrite (datapin,LOW);
digitalWrite(clockpin,LOW);
for (j = 8;j < 16;j ++){
digitalWrite(clockpin,LOW);
if(dataout &(1 << j)){pinstate = HIGH;}else{pinstate = LOW;}
digitalWrite(datapin,pinstate);
digitalWrite(clockpin,HIGH);
digitalWrite(datapin,LOW);
}
digitalWrite(clockpin,LOW);
}
//紅色 595
void shiftit2(byte dataout){
k=0;
boolean pinstate;
digitalWrite (datapin,LOW);
digitalWrite(clockpin,LOW);
for (k = 16;k < 32;k ++){
digitalWrite(clockpin,LOW);
if(dataout &(1 << k)){pinstate = HIGH;}else{pinstate = LOW;}
digitalWrite(datapin,pinstate);
digitalWrite(clockpin,HIGH);
digitalWrite(datapin,LOW);
}
digitalWrite(clockpin,LOW);
}
|