|
|
本帖最后由 tianlongk 于 2016-1-11 22:37 编辑
我用ARDUINO驱动4位数码管,本来打算输出1到1000玩,结果发现输出十位以上就不会了,先输出前两位,发现数字闪烁,不知道为什么,视频不太明显,但是确实闪烁,代码如下:
- //设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。
- int a=6;
- int b=9;
- int c=8;
- int d=7;
- int e=10;
- int f=11;
- int g=12;
- int dp=13;
-
- //显示数字1
- void digital_1(void)
- {
- digitalWrite(a,HIGH);
- digitalWrite(b,LOW);
- digitalWrite(c,LOW);
- digitalWrite(d,HIGH);
- digitalWrite(e,HIGH);
- digitalWrite(f,HIGH);
- digitalWrite(g,HIGH);
- digitalWrite(dp,HIGH);
- }
- //显示数字2
- void digital_2(void)
- {
- digitalWrite(a,LOW);
- digitalWrite(b,LOW);
- digitalWrite(c,HIGH);
- digitalWrite(d,LOW);
- digitalWrite(e,LOW);
- digitalWrite(f,HIGH);
- digitalWrite(g,LOW);
- digitalWrite(dp,HIGH);
- }
- //显示数字3
- void digital_3(void)
- {
- digitalWrite(a,LOW);
- digitalWrite(b,LOW);
- digitalWrite(c,LOW);
- digitalWrite(d,LOW);
- digitalWrite(e,HIGH);
- digitalWrite(f,HIGH);
- digitalWrite(g,LOW);
- digitalWrite(dp,HIGH);
- }
- //显示数字4
- void digital_4(void)
- {
- digitalWrite(c,LOW);
- digitalWrite(b,LOW);
- digitalWrite(f,LOW);
- digitalWrite(g,LOW);
- digitalWrite(dp,HIGH);
- digitalWrite(a,HIGH);
- digitalWrite(e,HIGH);
- digitalWrite(d,HIGH);
- }
- //显示数字5
- void digital_5(void)
- {
- digitalWrite(a,LOW);
- digitalWrite(b,HIGH);
- digitalWrite(c,LOW);
- digitalWrite(d,LOW);
- digitalWrite(e,HIGH);
- digitalWrite(f,LOW);
- digitalWrite(g,LOW);
- digitalWrite(dp,HIGH);
- }
- //显示数字6
- void digital_6(void)
- {
- digitalWrite(a,LOW);
- digitalWrite(b,HIGH);
- digitalWrite(c,LOW);
- digitalWrite(d,LOW);
- digitalWrite(e,LOW);
- digitalWrite(f,LOW);
- digitalWrite(g,LOW);
- digitalWrite(dp,HIGH);
- }
- //显示数字7
- void digital_7(void)
- {
- digitalWrite(a,LOW);
- digitalWrite(b,LOW);
- digitalWrite(c,LOW);
- digitalWrite(d,HIGH);
- digitalWrite(e,HIGH);
- digitalWrite(f,HIGH);
- digitalWrite(g,HIGH);
- digitalWrite(dp,HIGH);
- }
- //显示数字8
- void digital_8(void)
- {
- unsigned char j;
- for(j=6;j<=13;j++)
- digitalWrite(j,LOW);
- digitalWrite(dp,HIGH);
- }
- //显示数字9
- void digital_9(void)
- {
- digitalWrite(a,LOW);
- digitalWrite(b,LOW);
- digitalWrite(c,LOW);
- digitalWrite(d,LOW);
- digitalWrite(e,HIGH);
- digitalWrite(f,LOW);
- digitalWrite(g,LOW);
- digitalWrite(dp,HIGH);
- }
- //显示数字0
- void digital_0(void)
- {
- digitalWrite(a,LOW);
- digitalWrite(b,LOW);
- digitalWrite(c,LOW);
- digitalWrite(d,LOW);
- digitalWrite(e,LOW);
- digitalWrite(f,LOW);
- digitalWrite(g,HIGH);
- digitalWrite(dp,HIGH);
- }
- void setNum(int n){
- switch(n){
- case 1:
- digital_1();
- break;
- case 2:
- digital_2();
- break;
- case 3:
- digital_3();
- break;
- case 4:
- digital_4();
- break;
- case 5:
- digital_5();
- break;
- case 6:
- digital_6();
- break;
- case 7:
- digital_7();
- break;
- case 8:
- digital_8();
- break;
- case 9:
- digital_9();
- break;
- case 0:
- digital_0();
- break;
- };
- }
- void setup()
- {
- int i;//定义变量
- for(i=6;i<=13;i++)
- pinMode(i,OUTPUT);//设置4~11引脚为输出模式
- }
- void loop()
- {
- while(1)
- {
- int i=0;
- for(i=0;i<=1000;i++){
- if(i<10){
- digitalWrite(5,HIGH);
- setNum(i);
- delay(100);
- }
- else if(i<100){
- digitalWrite(5,HIGH);
- digitalWrite(4,LOW);
- setNum(i%10);
- delay(30);
- digitalWrite(5,LOW);
- digitalWrite(4,HIGH);
- setNum(i/10);
- // delay(2);
- delay(100);
- }
- }
- // digital_1();//数字1
- // delay(2000);//延时2s
- // digital_2();
- // delay(2000);
- // digital_3();
- // delay(2000);
- // digital_4();
- // delay(2000);
- // digital_5();
- // delay(2000);
- // digital_6();
- // delay(2000);
- // digital_7();
- // delay(2000);
- // digital_8();
- // delay(2000);
- // digital_9();
- // delay(2000);
- // digital_0();
- // delay(2000);
- }
- }
复制代码
上面是我试验视频效果,求高手解答疑惑。 |
|