温度检测系统设计报告.(DOC)

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

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

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

资源描述

1计算机硬件(嵌入式)综合实践设计报告温度检测系统设计与制作2一.系统概述1.设计内容本设计主要从硬件和软件部分介绍了单片机温度控制系统的设计思路,简单说明如何实现对温度的控制,并对硬件原理图和程序框图作了简洁的描述。还介绍了在单片机控制系统的软硬件设计中的一些主要技术关键环节,该系统主要以AT89S52单片机为核心,同时利用DS18B20温度传感器采集温度,采用4位LED显示管实施信息显示。AT89S52单片机设计的温度检测电路是本次设计的主要内容,是整个单片机温度控制系统设计中不可缺少的一部分,该系统对温度进行实时采集与检测。本设计介绍的单片机自动控制系统的主要内容包括:系统概述、元器件选择、系统理论分析、硬件设计、部分软件设计及主要技术性能参数。2.元器件选择单片机AT89S52:1个22uF电容:2个4.7K电阻:1个万能板:1个杜邦线:若干单排排针:若干3DS18B20温度传感器:2个4位LED显示管:1个二.软件功能设计及程序代码1.总体系统设计思想框图如下:单片机应用软件调试软件编程系统测试和调试系统集成硬件调试选择单片机芯片定义系统性能指标硬件设计2.主程序流程图3.DS18B20数据采集流程图44.程序代码①、温度记录仪#includereg52.h#includeintrins.h#includeSYSTEM.h#includeLCD1602.h#include18B20.h#includeEEPROM.hbitrec_flag=0;//记录温度标志ucharautobac_tim=0;//自动跳转延时ucharcodelogos[]=****NTMUSIC****;ucharincmin=0;//计分钟数bitoverflag=0;//数据溢出标志位ucharmode=1;//系统运行模式uchartempmode;//模式缓存voidinit(){lcd_init();eeprom_init();/***********开机效果****************/display(l1,StartingNT,1);longdelay(10);display(l2,Ver3.0.1,1);longdelay(20);write_cmd(0x01);//清屏/*************************************/sys_init();}5voidcomms()//模式公共进程{time2times();//时间格式转换avtemp=gettemp();//获取温度avtemp2avtemps();//温度格式转换date_counter();//获取当前日期date2dates();//日期格式转换display(l2+1,times,0);display(l2+11,avtemps,0);}voidprogs(uinti,uintk)//进度条{uintj;write_cmd(0xc0);for(j=0;j(i*16/k);j++){write_lcddata(0xff);}}voidnormal_run()//无记录运行模式{comms();if(time[2]%105){display(l1,logos,1);}else{display(l1,***,0);display(l1+13,***,0);display(l1+3,dates,0);}incmin=0;}voidrecding_run()//记录模式运行模式{uintWDTPT;//临时写地址指针变量存放comms();recfrq2recfrqs();if(time[2]%105){if(mss50)display(l1,,0);elsedisplay(l1,R,0);display(l1+1,-NUM,0);display(l1+5,datcounts,0);display(l1+9,**EV,0);display(l1+13,recfrqs,0);}else6{display(l1,***,0);display(l1+13,***,0);display(l1+3,dates,0);}/***********定时记录*************/if(incmin=recfrq)//触发记录功能{incmin=0;//1清除进入记录标志if(WDTP10240)//20个扇区overflag=1;if(overflag==0)//如果数据尚未溢出{if(date_recf==1)//记录年-月-日(格式:'z'+年+月+日)为十制数值{date_recf=0;//清除记录日期标志write_isp(WDTP,'z');//日期起始标志write_isp(WDTP,date[0]);write_isp(WDTP,date[1]);write_isp(WDTP,date[2]);//记录年、月、日}/***********记录时间************/write_isp(WDTP,time[0]);write_isp(WDTP,time[1]);//记录时分/***********记录温度************/write_isp(WDTP,avtemp/100);write_isp(WDTP,avtemp%100);/**********记录加一*********/datcount++;/**********写回数据指针****************/WDTPT=WDTP;if(FDTP==512){del_isp(0);//清空记录表FDTP=0;}write_isp(FDTP,WDTPT/256);write_isp(WDTP,WDTPT%256);write_isp(WDTP,datcount/256);write_isp(WDTP,datcount%256);FDTP=WDTP;WDTP=WDTPT;//交互完成}if(overflag==1)//如果数据溢出{display(l1,Error!,1);7display(l2,DataOverflow!,1);autobac_tim=0;while(autobac_tim!=3);display(l2,,1);}}}voiddata_run()//查看记录模式{uchari=0;bitbacf=0;uintcou_t=0;//计数缓存变量uchartemp=0;//临时数据缓存uintcd=0;//进度条统计数据autobac_tim=0;while(bacf==0){if(autobac_tim10)bacf=1;display(l1,ReadyforExport,1);display(l2,D-DateT-TempL!,1);if(RI==1){autobac_tim=0;RI=0;ser_rec=SBUF;switch(ser_rec){case'L'://格式化display(l1,Format?,1);display(l2,Y-YesN-No,1);while(1){if(RI==1){RI=0;ser_rec=SBUF;autobac_tim=0;}if(ser_rec=='Y')//确定格式化{display(l1,Formatting...,1);display(l2,,1);eeprom_format();display(l1,FormatSuccessed,1);longdelay(3);break;}8if(ser_rec=='N')break;if(autobac_tim10)break;}autobac_tim=0;break;case'D'://输出日期时间display(l1,ExportingDate..,1);display(l2,,1);RDTP=512;//将读指针放到首位cou_t=datcount;cd=0;while(cou_t!=0){if(RI==1)RI=0;if(SBUF=='B'){display(l1,Exportstopped,1);cd=0;longdelay(3);break;}temp=read_isp(RDTP);//预读判断RDTP--;if(temp=='z'){RDTP++;prf_date();//输出年月日}prf_time();//输出时间RDTP=RDTP+2;cou_t--;cd++;progs(cd,datcount);}if(datcount==0){display(l1,NoData!,1);longdelay(3);}autobac_tim=0;break;case'T'://温度输出display(l1,ExportingTemp..,1);9display(l2,,1);RDTP=516;//将读指针放到首位cd=0;cou_t=datcount;while(cou_t!=0){if(RI==1)RI=0;if(SBUF=='B'){display(l1,Exportstopped,1);cd=0;longdelay(3);break;}temp=read_isp(RDTP);//预读判断RDTP--;if(temp=='z'){RDTP=RDTP+6;}else{RDTP=RDTP+2;}prf_temp();cou_t--;cd++;progs(cd,datcount);}if(datcount==0){display(l1,NoData!,1);longdelay(3);}autobac_tim=0;break;case'B':bacf=1;break;}ser_rec=0;}}mode=tempmode;display(l2,,1);}voidadj_settings()//设置模式{10uchari=0;//Counterbitendadj=0;//调整完毕标志ucharser_temp=0;//接收缓存write_cmd(0x01);//清屏times[5]=':';//恢复数点display(l1,Settime-,1);display(l1+11,hour,0);display(l2+11,[],0);display(l2+1,times,0);display(l2+12,recfrqs,0);write_cmd(0xC1+i);write_cmd(0x0f);//显示闪烁光标autobac_tim=0;//初始化自动返回时间常数while(!endadj){if(RI==1)//接收到数据{RI=0;autobac_tim=0;//自动返回清零ser_temp=SBUF;if((ser_temp47)&&(ser_temp58))//进行数值判断{if(i8)times[i]=ser_temp;if(i8&&i14)recfrqs[i-11]=ser_temp;if(i=14)dates[i-13]=ser_temp;i++;}if(ser_temp=='F')i++;//往前一步if(ser_temp=='B')endadj=1;//退出调整switch(i)//显示处理{case2:i++;display(l1+11,min,0);break;case5:i++;display(l1+11,sec,0);break;case8:i=i+3;display(l1+11,frq,0);break;case14:i++;display(l1+4,dateyear,0);display(l2,,1);break;case17:i++;display(l1+11,moun,0);break;case20:i++;display(l1+11,day,0);break;case23:endadj=1;break;}11if(i14){display(l2+1,times,0);display(l2+12,recfrqs,0);write_cmd(0xC1+i);}else{display(

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

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

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

×
保存成功