找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1396|回复: 11
打印 上一主题 下一主题
收起左侧

写的单片机温控程序遇到瓶颈了,思绪很乱,求大神指点明路

[复制链接]
跳转到指定楼层
楼主
ID:601478 发表于 2020-1-7 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IC用的STC15W408AS,程序主要是控温测温,还有对按键操作的响应,上电后等 20S 进入工作状态,测温和按键响应要求全程都要有,单击按键+/—,长按按键实现连加/连减;任务该怎样分配,框架写了一半推了,再写再推,目前想不出好的实时任务分配的办法,看别人的例子,用的芯片不同,写的也不同,总之就是很乱,很烦,兴趣都给磨没了,可能能力就这样,希望有大佬提点一下,拉一把,一个人感觉有点坚持不了,谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2020-1-8 09:07 | 只看该作者
先闭关,只冥想,百日功成后,程序会自动出来的
回复

使用道具 举报

板凳
ID:342822 发表于 2020-1-8 10:49 | 只看该作者
忠告:睡一觉~~~醒来就都解决了。
回复

使用道具 举报

地板
ID:130230 发表于 2020-1-8 11:07 | 只看该作者
1,用定时器实现时间片进行任务调度  2,用状态机写按键  3,不同的任务之间不要耦合,只用参数通信不要或少用全局变量  4,函数要短小,功能要单一
回复

使用道具 举报

5#
ID:601478 发表于 2020-1-8 16:04 | 只看该作者
谢谢每一个回复的人
回复

使用道具 举报

6#
ID:110606 发表于 2020-1-8 16:15 | 只看该作者
大神们说的都对,
回复

使用道具 举报

7#
ID:367934 发表于 2020-1-9 08:56 | 只看该作者
理一理思路,首先要清楚程序的运行结构,芯片的最大性能。
51单片机的运行都是顺序结构,就是说,都是一步一步的从头到尾的运行,你的功能程序片段也是一个接着一个。
你要实现的功能其他并不复杂。温控很简单,获取温度,再进行判断,通过设定阀值进行控制。这段不用耗费多少时间。键盘响应,我想知道你的按键是用来设置什么的,阀值吗?如果是的话那可以通过检测按键是否按下进入到阀值的设置模式。这样就可以实现测温和按键一直都在。估计是你不太熟标志的使用,控制很多都是通过设定标志然后判断标志。
回复

使用道具 举报

8#
ID:679425 发表于 2020-1-9 09:34 | 只看该作者
先放空,再仔细想想思路。该加中断就加,跳转也加上几个
回复

使用道具 举报

9#
ID:601478 发表于 2020-1-10 08:40 | 只看该作者
适得府君书 发表于 2020-1-9 08:56
理一理思路,首先要清楚程序的运行结构,芯片的最大性能。
51单片机的运行都是顺序结构,就是说,都是一步 ...

谢谢回复,我现在通过设置标志位来检测按键的状态,温度控制我不追求太实时的反映了,设置为一秒测一次,这样省去了很多麻烦,程序也能继续写下去,先写出来看看测试的结果再算吧
回复

使用道具 举报

10#
ID:401564 发表于 2020-1-10 11:56 | 只看该作者
1,硬件电路上传上来看一下
2,这个电路的主要作用是什么?
3,这个电路的总体参数给一下
这样一来,我相信在这里能帮你的人很多
回复

使用道具 举报

11#
ID:481073 发表于 2020-1-10 12:34 | 只看该作者
我大概知道你啥意思,首先是测温和按键响应全程都有那就应该是要通过中断的方式触发,你这个应该是外部中断,然后是加减,连加连减这个问题,因为你的执行函数是放在while循环里面的,所以肯定是不要在while循环里面写if判断啥的,要用一个标志位,这个标志位是全局变量,在if判断里面改变标志位,然后外面有一个函数判断标志位是否变化,就执行相应的函数,执行完之后标志位要清零这个别忘了然后连按这个我觉得双重判断,中间加个延时,多少时间还是按下状态就确定是连按就行。
回复

使用道具 举报

12#
ID:426861 发表于 2020-1-10 15:32 | 只看该作者
画画流程图吧,这个看着简单,有时候却能起大作用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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