Arduino 实现八段数码管显示练习

晚上蛋疼,本来要做arduino的测距显示,由于老师没有设备只能用八段数码管显示~没有LED~

今天拿出来观察了下,结果红外测距没有导线 -。-

只好拿数码管练练手

设备:ARDUINO 2009 DUEMILANOVE //arduion IDE默认的是uno,所以upload的时候会出现一个warning:avrdude: stk500_getsync(): not in sync: resp=0x00,重新选择设备,端口,重启基本可以解决问题。

数码管一只,型号查了N久没查出来。对于不知道型号的童鞋,可以参照这个  http://www.sz-xsm.com/ch/NewsView.asp?id=201&SortID=24

老师给我的就是奇葩的第一种,学习模电数电好多年了,又用arduino挨个的测出来哪个引脚管哪个。

int incomingByte=0;
int z=0;
int DigitalPin[9][7]={
     {1,1,1,1,0,0,1},//1
     {0,0,1,0,0,1,0},//2
     {0,0,0,0,1,1,0},//3
     {1,0,0,1,1,0,0},//4
     {0,1,0,0,1,0,0},//5
     {0,1,0,0,0,0,0},//6
     {0,0,0,1,1,1,1},//7
     {0,0,0,0,0,0,0},//8
     {0,0,0,0,1,0,0}//9
     
     };
void setup()
{  
 
   pinMode(13,OUTPUT);    
   byte incomingByte=0;
   for(int n=2;n<=8;n++)
     {
       pinMode(n,OUTPUT);
     }

     Serial.begin(9600);
}
 
 
void loop() 
{
   digitalWrite(13,HIGH);//use pin13 as power source
   
   if(Serial.available()>0)
   {
    Serial.println("Input Test");
    incomingByte = Serial.read();
    Serial.println(incomingByte);
   }
   
   switch (incomingByte)
     {
       //display 1
      case 49:
 
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[0][z]);
          z++;
          if(z>6)
          {
            z=0;
          }
        }
        break;
        //2
      case 50:
        z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[1][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;
        //3
      case 51:
         z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[2][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;
       //4
    case 52:
        z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[3][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;
        //5
    case 53:
         z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[4][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;
        //6
    case 54:
         z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[5][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;
        //7
    case 55:
         z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[6][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;
        //8
            case 56:
         z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[7][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;
        //9
            case 57:
         z=0;
        for(int n=2;n<=8;n++)
        {
          digitalWrite(n,DigitalPin[8][z]);
          z++;
              if(z>6)
          {
            z=0;
          }
        }
        break;

      default://default
        break;
      
     }
}

代码基本这样

Following is the circuit:

posted on 2012-12-19 08:39  玻璃米  阅读(797)  评论(0)    收藏  举报

导航