关于LCD_ShowChar函数中mode 参数的配置

2019-07-20 11:26发布

新手,今天发现ADC一节中的LCD_ShowxNum函数中的mode 参数书中配置有一些困惑,原程序如下:
while(1)
        {
        adcx=Get_Adc_Average(ADC_CHANNEL_5,20);//获取通道5的转换值,20次取平均
                LCD_ShowxNum(134,130,adcx,4,16,0);    //显示ADCC采样后的原始值
                temp=(float)adcx*(3.3/4096);          //获取计算后的带小数的实际电压值,比如3.1111
                adcx=temp;                            //赋值整数部分给adcx变量,因为adcx为u16整形
                LCD_ShowxNum(134,150,adcx,1,16,0);    //显示电压值的整数部分,3.1111的话,这里就是显示3
                temp-=adcx;                           //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111
                temp*=1000;                           //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。
                LCD_ShowxNum(150,150,temp,3,16,0X80); //显示小数部分(前面转换为了整形显示),这里显示的就是111.
                LED0_Toggle;
                delay_ms(250);       
        }
}

我将LCD_ShowxNum函数中的mode 参数改为0,下载运行,没有变化。看了一下此函数发现mode参数已经和0X01相与,程序如下:
void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode)
{  
        u8 t,temp;
        u8 enshow=0;                                                  
        for(t=0;t<len;t++)
        {
                temp=(num/LCD_Pow(10,len-t-1))%10;
                if(enshow==0&&t<(len-1))
                {
                        if(temp==0)
                        {
                                if(mode&0X80)LCD_ShowChar(x+(size/2)*t,y,'0',size,mode&0X01);  
                                else LCD_ShowChar(x+(size/2)*t,y,' ',size,mode&0X01);  
                                continue;
                        }else enshow=1;
                          
                }
                 LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,mode&0X01);
        }
}

也就是说已经没有了填充功能,只能叠加或者不叠加。那么什么时候填充功能才能用到,在哪个函数里呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
duanzhiruorou
1楼-- · 2019-07-20 12:36
 精彩回答 2  元偷偷看……
DoubleK
2楼-- · 2019-07-20 14:50
在吗 这里MODE选0 更选0X80有什么区别

一周热门 更多>