LCD显示中sprintf函数出错

2019-07-21 05:08发布

                              sprintf((char*)string,"%s%.3f","ADC Value:",temp);                LCD_DisplayStringLine(Line6,string);                                       //打印ADC转换的值




                sprintf((char*)string1,"  %s%.3f","PA9:",100*(arr-PA9pwmout)/arr);
                LCD_DisplayStringLine(Line7,string1);                                      //打印PA9引脚输出的PWM波占空比
               
                sprintf((char*)string2," %s %.3f","PA9:",720000000/arr);
                LCD_DisplayStringLine(Line8,string2);                                      //打印PWM波的频率


             想请教各位 为什么LCD显示的三行都相同(都输出的是ADC的值)????
            







完整的main函数如下




int main(void)
{       
         float adcx;
         u8  string[20];         u8  string1[20];         u8  string2[20];
         float    temp;
         u16      arr=7199;//71999(1kHZ)~~7199(10kHZ)  频率可调PWM波
         
       
         key_Init();
         Adc_Init();
         LED_Init();
         TIM1_PWM_Init(arr,0);//PWM波频率为  72000000/arr
         
         
        //LCD显示
        STM3210B_LCD_Init();//LCD初始化函数
         
        LCD_Clear(White);
        LCD_SetTextColor(Green);
        LCD_SetBackColor(Red);
   
        LCD_ClearLine(Line0);
        LCD_ClearLine(Line1);
        LCD_ClearLine(Line2);
        LCD_ClearLine(Line3);
        LCD_ClearLine(Line4);


        LCD_DisplayStringLine(Line1,"     ADC DEMO      ");
        LCD_DisplayStringLine(Line3,"  PB0-ADC channel 8 ");


        LCD_SetTextColor(Black);
        LCD_SetBackColor(White);
               
               
               
               
    while(1)
        {
                u16 PA9pwmout;


                PA9pwmout=arr-(adcx*arr)/0xfff;          //占空比与ADC的关系
                TIM_SetCompare2(TIM1,PA9pwmout);   //改变CCR2的值,调节占空比
               
       
                adcx=Get_Adc( ADC_Channel_8);
                temp=adcx*(3.3/0xfff);




                sprintf((char*)string,"%s%.3f","ADC Value:",temp);
                LCD_DisplayStringLine(Line7,string);
                sprintf((char*)string1,"    %s%.3f","PA9:",100*(arr-PA9pwmout)/arr);
                LCD_DisplayStringLine(Line6,string1);
               
                sprintf((char*)string2," %s %.3f","PA9:",720000000/arr);
                LCD_DisplayStringLine(Line8,string2);
       


  
         
        }
        }
       
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
xsq
1楼-- · 2019-07-21 09:23
自己顶
正点原子
2楼-- · 2019-07-21 11:07
帮顶
BG4RFF
3楼-- · 2019-07-21 16:16
 精彩回答 2  元偷偷看……
xsq
4楼-- · 2019-07-21 18:27
BG4RFF 发表于 2019-2-21 09:39
您觉得您发的这段有问题吗?
没有
那问题在其它地方

谢谢,已经解决了,将打印输出的变量强制转换成float就好了

一周热门 更多>