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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

温度控制器张婷.docx

1、温度控制器张婷滁州职业技术学院信息工程系2015届应用电子技术专业毕业论文姓 名: 张 婷 班 级: 12级应用电子(1)班 设计课题: 温度控制器 指导教师: 姚聪 2014年 11 月 28 日目 录目 录 i摘 要 3第一章 概述 11.1 系统功能要求 11.2 系统设计方案 11.2.1电阻加热模块 21.2.2显示模块 21.2.3主控模块 21.2.4电源模块 21.2.5键盘输入模块 2第二章 硬件设计 32.1 功率电阻加热模块 32.1.1设计方案 32.1.2功率电阻器介绍 32.1.3功率电阻加热原理 32.2 显示模块 42.2.1设计方案 42.2.2 1602液晶

2、显示器介绍1 42.2.3 1602液晶显示器原理 52.3 主控模块 52.3.1设计方案 52.3.2 STC89C52单片机介绍2 62.3.3 STC89C52RC单片机原理 62.4 总体硬件设计 72.4.1总体设计方案 72.4.2完整硬件电路图 8第三章 软件设计 93.1 1602液晶屏显示驱动模块 93.1.1软件设计方案 93.1.2软件流程 93.1.3软件代码 93.2 DS18B20测温模块 123.2.1软件设计方案 123.2.2软件流程图 123.2.3软件代码3 133.3 功率电阻加热模块 163.3.1软件设计方案 163.3.2软件流程图 173.3.

3、3软件代码 183.4 软件整体流程 273.4.1软件整体设计方案 273.4.2主函数程序结构 27第四章 系统结果 295.1温度控制器性能介绍 295.2温度控制器结果分析 29致 谢 31参考文献 32摘 要随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向;特别是近年来,温度控制系统已应用到生活的各个方面,所以说温度控制一直是一个热门领域,是与人们息息相关的。温度是科学技术中一个基本物理量,在工业生产等许多领域,温度常常是表征对象和过度状态的重要物理量。各个工程应用领域对温度的要求越来越高。在众多的生产过程中,对温度的控制效果直接影响到了产品

4、的质量以及成本等问题。因此及时、准确的得到温度信息并进行可靠、准确、快速的控制,同时兼顾到系统灵活性、方便性是一个非常重要的环节。本组设计的温度控制器通过温度传感器DS18B20对电阻加热器的温度进行检测,其中以8051内核的STC89C52单片机为核心部件,外加温度采集电路、液晶显示电路、加热控制电路等,以较容易控制的功率电阻作为加热器件并以PWM波控制加热程度。本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到用户需要的温度,并使其恒定在这一温度。通过优良算法和温度补偿,在不减少功能的前提下有效降低了硬件成本,系统操控简便、灵活。 关键词:温度,单片机,PWM波第一章 概述当

5、电流通过电阻时,电流做功而消耗电能,产生了热量,这种现象叫做电流的热效应。实践证明,电流通过导体所产生的热量和电流的平方,导体本身的电阻值以及电流通过的时间成正比。这是英国科学家焦耳和俄国科学家楞次得出的结论,被人称作焦耳定律、楞次定律。本组设计的温度控制器最基本的原理就是基于焦耳定律而实现的,通过单片机对流过电阻的电流进行控制,来控制电阻加热的温度,这就是温度控制器的含义。1.1 系统功能要求(1)使用功率电阻作为加热装置;(2)使用DS18B20测量温度;(3)通过单片机的控制使其加热装置控制在某一恒定温度;(4)可以显示实时温度和设定的温度。1.2 系统设计方案根据系统要求,本次设计的思

6、路是将系统分为电源模块、主控模块、加热模块、显示模块和输入控制模块5个部分(如图1-1所示)进行分步设计。图1-1系统模块框图温度控制器,核心内容就是温度和控制两个部分。我们用单片机做为主控芯片,功率电阻为加热器件,实现温度的恒定控制。在实际生活领域,温度控制的应用还是比较宽泛的,小到恒温的电烙铁,大到电饭锅,无一不是主控器件对加热器件的温度控制,使加热装置能够很稳定的保持在某一温度上面,基本不变。而功率电阻能够发热,是因为电流的热效应,我们知道,任何材料都有其阻值,那么电流流过这个材料的时候,就会发热,这就是电流的热效应。我们通过控制流过功率电阻的电流大小,便可以控制电阻的温度。说到控制,这

7、个是由单片机来完成的,通过算法,我们可以改变单片机的输出信号,也就是PWM波,利用PWM波来控制电阻两端的电压,间接的控制了电阻上面流过的电流,也就是控制了电阻上面的温度,这就是我们本次设计的基本思想。1.2.1电阻加热模块加热模块用于实现本系统核心功能,是本次设计首先考虑的内容,加热模块的性能,直接决定了产品的总体性能。1.2.2显示模块显示模块是人际交换的重要平台之一,显示模块的好坏直接决定了用户的体验,所以选择什么样的显示器件也是很重要的。1.2.3主控模块主控模块是本次设计的核心器件,所以选择什么样的单片机更加实惠,性能也能胜任,也是硬件设计中所需要考虑的方面。1.2.4电源模块电源模

8、块是温度控制器的“心脏”部分,选择什么样的电源模块在整体上影响了产品的性能,温度控制器温度加热的速度和电源有直接关系,只有功率足够大,才能快速准确的达到设置的温度。1.2.5键盘输入模块在一件完整的产品中,键盘输入模块是必不可少,产品本身怎样才能知道用户想要什么,必然需要输入模块,输入模块和显示模块是人机交换和用户体验的两个方面,只有满足用户不断变化的需求,才能进一步提高用户体验,只有用户体验好,这个产品才会受到消费者的欢迎。而温度控制器关系到消费者生活的体验,必须添加输入控制模块。第二章 硬件设计2.1 功率电阻加热模块2.1.1设计方案功率电阻加热模块用于实现本系统核心功能,是本次设计首先

9、考虑的内容。方案一:使用市场上的线绕式陶瓷电阻,这个方案有很明显的优点,就是温度采样非常准确,因为是线绕式电阻,可以把温度传感器放在电阻器里面,这样测出来的温度近似等于电阻的实际温度,温度漂移和温度误差会很低,这样方便温度的控制。惟一的缺点就是在市场上不好买到。方案二:使用淘宝上的5R,25W的功率电阻。这个电阻比较大,外表的是金属外壳,在放置DS18B20的时候,也比较容易和电阻相贴近,这样测出来的温度也是比较准确的,但惟一的缺点也很明显,就是温度漂移大,误差大。经过比较,方案一的优点最好,但是买不到,所以只能退而求次,选择了方案二。2.1.2功率电阻器介绍功率电阻器,一般人第一次听到后觉得

10、很陌生,其实意思不难理解的。首先电阻是所有电子元件的一个特性,决定电子元件对电流阻碍作用的大小。对电流具有特定阻力值的电子元件称为电阻器;电阻器是由陶瓷体上镀上电阻层和缠绕电阻丝制成。回到我们的功率电阻器,任何电阻都有其功率,在设计电路中选择电阻的时候,就需要考虑到用什么样的电阻,这里就必须考虑到电阻的功率,其实在设计电路时,不仅仅电阻需要考虑功率,基本上所有元器件都需要考虑功率大小,功率电阻也是电阻,只是电阻的功率被大大提升了而已。常用电阻的功率在0.25W左右,本组设计的温度控制器的加热模块用到的电阻功率是25W,可以加热到很高的温度而不损坏电阻器,阻值是5R,既不大也不小,加热速度也容易

11、控制。2.1.3功率电阻加热原理(1)电阻加热就是利用电流的热效应,也就是焦耳定律来实现的。通过改变流过电阻上面的电流,进而能够准确的控制电阻的加热温度。电流的控制是由PWM波来实现的,单片机输出PWM波控制达林顿晶体管的导通和截止,这样就能控制电阻两端的电压,单片机输出的5V-PWM波可以直接通过晶体管的电平转换成12V-PWM波,电阻两端的电压被控制了,那么通过欧姆定律可知,功率电阻的阻值基本不变,通过改变电压,那么就可以间接的改变流过电阻的电流,即可以控制电阻的温度。 (2)原理图:图2-1是功率电阻和单片机连接的原理图。图2-1功率电阻原理图2.2 显示模块2.2.1设计方案在显示模块

12、的设计方案中,选择什么型号的显示器件,关乎到用户体验,本组认为数码管不利于控制,且视觉效果不好,所以选取了1602液晶屏作为显示器件,相对于数码管,液晶屏的显示信息数量更多,而且数据更清晰,这样用户使用时能更清楚、直观的明白两种温度数据的差异。2.2.2 1602液晶显示器介绍11602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液

13、晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN

14、)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。2.2.3 1602液晶显示器原理(1)1602液晶显示器工作原理:1602液晶显示器的数据接口连接到单片机STC89C52RC的P0口上,控制端口连接在P2口上面,我们通过1602的读写时序,对RS、RW、E三个端口进行操作,便可以对1602进行读操作,写操作;数据也可以和1602进行交换,我们可以先写命令,也可以写地址,然后直接发送数据,这样1602就能识别了。详细的程序会在软件中介绍。 (2)原理图:图2-2是1602

15、液晶显示器与单片机连接原理图;图2-3是1602液晶显示器的实物图。图2-2 1602液晶屏原理图图2-3 1602液晶屏实物图2.3 主控模块2.3.1设计方案方案一:使用STC89C52RC单片机作为主控芯片,优点是价格便宜,而且性能满足本次设计要求。方案二:使用STC12C5A60S2单片机作为主控芯片,优点是性能比52单片机要高很多,但是价格也比52要贵。经过比较,第二种单片机虽然性能很好,程序也不复杂,但是考虑到普通的52单片机对于本次设计已经完全够用了,所以没必要去使用12系列的单片机,对于较为复杂的电路设计是可以选择12单片机的。我们组最终选择了经典的52单片机作为本次设计的主控

16、器件。2.3.2 STC89C52单片机介绍2STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。 主要特性如下: (1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。 (2)工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机)。(3)工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz。 (4)用户应用程序空间为8K字节。(5)片上集成512字节RAM。(6)通用I/

17、O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。(7) ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。(8)具有EEPROM功能。(9)具有看门狗功能。 (10)共3个16位定时器/计数器。即定时器T0、T1、T2。(11)外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒。(12)通用异步串行口(UART),还可用定时器

18、软件实现多个UART。(13)工作温度范围:-40+85(工业级)/075(商业级) 2.3.3 STC89C52RC单片机原理(1)STC89C52RC单片机控制原理:在本次设计中采用了单片机芯片,单片机采用的是STC89C52RC,使用11.0592MHz高精度的晶振,方便以后单片机和上位机通讯。单片机在本次设计中的主要作用就是控制。温度控制器,两大要点之一的控制就是由单片机来完成的。单片机通过温度传感器对电阻温度进行温度检测而得到温度值,通过实时温度和设定温度的比较,输出控制信号,这个控制信号就是这次设计最大难点也是要点所在。合理的使用PWM波,合理的输出多大占空比的PWM波,是设计者所

19、需要解决的难点所在。单片机其他的作用也有如:驱动液晶显示,驱动按键输入等。(2)原理图:图2-4是STC89C52RC单片机原理图。图2-4 STC89C52RC单片机引脚图2.4 总体硬件设计2.4.1总体设计方案通过上面的介绍,我们已经知道了,硬件电路是根据系统要求而设计的,本组设计的温度控制器总体硬件设计思路如下:当接通电源后,我们的电源模块会对输入进来的12V电压进行稳压得到5V的电压输出送给我们的单片机和显示电路等,且12V电压还给加热电路直接供电。单片机上电后,会直接采集加热电阻上面的温度,在采集完成后,会和默认设置加热的温度进行比较,如果当前电阻温度低于设置温度,那么单片机输出恒

20、为1,使加热电路的控制三极管导通,这样10V左右的电压会加在功率电阻两端,电阻开始全速加热,当加热到一定的时间后,单片机首先输出为0停止加热,在等待2倍的加热时间后,再次检测电阻上面的当前温度,如果当前温度仍然低于设置温度的话,单片机根据温度差值,输出一定占空比的PWM波,然后再次判断,再次检测,得到的效果就是加热电阻上面的温度会在设置温度上面保持基本不变。且1602显示屏也实时显示当前温度值和设定温度值。如果用户想修改设定温度的话,那么我们可以按下弹性按钮,直接对设定温度修改,然后单片机再次会对当前温度和设定温度判断,最后再输出1或者0或者是PWM波。这就是我们温度控制器硬件电路设计的思路,

21、当然了也有一点软件的思路在里面,通过这种思路的分析,我们就可以设计和做出温度控制器的硬件成品。2.4.2完整硬件电路图通过上面的设计方案和设计要求,本组设计出了完整的电路图,如图2-5所示。图2-5温度控制器硬件电路总图第三章 软件设计3.1 1602液晶屏显示驱动模块3.1.1软件设计方案根据1602液晶屏的资料,我们可以知道1602液晶屏有16个引脚,数据脚有8个,与操作相关的引脚有3个,分别是RS数据/命令选择端、R/W读写选择端、E使能信号。知道这些引脚功能,并且知道了操作1602的时序后,就可以编写出1602液晶屏的操作读写代码。通过这些读写代码,我们单片机就可以与1602液晶屏进行

22、通讯,也就可以让1602液晶屏显示出我们想显示的内容了。3.1.2软件流程我们查询资料可以得到1602液晶屏的基本操作时序,如:写命令:RS=0.RW=0,D0-D7=指令码,E=高脉冲。写数据:RS=1,RW=0,D0-D7=数据,E=高脉冲。具体的写时序图如下所示:图3-1是写指令时序图;图3-2是写数据时序图。 图3-1 1602液晶屏写指令时序图 图3-2 1602液晶屏写数据时序图3.1.3软件代码#include#define uint unsigned int#define uchar unsigned charsfr WDT_CONTR=0xe1;sbit rs=P35;sbi

23、t e=P34;sbit DQ=P36;sbit flag_sudu=P14;sbit yj=P37;sbit kg1=P30;sbit kg2=P31;sbit kg3=P32;sbit kg4=P33;bit flag=0;bit aa=0,cc=0,ee=0,gg=0;bit flag_wendu=0;int bb=0;uint temp=0,wd=500; /温度整型数据,用于数码管显示uchar temh=0,teml=0,flag_wd=0,time=0,ff=0,xs=0,bs=0,dd=0; /温度高字节,温度低字节变量float f_temp=0; uchar i=0,tim

24、e1=0,time2=0,time3=0;uchar shuju8=d-wendu:;uchar shuju16=Error!;uchar shuju213=s-wendu: . ; void yanshi(uint i) /延时1ms函数 uchar j; while(i-) for(j=110;j0;j-);void xie_com(uchar com) /1602写命令和地址函数 rs=0; P0=com; yanshi(5); e=1; yanshi(5); e=0;void xie_data(uchar date) /1602写数据函数 rs=1; P0=date; yanshi(5

25、); e=1; yanshi(5); e=0;void init() /1602初始化程序 e=0; xie_com(0x38); xie_com(0x0c); xie_com(0x06); xie_com(0x01); xie_com(0x80+0x40+2); for(i=0;i0;i-); /延时480us DQ=1; /单片机释放总线 for(i=40;i0;i-); /延时80us flag1=DQ; /如果DS18B20正常工作,那么将拉低总线,flag=0,表示DS18B20正常工作 for(i=200;i0;i-); /延时等待400us,等待总线恢复 return flag1

26、; /返回这个标志位void ds18b20_xie(uchar flag2) /DS18B20写函数,写一个字节 uchar i,j; /i,j两个变量,注意一定要是两个变量,不然后面会使i不断为0,程序会进入死循环 for(i=0;i0;j-); /延时4us DQ=flag2&0x01; /将传递过来的数据,与0x01按位与,也就是取最低位,DS18B20发送数据和接收数据都是低位先发,高位在后面 for(j=30;j0;j-); /延时60us,写时序最起码需要60us DQ=1; /释放总线,等待总线恢复 flag2=flag21; /需要发送的数据,右移一位,因为最低位的数据已经发

27、送了,现在需要发送的是次低位的数据 uchar ds18b20_du() /DS18B20读函数,读一个字节 uchar i,j,temp1=0x00; /i,j也是两个变量!temp1是接收数据的临时变量,需要返回 for(i=0;i1; /先右移一次,因为先接收到的是最低位的温度数据,所以要先移一次,如果在后面,会多移一次,数据会错误的 DQ=0; /拉低总线,产生读信号 for(j=3;j0;j-); /延时6us DQ=1; /释放总线,准备读数据 for(j=3;j0;j-); /延时6us if(DQ=1) /判断DQ的值是不是1,也就是判断DS18B20输出的值是不是1,和下面的语句配合使用 temp1=temp1|0x80; /如果DQ=1,表示接受到的温度数据时1,因为最先接收到的是最低位,所以先和0x80按位或,再右移即可 /像串口接收数据,最低位先接收,还有其他的方法,不知这一种方法,不过这种方法是最普遍的了 for(j=30;j0;j-); /

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1