浙江传媒学院温度控制器的设计与制作_第1页
浙江传媒学院温度控制器的设计与制作_第2页
浙江传媒学院温度控制器的设计与制作_第3页
浙江传媒学院温度控制器的设计与制作_第4页
浙江传媒学院温度控制器的设计与制作_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE19浙江传媒学院课程设计(实训)报告学院__浙江传媒学院_专业电子科学与技术班级_11电科2班_学号110706226____姓名_徐建新____课题温度控制器的设计与制作指导教师黄暑娟____报告成绩______________日期:2013年11月17日

目录1引言 31.1设计意义……………………31.2设计目的与要求 32.3本组成员所做的工作 32设计方案论证 32.1各部分方案比较与选择……………………32.2总体设计方案 42.3系统组成及框图 43硬件电路设计 53.1温度测量电路设计 53.2控制器电路设计 63.3报警器电路设计 63.4键盘电路设计 73.5液晶显示电路………………74软件设计 74.1主程序 85系统调试 85.1硬件调试 …………………85.2软件调试……………………86结果及分析 87心得体会 98参考文献 99附录……………9 附录A原理图…………………10附录B源代码…………………11附录C作品实物图……………181引言1.1设计意义温度与人们的生活息息相关,随着经济社会的不断发展,对温度的检测也显得越来越重要。在现代农业上,温度对大规模化的农作物生产起到了关键作用,直接影响了农作物的生长和生产。因此掌握温度的变化显得尤其重要,而传统的温度计需要人工的实时监测,浪费时间人力等显然已经不能适用了。在现代工业上,温度对机器的影响也不容忽视,当温度过高时稍有不慎轻则造成设备的故障,重则造成人员伤亡。特别是针对一些高危设备,人工的温度检测不仅麻烦,容易造成误差,而且对于检测人员又有一定的危险性。于是对温度实时监控就显得至关重要了。本设计以温度传感器DS18B20为测温元件,AT89S52单片机为核心,读取温度信息并写入控制信息:在液晶显示屏上显示温度,设置温度的上下限。我们可以针对不同的应用环境设置不同需求的温度上下限,当被测物体温度超过上限或低于下限温度时,蜂鸣器响动报警。本温度计的设计与传统的温度计相比,不仅可以减少了人力的温度检测,而且具有测量准确、体积小、寿命长等优点。1.2设计目的与要求利用DS18B20设计一个温度控制器,可以显示环境温度,超温报警。主要子程序温度转换及读取子程序温度计算子程序温度显示子程序1.3本组成员所做的工作资料搜集:陈礼杭,刘娇芳方案原理论证:羡盼盼,刘娇芳硬件制作:徐建新(组长)软件设计:徐建新,羡盼盼,刘娇芳调试:陈礼杭2设计方案论证2.1各部分方案比较与选择2.1.1此系统所需要的工作量较小,采用8位机足以满足本系统的要求,故选用AT89S52单片机作为本系统的CPU。2.1.2方案一:采用热敏电阻,热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的,也不能满足测量范围。在温度测量系统中,也常采用单片温度传感器,比如AD590,LM35等。但这些芯片输出的都是模拟信号,必须经过A/D方案二:采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。这样一条总线上可挂接多个DS18B20传感器,实现多点温度测量,轻松的组建传感网络。综上分析,我们选用第二种方案。2.方案一:采用串行输入,每个键位占用一个I/O口,4个按键一共要占用4个I/O口,当有键按下的时候,直接对单片机的I/O进行操作。方案二:采用并行输入,总共4个按键。4个按键的输入口为P3,当有键按下的时候,通过分别对各行各列进行扫描并查表得出键值。比较两个方案,采用方案二的方法。这样可以有效的减少对单片机I/O口的占用,使单片机有更多的I/O口来实现其他的功能。使单片机的设计更加灵活有效。2.1.4方案一:通过单片机的I/O接上拉电阻直接输出驱动数码管,可以通过I/O的输出值来改变数码管的显示字形,由74138来分别选通8个数码管,一共需要11个I/O口。方案二:采用1602液晶显示比较以上两个方案,方案一所要花费的I/O口较多,对于单片机系统是一个很大的浪费。方案二液晶显示平稳、省电、美观,更容易实现题目要求,对后续的园艺通兼容性高,故选用方案二。2.2总体设计方案以温度传感器DS18B20为测温元件,测温范围为1℃-100℃,误差小于0.01℃,AT89S52单片机为核心,读取温度信息并写入控制信息,通过并行键盘输入设置温度的上下限,在16022.3系统组成及框图AT89S52单片机AT89S52单片机DS18B20温度传感1602液晶显示DS18B20温度传感1602液晶显示键盘输入报警系统键盘输入报警系统3硬件电路设计本系统包含温度采集模块、液晶显示模块、键盘输入模块、单片机控制模块、报警模块等5个主要模块3.1温度测量电路设计DQ=P3^6采用DS18B20数字温度传感器测量温度,DS18B20与单片机是单线双向通信硬件图如下:DS18B20数字温度传感器测温范围为-55~+125℃,在-10~85℃范围内,精度为±0.5DS18B20的6个功能指令:

(1)温度转换指令(44H)。这个命令用于启动温度转换,无实质的数据要求。如果微控制器在该命令之后输出读操作命令,那么DS18B20将使DQ端为低电平,表示DS18B20正忙于温度转换,不能响应该命令。

(2)写便笺式存储器(4EH)。写便笺式存储器从TH存储单元开始,三个字节的数据将被定位在2到4号便笺式存储器单元。所有的三个字节必须在复位钳写入便笺式存储器。(3)读便笺式存储器(BEH)。该指令读取便笺式存储器的内容,读出的数据将从Byte0(存储器的0号单元)开始直到第9字节(CRC校验字)被读走。但如果不想读完所有字节,微控制器可以再任何时候输出复位信号中断其传输。

(4)复制便笺式存储器指令(48H)。把2、3、4号存储单元的内容存储到非易失性SRAM中去。复制期间,如果有读指令,DS18B20将把DQ置为低电平,直到转换结束,把DQ置为高电平。

(5)回读SRAM(B8H)。将存储在SRAM中的温度报警上下限、分别率配置的内容写回相应的便笺式存储器。

(6)读电源配置结构指令(B4H)。主控制设备发出该指令后在输出读时序,器件即会送出所使用的电源信息:0为寄生电源,1为外接电源。

DS18B20的ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。

在进行DS18B20操作时一般有以下步骤:(1)初始化DS18B20。(2)ROM指令操作。(3)便笺式存储器功能指令操作。(4)处理或数据传送。每一次DS18B20的操作都必须满足以上步骤,若是缺少或顺序混乱,期间将不会返回值。3.2控制器电路设计微处理器是控制系统的核心部件。具有控制功能强,体积小,功耗小等一系列的优点,它在工业控制、智能仪表、节能技术改造、通讯系统、信号处理及家用电器产品中都得到了广泛的应用。本设计采用AT89S52作为微处理器。硬件图如下:3.3报警器电路设计FM=P3^7硬件电路如下:3.4键盘电路设计电路按键开关:开关按键实现复位、选择、温度加、温度减按键S1(Key0)S2(Key1))S3(Key2)S4(Key3)功能复位选择温度加温度减连接I/O口P3^2P3^3P3^4P3^5硬件电路如下:3.5液晶显示电路RS=P2^0;RW=P2^1;EN=P2^2硬件电路如下:4软件设计4.1主程序开始开始预设温度读取温度判断温度是否高于预设温度是显示温度蜂鸣器发出警告键盘扫描5系统调试5.1硬件调试使用万用表检测是否有虚短虚断现象5.2软件调试使用keil软件,6结果及分析(1)在焊接完所有元器件后,要注意检查电路,看是否有焊错、漏焊、或者虚焊等。在程序调试的时候,因为板子上有一个电阻虚焊了,以至于无法点亮l1602液晶屏。后来反复检查才找到原因。(2)焊接的时候因为焊接技术不是很熟练,在焊接完后,发现整体元器件不协调,焊点不圆滑,走线也很乱,看上去不美观(3)在对蜂鸣器频率更改时,由于延迟时间太短时的频率太小,人耳而听不到声音,后将延迟的一微秒改为一毫秒便解决了问题7心得体会通过时间周的学习,我对单片机的运用了解更加深入了。由于暑假我有参加电子设计的培训,所以硬件制作方面比如画图制版相对比较熟练了,但在焊接电路方面还有待改进。软件设计是我们这次学习的重点,在实践周前两天我对温度控制与设计的编程工作还一头雾水,后来通过不停的查阅资料以及我们组成员的共同努力终于在星期四下午把它顺利编写出来,其间有遇到很多问题,比如如何达到显示温度的高精度,如何设置温度上下限,尤其在蜂鸣器频率方面花的时间最多,我们本来打算让蜂鸣器实现音乐报警,可由于时间有限最终未能实现,因此我们要在编程方面勤加练习,才能更好的运用单片机。8参考文献[1]张毅刚.《单片机原理及应用》.北京,高等教育出版社,2010年[2]蔡美琴.《MCS-51系列单片机系统及其应用》.北京,高等教育出版社,2004年[3]魏立峰,王宝兴.《单片机原理与应用技术》,北京大学出版社,2007,21-24.[4]杨素行.《模拟电子技术基础简明教程》,高等教育出版社,2004,514-529.9附录附录A原理图附录B源代码#include<reg52.h>#include"1602.h"#include"18b20.h"#definekey_portP3//定义键盘的输入为P3口sbitFM=P3^7;uinttemprd;ucharTMAX=25,TMIN=15;//设置温度上下限的初始值ucharW_s=0;ucharstage=0;ucharu_con=0;uchartable1[13]="Temp:.`C";uchartable2[16]="MAX:`MIN:`";voidkey_delay(void){ uchari,j; for(i=0;i<10;i++) for(j=0;j<200;j++);}voidDelay(uintnum)//延时1微秒{while(num--);}voiddelay_ms(uintn)//延时1毫秒{ uchari; while(n--) { for(i=0;i<121;i++) ; }}voiddisplay(void){ table1[5]=temprd/1000+48; table1[6]=temprd/100%10+48; table1[8]=temprd/10%10+48; table1[9]=temprd%10+48; table1[12]=0; dis_str(1,0,table1); table2[4]=TMAX/10+48; table2[5]=TMAX%10+48; table2[12]=TMIN/10+48; table2[13]=TMIN%10+48; if(stage==1) { table2[7]='<'; } elseif(stage==2) { table2[7]=''; table2[15]='<'; } dis_str(2,0,table2); if(W_s) { dis_str(1,12,"Warn"); } else { dis_str(1,12,"Safe"); } }voidkeysearch(void){ staticucharkey_s=1; if(key_s&&((key_port&0x3c)!=0x3c)) { key_delay(); key_s=0; switch(key_port&0x3c) { case0x2c:if(stage==1)TMAX++;if(TMAX>60)TMAX=60; elseif(stage==2)TMIN++;if(TMIN>TMAX-1)TMIN=TMAX-1;break;//温度加 case0x1c:if(stage==1)TMAX--;if(TMAX<TMIN+1)TMAX=TMIN+1; elseif(stage==2)TMIN--;if(TMIN<1)TMIN=1;break;//温度减 case0x34:stage++;if(stage>=3){stage=0;table2[15]='';}break;//选择 case0x38:u_con=1;break;//复位 default:break; } } elseif((key_port&0x3c)==0x3c) key_s=1;}voidmain(void){ unsignedchari; lcd_init(); dis_str(1,0,table1); dis_str(2,0,table2); while(1) { temprd=Readtemp(); if(!stage) { if((temprd>(TMAX*100)||temprd<(TMIN*100))) { if(!u_con) { W_s=1;for(i=0;i<200;i++)//循环两百次 { delay_ms(500); FM=0; delay_ms(200); FM=1; delay_ms(200); FM=0; delay_ms(200); FM=1; delay_ms(500); FM=0; delay_ms(200); FM=1; }FM=1;Delay(500); /** NAME:1602.H* WRITER:Viter* INTR:8linesLCD1602module* TIME:2012.08.17* */#include<reg52.h>#definelcd_dataP0#defineucharunsignedchar#defineuintunsignedintsbitRS=P2^0;sbitRW=P2^1;sbitEN=P2^2;voidlcd_delay(uchari)//延时{ucharj;for(;i>0;i--){for(j=0;j<121;j++);}}/*voidcheck_busy(void){ do { EN=0; RS=0; RW=1; lcd_data=0xff; EN=1; }while(lcd_data&0x80)}*/voidwrite_com(ucharcom) //向液晶屏写指令{ RS=0; lcd_data=com;// lcd_delay(5); EN=1; lcd_delay(3); EN=0;}voidwrite_data(ucharx) //向液晶屏写数据{ RS=1; lcd_data=x;// lcd_delay(5); EN=1; lcd_delay(3); EN=0;}voidlcd_init(void) //液晶屏初始化{ RW=0; EN=0; write_com(0x38); //8线显示模式,双行,5*7。// write_com(0x38); write_com(0x0c); //开显示,无光标,光标不闪烁。//write_com(0x07); //开显示,有光标,光标闪烁。 write_com(0x06); //输入模式,写入新数据光标右移,屏幕不动。// write_com(0x07); //输入模式,写入数据光标右移,屏幕右移。 write_com(0x01); //清屏。 lcd_delay(200);} voidaddress(uchara,ucharb){ if(a==1) write_com(0x80+b); else write_com(0x80+0x40+b); }voiddis_str(uchara,ucharb,ucharshuzu[])//显示数组{ chari=0; address(a,b); while(shuzu[i]!='\0') { write_data(shuzu[i]); i++; lcd_delay(5); } lcd_delay(100);}/*voiddis_ch(chara,charb,ucharx)//显示数字和单个字符{ address(a,b); if(x>=0&&x<=9)write_data(x+0x30); elsewrite_data(x);}*/ #include<reg52.h>/*定义DS18B20数据线*/sbitDS=P3^6;voidtmpDelay(intnum)//延时函数{// unsignedchari; while(num--);// for(i=0;i<2;i++);}voidInit_DS18B20(void)//初始化ds1820{ unsignedcharx=0; DS=1;//DS复位 tmpDelay(8);//稍做延时 DS=0;//单片机将DS拉低 tmpDelay(80);//精确延时大于480us DS=1;//拉高总

温馨提示

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

评论

0/150

提交评论