基于51单片机智能家居监控系统设计
(仿真+程序+设计报告)
功能介绍
具体功能:
1.温度、煤气、烟雾检测;
2.5110液晶屏实时显示温度值、煤气浓度、烟雾浓度;
3.超过设定温度、烟雾、煤气阈值,蜂鸣器+LED声光报警;
4.设定外人闯入报警;
演示视频:
基于51单片机智能家居监控系统设计—温度、烟雾、煤气、闯入报警
#include "lcd5110.h"
#include "adc0809.h"
#include <math.h>
sbit tube = P3^2;//干簧管
sbit beep = P3^6;//蜂鸣器
sbit led = P3^7;//LED灯
uint temperature;//温度
uint smoke;//煤气浓度
uint fire;//烟雾浓度
uchar index;//定义发送数据个数
uchar ad_Value[3];//定义AD采集数据
float getVoltage[3];//定义电压采集数值
uchar receivedata;//定义串口接收数据
bit people_flag;//外人闯入标志位
bit temper_flag;//温度异常标志位
bit smoke_flag;//煤气浓度异常标志位
bit fire_flag;//烟雾浓度异常标志位
bit cancel_flag;//取消报警标志位
void delay(uint num)
{
uint x,y;
for(x=num;x>0;x--)
for(y=110;y>0;y--);
}
void init_interrupt(void)
{
TMOD = 0x02;
TH0 = 0xfb;
TL0 = 0xfb;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void ex_init(void)
{
IT0 = 1;
EX0 =1;
EA = 1;
}
void usart(void)
{
TMOD |= 0x20;
SCON = 0x50;
PCON = 0x00;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
EA = 1;
ES = 1;
}
//显示函数
void display(void)
{
//显示温度
LCD_Set_XY(0,1);
LCD_Write_Char(temperature/1000+0x30);
LCD_Write_Char((temperature%1000)/100+0x30);
LCD_Write_Char((temperature%100)/10+0x30);
LCD_Write_Char('.');
LCD_Write_Char(temperature%10+0x30);
//显示煤气浓度
LCD_Set_XY(0,3);
LCD_Write_Char(smoke/1000+0x30);
LCD_Write_Char((smoke%1000)/100+0x30);
LCD_Write_Char((smoke%100)/10+0x30);
LCD_Write_Char('.');
LCD_Write_Char(smoke%10+0x30);
//显示烟雾浓度
LCD_Set_XY(0,5);
LCD_Write_Char(fire/1000+0x30);
LCD_Write_Char((fire%1000)/100+0x30);
LCD_Write_Char((fire%100)/10+0x30);
LCD_Write_Char('.');
LCD_Write_Char(fire%10+0x30);
}
//报警函数
void alarm(void)
{
//报警判断
if(temperature/10>=45)
{
temper_flag = 1;//自动报警
}
else
{
temper_flag = 0;//取消报警
}
if(smoke/10>=30)
{
smoke_flag = 1;//自动报警
}
else
{
smoke_flag = 0;//取消报警
}
if(fire/10>=30)
{
fire_flag = 1;//自动报警
}
else
{
fire_flag = 0;//取消报警
}
//声光报警
if(people_flag==1||temper_flag==1||smoke_flag==1||fire_flag==1)
{
if(!cancel_flag)
{
beep = 1;
delay(20);
beep = 0;
delay(20);
led = 1;
}
else
{
beep = 1;
led = 0;
}
}
else
{
beep = 1;
led = 0;
}
}
//数据格式转换
uchar change(uchar dat)
{
uchar result;
uchar temp_H,temp_L;
temp_H = dat/10;
temp_L = dat%10;
result = temp_H*16+temp_L;
return result;
}
硬件设计
使用元器件:
单片机:AC89C52;
(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)
设计资料
01 仿真图
本设计使用proteus8.9版本设计,没有软件可以在本公众号获取,无需担心!具体如图!
02 程序
本设计使用软件keil4和keil5两个版本编程设计,无需担心!具体如图
03 设计报告
五千字设计报告,具体如下!
04 设计资料
资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)、设计报告、流程图、仿真操作视频等。具体内容如下,全网最全! !
资料获取请观看前面演示视频!
点赞分享一起学习成长。