基于51单片机的智能温度调节装置设计大学本科毕业论文.doc

上传人:知****量 文档编号:91622062 上传时间:2023-05-27 格式:DOC 页数:15 大小:364.50KB
返回 下载 相关 举报
基于51单片机的智能温度调节装置设计大学本科毕业论文.doc_第1页
第1页 / 共15页
基于51单片机的智能温度调节装置设计大学本科毕业论文.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《基于51单片机的智能温度调节装置设计大学本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于51单片机的智能温度调节装置设计大学本科毕业论文.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、XX:基于51单片机的智能温度调节装置设计电子设计与制作报告题 目: 基于51单片机的智能温度调节装置设计 班 级: 12级电气X班 姓 名: XX 学 号: XXXXXXXX 同组成员: XXX,XXX,XXX,XXX,XXX 成 绩: 基于51单片机的智能温度调节装置设计摘要:随着现代信息化技术的飞速发展和传统工业改造的逐步实现,能独立工作的温度检测系统已广泛应用于各种不同的领域。本文介绍了一个基于89C51单片机和数字温度传感器DS18B20以及操控半导体制冷片的智能控温系统,并用LCD12864液晶屏显示温度值,并且能够显示时间以及显示调节温度至指定温度所用的时间。系统电路简单、操作简

2、便,能任意设定报警温度,系统完成了电子设计的基本要求和大部分扩展内容要求。扩展部分的波形显示花屏,未能做出来。关键词:89c51,lcd12864,报警,时间,波形目录1 引言42 任务要求42.1 基本要求42.2 扩展功能43 总体方案设计53.1 方案论证53.1.1 方案一53.1.2 方案二53.2 总体设计框图54 本组设计及完成情况64.1 单片机系统64.2 数字温度传感器模块74.2.1 DS18B20性能74.2.2 DS18B20外形及引脚说明84.2.3 DS18B20接线原理图84.3显示模块84.3.1 LCD12864性能84.3.2 LCD12864引脚及说明9

3、4.3 报警模块94.4 驱动模块104.5完成情况104.5.1基本功能实现104.5.2附加功能实现104.5.3未完成功能:114.5.4系统优缺点115 本人承担工作及完成情况介绍125.1实时温度显示125.1.1对18b20进行操作:125.1.2对lcd12864进行操作125.1.3显示操作135.2按键功能135.3波形显示13参考文献:141 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中数字温度计就是一个典型的例

4、子。数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用80C51单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理将温度显示在用12864液晶屏上。2 任务要求2.1 基本要求1.能够通过键盘和液晶(或数码管)设定温度值,温度值的设定范围为-1010摄氏度,最小区分度为1摄氏度2.控制装置实时显示被控对象温度,当温度达到设定值时,控制装置通过液晶或声光发出提示信号3.被控对象温度精度为2摄氏度2.2 扩展功能1.控制装置实时显示当前时间2.控制装置可记录被控对象

5、温度达到设定值的时间(时间最小分辨率为0.1s)3.用液晶实时显示的被控对象温度值,3秒刷新一次。并显示被控对象温度随时间变化的曲线,实时刷新显示,30秒刷新一次。4.被控对象温度精度为1摄氏度,尽量缩短被控对象达到温度设定值的时间3 总体方案设计3.1 方案论证3.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。3.1.2 方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温

6、度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。另外DS18B20具有3引脚的小体积封装,测温范围为-55+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。3.2 总体设计框图本方案设计的系统由单片机系统(80C51)、数字温度传感器(DS18B20)、12864液晶屏、按键控制模块、温度报警模块组成,其总体架构如下图1。80C51单片机

7、测温模块(DS18B20)驱动模块半导体制冷片显示模块(12864液晶屏)报警模块按键模块图1 系统总体方框图4 本组设计及完成情况4.1 单片机系统本设计采用80C51单片机作为控制器,完成所有功能的控制,包括:1.DS18B20数字温度传感器的初始化和读取温度值2.12864液晶屏的驱动和显示3.温度的读取比较和报警单片机系统电路原理图:图2 单片机系统原理图4.2 数字温度传感器模块4.2.1 DS18B20性能l 独特的单线接口仅需一个端口引脚进行通信l 简单的多点分布应用l 无需外部器件l 可通过数据线供电l 零待机功耗l 测温范围-55+125,以0.5递增l 可编程的分辨率为91

8、2位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625l 温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字l 应用包括温度控制、工业系统、消费品、温度计和任何热感测系统l 负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作4.2.2 DS18B20外形及引脚说明图3 DS18B20外形及引脚l GND:地l DQ:单线运用的数据输入/输出引脚l VD:可选的电源引脚4.2.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。图4 DS18B20接线原理图4.3显示模块4.3.1

9、 LCD12864性能l 低电源电压(VDD:+3.0-+5.5V)l 显示分辨率:12864 点l 2MHZ 时钟频率l 视角方向:6 点l 通讯方式:串行、并口可选l 无需片选信号,简化软件设计l 工作温度: 0 - +55 ,存储温度: -20 - +604.3.2 LCD12864引脚及说明图5 LCD12864接线原理图4.3 报警模块当温度超过或低于设定温度值时,实现报警,LED灯点亮。并且在lcd12864上显示并提醒。4.4 驱动模块驱动电路:4.5完成情况经过几周的电路搭建和软件编写,我们组已经实现电路基本部分和部分扩展功能。具体如下:4.5.1基本功能实现完成基本要求的所有

10、项:(1) 能够通过键盘和液晶(或数码管)设定温度值,温度值的设定范围为325(室温),最小区分度为1。(2) 控制装置实时显示被控对象温度,当温度达到设定值时,控制装置通过液晶或声光发出提示信号。(3) 被控对象温度精度为1。4.5.2附加功能实现完成了前5项功能:(1) 控制装置实时显示当前时间(开机即开始计时)。(2) 控制装置可记录被控对象温度达到设定值的时间(时间最小分辨率为0.1s)。(3) 用液晶实时显示的被控对象温度值,1秒刷新一次。(4) 被控对象温度精度为1。(5) 尽量缩短被控对象达到温度设定值的时间。(控制装置单向制冷,在制冷时调节冷端风扇关闭,降低测试装置与环境温度交

11、换速度;当调节温度升高时,关闭制冷,同时开启冷端风扇是测试面与环境温度加快)4.5.3未完成功能:温度的波形显示。波形程序响应迟缓以及出现花屏,不能加入主程序中,该问题尚未得到解决。4.5.4系统优缺点(1) 优点本组设计系统通过12864显示屏与6功能按键组成了良好的人机交互性条件,在主菜单以及子菜单模式下能够实时显示被测温度与时间。上下限报警及控制功能优点,在设定上下限后,当温度达到上或下限,会启动自动调节功能,将温度控制在上下限内,并可按SET键初始化上下限,符合工程控制实际,具有较高的实用价值。设定温度功能优点,在温度设置菜单下,增加了确定菜单控制,避免在设置过程中输入错误,并可按MO

12、DE键返回重新设置。温度控制采用PWM脉宽调制技术,是温度控制精度有所提高。(2) 缺点本系统采用继电器驱动制冷片工作,其最小关断延时限了系统控制精度,并且在关断过程中会有较大的电磁干扰,使得LCD显示会出现不明闪烁。由于程序冗余,导致修改该部分程序后编译下载失败,在温度到达设定值定时,不能成功进行第二次定时功能(该问题暂未解决!)5 本人承担工作及完成情况介绍由于小组是分模块来做的,本人主要负责lcd12864显示这一块程序编写以及18b20的编写和调试以及后期的部分调试。目前实现了能显示实时温度,按键的设置,最后还有波形(未能成功加入主程序)。5.1实时温度显示5.1.1对18b20进行操

13、作:读温度值模块需要调用4个子程序,分别为:DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作DS18B20写字节子程序:对DS18B20发出命令DS18B20读字节子程序:读取DS18B20存储器的数据延时子程序:对DS18B20操作时的时序控制程序声明为:bit Init_DS18B20(void);/ 18b20初始化unsigned char ReadOneChar(void);/读取一个字节void WriteOneChar(unsigned char dat);/写入一个字节最后从18b20中读取温度程序:unsigned int ReadTemperat

14、ure(void);5.1.2对lcd12864进行操作本人选用的是带字符的lcd12864液晶显示屏。首先根据时序图写出lcd12864的基础程序。Lcd12864初始化程序:void LCD12864_Init();Lcd12864写命令程序:void LCD12864_WriteCmd(uchar cmd);Lcd12864写数据程序:void LCD12864_WriteData(uchar dat);Lcd12864读数据程序:uchar LCD12864_ReadData(void);Lcd12864清屏函数:void LCD12864_ClearScreen(void);Lcd1

15、2864设定坐标函数:void LCD12864_SetWindow(uchar x, uchar y);Lcd12864显示字符串函数:void LCD_PutString(unsigned char x,unsigned char y,unsigned char code *s);5.1.3显示操作调用temp=ReadTemperature();将18b20中的温度读取出来,处理并取整数位。具体程序如下:temperature=(float)temp*0.0625*10;temp = (long)temperature%1000;displaytemp0 = temp/100+0;dis

16、playtemp1 = temp%100/10+0;配置寄存器R1,R0是温度的决定位,由R1,R0的不同组合可以配置为9位,10位,11位,12位的温度显示。这样就可以知道不同的温度转化位所对应的转化时间,四种配置的分辨率分别为0.5,0.25,0.125和0.0625,出厂时以配置为12位。所以temperature=(float)temp*0.0625*10;再使用下面程序将其显示出来:LCD12864_SetWindow(0,2);for(i=0;i2;i+) LCD12864_WriteData(displaytempi);5.2按键功能首先定义了几个按键:sbit KEY_ente

17、r=P12;/确认/定义按键输入端口sbit KEY_ADD=P11; /上 sbit KEY_DEC=P16;/下sbit KEY_exit=P15;/退出在while(1)循环中不断调用按键程序,当有按键按下时,则进入相应功能。5.3波形显示我采用的是画点的方式,首先确定该点的具体坐标,具体在哪一字节的哪一位,以及哪一行。从网上我查找到了画点子程序,起初我取温度的十位和个位,将其打在lcd12864上,总共打了128点,然后将其清屏,循环显示。但是花屏,有18b20最开始下显示的85度,以及其他杂点。画点部分程序如下:void lcd_set_dot(uchar x,uchar y)uch

18、ar x_byte,x_bit;/确定在坐标的那一字节哪一位uchar y_ping , y_bit;/确定在坐标的哪一屏哪一行uchar tmph , tmpl;/定义两个临时变量,用于存放读出来的数据LCD12864_WriteCmd(EXTEND_SET);/扩展指令集LCD12864_WriteCmd(DRAW_OFF);/绘图显示关闭x_byte = x / 16;/算出在哪一字节,注意一个地址是16位的x_bit = x % 16;/& 0x0f;/算出在哪一位y_ping = y / 32;/确定在上半屏还是下半屏,0代表上半屏,1代表下半屏y_bit = y % 32;/& 0

19、x1f;/确定在第几行LCD12864_WriteCmd(0X80 + y_bit);/先写垂直地址(最高位必须)LCD12864_WriteCmd(0x80 + x_byte + 8 * y_ping);/水平坐标,下半屏坐标起始地址为0x88,(+8*y_ping)就是用来确定上半屏还是下半屏LCD12864_ReadData();/预读取数据tmph = LCD12864_ReadData();/读取当前显示高8位数据tmpl = LCD12864_ReadData();/读取当前显示低8位数据delay(1);LCD12864_WriteCmd(0x80 + y_bit);/读操作会改

20、变AC,所以重新设置一下LCD12864_WriteCmd(0x80 + x_byte + 8 * y_ping);delay(1);if(x_bit 8)LCD12864_WriteData(tmph | (0x01 (7 - x_bit);/写高字节,因为坐标是从左向右的,GDRAM高位在昨,低位在右LCD12864_WriteData(tmpl);/原低位数据送回elseLCD12864_WriteData(tmph);/原高位数据送回LCD12864_WriteData(tmpl | (0x01 (15 - x_bit);LCD12864_WriteCmd(DRAW_ON);/打开绘图显示LCD12864_WriteCmd(BASIC_SET);/回到基本指令集参考文献:【1】.熊壮.程序设计技术.重庆大学出版社.第三版.2009年1月【2】.电工电子综合设计实验讲义.2009年3月【3】. 18b20温度传感器【4】.lcd12864中文资料15

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁