搜索
bottom↓
回复: 4

51单片机数码管显示时遇到的问题,发现有BUG但不知道怎么做

[复制链接]

出0入0汤圆

发表于 2015-11-18 22:45:22 | 显示全部楼层 |阅读模式
程序的目的是在按键key按下5秒后,继电器吸合(一个IO口控制三极管来控制继电器的吸合和断开)并且此时数码管开始从000增加到300然后再回到0。现在遇到的问题是:
1、在key按下时,也就是对应delay_ms(5000);这段语句中,如果按键按下没有保持5000ms的话,那么单片机还是会延时5000ms后再判断key键是否为按下的状态。这样就没有达到实时监测按键的效果了。
2、在仿真时还发现在key按下前,数码管显示00。但是在key按下时数码管不亮,在5s后再亮。说明在延时的delay_ms(5000)的5秒里,单片机是不处理display(sec)的函数的。现在我需要的是在一通电时数码管始终都是有显示的,不会出现不亮的现象。PS:初始化时我已经把数码管设定为显示000。

麻烦有空的大师们帮忙看看,这个问题我想了好几天了。我觉得这个弄明白了有助于更加深刻的理解MCU的工作时序问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入4汤圆

发表于 2015-11-19 00:07:21 来自手机 | 显示全部楼层
解决这个问题,需要用定时器中断来帮你了。比如设定一个5ms的中断,中断1000次就是你要求的5秒,每次中断都检测按键是否持续按下,一旦按键没到时间就释放了,也就不必再继续中断下去了。此外,数码管刷新也可以放到中断里

出0入0汤圆

 楼主| 发表于 2015-11-19 08:37:39 | 显示全部楼层
xiaoyigechaos 发表于 2015-11-19 00:07
解决这个问题,需要用定时器中断来帮你了。比如设定一个5ms的中断,中断1000次就是你要求的5秒,每次中断都 ...

谢谢!应该可以的。我试试看

出0入10汤圆

发表于 2015-11-29 19:25:55 | 显示全部楼层
用定时器,扫描按键吧,延时搞起来反而麻烦

出0入0汤圆

 楼主| 发表于 2015-11-29 22:17:31 | 显示全部楼层
zxq_9781 发表于 2015-11-29 19:25
用定时器,扫描按键吧,延时搞起来反而麻烦

已经解决了谢谢!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 00:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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