单片机原理及系统课程设计报告温度湿度控制系统提交版_第1页
单片机原理及系统课程设计报告温度湿度控制系统提交版_第2页
单片机原理及系统课程设计报告温度湿度控制系统提交版_第3页
单片机原理及系统课程设计报告温度湿度控制系统提交版_第4页
单片机原理及系统课程设计报告温度湿度控制系统提交版_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

年4月19日单片机原理及系统课程设计报告温度湿度控制系统提交版文档仅供参考单片机原理及系统课程设计专业:自动化班级:动091姓名:程维洲学号: 08409指导教师:路小娟评语:平时(40)修改(30)报告(30)总成绩兰州交通大学自动化与电气工程学院年7月1日

目录TOC\o"1-2"\h\z\u1引言 12方案设计 12.1总体方案设计 12.2系统组成及框图 13硬件电路设计 23.1温度测量电路设计 23.2湿度测量电路设计 23.3按键电路设计 34软件设计 34.1主程序流程图 34.2温度模块程序设计 44.3湿度模块程序设计 54.4显示子程序设计 55总结 56参考文献 57附录 67.1附录A 67.2附录B 6

1引言本次课程设计主要基于AT89C51单片机,开发环境温度及湿度检测及控制系统。该系统采用AT89C51单片机作为控制器,DS18B20作为温度传感器,HS1101作为湿度传感器。系统主要功能如下:(1)对温度、湿度进行测量;(3)温度及湿度的显示;(4)设定预期温度与湿度值并显示。关键词:AT89C51,温度及湿度检测,LCD显示。2方案设计本章从控制系统的总体构成及原理框图对系统进行了总体分析说明,控制系统组成以后,主要经过控制器、传感器及执行器对控制变量进行分析和处理。2.1总体方案设计本系统采用AT89C51单片机作为微处理器,DS18B20作为温度传感器对温度进行检测,HS1101作为湿度传感器与NE555组成湿度测量模块,使用LM016L对测得的温度及湿度值进行显示,使用按键对温度及湿度的设定值进行修改。2.2系统组成及框图系统主要有温度测量模块、湿度测量模块、显示模块、及按键模块。其原理框图如图2-1所示。AT89C51温度测量LCD液晶显示AT89C51温度测量LCD液晶显示 按键湿度按键湿度图2.1系统组成框图3硬件电路设计本温度及湿度控制系统使用AT89C51作为控制器,用DS18B20实现对温度测测量,用HS1101及NE555实现的湿度的测量,并采用LM016L将采集的的数据显示。现将系统硬件设计表述如下。3.1温度测量电路设计采用DS18B20数字温度传感器测量温度,DS18B20与单片机是单线双向通信。其连接电路如图3.1所示。图3.1DS18B20的测温电路(DQ端接51的P2.7)3.2湿度测量电路设计图3.2NE555测湿电路HS1101实际上相当于一个可变电容,它会因外部环境湿度的变化而致使电容值变化,湿度测量模块采用HS1101及NE555一起组成,将该HS1101置于NE555震荡电路中,将电容值的变化转化为与之呈反比的电压频率信号,可直接被计算机采集。表3.1等效电容值与相对湿度之间的数值关系相对湿度RH(%)电容值C(PF)相对湿度RH(%)电容值C(PF)01636018310166701862017080191301739019540176100202501793.3按键电路设计系统能够调节设定的温度及湿度值,我们能够经过四个按键来进行实现,前两个按键选择是温度设定还是湿度设定,后两个按键实现加一和减一操作,设计电路图如图3.3所示。图3.3按键电路其工作原理如下:当闭合温度控制开关,能够经过“加”、“减”按钮来实现目标温度值的加一或者减一;同理闭合湿度开关,经过“加”、“减”按钮来实现目标湿度值的加一或者减一。而且,当两个开关同时闭合时,能够实现温度和湿度的同加一或同减一。4软件设计本章主要对各个功能模块的程序流程进行说明。4.1主程序流程图主程序的主要功能是负责读出并处理DS18B20的测量温度值,读出测湿电路的结果,并将温度及湿度进行实时显示,直到需要退出该系统时结束并退出。程序流程图如图4.1所示:开始开始允许外部中断和定时器允许外部中断和定时器T0、T1中断16021602初始化显示及T0、T1初始化设置读取温度值读取温度值温度显示温度显示读取湿度值读取湿度值 N湿度显示 湿度显示是否结束是否结束是否结束是否结束 Y结束结束图4.1主程序流程图4.2温度模块程序设计温度模块主要包括DS18B20的初始化以及与单片机之间的数据处理。DS18B20与微处理器之间的通信比较复杂,每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。4.3湿度模块程序设计湿度模块主要是利用定时器T0和T1对555的输出频率进行测量,进而得到相对湿度值。在该块程序设计中,我们选取T0做定时器,定时时间是50ms,而选择T1做计数器,每当T0定时时间到就读取T1的计数值,然后将T1的计数值乘以20就可得到555芯片的输出频率,可进行数据处理从而得到相对湿度值。4.4显示子程序设计显示子程序包括1602的初始化,以及对温度和湿度值的显示。初始化时第一行显示“wend”,第二行显示“shid”,然后根据温度的测得值及其正负将测得温度值和设定温度值在第一行,并将测得的频率值装换为相对湿度值,并将其和湿度设定值显示在第二行。5总结在设计中,经过对硬件电路不断的处理,使得硬件部分比较完善。另外,在电路中加入了限流电阻,保证了各个器件的使用寿命。总之,硬件电路的设计达到了抗干扰,较高精度的目的。软件部分中,对程序也做了数次修改,最终在KeiluVision3中实现了成功的模拟,进一步验证了设计思路。本系统实现的功能如下。1.对温室大棚温度和湿度进行实时测量;2.经过LCD显示屏分别进行温度和湿度显示;3.对温度和湿度的设定值经过按键能够进行调节。本系统的优点有以下几点。1.结构简单,容易实现;2.造价低廉,性价比高;3.达到了一定的精度要求。6参考文献[1]金伟正.单线数字温度传感器的原理与应用[J].电子技术与应用,(6).[2]单晓锋,杨建红.电容型温湿度传感器模拟计算与分析[J].半导体技术,(11).[3]胡汉才.单片机原理及接口技术[M].北京:清华大学出版社,.7附录7.1附录A 系统仿真电路图如图5.1所示。在调试过程中,经过改变温度传感器的数值,来检验系统中温度模块是否运行正常。经过测试温度模块能够正常的显示,而且具有一定的快速性。经过改变NE555振荡电路中C3的容值(即HS1101的等效容值),来检验湿度摸快是否能够正常工作,经过测试湿度模块能够正常工作。而且对四个按键(即温度、湿度、+、-)的功能进行了测试,都实现了应有的功能。图5.1系统仿真调试图7.2附录B#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P2^7;//DS18B20与单片机连接口sbitRS=P3^0;//LCD1602控制端与单片机的连接sbitRW=P3^1;sbitEN=P3^7;sbitST=P0^0;//按键接口sbitSH=P0^1;sbitSjia=P3^2;sbitSjian=P3^3;ucharcodestr1[]={"Wend:"};ucharcodestr2[]={"Shid:"};uchardatadisdata1[6];uchardatadisdata2[4];uinttvalue;//温度值uchartflag;//温度正负标志uinttem0,tem1;uinttemp0,temp1;uintf=0;inthhhh=0;inttsheding=20;//设置温度值inthsheding=40;//设置湿度值voidzhongd0()interrupt0 //外部中断0 :加设置{if(ST==1){ tsheding++;//温度值加1}if(SH==1){ hsheding++;//湿度值加1}}voidzhongd1()interrupt2 //外部中断1 :减设置{if(ST==1){ tsheding--;//温度值减1}if(SH==1){ hsheding--;//湿度值减1} }voidtimer0()interrupt1//T0定时中断{ TR0=0;TR1=0;TL0=0xB0;//重装值,定时50000usTH0=0x3C;tem0=TL1;//读数tem1=TH1;TL1=0x00;//计数器1清零TH1=0x00; TR0=1;TR1=1;}voidtimer1()interrupt3//T1计数中断{ TR0=0;TR1=0;TL0=0xB0;//重装值,定时50000usTH0=0x3C;TL1=0x00;//计数器1清零TH1=0x00; TR0=1;TR1=1; }voidinit_timer(){TMOD=0x51;TL0=0xB0;//定时器0初值定时50000usTH0=0x3C;TL1=0x00;//定时器1清零TH1=0x00;TR0=1;//T0开始计时TR1=1;//T1开始计数}voiddelay1ms(uintms)//延时1毫秒{uinti,j;for(i=0;i<ms;i++)for(j=0;j<110;j++);}voidwr_com(ucharcom)//1602写指令{delay1ms(1);RS=0;RW=0;EN=0;P1=com;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidwr_dat(uchardat)//1602写数据{delay1ms(1);RS=1;RW=0;EN=0;P1=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidlcd_init()//1602初始化设置{wr_com(0x38);delay1ms(1);//设置16*2显示,5*7点阵,8位数据接口;并延时wr_com(0x08);delay1ms(1);//设置关显示,光标不显示,光标不闪烁;并延时wr_com(0x01);delay1ms(1);//设置显示清屏;并延时wr_com(0x06);delay1ms(1);//设置显示光标移动位置;并延时wr_com(0x0c);delay1ms(1);//设置显示开及光标设置;并延时}voiddisplay(uchar*p)//显示子程序{while(*p!='\0'){wr_dat(*p);p++;delay1ms(1);}}init_play()//1602初始化显示{lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2); }/**************************ds1820程序*************************/voiddelay_18B20(uinti)//延时1微秒{while(i--);}voidds1820rst()//DS18B20复位{ucharx=0;DQ=1;//DQ置位delay_18B20(4);//延时DQ=0;//DQ拉低delay_18B20(100);//精确延时大于480usDQ=1;//拉高delay_18B20(40);}uchards1820rd()//DS18B20读数据{uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay_18B20(10);}return(dat);}voidds1820wr(ucharwdata)//DS18B20写数据{uchari=0;for(i=8;i>0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata>>=1;}}voidread_temp()//读取温度值并转换{uchara,b;ds1820rst();ds1820wr(0xcc);//跳过读序列号ds1820wr(0x44);//启动温度转换ds1820rst();ds1820wr(0xcc);//跳过读序列号ds1820wr(0xbe);//读取温度a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff){tflag=0;}else{tvalue=~tvalue+1;tflag=1;}tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数}/*******************************************************************/voidds1820disp1()//温度值显示{ucharflagdat;ucharflagtsheding;disdata1[0]=tvalue/1000+0x30;//百位数disdata1[1]=tvalue%1000/100+0x30;//十位数disdata1[2]=tvalue%100/10+0x30;//个位数disdata1[3]=tvalue%10+0x30;//小数位if(tsheding<hhhh)//判断温度设定值是正是负 {flagtsheding='-';disdata1[4]=(~tsheding+1)/10+0x30;disdata1[5]=(~tsheding+1)%10+0x30;}else{ flagtsheding='';disdata1[4]=tsheding/10+0x30;disdata1[5]=tsheding%10+0x30;}if(tflag==0)flagdat=0x20;//正温度不显示符号elseflagdat=0x2d;//负温度显示负号:-if(disdata1[0]==0x30){disdata1[0]=0x20;//如果百位为0,不显示if(disdata1[1]==0x30){ disdata1[1]=0x20;//如果百位为0,十位为0也不显示}}wr_com(0x85);wr_dat(flagdat);//显示符号位wr_com(0x86);wr_dat(disdata1[0]);//显示百位wr_com(0x87);wr_dat(disdata1[1]);//显示十位wr_com(0x88);wr_dat(disdata1[2]);//显示个位wr_com(0x89);wr_dat(0x2e);//显示小数点wr_com(0x8a);wr_dat(disdata1[3]);//显示小数位wr_com(0x8b);//显示设定温度值wr_dat('(');wr_com(0x8c);wr_dat(flagtsheding);wr_com(0x8d);wr_dat(disdata1[4]);wr_com(0x8e);wr_dat(disdata1[5]);wr_com(0x8f);wr_dat(')');}/*******************************************************************/voidds1820disp2()//湿度值显示{f=tem1*256+tem0;f=f*20;if((6033<=f)&&(f<=7351)){if((7224<f)&&(f<=7351)){temp0=0;temp1=(7351-f)*10/127;}if((7100<f)&&(f<=7224)){temp0=1;temp1=(7224-f)*10/124;}if((6976<f)&&(f<=7100)){temp0=2;temp1=(7100-f)*10/124;}if((6853<f)&&(f<=6976)){temp0=3;temp1=(6976-f)*10/123;}if((6728<f)&&(f<=6853)){temp0=4;temp1=(6853-f)*10/125;}if((6600<f)&&(f<=6728)){temp0=5;temp1=(6728-f)*10/128;}if((6486<f)&&(f<=6600)){temp0=6;temp1=(6600-f)*10/132;}if((6330<f)&&(f<=6486)){temp0=7;temp1=(6468-f)*10/138;}if((6186<f)&&(f<=6300)){temp0=8;temp1=

温馨提示

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

评论

0/150

提交评论