基于51单片机的DS18B20大棚温度监控系统

一.硬件方案

大棚温度控制采用DS18B20温度传感器采集大棚温度,微控制器选51单片机,通过温度传感器测量的温度和设定温度进行比较并得出误差。通过单片机输出PWM波。控制继电器动作,进而控制电阻丝加热以保持大棚温度的稳定。用单片机C51语言编程。 以51单片机为核心、使其可以实现相应功能;

仿真图如下:

PCB图:

二.设计功能

  • 通过加热丝将大棚内的温度稳定在设定的范围之内;
  • 当温度低于设定温度时,启动电阻丝加热高于设定温度后,电阻丝停止加热; 当温度高于设定温度,启动电风扇降温低于上限值后停止降温;
  • 大棚内温度可以实时的显示在LED数码管上控制误差,精度要求在1℃左右。
  • 具有报警功能,超出测量范围,蜂鸣器和报警灯声光报警,并在数码管显示器上显示"-"或者"+",其中"-"表示超出下限,"+"表示超出上限;
  • 增加3个轻触按键(温度设置键、温度加1键,温度减1键)和上拉电阻。
  • 集成蓝牙模块,实现温度数据远程上传至手机APP,支持超限报警和远程阈值参数设置。

三.软件设计

主程序源码

复制代码
 void main()				//主函数
{
	
	UartInit();     //初始化串口
	init();						 //初始化定时器
	Delay(1);         //延时100US
	RELAY=1;
	FAN=1;
	BEEP=1;
	while(1)						 //进入循环
	{
		
		APP_Handle();  //APP处理函数

		if(T_50ms >= 200)      ///每0.5s钟刷新一次
		{
			T_50ms = 0;
			if(state!=NONE)
			{
				BEEP^=1;
			}
			else
			{
				BEEP=1;
			}
//			
			currentTemp = ((uint)GetTemp())/10%1000;
			if(displayRrfresh==1)
				APP_refresh();
			
			if(currentTemp>settempH)
			{
				state=H_FLAG;
				RELAY=1;
				FAN=0;
			}
			else if(currentTemp<settempL)
			{
				state=L_FLAG;
				RELAY=0;
				FAN=1;
			}
			else
			{
				state=NONE;
				RELAY=1;
				FAN=1;
			}
			
		}	

		Key();						 //调用按键函数
		
	}
}

链接: https://pan.baidu.com/s/1CqHwKfI1btnji2cQNSrZ_Q 提取码: 968a

相关推荐
不能跑的代码不是好代码8 小时前
STM32窗口看门狗(WWDG)知识点及标准库使用指南
stm32·单片机·嵌入式硬件
bingquan33338 小时前
在 Ghidra 中分析STM32裸机固件
stm32·单片机·嵌入式硬件
羽获飞8 小时前
从零开始学嵌入式之STM32——11.STM32---USART串行通讯
stm32·单片机·嵌入式硬件
宵时待雨10 小时前
STM32笔记归纳9:定时器
笔记·stm32·单片机·嵌入式硬件
逐步前行10 小时前
STM32_新建工程(寄存器版)
stm32·单片机·嵌入式硬件
bai54593611 小时前
STM32 CubeIDE 通过PWM占空比控制舵机角度
stm32·单片机·嵌入式硬件
松涛和鸣12 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂13 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
上海合宙LuatOS13 小时前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
Hhh __灏13 小时前
stm32的SRAM内存不足如何分析和优化?堆栈空间如何优化?
单片机