2426447860 发表于 2013-10-13 23:16:06

用lm35采集温度在4位七段数码管上显示为什么一直显示22度,请大神们看看

本帖最后由 弘毅 于 2013-10-16 21:21 编辑

char sm[]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedlong intt;
char sz0,sz1,sz2,sz3=0x00;
intsw,gw;
void setup()
{
for(int i=2;i<=13;i++)
    pinMode(i,OUTPUT);   // pin2--pin9接a--h;pin10接GND1,pin11接GND2,pin12接GND3,pin13接GND4
}

   void loop()
{
   
   t=analogRead(0);
t=(t>>4)*16+(t&0x0f);
t=(5000*t/1024+5)/10;
sw = t/10;
gw = t%10;
xianshi ();
}

voidxianshi ()
{
switch (sw){
    case0:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
    case1:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
   case 2:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
   
    case3:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
    case4:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
    case5:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
    case6:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
    case7:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
    case8:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
    case 9:
    digitalWrite(10,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(10,HIGH);
    break;
}


switch (gw){
    case0:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case1:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case2:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case3:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case4:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case 5:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case6:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case7:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case8:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
    case9:
    digitalWrite(11,LOW);
    for (int i =0; i<=7;i++)
    digitalWrite (i+2, (sm>>i)&0x01);
    delay(5);
    digitalWrite(11,HIGH);
    break;
}
}

弘毅 发表于 2013-10-16 21:20:58

。。。。。。。。。。。木注释基本看不下去了。。。

yyy_zc 发表于 2013-10-28 21:33:11

   void loop()
{

   t=analogRead(0);
t=(t>>4)*16+(t&0x0f);
t=(5000*t/1024+5)/10;
sw = t/10;
gw = t%10;
#插入 Serial.println(sw); Serial.println(gw);
xianshi ();
}

先大体判断一下问题

bruse321 发表于 2015-1-16 17:01:49

請問大神有電路圖嗎?
不然不知道你電路怎麼接的

感謝
页: [1]
查看完整版本: 用lm35采集温度在4位七段数码管上显示为什么一直显示22度,请大神们看看