OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3888|回复: 4

关于LCD显示函数显示变量的问题

[复制链接]

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2021-3-4
在线时间
28 小时
发表于 2022-5-12 21:28:27 | 显示全部楼层 |阅读模式
问题描述:需要在LCD显示变量的数值,这里使用LCD_ShowString()函数,但未能显示变量,之前用 LCD_ShowxNum()函数成功显示变量,但现在一样无法显示变量。
   
    求助,帮看是我哪里出了问题,谢谢大家。


    单片机型号:
STM32F103RCT6


        需要显示的变量是 fre_cnt 和  er  ,这两变量的数值均显示不出来;
      
              LCD_ShowString(20,40,200,24,24,"Fre:");
              LCD_ShowString(150,40,200,24,24,"Hz");          
              LCD_ShowString(20,80,200,24,24,"Epsr:");
    这三条代码可以正常显示。


求助求助!


以下是主函数:
extern unsigned char tim5_250ms_flag;
extern unsigned int fre_cnt;
extern unsigned char cal_cnt = 0;
#define CAL_TIME   4


float e0 = 8.85419e-12;
float d = 0.002;
float a = 3.03e6;
float c = 1.48e-5;
float S = 0.000625;


float er;


int main(void)
{   
        char str[100];
        char stri[100];
  
        delay_init();                      
        uart_init(9600);                
     
        RCC_Configuration();   
        GPIO_Configuration();       
        TIM5_Timer();
        
        LED_Init();                         
        LCD_Init();
        POINT_COLOR=RED;
      
        LCD_ShowString(20,40,200,24,24,"Fre:");
        LCD_ShowString(150,40,200,24,24,"Hz");       
   
        LCD_ShowString(20,80,200,24,24,"Epsr:");
     
          while(1)
        {
        if(tim5_250ms_flag)               
                {                    
                        tim5_250ms_flag = 0;
                        cal_cnt ++;
                        if(cal_cnt >= CAL_TIME)
                        {   
               
                               sprintf(str,"%d",fre_cnt);  
                               LCD_ShowString(70,40,200,24,24,(u8*)str);               
                        
                                er = (1-c*fre_cnt) * d / (e0*S*a*fre_cnt);
                                sprintf(stri,"%.2f",er);   
                                LCD_ShowString(80,80,200,24,24,(u8*)stri);
                        
                                fre_cnt = 0;
                                cal_cnt = 0;
                                er = 0;
                        }
        }                    
                LED0=!LED0;         
                delay_ms(1000);       
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2070
金钱
2070
注册时间
2021-7-17
在线时间
647 小时
发表于 2022-5-13 10:04:58 | 显示全部楼层

回帖奖励 +1 金钱

楼主可以用串口来打印一下这个变量是否正常,LCD_ShowNum(),LCD_ShowxNum()这个函数是可以显示变量的
回复 支持 反对

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-5-13 10:16:31 | 显示全部楼层
也许你的if不成立,它就没有运行的机会,先将它们放到while(1)之前试一下。
专治疑难杂症
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2021-3-4
在线时间
28 小时
 楼主| 发表于 2022-5-16 11:32:22 | 显示全部楼层
ChenRyan 发表于 2022-5-13 10:04
楼主可以用串口来打印一下这个变量是否正常,LCD_ShowNum(),LCD_ShowxNum()这个函数是可以显示变量的

用串口可打印
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2021-3-4
在线时间
28 小时
 楼主| 发表于 2022-5-16 11:33:03 | 显示全部楼层
ChenRyan 发表于 2022-5-13 10:04
楼主可以用串口来打印一下这个变量是否正常,LCD_ShowNum(),LCD_ShowxNum()这个函数是可以显示变量的

LCD_ShowxNum(),这个我也试了,也是不行的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 04:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表