一、智能温控系统简介
本系统是基于STM32F103C8T6的智能温控系统,可以做到温度过高,会产生报警信息,并且自动打开风扇降温;温度过低会自动开启加热装置进行加热。温度采集选用DS18B20温度传感器,实时对温度进行采集。
二、温度传感器
DS18B20是一款以总线通信方式读取温度数据的传感器。外观图如下。
根据下图的工作时序图,可以编写出它工作的代码。
/*******************************************************************************
* 函 数 名 : DS18B20_Read_Byte
* 函数功能 : 从DS18B20读取一个字节
* 输 入 : 无
* 输 出 : 一个字节数据
*******************************************************************************/
u8 DS18B20_Read_Byte(void) // read one byte
{
u8 i,j,dat;
dat=0;
for (i=1;i<=8;i++)
{
j=DS18B20_Read_Bit();
dat=(j<<7)|(dat>>1);
}
return dat;
}
*******************************************************************************
* 函 数 名 : DS18B20_Write_Byte
* 函数功能 : 写一个字节到DS18B20
* 输 入 : dat:要写入的字节
* 输 出 : 无
*******************************************************************************/
void DS18B20_Write_Byte(u8 dat)
{
u8 j;
u8 testb;
DS18B20_IO_OUT();//SET PG11 OUTPUT;
for (j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if (testb)
{
DS18B20_DQ_OUT=0;// Write 1
Delay_us(2);
DS18B20_DQ_OUT=1;
Delay_us(60);
}
else
{
DS18B20_DQ_OUT=0;// Write 0
Delay_us(60);
DS18B20_DQ_OUT=1;
Delay_us(2);
}
}
}
二、OLED显示屏
温度显示采用0.96寸的OLED液晶显示屏,该显示屏具有64*128个像素点。采用IIC通信方式,与主控端进行数据传输;完全适用本系统的温度数据、风扇状态、加热器状态显示。根据IIC通信的时序编写显示屏的驱动代码。
/**
* @brief I2C开始
* @param 无
* @retval 无
*/
void OLED_I2C_Start(void)
{
OLED_W_SDA(1);
OLED_W_SCL(1);
OLED_W_SDA(0);
OLED_W_SCL(0);
}
/**
* @brief I2C停止
* @param 无
* @retval 无
*/
void OLED_I2C_Stop(void)
{
OLED_W_SDA(0);
OLED_W_SCL(1);
OLED_W_SDA(1);
}
/**
* @brief I2C发送一个字节
* @param Byte 要发送的一个字节
* @retval 无
*/
void OLED_I2C_SendByte(uint8_t Byte)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
OLED_W_SDA(Byte & (0x80 >> i));
OLED_W_SCL(1);
OLED_W_SCL(0);
}
OLED_W_SCL(1); //额外的一个时钟,不处理应答信号
OLED_W_SCL(0);
}
三、风扇和加热片
加热使用PTC加热片,通电后就可以工作,使用继电器控制通断即可。
风扇采用继电器控制直流电机通断完成散热功能。
最后附上整个工程的代码。
基于STM32单片机的智能温控系统资源-CSDN文库https://download.csdn.net/download/qq_62291061/89232155