|
u16 Disp_tg(u16 num1) //顯示體重
{
u16 dis_buf1[3];
if(num1>=0&&num1<10)
{
//dis_buf[3]=LEDMAP[(num1/1000)%10];
dis_buf1[2]=LEDMAP[(num1/100)%10];
dis_buf1[1]=LEDMAP[(num1/10)%10];
dis_buf1[0]=LEDMAP[num1%10];
send_595_U3(dis_buf1[0]); //顯示個(gè)位段碼
send_595_U7(0xbf); //開通個(gè)位的位碼
delay(110);
send_595_U7(0xff); //關(guān)閉個(gè)位消隱
}
else if(num1>=10&&num1<=99)
{
//dis_buf[3]=LEDMAP[(num1/1000)%10];
dis_buf1[2]=LEDMAP[(num1/100)%10];
dis_buf1[1]=LEDMAP[(num1/10)%10];
dis_buf1[0]=LEDMAP[num1%10];
send_595_U3(dis_buf1[0]); //顯示個(gè)位段碼
send_595_U7(0xbf); //開通個(gè)位的位碼
delay(110);
send_595_U7(0xff); //關(guān)閉個(gè)位消隱
send_595_U3(dis_buf1[1]); //顯示十位段碼
send_595_U7(0xdf); //開十位通的位碼
delay(110);
send_595_U7(0xff); //關(guān)閉十位消隱
}
else if(num1>=100&&num1<=999)
{
//dis_buf[3]=LEDMAP[(num1/1000)%10];
dis_buf1[2]=LEDMAP[(num1/100)%10];
dis_buf1[1]=LEDMAP[(num1/10)%10];
dis_buf1[0]=LEDMAP[num1%10];
send_595_U3(dis_buf1[0]); //顯示個(gè)位段碼
send_595_U7(0xbf); //開通個(gè)位的位碼
delay(110);
send_595_U7(0xff); //關(guān)閉個(gè)位消隱
send_595_U3(dis_buf1[1]&0x7f); //顯示十位段碼
send_595_U7(0xdf); //開通十位的位碼
delay(110);
send_595_U7(0xff); //關(guān)閉十位消隱
send_595_U3(dis_buf1[2]); //顯示百位段碼
send_595_U7(0xef); //開通百位的位碼
delay(110);
send_595_U7(0xff); //關(guān)閉百位消隱
}
return num1;
}
u16 ReadADC_data() //讀取MAX1241 重力轉(zhuǎn)換數(shù)據(jù)
{
u16 ADC_Data;
u8 i;
SCLK=0;
CS=0;
ADC_Data=0;
while(!DOUT);
SCLK=1;
SCLK=0;
for(i=0;i<12;i++)
{
SCLK=1;
ADC_Data<<=1;
ADC_Data|=DOUT;
SCLK=0;
}
CS=1;
SCLK=0;
return ADC_Data;
}
在主程序我調(diào)用單個(gè) 顯示程序沒有任何問題,比如我想顯示59.8。 :Disp_tg(598) ; 即可立馬顯示正常,但當(dāng)我再調(diào)用1241轉(zhuǎn)換數(shù)據(jù):
Disp_tg(ReadADC_data()) ; 這時(shí)數(shù)碼管無顯示,問題出在哪兒?請(qǐng)大家看看,哪里有問題?
|
|