const byte SEG_PIN[2]={15,2}; // 7段顯示器的控制接腳
byte Data[2] = {0, 0};
const byte dataPin = 21; // 74HC595序列輸入
const byte latchPin = 22; // 74HC595暫存器時脈」
const byte clockPin = 23; // 74HC595序列時脈
const byte LEDs[10] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
//------------------------------------------------------------------------
void setup() {
pinMode(latchPin, OUTPUT); //設定為輸出埠
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
for (byte i=0; i<2; i++) {
pinMode(SEG_PIN[i], OUTPUT); //選擇信號線為輸出埠
}
}
//-----------------------------------------------------
void loop() {
for(int i=0;i<100;i++){ //00-99迴圈
show(i); //i值傳入副程式顯示字型
delay(100); //延屬0.5秒
}
}//-----------------------------------------------------
void show(byte number){
Data[0]= number % 10 ; // 儲存個位數字
Data[1]= number / 10 % 10 ; // 十位數字
for (byte i=0; i<2; i++){ //2個數值
digitalWrite(latchPin, LOW); //latch腳LOW->HIGH
shiftOut(dataPin, clockPin, LSBFIRST, LEDs[Data[i]]); //將Data的資料傳入並右移
digitalWrite(latchPin, HIGH); //0->1就能移位
digitalWrite(SEG_PIN[i], 0); // 致能顯示
delay(5);
for (byte j=0; j<2; j++) digitalWrite(SEG_PIN[j], 1); // 消除
}
}