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]); //显示个位段码
send_595_U7(0xbf); //开通个位的位码
delay(110);
send_595_U7(0xff); //关闭个位消隐
}
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]); //显示个位段码
send_595_U7(0xbf); //开通个位的位码
delay(110);
send_595_U7(0xff); //关闭个位消隐
send_595_U3(dis_buf1[1]); //显示十位段码
send_595_U7(0xdf); //开十位通的位码
delay(110);
send_595_U7(0xff); //关闭十位消隐
}
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]); //显示个位段码
send_595_U7(0xbf); //开通个位的位码
delay(110);
send_595_U7(0xff); //关闭个位消隐
send_595_U3(dis_buf1[1]&0x7f); //显示十位段码
send_595_U7(0xdf); //开通十位的位码
delay(110);
send_595_U7(0xff); //关闭十位消隐
send_595_U3(dis_buf1[2]); //显示百位段码
send_595_U7(0xef); //开通百位的位码
delay(110);
send_595_U7(0xff); //关闭百位消隐
}
return num1;
}
u16 ReadADC_data() //读取MAX1241 重力转换数据
{
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;
}
在主程序我调用单个 显示程序没有任何问题,比如我想显示59.8。 :Disp_tg(598) ; 即可立马显示,但当我再调用1241转换数据:
Disp_tg(ReadADC_data()) ; 这时数码管无显示,问题出在哪儿?请大家看看,哪里有问题?
如何修改? |