[讨论] 在C51里面如何使用C语言写判零及小数点消隐的子程序??

jghru   2007-6-4 13:34 楼主
尝试了几种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上显示出来,各位高手请出招啊,多谢!多谢

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复