温度警报器器设计报告_第1页
温度警报器器设计报告_第2页
温度警报器器设计报告_第3页
温度警报器器设计报告_第4页
温度警报器器设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-z.比赛设计(论文)说明书题目:温度检测及报警器院〔系〕:信息与通信学院专业:电子信息工程成员:1100220926武文杰,1100220924唐晓东,1100220923覃武将2012年12月23日摘要温度是一个十分重要的物理量,对他的测量与控制有十分重要的意义,随着现代工农业技术的开展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。本温度报警器的设计与制作,说明了该装置进展设计与制作的具体过程及方法。这种温度报警器构造简单,可操作性强,应用广泛。工作时,温度测量范围为-55ºC到125ºC当前环境温度假设超过设定的高温临界温度,由单片机发出报警信号,防止因温度升高而带来的不必要的损失。现代社会是信息社会,随着平安化程度的日益提高,机房——作为现代化的枢纽,其平安工作已成为重中之重,机房内一旦发生故障,将导致整个系统瘫痪,造成巨大的损失很社会影响。造成高温火灾有:电气线路短路、接触电阻过大等引发高温或火灾;静电产生高温或火灾;雷电等强电侵入导致高温或火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。AbstractAbstractAbstractAbstractTemperatureisaveryimportantphysics,measurementandcontrolofhishaveveryimportantsense,withmodernindustrialandagriculturaltechnologyandthedevelopmentofenvironmentforpeople'sliferise,peoplealsourgentlyneeddetectionandcontrolthetemperature.Thistemperaturealarmdesignandproduction,itise*poundedthatthedeviceforthedesignandproductionofspecificprocessesandmethods.Thistemperaturealarmsimplestructure,themaneuverabilityisstrong,wideapplication.Work,temperaturemeasurementrangefor-55DHSCto125DHSenvironmentaltemperatureife*ceedtheCthecurrentsetofmicroputertemperaturecriticaltemperature,issuedawarningsignal,causedbytemperaturetopreventunnecessarylosses.Themodernsocietyistheinformationsociety,assecuredegreeofincreasing,room-asmodernhub,itsworksafetyhasbeeatoppriority,theteleroomoncebreaksdown,willcausetheentiresystemparalyze,causedgreatdamageverysocialinfluence.A:hightemperaturefirecausedbyelectricalwiringshortcircuit,overload,contactresistancetoohightemperatureortriggeredfires;Electrostaticgenerationhightemperatureorfire;Lightninginvasionasleadtohightemperaturesorfire&high;Mostmajoristheteleroomputers,air-conditionersetcelectricalequipmentworkingforalongtime,resultinginequipmentaging,airconditioning,andcannotcoolingfault;Thereforetheteleroombelongstoelectronicproductsfeverfaster,inashorttime,roomtemperaturebeyondnormaltemperature,causethesystemequipmentorproducefire,thenparalyzedtemperaturealarmsystemwillplayitsfunction.目录一、系统总体设计要求二、电路设计图三、系统程序设计四、调试与性能分析五、源程序清单一、系统总体设计要求1.题目设计要求:本系统采用STC90C51作控制器和DS18b20作温度采集,它们都工作在5V直流电压下。其工作原理大致如下:室内温度由DS18b20采集,并在DS18b20内部实现模拟信号和数字信号的转换,通过对STC90C51编程可实现读取DS18B20转换的数字信号,读取温度后STC90C51进展内部计算,四位共阴数码管(可改为液晶)显示实时温度〔显示温度有效值保存到十分位〕,当温度超过设定值时,蜂鸣器发出报警。2总体设计框图本设计采用STC90C51作为主控芯片,蜂鸣器作为输出设备产生报警声,LCD1602能够实时的显示当前的的温度。其中P3.2,P3.3,P3.4,P3.5外接按键,P0口用作LCD输出数据端口,P1.0接蜂鸣器端口。详细原理图见附件设计框图如下图:二、具体电路设计图:1.液晶设计图:2.复位电路:3.按键电路及主控电路:4.蜂鸣器电路:三、系统程序设计//名称:用1602LCD与DS18B20设计的温度报警器〔含ROMCODE,温度上下限显示〕//说明:本例将报警器温度设为高:高-30摄氏度,低-20摄氏度,当DS18B20感知温度到达此临界值时,对应的LCD闪烁,且发出报警声音。//本例还可以单独显示DS18B20的ROMCODE及报警温度上下限。#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ1=P2^0; //定义第一路sbitDQ2=P2^1; //定义第二路sbitLED1=P2^3; //定义第一路的指示灯sbitLED2=P2^2; //定义第二路的指示灯sbitRS=P2^4; //数据/命令选择端〔H/L〕sbitRW=P2^5; //读写选择端〔H/L〕sbitEN=P2^6; //使能信号sbitBELL=P1^0; //蜂鸣器sbitkey1=P3^2; //报警温度设置选择按键sbitkey2=P3^3; //加sbitkey3=P3^4; //减sbitkey4=P3^5; //通道选择按键uintdatadisdata1[5];uintdatadisdata2[5];uinttvalue1;//温度值uinttvalue2;//温度值uintbjdate1;//1路下限值uintbjdate2;//2路下限值uintbjdate11;//1路上限值uintbjdate22;//2路上限值uchartflag1;//温度正负标志uchartflag2;//温度正负标志uinta=0; //报警值设置选择标志uintb=0; //通道选择标志unsignedcharcodestr1[]={"T1:"};unsignedcharcodestr2[]={"T2:"};unsignedcharcodeclean[]={""};/****************lcd1602程序**************************/voiddelay1ms(unsignedintms)//延时1毫秒〔不够准确的〕{unsignedinti,j;for(i=0;i<ms;i++)for(j=0;j<100;j++);}voidwr_(unsignedchar)//写指令//{delay1ms(1);RS=0;RW=0;EN=0;P0=;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidwr_dat(unsignedchardat)//写数据{ delay1ms(1);;RS=1;RW=0;EN=0;P0=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidlcd_init()//初始化设置{delay1ms(15);wr_(0*38);delay1ms(5);wr_(0*08);delay1ms(5);wr_(0*01);delay1ms(5);//清屏wr_(0*0c);delay1ms(5);}voiddisplay(unsignedchar*p)//显示{while(*p!='\0'){wr_dat(*p);p++;delay1ms(1);}}voidinit_play(void)//初始化显示{lcd_init();wr_(0*80);display(str1);wr_(0*c0);display(str2);}voiddelay_18B20(unsignedinti)//延时1微秒{while(i--);}/******************A路温度检测*****************************/voidds1820rst1()//ds1820复位{unsignedchar*=0;DQ1=1;//DQ复位delay_18B20(4);//延时DQ1=0;//DQ拉低delay_18B20(100);//准确延时大于480usDQ1=1;//拉高delay_18B20(40);}uchards1820rd1()//读数据{unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ1=0;//给脉冲信号dat>>=1;DQ1=1;//给脉冲信号if(DQ1) dat|=0*80;delay_18B20(10);}return(dat);}voidds1820wr1(ucharwdata1)//写数据{unsignedchari=0;for(i=8;i>0;i--){DQ1=0;DQ1=wdata1&0*01;delay_18B20(10);DQ1=1;wdata1>>=1;}}read_temp1()//读取温度值并转换{uchara,b;ds1820rst1();ds1820wr1(0*cc);//跳过读序列号ds1820wr1(0*44);//启动温度转换ds1820rst1();ds1820wr1(0*cc);//跳过读序列号ds1820wr1(0*be);//读取温度a=ds1820rd1();b=ds1820rd1();tvalue1=b;tvalue1<<=8;tvalue1=tvalue1|a;if(tvalue1<0*0fff)tflag1=0;else{tvalue1=~tvalue1+1;tflag1=1;}tvalue1=tvalue1*(0.625);//温度值扩大10倍,准确到1位小?return(tvalue1);}/****************B路温度检测*********************/voidds1820rst2()//ds1820复位{unsignedchar*=0;DQ2=1;//DQ复位delay_18B20(4);//延时DQ2=0;//DQ拉低delay_18B20(100);//准确延时大于480usDQ2=1;//拉高delay_18B20(40);}uchards1820rd2()/*读数据*/{unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ2=0;//给脉冲信号dat>>=1;DQ2=1;//给脉冲信号if(DQ2)dat|=0*80;delay_18B20(10);}return(dat);}voidds1820wr2(ucharwdata2)//写数据{unsignedchari=0;for(i=8;i>0;i--){DQ2=0;DQ2=wdata2&0*01;delay_18B20(10);DQ2=1;wdata2>>=1;}}read_temp2()//读取温度值并转换{uchara,b;ds1820rst2();ds1820wr2(0*cc);//跳过读序列号ds1820wr2(0*44);//启动温度转换ds1820rst2();ds1820wr2(0*cc);//跳过读序列号ds1820wr2(0*be);//读取温度a=ds1820rd2();b=ds1820rd2();tvalue2=b;tvalue2<<=8;tvalue2=tvalue2|a;if(tvalue2<0*0fff)tflag2=0;else{tvalue2=~tvalue2+1;tflag2=1;}tvalue2=tvalue2*(0.625);//温度值扩大10倍,准确到1位小?return(tvalue2);}/****************************************************//**************第一路显示子程序*******************/voidds1820disp1(){disdata1[1]=tvalue1%1000/100+0*30;//十位数disdata1[2]=tvalue1%100/10+0*30;//个位数disdata1[3]=tvalue1%10+0*30;//小数位wr_(0*84);wr_dat(disdata1[1]);//显示十位wr_(0*85);wr_dat(disdata1[2]);//显示个位wr_(0*86);wr_dat(0*2e);//显示小数点wr_(0*87);wr_dat(disdata1[3]);//显示小数位 wr_(0*88);wr_dat(0*df); wr_(0*89);wr_dat(0*43); //显示Cwr_(0*8B); wr_dat(bjdate1/10+0*30);wr_(0*8C); wr_dat(bjdate1%10+0*30); wr_(0*8E); wr_dat(bjdate11/10+0*30);wr_(0*8F); wr_dat(bjdate11%10+0*30);}/****************************************************//***********第二路显示子程序**************************/voidds1820disp2()//温度值显示{disdata2[1]=tvalue2%1000/100+0*30;//十位数disdata2[2]=tvalue2%100/10+0*30;//个位数disdata2[3]=tvalue2%10+0*30;//小数位 wr_(0*C4);wr_dat(disdata2[1]);//显示十位wr_(0*C5);wr_dat(disdata2[2]);//显示个位wr_(0*C6);wr_dat(0*2e);//显示小数点wr_(0*C7);wr_dat(disdata2[3]);//显示小数位 wr_(0*C8);wr_dat(0*df); wr_(0*C9);wr_dat(0*43); //显示Cwr_(0*CB); wr_dat(bjdate2/10+0*30); wr_(0*CC);wr_dat(bjdate2%10+0*30); wr_(0*CE); wr_dat(bjdate22/10+0*30); wr_(0*CF);wr_dat(bjdate22%10+0*30);}/********************************************************//******************报警设子程序*************************/voidbjshezhi(void){ if(key1==0) { delay1ms(20); if(key1==0) { while(key1==0); a=a+1; if(a>=5)a=0; }} if(key2==0) //设置+ { delay1ms(20); if(key2==0) { while(key2==0); if(a==1) bjdate1=bjdate1+1;//通道一下限值加一 if(a==2) bjdate11=bjdate11+1;//通道一上限值加一 if(a==3) bjdate2=bjdate2+1; //通道二下限值加一 if(a==4) bjdate22=bjdate22+1;//通道二上限值加一 }} if(key3==0) //设置- { delay1ms(20); if(key3==0) { while(key3==0); if(a==1) bjdate1=bjdate1-1; //通道一下限值减一 if(a==2) bjdate11=bjdate11-1;//通道一上限值减一 if(a==3) bjdate2=bjdate2-1; //通道二下限值减一 if(a==4) bjdate22=bjdate22-1;//通道二上限值减一 }}/************报警温度设设置选择状态显示**********/ if(a==0) { wr_(0*8A); wr_dat(0*20); wr_(0*8D); wr_dat(0*20); wr_(0*CA); wr_dat(0*20); wr_(0*CD); wr_dat(0*20);//a=0时,4个报警值前无显示 } if(a==1) { wr_(0*8A); wr_dat(0*7E);//a=1时,一通道下限报警值前显示“→〞 } if(a==2) { wr_(0*8A); wr_dat(0*20);//去除显示 wr_(0*8D); wr_dat(0*7E); //a=2时,一通道上限报警值前显示“→〞 } if(a==3) {wr_(0*8D); wr_dat(0*20);//去除显示 wr_(0*CA); wr_dat(0*7E);//a=3时,二通道下限报警值前显示“→〞 }if(a==4) { wr_(0*CA); wr_dat(0*20);//去除显示 wr_(0*CD); wr_dat(0*7E); //a=4时,二通道上限报警值前显示“→〞 } }/************************************************//*************通道选择子程序******************/voidtongdao(){ if(key4==0) //key4通道选择按键, { delay1ms(20); if(key4==0) { while(key4==0);b=b+1; //b=0时,两路同时检测; if(b>=3)b=0; //b=1时,检测1路;b=2时,检测2路 } }if(b==0) //1、2路同时检测温度 {wr_(0*80); wr_dat(0*7E);wr_(0*C0); wr_dat(0*7E); read_temp1();//读取温度 read_temp2();//读取温度ds1820disp1();//显示 ds1820disp2();//显示 if(((tvalue1%1000/100)*10+(tvalue1%100/10))<bjdate1) {BELL=1; //第一路温度低于限值报警 LED1=1; delay1ms(200);BELL=0; LED1=0; delay1ms(50); } elseBELL=1; if(((tvalue1%1000/100)*10+(tvalue1%100/10))>=bjdate11) {BELL=1; //第一路温度超上限值报警 LED1=1; delay1ms(600);BELL=0; LED1=0; delay1ms(50); } elseBELL=1; if(((tvalue2%1000/100)*10+(tvalue2%100/10))<bjdate2) {BELL=1; //第二路温度低于下限值报警 LED2=1; delay1ms(200);BELL=0; LED2=0; delay1ms(50); } elseBELL=1; if(((tvalue2%1000/100)*10+(tvalue2%100/10))>=bjdate22) {BELL=1; //第二路温度超上限值报警 LED2=1; delay1ms(600);BELL=0; LED2=0; delay1ms(50); } elseBELL=1; }if(b==1)//b=1,1路处于检测温度状态 { wr_(0*80); wr_dat(0*7E);wr_(0*C0); wr_dat(0*20); read_temp1();//读取温度ds1820disp1();//显示 if(((tvalue1%1000/100)*10+(tvalue1%100/10))<bjdate1) {BELL=1; //第二路温度低于下限值报警 LED1=1; delay1ms(200);BELL=0; LED1=0; delay1ms(50); } elseBELL=1;if(((tvalue1%1000/100)*10+(tvalue1%100/10))>=bjdate11) {BELL=1; //第一路温度超过上限值报警 LED1=1; delay1ms(600);BELL=0; LED1=0; delay1ms(50); } elseBELL=1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论