void display_point(float data)
{
uchar a=0,b=0,c=0,d=0,e=0,f=0,g=0;
a=(int)data/1000; //千位
b=((int)data%1000)/100;//百位
c=((int)data%100)/10;//十位
d=(int)data%10;//个位
e=(int)(data*10.0)%10;//1位小数
f=(int)(data*100.0)%10;//2位小数
g=(int)(data*1000.0)%10;//3位小数
if(a!=0)
{
PORTB=num[a];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD5);//关闭百十个片选
PORTD&=~(1<<PD4);//打开千位片选
delay(100);
PORTB=num[10];
PORTB=num[b];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD4);
PORTD&=~(1<<PD5);
delay(100);
PORTB=num[10];
PORTB=num[c];
PORTD|=(1<<PD7)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD6);
delay(100);
PORTB=num[10];
PORTB=num[d];
PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD7);
delay(100);
PORTB=num[10];
}
else if(b!=0)
{
PORTB=num[b];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD5);//关闭百十个片选
PORTD&=~(1<<PD4);//打开千位片选
delay(100);
PORTB=num[10];
PORTB=num[c];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD4);
PORTD&=~(1<<PD5);
delay(100);
PORTB=num[10];
PORTB=numdot[d];
PORTD|=(1<<PD7)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD6);
delay(100);
PORTB=num[10];
PORTB=num[e];
PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD7);
delay(100);
PORTB=num[10];
}
else if(c!=0)
{
PORTB=num[c];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD5);//关闭百十个片选
PORTD&=~(1<<PD4);//打开千位片选
delay(100);
PORTB=num[10];
PORTB=numdot[d];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD4);
PORTD&=~(1<<PD5);
delay(100);
PORTB=num[10];
PORTB=num[e];
PORTD|=(1<<PD7)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD6);
delay(100);
PORTB=num[10];
PORTB=num[f];
PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD7);
delay(100);
PORTB=num[10];
}
else
{
PORTB=numdot[d];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD5);//关闭百十个片选
PORTD&=~(1<<PD4);//打开千位片选
delay(100);
PORTB=num[10];
PORTB=num[e];
PORTD|=(1<<PD7)|(1<<PD6)|(1<<PD4);
PORTD&=~(1<<PD5);
delay(100);
PORTB=num[10];
PORTB=num[f];
PORTD|=(1<<PD7)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD6);
delay(100);
PORTB=num[10];
PORTB=num[g];
PORTD|=(1<<PD6)|(1<<PD5)|(1<<PD4);
PORTD&=~(1<<PD7);
delay(100);
PORTB=num[10];
}
}
请大家帮我看看上面数码管显示浮点型变量不正确,但是输入的是常量displsy_point(1.23456),是正常的,不知道怎么回事?
用的是AVR8,ICC的编译器,没有上面的代码还是40%的ROM使用率,编译上面的代码后,ROM使用一下提升了%10。。。。。。。。
大家有好的显示浮点数的代码吗????谢谢,帮我该代码!!!! |