智能火灾报警系统(毕业设计)(6)

2019-04-16 16:12

附件一:总体原理图设计

附件二:部分程序源代码

#include

#define unchar unsigned char #define uint unsigned int uchar Tem1,Tem2,Smok1,Smok2;

uchar Tem=3.6,Smok=4.6; //设定温度烟雾报警阈值 uchar a,a1,a2,b,b1,b2; void caiji_wenyan();

void delay_10ms(uint i); //程序声明 void panduan ); void baojing(); void main() {

P21=1; P20=0;WR=1;RD=1;

P0=0XFa;P24=1;P23=1;P22=0; //初始化 while(1) //主程序 {

caiji _wenyan (); //第一次采集温度烟雾信号 Tem2=Tem1;Smok2=Smok1;

delay_10ms(5); //延时50ms,让ADC0809准备好第二次数据转换 caiji _wenyan(); //第二次采集温度烟雾信号

panduan(); //将转换的数据与设定的报警阈值比较 baojing(); //报警程序

delay_10ms(2000); //系统隔20s对现场判断 }; }

void caiji_wenyan() {

P0=0XF8; //选通IN-0,转换温度信号 WR=0;

if(EOC=1) {RD=0;Tem1=P0}; //当ADC0809转换结束,80C51打开AD的三态门,

AD输出数据

else RD=1; //否则,AD继续转换 delay_10ms(1);

P0=0XF9; //选通IN-1,转换烟雾信号 WR=0;

if(EOC=1) {RD=0;Smok1=P0}; else RD=1; }

void delay_10ms(uint i) //10ms延时程序 {

while(i--) {

uchar i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } }

void panduan()

{

if(Tem1>Tem) a1=1; //当采集的温度高于阈值置1,否则,置0 else a1=0; if(Tem2>Tem) a2=1; else a2=0;

if(Smok1> Smok) b1=1; //当采集的烟雾浓度高于阈值置1,否则,置0 else b1=0;

if (Smok2> Smok ) b2=1; else b2=0; }

baojing() {

if(a1=a2&&b1=b2) //两次采集数据的标志位相同 { a=a1; b=b1;

if(a=1&&b=1) {P22=1;P21=0;P23=1;P24=0;P25=1;}; //温度烟雾标志位都是1,发生火灾

if(a=1&&b=0) {P23=0;P21=0;P22=1;P24=1;P25=1;};

if(a=0&&b=1) {P23=0;P21=0;P22=1;P24=1;P25=1;}; //温度烟雾标志位只有一个1,异常

if(a=0&&b=0) P22=0; //温度烟雾标志位都为0,正常 };

else {P25=0;P23=1;P24=1;} //两次采集的数据标志位不同,系统故障

附件三:实物图


智能火灾报警系统(毕业设计)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年度“全国高校外语教学科研项目”申请书、立项协议书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: