找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1173|回复: 11
收起左侧

如何解决单片机+595数码管显示程序其他功能干扰显示的稳定性?

[复制链接]
ID:254747 发表于 2021-11-28 23:14 | 显示全部楼层 |阅读模式
我的数码管是595的驱动程序     
现在我的程序功能越来越多,在有的函数中执行时间比较长,例如我调节占空比的时候,我把实时值发送到了数码管,但是数码管无法显示,原因找到了,就是函数执行时间过长,导致长时间没有扫描数码管所致,请问该如何处理
回复

使用道具 举报

ID:624769 发表于 2021-11-28 23:30 | 显示全部楼层
1)数码管的动态扫描,必须在定时器里完成
2)必须每20毫秒完成一次数码管所有位的点亮。即:如果是4位数码管,必须每5毫秒点亮一个位,8位数码管则必须每2.5毫秒点亮一个位。
回复

使用道具 举报

ID:752974 发表于 2021-11-29 08:40 | 显示全部楼层
595驱动的数码管应该是静态显示,显示的数据没有更新时不需要刷新显示器。你这种现象可能是有某个中断服务程序执行时间太长造成的,解决方法一是修改中断服务程序,做到运行时间最短,记住,不要在中断里处理数据。二是执行显示程序时关中断。
回复

使用道具 举报

ID:254747 发表于 2021-11-29 09:36 | 显示全部楼层
munuc_w 发表于 2021-11-29 08:40
595驱动的数码管应该是静态显示,显示的数据没有更新时不需要刷新显示器。你这种现象可能是有某个中断服务 ...

你回答的确实如此  就是我有一个调节占空比的函数 执行时间比较长 但是我这个时间没有办法缩短  缩短了频率或者占空比就没有办法调节了  请问还有什么好办法吗  PWM占空比我用的是中断变量 中断里面只对这个变量++其它什么都不做  
回复

使用道具 举报

ID:254747 发表于 2021-11-29 09:38 | 显示全部楼层
188610329 发表于 2021-11-28 23:30
1)数码管的动态扫描,必须在定时器里完成
2)必须每20毫秒完成一次数码管所有位的点亮。即:如果是4位数 ...

非常感谢你的指导   我重新开了一个定时器 给数码管用了  可以显示     结果按键又没法用了    哈哈哈哈
回复

使用道具 举报

ID:161164 发表于 2021-11-29 12:18 | 显示全部楼层
不将就123 发表于 2021-11-29 09:36
你回答的确实如此  就是我有一个调节占空比的函数 执行时间比较长 但是我这个时间没有办法缩短  缩短了频 ...

要问解决方法
先要把代码贴上来
云讨论没用
回复

使用道具 举报

ID:578842 发表于 2021-11-29 12:42 | 显示全部楼层
不将就123 发表于 2021-11-29 09:38
非常感谢你的指导   我重新开了一个定时器 给数码管用了  可以显示     结果按键又没法用了    哈哈哈哈

你在定时器中断里面做标志位,形成软件定时开关,就可以兼顾不同的时间需求。全部放定时计数器里面,肯定乱套
回复

使用道具 举报

ID:57657 发表于 2021-11-29 12:46 | 显示全部楼层
不将就123 发表于 2021-11-29 09:38
非常感谢你的指导   我重新开了一个定时器 给数码管用了  可以显示     结果按键又没法用了    哈哈哈哈

无论是什么程序,至少开一个定时器中断(用于控制数码管显示、按键消抖什么的),软件延时尽量少用,595可以做到段码和位码并行发送,所以不需要消影。
回复

使用道具 举报

ID:298123 发表于 2021-11-29 13:24 | 显示全部楼层
定时中断扫描,前提是你别的逻辑判断能被这个中断打断就行
回复

使用道具 举报

ID:752974 发表于 2021-11-29 13:38 | 显示全部楼层
不将就123 发表于 2021-11-29 09:36
你回答的确实如此  就是我有一个调节占空比的函数 执行时间比较长 但是我这个时间没有办法缩短  缩短了频 ...

用的是什么单片机?现在的单片机内部定时器都有PWM功能,软件只需要根据要求设置占空比的数据就可以了,不用占用大量的CPU时间。
回复

使用道具 举报

ID:624769 发表于 2021-11-29 14:25 | 显示全部楼层
不将就123 发表于 2021-11-29 09:38
非常感谢你的指导   我重新开了一个定时器 给数码管用了  可以显示     结果按键又没法用了    哈哈哈哈

调节占空比不要用现场计算, 提前计算完做成表, 现场用查表, 占用时间就不长了.

另外定时器里面执行显示,也可以同时执行按键检测, 正常人的正常按键速度大约 150ms,就算是故意找茬用的极限手速也需要10ms完成一次按键,所以,如果定时器刷新LED间隔5ms也不会错过按键。

唯一的就是,别再定时器里延时。
回复

使用道具 举报

ID:213173 发表于 2021-11-29 19:28 | 显示全部楼层
使用595驱动数码管基本不会给单片机带来什么额外负担。楼主没有上代码,大家只能泛泛而谈,都是隔宿瘙痒,没有什么实际意义。可以肯定的说是楼主程序结构有严重缺陷。众人盲人摸象般指教只会使楼主如坠云雾,于事无补。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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