一氧化碳报警器课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一氧化碳报警器电路图:Pcb图:程序清单:/*头文件*/#includereg52.h#includeintrins.h/*AD寄存器定义*/sfrADC_CONTR=0xBC;sfrADC_DATA=0xBD;sfrADC_LOW2=0xBE;sfrP1_ADC_EN=0x9D;sfrP4=0xC0;/*****************宏定义******************/#defineuintunsignedint#defineucharunsignedchar#defineADC_POWER0x80#defineADC_FLAG0x10#defineADC_START0x08#defineADC_SPEEDHH0x00#defineADC_SPEEDH0x20#defineADC_SPEEDL0x40#defineADC_SPEEDLL0x60#defineuintunsignedint#defineucharunsignedcharuintad_value,NH4_value;floatAN_value;/***********位操作端口定义**************/sbitset_key=P1^4;//“设置”键K1sbitadd_key=P1^5;//“加”键K2sbitcut_key=P1^7;//“减”键K3sbitspeak=P3^7;//蜂鸣器sbitled2=P3^5;//继电器sbitled1=P3^6;//继电器sbitqian_wei=P1^0;sbitbai_wei=P1^1;sbitshi_wei=P1^2;sbitge_wei=P1^3;uchary_data[4];//储存烟雾的数据intset_data=200;//报警初始值的设定uchartemp[4]={0,0,0,0};ucharbianma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharflog4;voiddelay_1ms(uchari){uintx,y;for(x=i;x0;x--)for(y=124;y0;y--);}voiddisplay(){qian_wei=0;bai_wei=1;shi_wei=1;ge_wei=1;P2=bianma[y_data[0]];delay_1ms(5);qian_wei=1;bai_wei=0;shi_wei=1;ge_wei=1;P2=bianma[y_data[1]];delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=1;shi_wei=0;ge_wei=1;P2=bianma[y_data[2]];delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=1;shi_wei=1;ge_wei=0;P2=bianma[y_data[3]];delay_1ms(5);P2=0xff;}voiddisplay2(){temp[0]=set_data/1000;temp[1]=(set_data%1000)/100;temp[2]=(set_data%100)/10;temp[3]=set_data%10;qian_wei=0;bai_wei=1;shi_wei=1;ge_wei=1;P2=bianma[temp[0]];delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=0;shi_wei=1;ge_wei=1;P2=bianma[temp[1]];delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=1;shi_wei=0;ge_wei=1;P2=bianma[temp[2]];delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=1;shi_wei=1;ge_wei=0;P2=bianma[temp[3]];delay_1ms(5);P2=0xff;}/**********模数转换初始换函数******************/voidinit_ADC(){P1_ADC_EN=0x40;ADC_DATA=0;ADC_LOW2=0;ADC_CONTR=ADC_SPEEDLL|ADC_POWER;delay_1ms(20);}/**********模数转换函数******************/uintADC(ucharnum)//参数num用于指定是哪个模拟量转换{ADC_CONTR=ADC_POWER|ADC_SPEEDLL|num|ADC_START;_nop_();_nop_();_nop_();_nop_();while(!(ADC_CONTR&ADC_FLAG));ADC_CONTR&=~ADC_FLAG;ad_value=ADC_DATA*4+ADC_LOW2;//转换的结果是十位的高八位放在ADC_DATA中低两位放在ADC_LOW2returnad_value;//将转换后的数字量返回}/**********模数转换后数据处理函数******************/voidpos_AD(){AN_value=ADC(6);//装换氨气的浓度把转换后的数字量结果赋给AN_valuedelay_1ms(5);///***对转换后的数字量进行矫正***/if(AN_value800){AN_value=800;}NH4_value=(800-AN_value)*0.9765625;y_data[0]=NH4_value/1000;//将气体浓度值的个位十位百位千位分开用于显示y_data[1]=(NH4_value%1000)/100;y_data[2]=(NH4_value%100)/10;y_data[3]=NH4_value%10;}/**********报警处理函数******************/voidbaojing(){if(set_dataNH4_value)//判断是否有报警如果有就进入函数{speak=0;led1=0;led2=1;}else//没有报警情况的出现{speak=1;led1=1;led2=0;}}/**********主函数******************/voidmain(){init_ADC();//模数转换初始化speak=1;led1=1;led2=1;while(1){if(set_key==0){delay_1ms(5);if(set_key==0){flog4=!flog4;while(set_key==0);}}if(flog4==1){if(add_key==0){delay_1ms(5);if(add_key==0){set_data=set_data+1;while(add_key==0);if(set_data5000){set_data=5000;}}}if(cut_key==0){delay_1ms(5);if(cut_key==0){set_data=set_data-1;while(cut_key==0);if(set_data=0){set_data=0;}}}display2();}else{pos_AD();display();baojing();}}}元器件清单:使用说明:工作原理:传感器采集到外界气体浓度信号后把该信号送到单片机STC12C5A60S中,单片机内部的十位模数转换器把气体的浓度信号转换成数字信号,然后通过运算处理在数码管上显示出来。当检测到的气体浓度值大于设置的报警阀值时,系统产生报警,蜂鸣器鸣叫,继电器吸合。通过外部按键可以设置报警阀值(系统默认报警阀值为50ppm)。报警阀值设置步骤:按下K1“设置键”,系统进入报警值设置菜单,数码管显示当前的报警阀值,此时按K2“加”键,报警阀值加“1”;按K3“减”键,报警阀值减“1”。设置好报警阀值后按下K1“设置键”,系统退出设置菜单,进入烟雾浓度测量显示菜单。系统主要器件介绍:单片机:STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。焊接调试注意事项:1.焊接单片机时先焊接单片机座,所用原件都焊接好后,检查一下电路有没有短路的地方,确定没有短路后再把单片机插到座子上。安装的方向是缺口对缺口。焊接MQ-7传感器时同样。2.焊接电路板时按照先低后高的顺序焊接。3.在通电测试之前要仔细检查电路中有没有短路、断路的地方。元件清单U1STC12C5A60S2单片机K65V继电器P1MQ传感器座+气体传感器C1、C230PF电容LS15V有源蜂鸣器Y111.0592M/12M晶振R22-R271K电阻SMG-4w共阳极4位数码管R1、R28-R35220欧姆电阻Q1-Q6S8550三极管R1710欧姆电阻K3按键“减”R19、R361K欧姆电阻K2按键“加”D1绿色发光二级管K1按键“设置”S1电源开关焊锡3米4.电路板上标号为:“R35、b20、DHT11、R37”无须焊接。标号“P10”为单片机程序下载端口四根排针,散件中单片机的程序都是下载好的,不修改程序的亲们是不需要焊接。如果有的亲想自己修改程序增加功能等可以焊接。5.MQ传感器引脚的标号“A,B”是相对的设定一边是“A”,那么另一端就是“B”。该传感器是化学传感器,通电后需要一段时间预热后才能正常工作,预热时间大概1分钟左右(和电池的电量有关系),预热时间内数码管上显示的浓度是不稳定的,先增大后减小,直至显示“0000”。传感器正常工作时会发热但不是发烫。如果传感器很烫的话就要检查电路中是不是有短路现象了。6.电池盒上红线是正极,接电路板中标号电池盒“+”的焊盘,黑线为负极,接电路板中标号电池盒“-”的焊盘。实物图:

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功