一. 系统概述
本系统采用 STM32 单片机作为核心控制器,能够协调温度传感器、烟雾传感器和可燃气体传感器来采集相关数据。系统允许设定烟雾和天然气的阈值,并在监测到烟雾或可燃气体浓度超出设定阈值时,会触发蜂鸣器报警和灯光亮起。
二. 仿真概述
- 系统利用 DS18B20 传感器进行温度检测,并通过 ADC 将烟雾和可燃气体的模拟信号转换为数字信号。这些数据将通过 OLED 显示屏展示,包括温度、烟雾浓度和燃气浓度。
- 通过调节烟雾模拟输入的滑动变阻器,当检测到的烟雾浓度超出设定阈值时,系统会自动启动蜂鸣器报警。
- 调节燃气模拟输入的滑动变阻器,当燃气浓度超过设定阈值时,系统同样会激活蜂鸣器发出报警信号。
- 使用 DS18B20 上的红色按钮来调节温度设置,OLED 显示屏上的温度数据会随之实时更新。
三.程序设计
/* >ZW
* >2023.12.7
*
*/
#include <stm32f10x.h>
#include <Lcd1602.h>
#include <Led.h>
#include <Ds18b20.h>
#include <Beep.h>
#include <Relay.h>
#include <key.h>
#include "PCF8591.h"
#include "OLED.h"
int main(void)
{
u8 t,s,g,Tmax = 50,Smax=50,Gmax=50;
OLED_Init();
Beep_Init();//PA13
Ds18b20_Init();//PA12
PCF8591_Init();
OLED_ShowString(1,1,"temp:");
OLED_ShowString(2,1,"Smo :");
OLED_ShowString(3,1,"gas :");
while(1)
{
t =Ds18b20_Temp() ;
s =PCF8591_ADC_Input(0x90,2);
g =PCF8591_ADC_Input(0x90,4);
OLED_ShowNum(1,6,t,2);
OLED_ShowNum(2,6,s,2);
OLED_ShowNum(3,6,g,2);
OLED_ShowNum(2,9,Smax,2);
OLED_ShowNum(3,9,Gmax,2);
if(g>Gmax||s>Smax)
{
Beep_1;
}
else if(t<Tmax&&s<Smax)
{
Beep_0;
}
}
}
24-32f-05