我贴程序出来给大家看看吧,是在12864里面显示浮点数的函数,虽然很乱,不过可以解决问题还是很让人激动的
void display_f(uchar y,uchar x,float shuzi) //显示float型数字
{
uchar s1,s2,s3,s4,s5,s6,s7,s8;
uchar xiaoshu=0,fushu=0,i;
unsigned long ishuzi=0;
if(shuzi<0) //判断是否是负数
{
fushu=1;
shuzi=fabs(shuzi); //如果是负数,取绝对值
}
ishuzi=shuzi*1000000; //使有可能为小数的位都不为小数
for(i=6;i>0;i--)
{
if((ishuzi%10)>0)
{
xiaoshu+=i;
i=1;
}
ishuzi/=10;
}
ishuzi=shuzi*pow(10,xiaoshu); //消除数字后面的小数
s1=ishuzi/10000000;
s2=ishuzi%10000000/1000000;
s3=ishuzi%1000000/100000;
s4=ishuzi%100000/10000;
s5=ishuzi%10000/1000;
s6=ishuzi%1000/100;
s7=ishuzi%100/10;
s8=ishuzi%10;
lcd_pos(y,x); //写入坐标
if(fushu)write_dat('-');
else write_dat(' '); //如果是负数则显示负号,不是则显示空格号
if(s1==0)write_dat(' ');
else //如果数字为0,则显示空格
write_dat(tablen[s1]);
if(s2==0&s1==0&xiaoshu<6)write_dat(' ');
else //如果数字为0,且小数小于6位,则显示空格
write_dat(tablen[s2]);
if(xiaoshu==6)write_dat('.'); //如果小数为6位,则在这里显示小数点
if(s3==0&s2==0&s1==0&xiaoshu<5)write_dat(' ');
else //如果数字为0,且小数小于5位,则显示空格
write_dat(tablen[s3]);
if(xiaoshu==5)write_dat('.'); //如果小数为5位,则在这里显示小数点
if(s4==0&s3==0&s2==0&s1==0&xiaoshu<4)write_dat(' ');
else //如果数字为0,且小数小于4位,则显示空格
write_dat(tablen[s4]);
if(xiaoshu==4)write_dat('.'); //如果小数为4位,则在这里显示小数点
if(s5==0&s4==0&s3==0&s2==0&s1==0&xiaoshu<3)write_dat(' ');
else //如果数字为0,且小数小于3位,则显示空格
write_dat(tablen[s5]);
if(xiaoshu==3)write_dat('.'); //如果小数为3位,则在这里显示小数点
if(s6==0&s5==0&s4==0&s3==0&s2==0&s1==0&xiaoshu<2)write_dat(' ');
else //如果数字为0,且小数小于2位,则显示空格
write_dat(tablen[s6]);
if(xiaoshu==2)write_dat('.'); //如果小数为2位,则在这里显示小数点
write_dat(tablen[s7]);
if(xiaoshu==1)write_dat('.'); //如果小数为1位,则在这里显示小数点
write_dat(tablen[s8]);
} |