標(biāo)題: 單片機(jī)數(shù)碼管當(dāng)百位小于3在數(shù)碼管上顯示正常,大于3就顯示錯(cuò)誤 急,明天考試了 [打印本頁]

作者: 達(dá)人知命    時(shí)間: 2018-1-17 18:38
標(biāo)題: 單片機(jī)數(shù)碼管當(dāng)百位小于3在數(shù)碼管上顯示正常,大于3就顯示錯(cuò)誤 急,明天考試了
  求大神解釋一下為什么我這個(gè)數(shù)碼管程序,當(dāng)百位小于3在數(shù)碼管上顯示正常,大于3就顯示錯(cuò)誤
#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char
uchar code   tab[]={  

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

void  delay(uint ms)        ;
uchar  x;
void main()
{
        uchar bwei,swei,gwei,m;
        x=345;
        
while(1)
     {
                 bwei=x/100;swei=x/10%10;gwei=x%10;
                for( m=0;m<20;m++)                                   
          P2=0X01; P0=tab[bwei];        delay(10);          P0=0xff;
          P2=0X02; P0=tab[swei];        delay(10);          P0=0xff;
          P2=0X04; P0=tab[gwei];        delay(10);          P0=0xff;        }
     }

void  delay(uint ms)
         {uchar i,j;
         for(i=0;i<ms;i++)
         {
         for(j=0;j<120;j++)
         {;}
         }
         
         }


20180117183730.png (13.7 KB, 下載次數(shù): 52)

這個(gè)是X輸入為345的情況

這個(gè)是X輸入為345的情況

作者: wulin    時(shí)間: 2018-1-18 06:43
變量x的數(shù)據(jù)類型錯(cuò)誤:大于255要用uint  x;
作者: ahshmj    時(shí)間: 2018-1-18 18:22
當(dāng)“uchar  x”時(shí),x只能小于或等于0xff,用10進(jìn)制表示就是255 。十進(jìn)制的345=0x156,由于“uchar”是8位,所以就變成0x56了,0x56轉(zhuǎn)換成10進(jìn)制就是89 。

按樓上的說的“uint  x;”就沒問題了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1