毕业设计(论文)-基于AT89C51温湿度设计与仿真.doc_第1页
毕业设计(论文)-基于AT89C51温湿度设计与仿真.doc_第2页
毕业设计(论文)-基于AT89C51温湿度设计与仿真.doc_第3页
毕业设计(论文)-基于AT89C51温湿度设计与仿真.doc_第4页
毕业设计(论文)-基于AT89C51温湿度设计与仿真.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

电子信息工程系毕业论文江阴职业技术学院毕业论文课题:基于at89c51温湿度设计与仿真专 业 电子信息工程 学生姓名 班 级 09电子1班 学 号 指导教师 完成日期2011年 12月 26日 摘 要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计论述了一种以at89c51单片机为主控制单元,以ds18b20为温度传感器的温度控制系统。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括at89c51单片机,测温电路、lcd液晶显示电路等。abstractalong with the computer measurement and control technology of the rapid development and wide application, based on single chip temperature gathering and control system development and application greatly improve the production of temperature in life level of control. this design at89c51 describes a kind of mainly by mcu control unit, for temperature sensor ds18b20temperature control system. the control system can real-time storage temperature data and record related to the current time. system design related hardware circuit and related applications. at89c51 microcontroller hardware circuit include temperature detection circuit system, and lcd display circuit etc.目 录摘 要iabstracti目 录ii第一章 绪论11.1课题研究的背景11.2课题研究的目的和意义1第二章 总体方案22.1温度传感器的选择22.2显示输出的选择32.3系统总体框图3第三章53.1总方案图532主控模块53.3温度传感器电路63.4 lcd显示电路93.5hs1101湿度11第四章134.1主程序134.2温度采集流程134.3温度计算程序144.4 lcd显示154.4 湿度设计程序17第五章 系统调试185.1 硬件调试185.2 软件调试195.3 联机调试195.4 调试心得20致 谢21参考资料22附录23附录23附录23- iii -第一章 绪论1.1课题研究的背景温湿度的控制对于很多都有很重要的意义,比如食品安全,药品安全已经越来越得到人们的重视,各职能部门也纷纷的策划应对措施,完善检验体系,以确保人民的生命安全。温湿度对食品安全,药品安全来讲是一个非常重要的参数(glp,gmp认证),由于温度、湿度的检测不利,很容易导致食品的变质,药品的损坏。根据haccp体系的要求,原材料采购接受时除了检验食品的保质期、外包装、食品外观等外,还必须对食品运输过程中的温湿度的连续性进行严格检查。不仅在医药,制药业,食品行业,其他行业也是如此一切的一切都离不开温湿度的控制,倘若控制不当,后果严重。1.2课题研究的目的和意义随着社会的发展,温度的测量及控制变得越来越重要。本文采用单片机at89c51设计了温度实时测量及控制系统。单片机at89c51 能够根据温度传感器ds18b20 所采集的温度在液晶屏上实时显示,所有温度数据均通过液晶显示器lcd显示出来。第二章 总体方案传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始被测信号进行准确可靠的捕捉和转换,一切准确的测量和控制都将无法实现。工业生产过程的自动化测量和控制,几乎主要依靠各种传感器来检测和控制生产过程中的各种参量,使设备和系统正常运行在最佳状态,从而保证生产的高效率和高质量。2.1温度传感器的选择方案一:采用热电阻温度传感器。热电阻是利用导体的电阻随温度变化的特性制成的测温元件。现应用较多的有铂、铜、镍等热电阻。其主要的特点为精度高、测量范围大、便于远距离测量。铂的物理、化学性能极稳定,耐氧化能力强,易提纯,复制性好,工业性好,电阻率较高,因此,铂电阻用于工业检测中高精密测温和温度标准。缺点是价格贵,温度系数小,受到磁场影响大,在还原介质中易被玷污变脆。按iec标准测温范围-200650,百度电阻比w(100)=1.3850时,r0为100和10,其允许的测量误差a级为(0.15+0.002 |t|),b级为(0.3+0.005 |t|)。铜电阻的温度系数比铂电阻大,价格低,也易于提纯和加工;但其电阻率小,在腐蚀性介质中使用稳定性差。在工业中用于-50180测温。图21 ad590方案二:采用ad590,它的测温范围在-55+150之间,而且精度高。m档在测温范围内非线形误差为0.3。ad590可以承受44v正向电压和20v反向电压,因而器件反接也不会损坏。使用可靠。它只需直流电源就能工作,而且,无需进行线性校正,所以使用也非常方便,借口也很简单。作为电流输出型传感器的一个特点是,和电压输出型相比,它有很强的抗外界干扰能力。ad590的测量信号可远传百余米。图22 引脚图方案三:采用ds18b20, 它的测温范围在-55+128之间,而且精度高。电压范围在3.05.5v,在寄生电源方式下可由数据线供电。ds18b20是一种集成数字温度传感器,采用单总线与单片机连接即可实现温度的测量。ds18b20是美国dallas半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供单片机处理,可实现温度的精度测量与控制。综合比较方案一与方案二和方案三,方案一和方案二价格都比较贵,方案三相先对而言便宜点,并且方案三的性能指标也适合设计系统的要求,所以方案三更为适合于本设计系统对于温度传感器的选择。2.2显示输出的选择方案一:采用数码管显示。该方案实现比较简单,而且有静态和动态两种方式可供选择,程序编写简单,但只能显示数字,不能显示汉字,而且功耗较大,难以满足低功耗地的要求。方案二:采用集成的lcd液晶显示模块进行显示,不仅可以实现一般的点阵图形显示功能,还可以实现对汉字、ascii码的同屏显示,以更好的完成人机互动,功耗也比数码管显示要低。综上所述我们选择方案二。2.3系统总体框图 系统主要包括单片机控制模块,温度采集模块,温度显示模块等三大模块组成。图2-3系统总体框图第三章3.1总方案图温度是一个十分重要的物理量,对它的测量、监控及示警有着十分重要的意义。本文主要从三个方面介绍温度检测报警仪的硬件设计,即由at89c51控制的主控模块、ds18b20的温度传感模块及lcd16b20的液晶显示模块。图3-1总方案图32主控模块图3-2管脚图at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory),高性能cmos8位微处理器,俗称单片机。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。功能特性概述:at89c51提供以下标准功能4k字节flash闪速存储器,128字节内部ram,32个i/o口线,2个16位定时器、计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,at89c51降至0hz的静态逻辑操作,并支持两种可选的节电工作模式。空闲方式体制cpu的工作,但允许ram,定时、计数器,串行通信口及中断系统继续工作。掉线方式保存ram中得内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。3.3温度传感器电路采用一线制数字温度传感器ds18b20来作为本课题的温度传感器。传感器输出信号进4.7k的上拉电阻直接接到单片机的p1.0引脚上。图3-3 温度传感器接口图3-4 ds18b20的封装形式ds18b20数字温度计采用了1-wire,即单总线器件,具有线路简单,体积小的特点。图3-5内部框图ds18b20温度传感器是美国达拉斯(dallas)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、a/d转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件ds18b20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(1)系统的特性:测温范围为-55+128 ,测温精度为士0.5;温度转换精度912位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支ds18b20的体积与普通三极管相差无几,价格只有十元人民币左右。(3)系统复杂度:由于ds18b20是单总线器件,微处理器与其接口时仅需占用1个i/o端口且一条总线上可以挂接几十个ds18b20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试.ds18b20的复位时序图:由上位机拉低总线480-960us的时间然后拉高总线,等待15-60us的时间,如果在总线上有ds18b20这个器件,并且将总线拉低60-240us的话,就证明该器件复位成功,已经准备好发送或接受数据了。图3-6复位时序图ds18b20的写时序图:ds18b20的写时序分为写0时序和写1时序两个过程。ds18b20写0时序和写1时序的要求不同,当要写0时序是,单总线要被拉低至少60us,保证ds18b20能够在15us45us之间能够正确地采样i/o总线上的低电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。图3-7写时序图图3-6复位时序图:ds18b20的读时序分为读0时序和读1时序两个过程。对于ds18b20的读时序是从主机把单总线拉低之后,在15秒之内就得释放单总线,让ds18b20把数据传输到单总线上。ds18b20完成一个读时序过程,至少需要60us。图3-8读时序图3.4 lcd显示电路本课题设计的温度控制系统是采用液晶屏16*2作为显示模块。lcm1602 是2 行16 个字符的字符型lcd 显示器,它由32 个字符点阵块组成,每个字符点阵块由57 或510 个点阵组成,可以显示ascii 码表中的所有可视的字符。它内置了字符产生器rom (character generator rom,cgrom)、 字符产生器ram (character generator ram, cgram)和显示数据ram(data display ram, ddram)。cgrom 中内置了192个常用字符的字模,cgram 包含8 个字节的ram,可存放用户自定义的字符,ddram 就是用来寄存待显示的字符代码。lcd1602液晶是一个非常方便使用的显示设备,以其微功耗、小体积、使用灵活等诸多优点在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。液晶有字符型和点阵型之分,一般点阵型液晶显示在这个项目里面使用的lcd1602液晶,可以同时显示16x02即32个字符。该液晶屏共有16个引脚,其中rb0rb7是数据/命令传输口,15、16脚blk和bla是背光电源和地,1、2脚分别是vss和vcc,液晶显示的地和电源,3脚vo是液晶的对比度调节引脚,所以接入变阻器r2后可以实现对液晶显示对比度的调节,4、5、6脚分别是rs、rw、ea端口,也是控制端口,所有的对液晶的读写数据,写命令等操作都需要这三个端口来控制。数据、命令选择端口rs与单片机的p0.5脚连接,读、写选择端口与单片机的p0.6脚连接,使能端ea与单片机的p0.7脚连接,数据口rb0rb7是与单片机的p2.0p2.7口相连接,数据并行传输。对该液晶是操作是相对简单的,它是一个静态显示设备,不需要为了维持它的显示不断的扫描,只需再更改显示内容时对它送数据。图3-9lcd显示连接图编号符号引脚编号符号引脚1vss电源地9rb2data i/o2vdd电源正极10rb3data i/o3vl液晶显示偏压11rb4data i/o4rs数据/命令12rb5data i/o5r/w写/度13rb6data i/o6e使能信号14rb7data i/o7rb0data i/o15bla背光源正极8rb1data i/o16blk背光源负极1602接口信号说明3.5hs1101湿度图3-10lcd接线图hs1101是一个外观像三极管的元器件,上图该电路是典型的非稳态设计为555。该hs1100/hs1101,作为变量使用。电容器,连接到触发和thres引脚。引脚7用作短路引脚电阻r7。该hs1100/hs1101等效电容充电,通过r6和r7的阈值电压(约0.67vcc)和只通过r6放电触发水平(约0.33vcc)是缩短了7针,因为r7的地面。由于充电和放电运行的传感器,通过不同的电阻,r6和r7的,占空比取决于提供一个输出的占空比接近50,r7的应该是非常低的比r6的但从来没有在一个最低值。电阻r3是短路保护。 555必须是cmos版本r9的不平衡内部温度补偿计划555为了引进一个温度系数相匹配的hs1100/hs1101温度系数。在所有情况下,r9应该是1电阻与温度系数为100ppm一个像所有最高其他r - c的计时器电阻。因为在电路中设计没用到hs1101上面那个电路所以不在介绍的详细,我用替代品脉冲发生器来设计,效果是一样的。湿度0102030405060708090100频率73517224710069766853672866006468633061866013由上表和图曲线易得湿度和频率很好地满足线性关系,所以通过上表或图2可以得到湿度和频率的数学关系近似满足如下方程:rh=588-0.8* frequency(6330frequency7350)rh=586-0.8* frequency(6075frequency6330)第四章图4-1 主流程4.1主程序系统的软件主要是采用c语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示等模块。用的是循环查询方式,来显示温度,主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量的当前温度值并负责调用各子程序。4.2温度采集流程读出温度子程序的主要功能包括初始化,判断ds18b20是否存在,若存在则进行一系列的读操作,不存在则返回。图4-2 温度采集流程ds18b20的基本操作流程如下:复位ds18b20发skip rom命令(0xcc)发温度转换命令(0x44)复位ds18b20发skip rom命令(0xcc)发读取温度命令(0xbe)读取温度低字节读取温度高字节4.3温度计算程序计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定。图4-3 计算温度流程图4.4 lcd显示液晶显示模块的功能实现,主要是向液晶驱动芯片发送指令完成的,包括清屏,初始化,写汉字,写字母等指令,格式虽然各不相同,但都是在执行写入指令操作,包括所有要进行的操作的指令字符,输入代码的起始位置,输入的内容等,所以最重要的操作就是写操作,其次是液晶初始化操作。lcd初始化void lcd_initial()图4-4显示流程图lcden=0;lcd_write(lcd_command,0x38);lcd_write(lcd_command,0x38);lcd_setdisplay(lcd_show|lcd_no_cursor);lcd_write(lcd_command,lcd_clear_screen);lcd_setinput(lcd_ac_up|lcd_no_move); lcd写命令#define lcd_command0 #define lcd_data1 #define lcd_clear_screen0x01 #define lcd_homing 0x02 void lcd_write(bit style, unsigned char input)lcden=0;lcdrs=style;lcdrw=0;_nop_();dbport=input;_nop_(); lcden=1;_nop_();lcden=0;_nop_();lcd_wait();4.4 湿度设计程序第五章 系统调试5.1 硬件调试硬件调试主要通过proteus来仿真。检测ds18b20是否正常工作要使ds18b20正常工作,我们必须正确的按照规范来写延时、初始化、写时序,读时序的程序。最重要的就是把好ds18b20个部分的工作延时时间,才能是温度传感器正常工作。1602出现故障在proteus仿真时,如果1602 d0-d7接的p0口,则需要接上拉电阻。 检测1602是否正常工作图5-1 16025.2 软件调试软件调试主要通过keil进行调试,首先对编写好的程序进行编译,看程序是否有语法错误和逻辑错误,编译的过程也是修改程序种错误的过程。并且对程序的完善。温度显示的数据与测到的温度有误差类问题的出现基本上都是由于十六进制数转化到十进制数的计算方法有问题。通过在程序中设置断点,然后按f11单步运行程序,查看寄存器中的数值与温度传感器的数值是否一样,从而找出是哪个语句的错误。对于设计温度监测中的延时问题,我们设计的延时时间一定要温度传感器ds18b20所规定的延时范围内,这样温度传感器才能正常的工作。所以要控制好时间的延时,这就要在程序中做好延时的调试,以保证时间准确。5.3 联机调试keil调试图5-2keil调试仿真图图5-3 仿真图5.4 调试心得调试是整个温度监控系统最关键的一步,通过调试,可以发现很多问题。也体会了调试过程不是一件容易的事,从找到问题到解决问题都需要很多的精力,花费自己很多的时间。一个程序出现错误有时就很难找出错误,一旦自己找不出错误,这时就可以去请教老师或者同学,有时同学或老师的一句话就可能帮解决自己解决不了的错误。调试中遇到了不少的难事。首先就是程序的规范,程序出了错才知道规范的书写程序有多好,不然出错了很难找到原因。这些都是我们需要注意的致 谢课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,在同学的帮助下,终于游逆而解。非常感谢!现在即将挥别我的学校、老师、同学,还有我三年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有我大学生活的丰富多彩,绚丽多姿!0参考资料1单片机应用程序设计技术 周航慈 著 北京航空航天大学出版社 2张洪润 单片机应用技术教程 北京:清华大学出版社,19973单片机应用程序设计技术 周航慈 著 北京航空航天大学出版社4李 钢.1-wire总线数字温度传感器ds18b20原理及应用.现代电子技术j,20055陈跃东.ds18b20集成温度传感器原理与应用j.安徽机电学院学报,20026胡伟.单片机c程序设计及应用实例 m. 北京:人民邮电出版社,20037李广弟.单片机基础m. 北京:北京航空航天大学出版社,19948 jonathan d. nash, douglas r. caldwell, michael j. zelman, and james n. moum a thermocouple probe for high-speed temperature measurement in the ocean. manuscript received 18 august 1997, in final form 9 november 1998:1447-1449.9 using thermocouple sensors cryogenic control systems, inc. /ccapplnotes/thermoapps.pdf.附录附录附录#include#include #define uint unsigned int#define uchar unsigned charsbit rs=p05;sbit rw=p06;sbit en=p07;sbit led=p30;sbit dq=p10;/ 18b20总线unsigned char dat10=0;/温度unsigned char shuju19=0; /湿度uchar code table119=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x54,0x45,0x4d,0x50,0x2d,0x2e,0x20,0x47,0x44;/温度调用uchar code table216=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x53,0x48,0x49,0x25,0x2e,0x20;/湿度调用/*1602d调用函数*/void write_com(uchar com);void write_shuju(uchar shuju);void init();void delay(uchar z);/*18b20调用函数*/unsigned char reset(void); /18b20初始化/void write(uchar dat); /18b20写时序unsigned char read(void); /18b20读时序 void readtemperature(void); /18b20读二进制16位温度void yanshi(unsigned int us);/*hs1101调用函数*/void readfrequency(void);/读频率函数/bit minrange=0;/湿度下限标志位/bit maxrange=0;/湿度上限标志位/bit t0over=0;/定时器结束标记unsigned char w,x,y;/*主函数*/void main() init();while(1)readtemperature();write_com(0x80);write_shuju(table1dat0);write_com(0x81);write_shuju(table1dat1);write_com(0x82);write_shuju(table1dat2);write_com(0x83);write_shuju(table1dat3);write_com(0x84);write_shuju(table1dat4);write_com(0x85);write_shuju(table1dat5);write_com(0x86);write_shuju(table1dat6);write_com(0x87);write_shuju(table1dat7);write_com(0x88);write_shuju(table1dat8);write_com(0x89);write_shuju(table1dat9);readfrequency();write_com(0x80+0x40);write_shuju(table2shuju10);write_com(0x80+0x41);write_shuju(table2shuju11);write_com(0x80+0x42);write_shuju(table2shuju12);write_com(0x80+0x43);write_shuju(table2shuju13);write_com(0x80+0x44);write_shuju(table2shuju14);write_com(0x80+0x45);write_shuju(table2shuju15);write_com(0x80+0x46);write_shuju(table2shuju16);write_com(0x80+0x47);write_shuju(table2shuju17);write_com(0x80+0x48);write_shuju(table2shuju18);write_com(0x80+0x49); /*1602延时程序*/void delay(uchar z)uint a,b;for(a=0;az;a+)for(b=0;b122;b+);/*1602初始化*/void init()en=0;write_com(0x38);/设置为8位并行,显示2行,5*7点阵显示write_com(0x0c);/设置显示开 无光标 光标不闪烁write_com(0x01); /清屏指令write_com(0x80); /*1602写指令*/void write_com(uchar com)rs=0;rw=0;p2=com;delay(5);en=1;en=0;/*1602写数据*/void write_shuju(uchar shuju)rs=1;rw=0;p2=shuju;delay(5);en=1;en=0;/*18b20微秒延时*/void yanshi(unsigned int us)int s;for(s=0;s0;i-)dq=

温馨提示

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

评论

0/150

提交评论