OpenEdv-开源电子网

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

stm32f103控制液晶屏界面显示用延时影响刷新速率问题

[复制链接]

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
发表于 2017-11-13 11:01:24 | 显示全部楼层 |阅读模式
2金钱
用液晶屏幕做了一个类似手机充电时候的显示界面(一个电池外框,里面有进度条从无到最长,然后循环),同时液晶屏上还显示一些采集回来的数据。

问题是:充电进度增长的速度非常快,于是我就加了一个延时。也正是因为延时导致液晶屏数据刷新的速率就会变慢。同时液晶屏幕上显示的秒数也会两三秒才变化一次。
因为等到电池进度条从无到最长的过程结束之后(做成了一个函数),从该函数出来,执行其他的部分。

所以想请教大神们看看有没有什么解决的办法,解决这个快了不行,慢了还是不行的矛盾。

最佳答案

查看完整内容[请看2#楼]

可以用定时器来控制充电进度快的节奏。 比如 你500ms加一格电的显示, 定时器那边计时 每到500ms 标志位置1 主函数 里面写 if(Timer_500ms_Flag==1) { Timer_500ms_Flag=0; LCD多显示一个电量 }
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-11-13 11:01:25 | 显示全部楼层
魏状状 发表于 2017-11-13 11:08
还存在另一个问题,风速,压力对采集到的数据影响比较大,如果开气泵,数据会正常显示。但是也不能让气泵开 ...

可以用定时器来控制充电进度快的节奏。

比如  你500ms加一格电的显示,   定时器那边计时   每到500ms   标志位置1   

主函数  里面写

if(Timer_500ms_Flag==1)
{
    Timer_500ms_Flag=0;
     LCD多显示一个电量
}


自己选择的路,成家前走完。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-11-13 11:08:38 | 显示全部楼层
还存在另一个问题,风速,压力对采集到的数据影响比较大,如果开气泵,数据会正常显示。但是也不能让气泵开着,同时还想让液晶屏只显示正常的数据!又是一个矛盾啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-14 01:36:57 | 显示全部楼层
这。。。。1,用os。2,延时换短。
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2017-11-14 14:31:43 | 显示全部楼层
本帖最后由 275891381 于 2017-11-14 14:36 编辑

弄个1ms的定时器做时间源,里面弄个变量xitong_haomiao自加;然后通过读取时间差执行不同的东西,刷屏时间差放小,进度条时间差放大
if(xitong_haomiao-jindutiao_haomiao>=500)
{
        jindutiao_haomiao=xitong_haomiao;
        //进度条更新

}


if(xitong_haomiao-shuaping_haomiao>=50)
{
        shuaping_haomiao=xitong_haomiao;
        //刷新屏幕其他部分

}

回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-11-15
在线时间
1 小时
发表于 2017-11-15 19:07:32 | 显示全部楼层
用这款带字库的I2C接口挺方便,类似案子我用过了,这个是STM32的一个demo程序。

STM32F103控制I2C接口中文12864.rar

1.55 MB, 下载次数: 190

回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2014-7-13
在线时间
19 小时
发表于 2017-11-15 19:57:11 | 显示全部楼层
我觉得以后还是要慢慢把循环延时给取消掉,不是长久之计,比如可以用状态机来代替
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-11-16 15:13:28 | 显示全部楼层
正点原子 发表于 2017-11-14 01:36
这。。。。1,用os。2,延时换短。

好的。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-11-16 15:14:16 | 显示全部楼层
275891381 发表于 2017-11-14 14:31
弄个1ms的定时器做时间源,里面弄个变量xitong_haomiao自加;然后通过读取时间差执行不同的东西,刷屏时间 ...

不太理解什么意思。非常感谢您。
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-11-16 15:15:36 | 显示全部楼层
aiyeba 发表于 2017-11-14 15:42
可以用定时器来控制充电进度快的节奏。

比如  你500ms加一格电的显示,   定时器那边计时   每到500ms ...

好的,谢谢您
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-11-16 15:16:00 | 显示全部楼层
steven88 发表于 2017-11-15 19:07
用这款带字库的I2C接口挺方便,类似案子我用过了,这个是STM32的一个demo程序。

是做什么用的呢
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-14
在线时间
18 小时
 楼主| 发表于 2017-11-16 15:16:26 | 显示全部楼层
lmywudi 发表于 2017-11-15 19:57
我觉得以后还是要慢慢把循环延时给取消掉,不是长久之计,比如可以用状态机来代替

状态机是啥
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2017-11-16 16:56:41 | 显示全部楼层

我的那个思路你都不理解,你还是别状态机了,思路懂了很好,不懂更乱
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2014-7-13
在线时间
19 小时
发表于 2017-11-17 13:06:19 | 显示全部楼层
275891381 发表于 2017-11-16 16:56
我的那个思路你都不理解,你还是别状态机了,思路懂了很好,不懂更乱

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 14:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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