标题:
注释详细的单片机火灾报警器程序和电路原理图
[打印本页]
作者:
51hei圆圆
时间:
2023-5-6 15:49
标题:
注释详细的单片机火灾报警器程序和电路原理图
51单片机火灾报警器电路原理图如下:
原理图.png
(46.15 KB, 下载次数: 32)
下载附件
2023-5-6 15:46 上传
单片机源程序如下:
//程序头函数
#include <reg52.h>
//显示函数
#include <display.h> //显示函数display.h在工程里 也可鼠标选中左边右键open document <display.h>
//宏定义
#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) //判断模式的值
{
case 1:
{
write_com(0x80+7);//为1时 温度阀值的位置闪烁
break; //执行后跳出switch
}
case 2: //当模式加到3时
{
// write_com(0x38);//屏幕初始化
write_com(0x0c);//打开显示 无光标 无光标闪烁
Mode=0; //模式清零
break;
}
}
}
}
if(Key2==0&&Mode!=0) //加按键只有在模式不等于0时有效
{
while(Key2==0);
yushe_yanwu++; //同温度阀值设置
if(yushe_yanwu>=255)
yushe_yanwu=255;
write_com(0x80+13);
write_data(0x30+yushe_yanwu/100);
write_data(0x30+yushe_yanwu%100/10);
write_data(0x30+yushe_yanwu%10);
write_com(0x80+15);
}
if(Key3==0&&Mode!=0)
{
while(Key3==0);
yushe_yanwu--; //同上
if(yushe_yanwu<=0)
yushe_yanwu=0;
write_com(0x80+13);
write_data(0x30+yushe_yanwu/100);
write_data(0x30+yushe_yanwu%100/10);
write_data(0x30+yushe_yanwu%10);
write_com(0x80+15);
}
}
/*****主函数*****/
void main()
{
Init1602(); //调用初始化显示函数
while(1) //进入循环
{
temp=ADC0809(); //读取烟雾值
Key(); //调用按键函数 扫描按键
if(Mode==0) //只有当模式为0时才会执行以下的阀值判断部分
{
Display_1602(yushe_yanwu,temp); //显示预设烟雾,烟雾值
if(temp>=yushe_yanwu) //烟雾值大于等于预设值时
{
LED_yanwu=0; //烟雾指示灯亮
baojing=0; //蜂鸣器报警
}
else //烟雾值小于预设值时
{
LED_yanwu=1; //关掉报警灯
}
if(temp<yushe_yanwu) //当烟雾小于预设值并且温度也小于预设值时 (&&:逻辑与,左右两边的表达式都成立(都为真,也就是1)时,该if语句才成立)
{
baojing=1; //停止报警
}
}
}
}
复制代码
Keil代码下载:
火灾报警器程序和pdf格式原理图.7z
(79.91 KB, 下载次数: 31)
2023-5-6 15:49 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
dyjs
时间:
2023-5-6 21:51
哥,我现在做设计,我缺一个文件代码,,哥,能不能帮帮我
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1