本文所討論的是在proteus下仿真的,利用arduino及595控制的多位數碼管的顯示。
一、電路連接
如下圖所示,提供了三種常見的數碼管顯示。
從前面的顯示二位數碼管的例子中我們已經熟悉了,多位數碼管無非就是多了幾層循環用來將高位的數字代碼重複從595中shiftout出去到數碼管的管腳。
二、參考代碼
外層可以根據需要設置6層循環,或者索性如下面的代碼,給你一個固定的顯示數字的數字即可,比如下面代碼中的disNum[].
for(int k=0;k<speed;k++)
{
for(int bitSelect=8;bitSelect<14;bitSelect++)
{
digitalWrite(bitSelect,1);
digitalWrite(latchPin,HIGH);
switch(bitSelect)
{
case 8:
shiftOut(dataPin,clockPin,LSBFIRST,cseg[disNum[5]]);
break;
case 9:
shiftOut(dataPin,clockPin,LSBFIRST,cseg[disNum[4]]);
break;
case 10:
shiftOut(dataPin,clockPin,LSBFIRST,cseg[disNum[3]]);
break;
case 11:
shiftOut(dataPin,clockPin,LSBFIRST,cseg[disNum[2]]);
break;
case 12:
shiftOut(dataPin,clockPin,LSBFIRST,cseg[disNum[1]]);
break;
case 13:
shiftOut(dataPin,clockPin,LSBFIRST,cseg[disNum[0]]);
break;
default:
shiftOut(dataPin,clockPin,LSBFIRST,cseg[0]);
break;
}
digitalWrite(latchPin,LOW);
digitalWrite(bitSelect,0);
delay(1);
}
}
cseg[]是數碼管的編碼數組,可以參考前面博文中的共陰極的數碼管代碼數組。