基于51单片机DS18B20温度传感器——智能温控风扇(散热系统)

目录

一、项目简介

1、介绍

2、实现过程 

3、材料准备

二、主要代码实现

1、DS18B20模块(温度监测)

         (1)、OneWire.c

         (2)、OneWire.h

        (3)、DS18B20.c

        (4)、DS18B20.h

2、独立按键模块(温度阈值设定、风速调节)

        (1)、Key.c

        (2)、Key.h

3、定时器0中断

      (1)、Timer0.c

      (2)、Timer0.h

4、定时器1中断

      (1)、Timer1.c

       (2)、Timer1.h

5、main主函数

三、总结


DS18B20智能温控风扇

一、项目简介

1、介绍

本项目基于51单片机DS18B20温度传感器和直流电机,设计一款智能温控风扇,根据外界温度值来自动控制风扇风速,也可以手动调节风扇风速,实现人机交互,智能控制,应用场景非常广泛,可用于给机器散热、智能家居系统、温室大棚等领域,通过该系统监测环境温度来自动控制风扇的开关和风速。

2、实现过程 

基于51单片机DS18B20温度传感器来实时监测外界温度,在LCD1602小屏幕上实时显示温度、显示风速、显示设定的温度阈值。可以通过独立按键K1、K2(按下K1阈值加1℃、按下K2阈值减1℃)来调节温度阈值,当温度高于阈值时,则自动驱动直流电机开启风扇风速为1档,当大于额定阈值2℃时,风速自动加到2档,大于额度阈值4℃时,风速自动加到3档;若人为控制风速,通过独立按键K3、K4(按下K3风速加1档、按下K4风速减1档),温控风速这会取消,防止因外界环境变化,而影响人为的体验。

3、材料准备

AT89C52芯片,直流电机,扇叶,LCD1602屏幕,供电源(充电宝)。

二、主要代码实现

  • 这里我只显示该项目中的主要代码实现过程,LCD1602模块实现代码这里没有显示,整个项目代码我放在github上面,需要自取。

1、DS18B20模块(温度监测)

  • 通过单总线协议(OneWire)与 DS18B20 进行通信,获取当前环境温度。

         (1)、OneWire.c

#include <REGX52.H>
sbit OneWire_DQ=P3^7;
/**
	*@brief  OneWire初始化
	*@param  无
	*@retval 返回DQ总线的值
*/
unsigned char OneWire_Init()
{
	unsigned char i;
	unsigned char AckBit;
	EA=0;                      //关闭定时器全部中断
	OneWire_DQ=1;              //先把总线拉高
	OneWire_DQ=0;	           //再把总线拉低
	i = 247;while (--i);       //Delay500us
	OneWire_DQ=1;              //释放总线
	i = 32;while (--i);        //Delay70us
	AckBit=OneWire_DQ;
	i = 247;while (--i);       //Delay500us
	EA=1;                      //打开定时器中断
	return AckBit; 
}
/**
	*@brief  OneWire发送一位
	*@param  一位
	*@retval 无
*/
void OneWire_SendBit(unsigned char Bit)
{
	unsigned char i;
	EA=0;                    //关闭定时器全部中断
	OneWire_DQ=0;           //把总线拉低
	i = 4;while (--i);      //Delay10us
	OneWire_DQ=Bit;         //发送一位数据
	i = 24;while (--i);     //Delay50us
	OneWire_DQ=1;           //释放总线
	EA=1;                   //打开定时器中断
}
/**
	*@brief  OneWire接收一位
	*@param  无
	*@retval 返回一位
*/
unsigned char ReceiveBit()
{
	unsigned char i;
	unsigned char AckBit;
	EA=0;                  //关闭定时器全部中断
	OneWire_DQ=0;          //把总线拉低
	i = 2;while (--i);     //Delay5us
	OneWire_DQ=1;          //释放总线需要时间,所以释放完刚好到15us未尾
	i = 2;while (--i);     //Delay5us
	AckBit=OneWire_DQ;
	i = 24;while (--i);    //Delay50us
	EA=1;                  //打开定时器中断
	return AckBit;
	
}
基于51单片机DS18B20温度传感器设计的温控系统主要是用于测量和控制温度的系统DS18B20温度传感器是一款数字温度传感器,基于单总线协议,可直接与51单片机进行通信。 首先,系统通过DS18B20温度传感器实时测量环境温度。该传感器使用3引脚结构(VCC、GND和DATA),其中DATA引脚与51单片机的IO口相连,通过总线控制器将数据发送给单片机。传感器输出的数字信号可以转换成温度值,使用51单片机的ADC模块进行模数转换,得到实际温度。 其次,系统根据测得的温度值进行控制。根据设定的温度范围,在单片机程序中设定一个目标温度值。当实际温度高于该目标温度值时,单片机可以通过控制继电器或开关来开启降温装置,如风扇或空调。当实际温度低于目标温度时,则关闭降温装置。以此实现对温度的控制。 此外,系统还可以加入一些功能以增强可调节性和稳定性。例如,可以设置上下限警报温度,当温度超过上限或低于下限时,系统可以通过蜂鸣器或显示屏发出警报,提醒操作人员。另外,还可以利用51单片机的定时功能,定时监测温度并记录,以便分析温度变化趋势。 综上所述,基于51单片机DS18B20温度传感器设计的温控系统,通过实时测量温度值,并根据设定的目标温度值进行温度控制,不仅可以稳定环境温度,还可以发出警报和记录温度变化。这样的系统在实验室、温室和家庭等环境中都有广泛应用前景。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值