//----------- 第一顆 74595 控制七段顯示資料 abcdefg dot
//---------- Q0------Q7
#define DATA1 2
#define ST_CP1 3
#define SH_CP1 4
//----------- 第二顆 74595 控制七段顯示資料 最左邊七段 最右邊七段 共同點
//---------- Q7..............Q0
#define DATA2 5
#define ST_CP2 6
#define SH_CP2 7
//------------ 4 個按鈕控制
#define BT1 14
#define BT2 15
#define BT3 16
#define BT4 17
//--------------------------------------------------------
byte pinout[]={DATA1,ST_CP1,SH_CP1,DATA2,ST_CP2,SH_CP2};
byte pininput[]={BT1,BT2,BT3,BT4};
void setup() {
// put your setup code here, to run once:
for(int i=0;i<(sizeof(pinout)/sizeof(byte));i++)
pinMode(pinout[i], OUTPUT);
for(int i=0;i<(sizeof(pininput)/sizeof(byte));i++)
pinMode(pininput[i], INPUT_PULLUP);
Serial.begin(115200);
}
byte seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f, //0~9
0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x76};//A b C d E F off H
byte Buff[]={16,16,16,16,16,16,16,16};
byte scan[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
void disp(byte number7s,byte data7s)
{
digitalWrite(ST_CP1,LOW);
shiftOut(DATA1,SH_CP1,MSBFIRST,~seg[data7s]);
digitalWrite(ST_CP1,HIGH);
digitalWrite(ST_CP2,LOW);
shiftOut(DATA2,SH_CP2,MSBFIRST,scan[number7s]);
digitalWrite(ST_CP2,HIGH);
digitalWrite(ST_CP2,LOW);
shiftOut(DATA2,SH_CP2,MSBFIRST,0x00);
digitalWrite(ST_CP2,HIGH);
}
byte no=0;
void show()
{
disp(no,Buff[no]);
no=(no+1)%8;
}
void loop() {
// put your main code here, to run repeatedly:
show();
Buff[0]=6;
Buff[3]=14;
Buff[5]=15;
Buff[7]=7;
}