尝试了几种if…else…方式,还是没能解决以下问题……
在C51里面如何使用C语言写判零及小数点消隐的子程序??
#define AD_Loop_PickVol_PER 0.0024414
unsigned char idata serial_buff[12];
void display(uint v)
{
unsigned char row, count;
float tt;
unsigned long tmp ;
signed long value;
tt=v*AD_Loop_PickVol_PER;//AD采样数值
value = tt * 1000000000;//取小数点后9位
tmp = value;
if(value<0)tmp*=-1;//取负数
for(count=0;count<11;count++)
{
if(tmp !=0)
{
serial_buff[10-count]=tmp%10;
tmp/=10;
}
else
{
serial_buff[10-count]=0;
}
}
draw_bmp(0,1,8,ELAPHT[12]);//显示"Pi"
for(count = 0; count != 11; count++)
{
draw_bmp(8+row*8,1,8,num[serial_buff][count]]);//显示读数
row++;
if((count == 1))//定位小数位
{
draw_bmp(8+row*8,1,8,num[10]);//设置小数点
row++;
}
}
row=0;
draw_bmp(112+row*8,1,8,ELAPHT[11]);//显示"W"
}
此时正确吗? if(value<0)tmp*=-1;//取负数
上面的子程序是使用在12232LCD上显示的AD采集的数值,格式为PiXX. XXXXXXXXXW(保留小数点后9位数值,但显示格式须作如下修改)。
为了显示单位方便直观所以要在LCD上自动切换显示格式,同时小数点也自动移位切换显示。现要求更改12232LCD上的显示格式为如下几种方式:
1, 如果小数点前两位数值不等于零,则LCD上显示格式自动切换为PiXX.XXX W显示,其余后面的六位数值消掉(留下空格)。而如果此时的数值显示为Pi 0X.XXX W则前面的0自动消掉不显示。更改显示方式为:Pi X.XXX W
2, 如果小数点前两位数值都等于零,则LCD上显示格式自动切换为Pi XXX.XXX mW显示,即把前面小数点两位为零的数值去掉(留下空格)及其余后面的六位数值消掉(留下空格)。而如果此时的数值显示为Pi 0XX.XXX mW或者为Pi 00X.XXX mW则前面的0都自动消掉不显示。更改显示方式为:Pi XX.XXX mW或者Pi X.XXX mW
3, 如果小数点前两位及后面三位都等于零,则LCD上显示格式自动切换为Pi XXX.XXX uW显示,即把前面小数点两位为零的数值和小数点后面三位为零的数值去掉(留下空格)。而如果此时的数值显示为Pi 0XX.XXX uW或者为Pi 00X.XXX uW则前面的0都自动消掉不显示。更改显示方式为:Pi XX.XXX uW或者Pi X.XXX uW
4, 如果小数点前两位数值及后面六位数值都等于零,则LCD上显示格式自动切换为Pi XXX nW显示,即把前面小数点两位为零的数值和小数点后面六位为零的数值去掉(留下空格)。而如果此时的数值显示为Pi 0XX nW或者为Pi 00X nW则前面的0都自动消掉不显示。更改显示方式为:Pi X X nW或者Pi X nW
在void display(uint v)函数加入if…else…的什么语法?是否可以实现上述四种功能在LCD上显示出来,各位高手请出招啊,多谢!多谢