标题: 51单片机为什么不能同时检测多个传感器 [打印本页]

作者: 小白菜c    时间: 2023-9-13 17:07
标题: 51单片机为什么不能同时检测多个传感器
利用51单片机连接温度传感器,烟雾传感器,人体红外传感器,利用GSM模块发短信,当系统执行到某一个传感器时,就会去发短信,但是发短信用的时间有点久,程序就会卡在这里不能干其他事,有什么方法可以解决吗?想要这种效果我检测到了烟雾在发短信的同时,也可以继续检测其他两个传感器的情况?希望大佬指点一下,小白一个。
作者: Hephaestus    时间: 2023-9-13 19:22
其实还有个更严重的问题,你检测一个传感器就发一条,你的钱包受得了吗?
作者: XLinliY.Zhang    时间: 2023-9-13 19:49
依靠串口中断和轮询的方式进行GSM的处理,或者使用合宙系列的GSM Cat.1模块编写luat代码,单片机只需要发送短信内容,剩下的GSM模块自己处理
作者: wulin    时间: 2023-9-13 20:11
时间片轮询
作者: 小白菜c    时间: 2023-9-14 08:34
XLinliY.Zhang 发表于 2023-9-13 19:49
依靠串口中断和轮询的方式进行GSM的处理,或者使用合宙系列的GSM Cat.1模块编写luat代码,单片机只需要发送 ...

谢谢,我用了SIN900A这个模块
作者: 小白菜c    时间: 2023-9-14 08:35
wulin 发表于 2023-9-13 20:11
时间片轮询

感谢大佬指点
作者: coody_sz    时间: 2023-9-14 16:05
这些都是简单任务,为什么不能?那是你的编程思想的问题,没有多任务概念(多线程、时间片等等)。
你上一个RTOS看看。
作者: aygc    时间: 2023-9-14 16:46
本身单片机执行程序也是一个一个来的,只不过太快你感觉不到而已
作者: iamluckman    时间: 2023-9-14 20:12
用两个芯片,一个负责检测,一个负责发送,芯片间用串口通讯
作者: man1234567    时间: 2023-9-15 08:16
51单片机为什么不能同时检测多个传感器 ?因为原始设计就没这个能力。
但,单片机轮流检测10个传感器,可能也只需10微秒。
也许对你来说,1微秒也不是实时,实时就是要同步,但就传感器件本身来说就呵呵
作者: 非凡科技    时间: 2023-9-15 08:43
首先有点久这个是什么概念  1秒还是100秒  任何单片机都是一行一行执行代码 做不到真正意义的实时,不知道你对时间有多高要求,看你这项目也就是个家用安防报警  这点任务1秒内肯定都能完成啊
作者: 量子工业    时间: 2023-9-16 08:55
有的单片机能双工模式的
作者: hzsweet    时间: 2023-9-16 20:53
可以的,采用多线程
作者: 量子工业    时间: 2023-9-20 18:11
可以的啊,弄过16路巡检的,没发现异常啊
作者: angmall    时间: 2023-9-20 18:54
小白菜c 发表于 2023-9-14 08:34
谢谢,我用了SIN900A这个模块


你可以试试这一个使用定时器节拍进行任务调度例程。


53-通过定时器周期性调度任务综合例程.zip
这一个例程基于STC8H为主控芯片的实验箱进行编写测试。
使用Timer0的16位自动重装来产生1ms节拍,程序使用这个节拍进行任务调度.
每个任务设置相应的调度周期,根据设置的周期时间执行任务函数.
下载时, 选择时钟 24MHz (可以在配置文件"config.h"中修改).


STC8H8K64U实验箱-V9.6程序包 2023/8/16,STC8H新实验箱程序


53-通过定时器周期性调度任务综合例程.zip

42.78 KB, 下载次数: 1

53-通过定时器周期性调度任务综合例程.zip


作者: 1860774xxxx    时间: 2023-9-20 19:29
让每个传感器检测完成后先分别保存在一个变量里 等全部检测确认完成标志后再打包所数据发送
作者: wufa1986    时间: 2023-9-21 08:32
rtos系统就是干这个的,51有些迷你的系统可以用
作者: 青草麦田    时间: 2023-9-21 23:21
分时复用,把每个任务分开时间片来执行即可。再把所有传感器要发送的信息汇总成一个消息队列,这样依次一个个利用GSM模块发出去。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1