51单片机定时中断导致主程序数码管显示出问题

程序功能为显示AD模块热敏电阻的电压值,并定时将电压值进行串口通信传输到串口调试助手。定时中断子程序实现定时串口通信,但导致主程序里的数码管显示效果出现问题,原本为动态常... 程序功能为显示AD模块热敏电阻的电压值,并定时将电压值进行串口通信传输到串口调试助手。定时中断子程序实现定时串口通信,但导致主程序里的数码管显示效果出现问题,原本为动态常显,加了中断后就变成了从左到右一位一位的点亮显示。并且显示完一边后有很大延时。

请高手分析
展开
 我来答
衷琪EN
2013-11-27 · TA获得超过185个赞
知道答主
回答量:92
采纳率:0%
帮助的人:101万
展开全部
我猜你的串口发送用的是轮询等待发送结束的方式,而数码管动态扫描用的是软件延时(就是for循环)吧?、、
这样串口发送很占时间——你想,如果是9600baud的话,发一字节就要1ms左右。因此这个插入的发送数据的任务会让延时函数的延时时间比预定的长很久,动态扫描就连不起来了。
改善方法有3个:
1,最简单的,在通信可靠的前提下尽可能提高串口波特率,同时降低发送频率(就是增大定时器中断周期),再把要发送的数据弄少点,能用缩写的就别写一大串。。
2,串口发送改为中断方式,这个不细说了,网上有资料。。
3,舍弃数码管扫描的软件延时,改用硬件延时(就是把数码管的位的切换也放在定时器中断里完成),保证动态扫描的及时性。这叫单片机的“前后台”编程方式,相当于将动态扫描放在了“后台”,由定时器中断来触发,不触发则不占CPU时间。
尽情IM
2013-11-27 · TA获得超过101个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:94.9万
展开全部
中断程序放错位置了吧?尽量把这两个量段放在两个子程序中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的新手一个
2013-11-27
知道答主
回答量:38
采纳率:100%
帮助的人:16.5万
展开全部
中断时间多长啊?如果长的话需要调用显示函数啊 不然肯定要出问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式