怎么实现单片机多个函数功能同时执行

比如流水灯移动,数码管自增,蜂鸣器发声。他们各自不影响对方。我的程序老是不能兼得,当流水灯亮是,数码管就不动了,而数码管亮时流水灯停止。这个程序的设置思路是怎样?或要用到... 比如流水灯移动,数码管自增,蜂鸣器发声。他们各自不影响对方。
我的程序老是不能兼得,当流水灯亮是,数码管就不动了,而数码管亮时流水灯停止。
这个程序的设置思路是怎样?或要用到什么单片机功能才能实现?谢谢各位大侠了。
展开
 我来答
无中生有0123
推荐于2018-02-28 · 知道合伙人教育行家
无中生有0123
知道合伙人教育行家
采纳数:237 获赞数:917
物联网、智能柜.

向TA提问 私信TA
展开全部

单片机“同时”执行多个函数的方法,一定要耐心看完哦!

设计主要思想:

单片机不可能同时执行多个函数,但是可以先后执行程序给他安排的每一件事,假如每个事件间隔时间非常短,ms、us级别,或者间隔时间更短,那么连续一段时间内执行的事件,看起来就是同时执行的。每一个事件可以看做一个或多个函数,也就意味着只要程序安排的合理,很多函数看起来是同时运行的;

模型举例:假如要做几件事,烧开水,洗衣服,打游戏;

  • A:烧开水,等好了之后,洗衣服,洗完之后,打游戏;

  • B:烧开水,洗衣服时监听水壶的声音,两件事执行完,打游戏;

  • C:选择一个烧水开了会停止工作的电水壶,不要等了,用洗衣机洗衣服,打游戏;

耗时:A最长,其次B,C最短。

不同的工具占用人时间精力也是不同的,同理单片机周围外设选择不同,也会影响CPU占用时间;

实例:

  • 要求:假如单片机要“同时”执行,数码管显示、蜂鸣器、流水灯移动;

  • 具体实施A:设置一个定时器,假如每隔1ms进入中断,设置几个全局变量x、y、z,定时器中断里自加,在程序主循环里查询全局变量的数值,当x大于500后,清零x,让流水灯移位,当y大于,1000时清零y,数码管加1,当z大于2时,清零z,反转控制蜂鸣器的IO电平,以此类推其他事情也是如此。

  • 具体实施B:设置单片机本身PWM驱动蜂鸣器,设置一个定时器,假如每隔1ms进入中断,设置几个全局变量x、y、z,定时器中断里自加,在程序主循环里查询全局变量的数值,当x大于500后,清零x,让流水灯移位,当y大于,1000时清零y,数码管加1,以此类推其他事情也是如此。

使用内部PWM资源可以更省CPU时间!

总结:

  • 如果外设资源不足只能算法来补充;

  • 以上方法适合资源较少的单片机,若是单片机资源够多(RAM>4K,Flas>8K),很多实时操作系统可以选择:ucos,FreeRTOS等,这些实时操作系统可以方便管理事件的切换。

萧然沁芳
推荐于2018-09-26 · TA获得超过118个赞
知道答主
回答量:77
采纳率:0%
帮助的人:104万
展开全部
多个函数功能同时执行是不可能的。由于单片机本身的条件限制。对于你的问题可以采用如下方法解决。
1. 加锁存器,也就是说你把IO口状态改变后,锁存器会自动锁存输出状态,直到你改变为止;
2. 对于数码管来说,可以用扫描来实现,即每隔一段时间点亮一次,但人的肉眼又分辨不出来。这就要求时间要短。人眼的视觉暂留时间是0.1-0.4S,因此如果每20ms点亮一次人眼是完全分辨不出来的。
3. 使用并行语句,这就不能使用单片机了,可以使用CPLD,我见过用单片机来控制CPLD的,你也可以这样。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuyaoxian1996
推荐于2016-10-06 · TA获得超过3.4万个赞
知道大有可为答主
回答量:2730
采纳率:81%
帮助的人:634万
展开全部
单片机多个函数功能同时执行是不可能的。

设计主要思想:
单片机不可能同时执行多个函数,但是可以先后执行你给他安排的每一件事。

简单的讲,(每一个事件可以看做一个或多个函数)充分利用时间:把A事件的延时去做b事件,把B做完后,或者做完n个B事件后,A事件所需要的延时到了,开始做A事件延时之后的事情。

具体实现方法:设置一个定时器,假如每隔10ms进入中断,中断里设置几个全局变量想,x、y,自加,在程序主循环里查询全局变量的数值,当x大于100后,清零x让流水灯移位,当y大于50时清零y,数码管加·1,以此类推其他事情也是如此。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-06-03
展开全部
简单点的可以在定时中断里执行每个各个任务。
复杂点的必须引入实时操作系统可以解决,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式