赞
踩
(仿真+程序+设计报告)
1.温度、煤气、烟雾检测;
2.5110液晶屏实时显示温度值、煤气浓度、烟雾浓度;
3.超过设定温度、烟雾、煤气阈值,蜂鸣器+LED声光报警;
4.设定外人闯入报警;
- #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都一样,引脚功能都一样。程序也是一样的。)
本设计使用proteus8.9版本设计,没有软件可以在本公众号获取,无需担心!具体如图!
本设计使用软件keil4和keil5两个版本编程设计,无需担心!具体如图
五千字设计报告,具体如下!
全部资料包括仿真源文件 、程序(含注释)、设计报告、流程图、仿真操作视频等。具体内容如下,全网最全! !
下面是开源51单片机设计资料
大家共同学习进步:
链接:百度网盘 请输入提取码
提取码:1qoi
点赞分享,一起学习进步!一起成长。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。