ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:79.10KB ,
资源ID:10210231      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10210231.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(恒温箱设计报告.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

恒温箱设计报告.docx

1、恒温箱设计报告(计算机控制系统设计报告; 设计名称: 恒温箱温度计算机控制系统设计 姓 名: 陈 卫 东 学 号: 】班 级: 自动化0903班 学 院: 信息工程学院 任课教师: 聂 诗 良 基于单片机的恒温箱控制系统设计 【摘要】 本课程设计是基于AT89C52单片机的恒温箱控制系统,本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C52作为主控芯片,1602液晶显示器作为显示输出,独立按键作为键盘设置输入,并用声光报警实现对温度的实时测量与恒定控制。、【关键词】 单片机;温度传感器;恒温;声光报警。一、本课题设计要求(1)温度采

2、集传感器采用热电阻或热电偶,或一体化数字温度传感器DS18B20。(2)控制灯泡亮度或发热量,采用继电器开关控制或用可控硅平滑控制。(3)采用单片机或PLC作为控制器。(4)采用LED或LCD或PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。(5)采用自制按键或PC机的键盘作为温度给定值输入。(6)恒温箱实际温度达到给定值时(误差要求1)需声光提示,声音时延5秒后停止。(7)恒温箱最高温度50。二、总体方案设计系统整体框图如下图: 图1 系统结构框图1)温度传感器方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个

3、电阻变化的分压值,并进行A/D转换,此设计方案需要A/D转换电路,增加了硬件成本而且热敏电阻的感温特性曲线并不是严格性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器,而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低了硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高,测量范围广等优点。-综合以上两种方案,本设计采用第二种方案,利用数字温度计DS18B20作为温度传感器。2)显示部分方案一:温度的显示可以用数码管,但数码管只能显示简单的数字,它有电路复杂,占用资源较多,显示信息少等缺点。方案二:1602液晶也

4、叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。显示字母和数字比较方便,控制简单,成本较低。我们设计的系统需要显示更多的信息,所以考虑显示功能更好的液晶显示,要求能显示更多的数据,增强显示信息的可读性,看起来更方便。综合以上两种方案,本设计采用方案二,用1602液晶显示器来显示数据。3)输出控制方案一:采用继电器,易于控制,且实行比较简单,但强电和弱电不能很好的隔离,抗干扰能力极差。方案二:采用光电藕合器,控制信号与输出信号可以很好的隔离,增强了系统的安全性和抗干扰能力。$综合以上两种方案,本设计采用光电藕合器控制负载工作。三、硬件电路设计及工作原理1、系统功能及

5、工作流程介绍根据恒温箱控制器的功能要求,并结合对51系列单片机的资源分析,即单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。所以采用AT89C52作为电路系统的控制核心。恒温箱控制器的总体布局如图1所示。按键将设置好的温度值传给单片机,通过温度显示模块显示出来。初始温度设置好后,单片机开启输出控制模块,使电热器开始加热,同时将从数字温度传感器DS18B20测量到的温度值实时的显示出来,当加热到设定温度值时,单片机控制声光报警模块,发出声光报警,当超过设置温度关闭加热器。当自然冷却到设定温度以下时,单片机再次启动加热器,如此循环反复,以达到恒温控制的目的。系统结构框图如图1所示,系统

6、基本硬件电路图如图2所示。 | 图2 基本硬件电路图2、系统硬件设计(1)DS18B20测温电路DS18B20数字温度计是Dallas公司生产的1Wire器件,即单总线器件。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,具有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。因此用它来组成一个测温系统,具有电路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。目前已被众多行业进行广泛的运用(锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。通过编程,DS18B20可以实现912位的温度读数。信息经过

7、单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。每片DS18B20在出厂时都设有唯一的产品序列号,因此多个DS18B20可以挂接于同一条单线总线上,这允许在许多不同的地方放置温度传感器,特别适合于构成多点温度测控系统由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。1Wire总线支持一主多从式结构

8、,硬件上需外接上拉电阻。当一方完成数据通信需要释放总线时,只需将总线置高点平即可;若需要获得总线进行通信时则要监视总线是否空闲,若空闲,则置低电平获得总线控制权。 图3 DS18B20测温电路(2)输出控制电路加热电路中采用MOC3023的目的是实现强电与弱电的隔离,其在电路中的工作原理是单片机根据传感器和设定开关输入的控制指令,控制电器的电源通断。BTA16是型小型塑封双向晶闸管,当电源控制电路的输出管脚送出的开关控制指令为高电平,MOC3023截止,BTA16截止,电器被关闭;当电源控制电路送出的开关控制指令为低电平,MOC3023导通,BTA16导通,电器被打开。R4是BTA16的保护电

9、路。 图4 光耦控制输出(3)显示电路1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。显示电路采用LCD1602液晶显示,如图(7)所示,图中只画出了其相应的接口,3脚用于调节LCD1602的背光,4、5、6为LCD1602的控制口,用于控制其写入或是读出指令,7至14脚为LCD1602的数据口,将数传送到LCD1602中。 图5 LCD1602显示电路LCD1602的特性:+5V电压,对比度可调;内含复位电路;提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多

10、种功能;有80字节显示数据存储器DDRAM;内建有160个5X7点阵的字型的字符发生器CGROM,8个可由用户自定义的5X7的字符发生器CGRAM;基本操作时序: 读状态:输入:RS=L,RW=H,E=H;输出:DB0DB7=状态字 ;写指令:输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 ;输出:无。读数据:输入:RS=H,RW=H,E=H;输出:DB0DB7=数据 ;写数据:输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 ;输出:无。LCD1602的各种指令不再一一说明。(4)温度越线报警电路)报警电路如图8所示,该电路采用一个小功率三极管Q1驱动蜂鸣器BEL

11、L,当单片机接收到超额温度信号或危险信号时,输出脚BELL输出高点平,Q1导通,致使蜂鸣器BELL得电工作,发出报警声。同时,电路中的发光二极管指示出电路的工作状态。 图5 报警电路 四、系统的应用软件设计1、软件描述在软件设计时,必须先弄清恒温控制系统的操作过程和工作过程。停止加热,当温度下降到下限(小于设定值)时再自动启动加热,这样不断的循环,使温度保持在设定范围之内。启动加热以后就不能再设定温加热器开始时处于停止状态,首先设定温度,显示器显示温度,温度设定后则可以启动加热。温度检测系统不断检测并显示系统中的实时温度,当达到设定值后度,因为温度的设定可以根据实验要求改变。若要改变设定的温度

12、,可以按设置键再重复上述过程。根据以上对操作和工作过程的分析,程序应分为两个阶段:一是通电或复位后到启动加热,程序主要是按键设定、显示器显示设定温度;二是检测并显示系统的实时温度,并根据检测的结果控制电热器,这时系统不接收键盘的输入。因此,程序可以分为以下几个功能模块:温度设定和启动;显示;温度检测;温度控制以及报警。(1)键盘管理模块¥当通电以后,系统进入键盘管理状态,单片机只接收设定温度和启动。当检测到有键闭合时先去除抖动,这里采用软件延时的方法,延时一段时间后,再确定是否有键闭合,然后将设定好的值送入预置温度数据区,并调用温度合法检测报警程序,当设定温度超过最大值时就会报警,最后当启动键

13、闭合时启动加热。键盘设定:用于温度设定。共两个按键。 KEY1(): 设置温度“+”。KEY2(): 设置温度“-”。 (2)显示模块显示子程序的功能是将缓冲区的二进制数据先转换成3个BCD码,再将其分别存入百位、十位、个位3个显示缓冲区,送往串行口,利用单片机的P0口进行扫描,让数据动态的在1602上显示出来,可显示设置温度和测量温度。(3)控制模块温度控制子程序流程如图7所示,将当前温度与设定好的温度比较,当当前温度小于设定温度时,开启电热器;当当前温度大于设定温度时,关闭电热器;当二者相等时,电热器保持这一状态。图6 控制模块程序流程(4)温度报警模块根据设计要求,当检测到当前温度值高于

14、设定温度值时报警,报警的同时关闭电热器。为了防止误报,设置了报警允许标志,只有在允许报警的情况下,温度值高于设定温度值时才报警。(5)主程序和中断服务程序流程主程序采用中断嵌套方式设计,各功能模块可直接调用。主程序完成系统的初始化,温度预置及其合法性检测,预置温度的显示及定时器0设置。定时器0中断服务子程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动温度转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出控制脉冲等)。 图7 主程序流程图 图8 中断服务程序流程图(五、系统调试与仿真1、硬件调试时,可先检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。然后

15、用万用表检测,检查无误后,可通电检查 LCD 液晶显示器亮度情况,一般情况下取背光电压为 4 即可得到满意的效果,再依次检查各部分结构安装是否牢固。 2、软件调试是在proteus编译器下进行,源程序编译及仿真调试应分段或以子程序为单位逐个进行,最后结合硬件实时调试。 子程序调试包括: 1).LCD1602显示程序; 2).延时函数子程序; 3).DS18B20读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序。六、设计心得|这次课程设计是对过去所学的知识的一次回顾与巩固,也是一次特别的实践能力。通过该次课程设计,不但培养了我们实践动手的能力,而且也学到了很多东西。在制作课

16、程设计的这几天当中,我首次体会到了生活的艰辛,也培养了吃苦耐劳的精神,在课程设计当中,整天都与电路和程序打交道,的确是非常无聊和痛苦的,但是最终等到我发泄完后,冷静的想想,如果我现在连这一关都过不了,那么我如何的走上社会,如何的面对社会中各种各样的更加复杂更加繁琐的事情,我必须做好,不仅仅只是为了得到好的分数,也是为了我今后踏入社会打下基础。看到完成的课程设计时,我知道还有一些不足,很多地方需要更进一步的改进,但是我仍然很高兴,因为我尽心尽力的将它全部都完成了,我尽到自己最大的努力。虽然还是有很多不懂之处,但是在同学的帮助下也弄懂了不少。【参考文献】【1】 郭天祥,新概念51单片机c语言教程,

17、电子工业出版社,2009【2】 陈跃东,DS18B20集成温度传感器原理与应用J,安徽教育出版社,2002(4)5-23【3】 李广弟,单片机基础M,北京航空航天大学出版社,1994,1-56【4】 谭浩强,C程序设计(第二版)M,清华大学出版社,2003 【5】 付家才,单片机控制工程实践技术M,化学工业出版社,2004附录一 源程序代码#include #include#define uchar unsigned char #define uint unsigned int /uchar i;long int set; /设置温度long int num;long int DeltaVal

18、ue = 0;long int Sum = 0;int nP = 300;int nI =1;long int angle = 3000;int flag;sbit lcdrs=P35; /数据命令选择控制sbit lcden=P34; /使能信号sbit dula=P26; /申明U1锁存器的锁存端sbit wela=P27; /申明U2锁存器的锁存端uchar code t0=set: C ;uchar code t1=Act: C ;uchar code wendu=09; /利用一个温度表解决温度显示乱码】sbit key1=P37;sbit key2=P36; sbit DS=P20

19、; /定义温度DS18B20接口,详情见原理图sbit DEK=P21; / 控制脚sbit LED=P10; /光sbit bell=P23; /声 void delay_key(uint aa) uint m,n; for(m=aa;m0;m-) for(n=110;n0;n-); void delay(uchar z) uchar x,y; for(x=1000;x1;x-)! for(y=z;y1;y-);void init_timer1() TMOD |= 0x10; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 TH1=(65535-angle)/256;

20、/给定初值,这里使用定时器最大值从0开始计数一直到65535溢出。 TL1=(65535-angle)%256; EA=1; /总中断打开 ET1=1; /定时器T1允许中断 TR1=1; /定时器T1开始工作void init_wbzd() /外部中断0 DEK = 1; EA=1; /首先开启总中断 EX0=1; /开启外部中断 0 IT0=1; /设置成下降沿触发,0为低电平触发void Get_angle(long int Expect,long int Feedback,int Kp,int Ki) long int temp_angle; DeltaValue = Expect -

21、 Feedback; Sum += DeltaValue; temp_angle = Kp*DeltaValue + Ki*Sum;) if(temp_angle = 8000) temp_angle = 8000; angle = 10000 - temp_angle;void write_com(uchar com) /写指令 lcdrs=0; P0=com; ; delay(5); lcden=1; delay(5); lcden=0;void write_date(uchar date) /写数据 lcdrs=1;- P0=date; delay(5); lcden=1; delay(

22、5); lcden=0;void init_lcd()¥ dula=0; wela=0; lcden=0; /lcdrw=0; write_com(0x38); write_com(0x01); write_com(0x0c); write_com(0x06); write_com(0x80); for(i=0;i16;i+) write_date(t0i); delay(0); write_com(0x80+0x40); for(i=0;i0;i-) DS = 0; / 给脉冲信号 dat=1; DS = 1; / 给脉冲信号 if(DS)。 dat|=0x80; tmpDelay(4);

23、return(dat);void WriteOneChar(unsigned char dat)/写一个字节 unsigned char i=0;! for (i=8; i0; i-) DS = 0; DS = dat&0x01; tmpDelay(5); DS = 1; dat=1; unsigned int Readtemp()/读取温度 unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20();$ WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneC

24、har(0x44); / 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器 a=ReadOneChar(); /连续读两个字节数据 /读低8位 b=ReadOneChar(); /读高8位 t=b;; tset) flag=1; DEK =1; else if(numset) flag=1; DEK=0; else flag=0; bell=0; LED=0; delay_key(500); bell=1; LED=1; Get_angle(set,num,nP,nI); key(); void key_scan() interrupt 0 /外部中断 0 0的优先级最高,AT89C52有6个中断 / D

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2