OpenEdv-开源电子网

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

串口屏显示的时候是否需要重复刷新数据?

[复制链接]

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-31
在线时间
49 小时
发表于 2019-3-13 20:56:03 | 显示全部楼层 |阅读模式
20金钱
手上有一块串口屏,现在在纠集显示的数据是否需要重复刷新
比如 显示北京时间(需要显示秒),0秒钟的时候送了一次显示,1秒钟的时候送一次显示,就刚好可以看到秒钟+1了,
关键问题就是  0秒变成1秒的时候  已经重复显示了很多次0秒了,这个时候是否需要做一个判断  秒的数据是否变化了  如果变化了就刷新一次显示
再比如:
显示:0秒//第一次显示0秒
显示:0秒

显示:0秒
显示:0秒
显示:0秒
显示:0秒
显示:0秒
显示:0秒
显示:0秒
//---------------
显示:1秒//秒变化了 这个时候人的肉眼才看到秒+1了,
//如果不做数据是否变化的判断那么就相当于连续显示很多次0秒 值到秒+1之后才有意义


如果要做数据变化判断应该用什么方法最好? 求各位大神支招!!!



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

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6745
金钱
6745
注册时间
2017-4-12
在线时间
1258 小时
发表于 2019-3-13 21:35:02 | 显示全部楼层
u8 last_second = 0;
u8 now_second = 0;

...
now_second = gettime();
if(last_second != now_second)
{
    refreshtime();
    last_second = now_second;
}
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-13 21:56:56 | 显示全部楼层
我没做过那个屏需要你说的这样刷的, 当然是有变化才刷啊
回复

使用道具 举报

2

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
310
金钱
310
注册时间
2012-11-9
在线时间
85 小时
发表于 2019-3-13 23:13:12 | 显示全部楼层
串口屏一般是作为 从机 使用的,即,你要显示什么东东,只需要按它的协议发数据就好了,剩下的事由屏来完成。当然,有的串口屏也可以作为主机,用过迪文的,可以自己在屏上写个OS程序,主动检测单片机这边的数据变化更新。   屏作为从机时,单片机这边搞个定时器,每200ms左右给屏发一次需要更新的数据就可以了,更新太快,屏那边不一定能反应过来,而且也没那个必要吧,毕竟只是显示给人看的,更新太快,眼睛也看不过来呀。
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2019-3-14 11:16:40 | 显示全部楼层
一般是串口屏问MCU要数据,MCU按照协议发数据,其他的不用管。你的mcu只需要每隔1s按照协议往串口屏发送数据即可
回复

使用道具 举报

1

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2011-12-1
在线时间
110 小时
发表于 2019-3-14 11:36:05 | 显示全部楼层
你时间刷新的时间控制在比1秒小一点点就好了,或者半秒刷一次,就不会漏你的时间了,可以用定时器来控制你刷新的时间
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-31
在线时间
49 小时
 楼主| 发表于 2019-3-14 12:10:03 | 显示全部楼层
xlong_06 发表于 2019-3-14 11:36
你时间刷新的时间控制在比1秒小一点点就好了,或者半秒刷一次,就不会漏你的时间了,可以用定时器来控制你 ...

首先这个是不可能的  因为我还有很多数据要发送,比如加温的时候温度变化可能是在几分钟才上升1度,而且这个温度变化的时间是无法预知的
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-31
在线时间
49 小时
 楼主| 发表于 2019-3-14 12:12:40 | 显示全部楼层
xlong_06 发表于 2019-3-14 11:36
你时间刷新的时间控制在比1秒小一点点就好了,或者半秒刷一次,就不会漏你的时间了,可以用定时器来控制你 ...

你说的不太好实现  秒是实现了   问题是还有 年月日时分 的数据呢
比如2019-03-21   21:38:55
难不成再做一个  比1分钟小一点的的时候开始刷新分钟的数据   比1小时小一点的的时候开始刷新小时的数据   
   你这种方式不太肯能
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-31
在线时间
49 小时
 楼主| 发表于 2019-3-14 12:16:09 | 显示全部楼层
szczyb1314 发表于 2019-3-14 11:16
一般是串口屏问MCU要数据,MCU按照协议发数据,其他的不用管。你的mcu只需要每隔1s按照协议往串口屏发送数 ...

我用的是一个 USART HMI的串口屏,显示屏固定不变的内容是用电脑软件制做好之后写入到显示屏的,但是需要动态显示的数据 比如  温度  时间  就只能是用单片机主动发送要显示的数据了,这个时候就会出现我所说的问题  如果一个数据一直都没有变化过(比如温度,温度有时候并没有变化),单片机一直重复显示相同的温度  这个时候重复显示的内容变得毫无意义,
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-31
在线时间
49 小时
 楼主| 发表于 2019-3-14 12:17:27 | 显示全部楼层
luobin189 发表于 2019-3-13 23:13
串口屏一般是作为 从机 使用的,即,你要显示什么东东,只需要按它的协议发数据就好了,剩下的事由屏来完成 ...

所以我就在 考虑做  数据是否发生了变化,如果数据变化了就刷新一次新的数据,否则重复刷新相同的内容,但是我现在遇到的难点是用什么判断方式才能达到最大效率
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-31
在线时间
49 小时
 楼主| 发表于 2019-3-14 12:18:03 | 显示全部楼层
245925587 发表于 2019-3-13 21:35
u8 last_second = 0;
u8 now_second = 0;

我目前用的就是你这个原理  不知道还有没有更高效率的方法
回复

使用道具 举报

2

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
310
金钱
310
注册时间
2012-11-9
在线时间
85 小时
发表于 2019-3-15 00:32:18 | 显示全部楼层
开辟DMA,同时启动FIFO,通过DMA搬数据给串口,想发多少都行,只要串口屏那边能忙的过来。这就不占用你CPU的时间了,重复刷新数据也无所谓了,反正又不用CPU干活。
回复

使用道具 举报

2

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
310
金钱
310
注册时间
2012-11-9
在线时间
85 小时
发表于 2019-3-15 00:32:55 | 显示全部楼层
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2019-3-15 08:35:52 | 显示全部楼层
屏做为从机,单片机为主机,如果数据有变化时,单片机给屏发一次数据。显示屏上显示的内容在单片机内部做一个备份,要显示的数据和备份的数据对比,如果数据发生了改变,就发生一次数据更新显示,同时更新显示的备份。数据量不是很大的话,更新一次数据显示就几毫秒的时间,不会显示滞后的。
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-31
在线时间
49 小时
 楼主| 发表于 2019-3-16 21:45:47 | 显示全部楼层
HXYDJ 发表于 2019-3-15 08:35
屏做为从机,单片机为主机,如果数据有变化时,单片机给屏发一次数据。显示屏上显示的内容在单片机内部做一 ...

你的方法和2楼的一样,我也是用的这个原理,用这种方式的话  显示屏上有多少各变量 那就要多定义一倍的变量来存储你所说的备份,看来C语言是没有 自动判断数据是否发生了变化
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 04:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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