本文所讨论的是在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[]是数码管的编码数组,可以参考前面博文中的共阴极的数码管代码数组。