基于单片机的温度报警器设计_第1页
基于单片机的温度报警器设计_第2页
基于单片机的温度报警器设计_第3页
基于单片机的温度报警器设计_第4页
基于单片机的温度报警器设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

致谢通过这个设计,我认识到科学的相通性,很多新的设计都汇集了众多技术项目。在这里我们需要感谢帮助我们的指导老师,是他们一步一步地进行引导我们打开了思想去构造出各项组件。当所有的困难都出现时,老师总是指出困惑并回答我们。使得计划继续进行,在整个过程中会出现新的困难,整个任务进展也会被打断。但在老师的帮助下,我们不断克服这些问题,解决这些问题。人生就是一个在不断的学习和实践,一次又一次地挑战自己的过程;这个设计,不仅给了我一次社会实践的机会,端正了我的学习生活态度,提高了我的动手操作能力。让我在各方面都得到很大的提高。锻炼了我的思维,提高了我的整体素质。通过技术创新性实验,我体会到创新发展能力和动手实践能力的重要性,同时,也看到了我们自身能力存在的不足,并在不断地进行努力中完善了自己。论文写完的时候意味这在这个学校得最后一课也结束了,回想三年的时光转瞬即逝,曾经的伙伴也背起了行囊准备踏入社会,感谢老师这两年的教育,然我受益匪浅,那些往日的点点滴滴映入眼帘,曾经的欢笑,眼泪,挫败还有收获都是我最宝贵的回忆,我将好好珍藏。这些回忆都是那样的温暖。其中最要感谢的是我的指导老师戴红霞,因为本论文是在她的悉心的帮助下完成的。她把她对论文的构思,框架和理论教给了我,这才使的我的论文可以顺利地完成。最后感谢所有关心我的人和我关心的人,我会努力的。附录一元件清单附录A元件清单编号注释描述数量130pf直插瓷片电容2210uF直插电解电容13SMG04_1共阳数码管14LED0LED灯5mm15speaker蜂鸣器16POWERDC电源插座17S9012PNP三极管581K电阻14910K电阻210SW-PB按键411MCU51单片机112DS18B20数字温度管11312MHZ晶振114导线100cm115焊锡200cm116USB电源线系统供电117万用板优质板118单片机插座40脚IC座1附录三实物图附录Bc语言程序#include<reg52.h> //调用单片机头文件#defineucharunsignedchar//无符号字符型宏定义 变量范围0~255#defineuintunsignedint //无符号整型宏定义 变量范围0~65535#include"eeprom52.h"//数码管段选定义012345 6 7 8 9 ucharcodesmg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0, 0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //断码//数码管位选定义ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8}; ucharsmg_i=3;//显示数码管的个位数sbitdq=P2^4; //18b20IO口的定义bitkey_500ms;sbitbeep=P2^3;//声光报警接口ucharf_pwm_l; //越小越慢uinttemperature;//bitflag_300ms;ucharmenu_1;//菜单设计的变量uintt_high,t_low; //温度上下限报警值uintnumber;/***********************1ms延时函数*****************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}voiddelay_uint(uintq){ while(q--);}voiddisplay(){ staticuchari; i++; if(i>=smg_i) i=0; P1=0xff; //消隐 P3=smg_we[i]; //位选 P1=dis_smg[i]; //段选 }voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,t_high%256); byte_write(0x2001,t_high/256); byte_write(0x2002,t_low%256); byte_write(0x2003,t_low/256); byte_write(0x2055,a_a); }voidread_eeprom(){ t_high=byte_read(0x2001); t_high<<=8; t_high|=byte_read(0x2000); t_low=byte_read(0x2003); t_low<<=8; t_low|=byte_read(0x2002); a_a=byte_read(0x2055);}/**************开机初始化保存的数据*****************/voidinit_eeprom(){ read_eeprom(); //先读 if(a_a!=22) //新的单片机初始单片机内问eeprom { t_high=400; t_low=100; a_a=22; write_eeprom(); //保存数据 } }voidinit_18b20(){ bitq; dq=1; //把总线拿高 delay_uint(1); //15us dq=0; //给复位脉冲 delay_uint(80); //750us dq=1; //把总线拿高等待 delay_uint(10); //110us q=dq; //读取18b20初始化信号 delay_uint(20); //200us dq=1; //把总线拿高释放总线}/*************写18b20内的数据***************/voidwrite_18b20(uchardat){ uchari; for(i=0;i<8;i++) { //写数据是低位开始 dq=0; //把总线拿低写时间隙开始 dq=dat&0x01;//向18b20总线写数据了 delay_uint(5); //60us dq=1; //释放总线 dat>>=1; } }/*************读取18b20内的数据***************/ucharread_18b20(){ uchari,value; for(i=0;i<8;i++) { dq=0; //把总线拿低读时间隙开始 value>>=1; //读数据是低位开始 dq=1; //释放总线 if(dq==1) //开始读写数据 value|=0x80; delay_uint(5); //60us 读一个时间隙最少要保持60us的时间 } returnvalue; //返回数据}uintread_temp(){ uintvalue; ucharlow; init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳过64位ROM write_18b20(0x44); //启动一次温度转换命令 EA=1; delay_uint(50); //500us init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳过64位ROM write_18b20(0xbe); //发出读取暂存器命令 low=read_18b20(); //读温度低字节 value=read_18b20();//读温度高字节 EA=1; value<<=8; //把温度的高位左移8位 value|=low; //把读出的温度低位放到value的低八位中 value*=0.625; //转换到温度值小数 returnvalue; //返回读出的温度带小数}voidtime_init() { EA=1; //开总中断 TMOD=0X11; //定时器0、定时器1工作方式1 ET0=1; //开定时器0中断 TR0=1; //允许定时器0定时 ET1=1; //开定时器0中断 TR1=0; //允许定时器0定时}/********************独立按键程序*****************/ucharkey_can; //按键值voidkey() //独立按键程序{ staticucharkey_new; key_can=20;//按键值还原 P2|=0x07; if((P2&0x07)!=0x07) //按键按下 { if(key_500ms==1) //连加 { key_500ms=0; key_new=1; } delay_1ms(1); //按键消抖动 if(((P2&0x07)!=0x07)&&(key_new==1)) { //确认是按键按下 key_new=0; switch(P2&0x07) { case0x06:key_can=3;break; case0x05:key_can=2;break; case0x03:key_can=1;break; } flag_lj_en=1; //连加使能 } } else { if(key_new==0) { key_new=1; write_eeprom(); //保存数据 flag_lj_en=0; //关闭连加使能 flag_lj_3_en=0; //关闭3秒后使能 key_value=0; //清零 key_time=0; key_500ms=0; } } }voidkey_with(){ if(key_can==1) //设置键 { f_pwm_l=30; menu_1++; if(menu_1>=3) { menu_1=0; smg_i=3; //数码管显示3位 } } if(menu_1==1) //设置高温报警 { smg_i=4; //数码管显示4位 if(key_can==2) { if(flag_lj_3_en==0) t_high++; //按键按下未松开自动加三次 else t_high+=10; //按键按下未松开自动加三次之后每次自动加10 if(t_high>990) t_high=990; } if(key_can==3) { if(flag_lj_3_en==0) t_high--; //按键按下未松开自动减三次 else t_high-=10; //按键按下未松开自动减三次之后每次自动减10 if(t_high<=t_low) t_high=t_low+1; } dis_smg[0]=smg_du[t_high%10]; //取小数显示 dis_smg[1]=smg_du[t_high/10%10]&0xdf;//取个位显示 dis_smg[2]=smg_du[t_high/100%10]; //取十位显示 dis_smg[3]=0x64; //H } if(menu_1==2) //设置低温报警 { smg_i=4; //数码管显示4位 if(key_can==2) { if(flag_lj_3_en==0) t_low++; //按键按下未松开自动加三次 else t_low+=10; //按键按下未松开自动加三次之后每次自动加10 if(t_low>=t_high) t_low=t_high-1; } if(key_can==3) { if(flag_lj_3_en==0) t_low--; //按键按下未松开自动减三次 else t_low-=10; //按键按下未松开自动加三次之后每次自动加10 if(t_low<=10) t_low=10; } dis_smg[0]=smg_du[t_low%10]; //取小数显示 dis_smg[1]=smg_du[t_low/10%10]&0xdf;//取个位显示 dis_smg[2]=smg_du[t_low/100%10]; //取十位显示 dis_smg[3]=0x3D; //L } }/****************报警控制函数***************/voidbaojing_kz(){ if(temperature<t_high&&temperature>t_low) { TR1=0; beep=1; } else { TR1=1; if(number>=1000) { number=0; beep=~beep; } }} /****************主函数***************/voidmain(){ P0=P1=P2=P3=0xff; time_init();//初始化定时器 temperature=read_temp(); //先读出温度的值 init_eeprom();//开始初始化保存的数据 delay_1ms(650); temperature=read_temp(); //先读出温度的值 dis_smg[0]=smg_du[temperature%10]; //取温度的小数显示 dis_smg[1]=smg_du[temperature/10%10]&0xdf;//取温度的个位显示 dis_smg[2]=smg_du[temperature/100%10]; //取温度的十位显示 f_pwm_l=50; while(1) { key(); //按键程序 if(key_can<10) { key_with(); //设置报警温度 } if(flag_300ms==1) //300ms处理一次温度程序 { flag_300ms=0; temperature=read_temp(); //先读出温度的值 if(menu_1==0) {

温馨提示

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

评论

0/150

提交评论