要求:
1.本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机 •
2.LCD1602液晶显示、DS18B20温度传感器、MQ-2烟雾传感器或MQ-5可燃气体传感器及ADC0809模数转换芯片
3.实时显示当前的烟雾值和温度值
4.温度和烟雾的报警值可以通过按键设定
5.当前温度值超过上限时,红灯亮,蜂鸣器响。
6.当前烟雾值超过上线时,黄灯亮,蜂鸣器响。
按键说明: 1 2 3 1键设置按键 2键加按键 3键减按键 按一下设置键,温度报警值闪烁,此时按下加减按键调节温度报警值;再按一下设置键,烟雾报警值闪烁,此时按下加减按键,调节烟雾报警值;设置完成后,再按一下设置按键,退出设置。系统开始正常检测烟雾温度值,并且根据报警值判断是否开启报警
资料包括:
原理图:
仿真:
程序运行图:
/宏定义
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1 //定义P1口为Data_ADC0809 (之后的程序里Data_ADC0809即代表P1口)
//管脚声明
sbit LED_yanwu= P2^1; //烟雾报警灯
sbit baojing= P2^5; //蜂鸣器接口
//ADC0809
sbit ST=P3^3;
sbit EOC=P3^6;
sbit OE=P3^2;
//按键
sbit Key1=P2^6; //设置键
sbit Key2=P2^7; //加按键
sbit Key3=P3^7; //减按键
//酒精含量变量
uchar temp; //用于读取ADC数据
uchar yushe_yanwu=45; //烟雾预设值
//按钮模式|
uchar Mode=0; //=1是设置温度阀值 =2是设置烟雾阀值
//函数声明
extern uchar ADC0809();
extern void Key();
//ADC0809读取信息
uchar ADC0809()
{
uchar temp_=0x00;
//初始化高阻太
OE=0;
//转化初始化
ST=0;
//开始转换
ST=1;
ST=0;
//外部中断等待AD转换结束
while(EOC==0)
//读取转换的AD值
OE=1;
temp_=Data_ADC0809;
OE=0;
return temp_;
}
void Key()
{
//模式选择
if(Key1==0) //设置按键
{
while(Key1==0);
if(Mode>=2) Mode=0;
else
{
// write_com(0x38);//屏幕初始化
write_com(0x0f);//打开显示 无光标 光标闪烁
// write_com(0x06);//当读或写一个字符是指针后一一位
Mode++; //模式加一
switch(Mode) //判断模式的值
{