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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

水温加热控制系统学年论文大学论文.docx

1、水温加热控制系统学年论文大学论文学年论文题目: 水温加热控制系统 作者: 所在学院: 专业年级: 指导教师: 职称: 2016 年 12 月 23日课程论文(设计)、学年论文评分表题 目作 者专业年级指导教师指导教师评语及评分建议 指导教师: 年 月 日院(部)或教研室意见 学院或教研室主任: 年 月 日目录1. 前言 . 52. 要求 . 62.1功能 . 6 2.2要求 . 6 3. 实现思路 . 73.1方案分析. 73.2 元件简介.73.2.1 STC89C51. 73.2.2 最小系统. 83.2.3 八段LED数码管. 93.3硬件连接. 103.4.加热控制模块框图. 114.

2、 结论 . 134.1问题总结. 134.2体会 . 13附录 . 14 摘要 本次设计的主要目的是实现对温度的控制,其主要思路是通过温度传感器感应物体温度,送到单片机处理,再由单片机一方面控制LED显示出来,另一方面控制加热的通断。本次设计分2个功能模式进行,功能1为键盘设定温度,然后水温通过加热棒升温,达到设定温度,并通终维持在设定温度左右。功能2为键盘设定加热时间,然后启动定时器,水温通过加热棒升温,直到定时器完成计时。 1.前言随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向,特别是今年来,温度控制系统已应用到生活的各个方面。针对这种实际情况,

3、设计一个温度控制系统,具有广泛的应用前景和实际意义。温度是科学技术中最基本的物理量之一。物理、化学、生物等学科都离不开温度,在工业生产等许多领域,温度常常是表征对象和过渡状态的重要物理量。各行各业对温度的要求越来越高,可见温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用越来越广泛,各种试用于不同场和的温度控制器应运而生。2.要求 一、功能设计并制作一个水温自动控制系统,控制水温的范围在0100摄氏度内,能实现在控制范围内对温度的自动控制,并保持设定的温度基本保持不变;也可以设定定时加热。二、要求(1)可键盘设

4、定控制温度值,设定最小分辨率为1;(2)实时测量并显示实际温度。温度测量误差在0.5 内;(3)水温控制系统具有全量程(0100)内的升温功能;(4)任意设定一个温度值,控制系统可以实现该给定温度的恒值自动控制。 (5)可键入加热时长,实现定时加热,完成加热自动控制。 3.实现思路3.1硬件分析本次设计主要版块分为温度感应模块,温度显示模块,键盘设定模块,定时模块和加热控制模块。 1.温度感应模块 使用温度传感器18B20感应温度,由于该温度传感器内含AD转换器,因此连接简单,应用方便 2.温度显示模块 使用动态显示,通过数码管显示被测温度和设定温度。硬件上连接简单,所需元件少。3.键盘设定模

5、块使用键盘扫描法,通过矩阵键盘,求出设定的数值,由于该方案具有扫描功能,因此在不使用中断的情况下,使用键盘扫描程序是十分恰当的,本次设计采用的是键盘扫描程序。3.2原件简介3.2.1 STC89C51STC89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集

6、和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,STC89C2051是它的一种精简版本。STC89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:与MCS-51兼容4K字节可编程闪烁存储器全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式3.2.2最小系统最小系统构成的基本条件是1.电源STC89C51单片机的电压为4.0V-5.5V。我们采用电脑的USB进行供电,电脑以及手机充电器一般输出电压为

7、5V,可以为单片机正常供电。2.晶振 晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。本系统主要采用的是11.05926M晶振,配合2个30pF的电容构成晶体振荡电路。3复位为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。 最小

8、系统连接图3.2.2 八段LED数码管显示电路主要采用4位共阳8段数码管,采用动态扫描方式显示。其原理图如下所示。 数码管主要有共阳、和共阴两种类型。在这里我们先用的是共阳数码管,主要是由于单片机I/0的驱动能力有限,无法直接驱动4位8段数码管,所以必须采用共阳的数码管,并接上四个三极极管8550。八段数码管连接图3.3.硬件连接 硬件总体框图为: 本次设计硬件用到了单片机STC89C52、温度传感器DS18B20、加热棒、四位ED数码管、独立键盘、SSR固态继电器等。单片机STC89C52是常用的单片机之一,单片机上有32个P口,其中P0、P1、P2、P3各8个。温度传感器DS18B20接到

9、单片机的一个P口上,本次设计是P2.1,因为温度传感器DS18B20可以直接将数据传输给单片机,因此可直接连接。四位ED能显示两位整数,两位小数,用来显示温度够用。五个独立键盘,分别表示加,减,开始,暂停,定时。通过将5个出线端接到P3.3-P3.7口上,然后通过P3口控制键盘,键盘的按下将P3口对应位电压拉低,从而被单片机检测到。固态继电器SSR是一种动作时间比较快的继电器,有4个接口,2端接5V电压,2端接加热棒。3.3.加热控制模块框图 4.结论4.1问题总结本次设计的功能板块分为四块,分别是温度传感器感应模块、键盘输入模块、E显示模块、控制温度模块。调试过程中,出现过不少问题,诸如:1

10、.发现温度传感器的温度并不能有效地显示在LED上原因:温度传感器的程序有问题,延时没有用好。解决方法:修改DS18B20中的延时程序。2.发现键盘的数字按下后,数码管没有显示。原因:程序中键盘的扫描程序没有显示函数,按下键时,程序在键盘函数中停留。解决方法:在键盘读取函数的延时中加显示函数。4.2体会本次设计的题目是水温加热控制系统,其主要思想是将水温控制在某一个设定的温度左右,误差不超过1度。本次设计历时4周左右,花费了大量的精力和时间,可以说其中包含了诸多的汗水和付出。通过网上查找资料和不停地写程序调试,既增长了知识,又增加了经验。其过程中有苦有甜。最后感谢学院提供的实验条件和老师的辛苦指

11、导。 参考文献1 汪烈军,贾振红,冯龛等.单片机原理与应用 西安:西安交通大学出版社.2012 2 徐惠民,安德宁单片微型计算机原理接口与应用第1版M 北京:北京邮电大学出版社,19963夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001附录程序#include #define uchar unsigned charunsigned char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;char value=1,count=1,time_0=0; char second=59;void delay2(u

12、nsigned char t); /带显示延时void display_time();void display();sbit DQ=P20; /数据传输线接单片机的相应的引脚 sbit P21=P21; /继电器sbit cnt1=P37; /按键定时加1sbit cnt0=P36; /按键定时减1sbit start=P35; /按键开始sbit stop=P34; /按键暂停sbit time=P33; /定时设置void delay(unsigned char t) /延时函数 while(t-0) ;void delay2(unsigned char t) /按键时带显示温度延时 wh

13、ile(t-0) display();void delay3(unsigned char t) /按键时带显示定时延时 while(t-0) display_time();/*各类函数模块*/void keyboard() /状态按键- start ,stop,time if(start=0) delay2(200); if(start=0) value=0; if(stop=0) delay2(200); if(stop=0) value=1; if(time=0) delay2(200); if(time=0) value=2; void keyboard_cnt() /温度设置按键 if

14、(cnt1=0) delay2(200); if(cnt1=0) if(count1) -count; else count=99; void keyboard_time() /定时设置按键 if(cnt1=0) delay3(200); if(cnt1=0) if(time_01) -time_0; else time_0=59; void display() /键盘输入的温度显示 -温度为正整数 P1=0xfd; P0=tablecount%10; delay(50); P1=0xfe; P0=tablecount/10; delay(50);void display_time() /键盘

15、输入的时间显示-时间为整分钟 P1=0xfd; P0=tabletime_0%10; delay(50); P1=0xfe; P0=tabletime_0/10; delay(50);/*DS18B20模块程序*/#define uchar unsigned charunsigned char seg7code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /不带小数点的共阳数码管段码unsigned char seg7codeB=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /带小

16、数点的共阳数码管段码unsigned char tempL=0,tempH=0,sdata,xiaoshu1;xiaoshu2;void delay1(uchar i) /嵌套循环延时函数 uchar j,k; for(j=i;j0;j-) for(k=125;k0;k-);void Init_DS18B20(void) /DS18B20 的初始化 unsigned char x=0; DQ=0; /发送复位脉冲 delay(80); /延时(480us) DQ=1; /拉高数据线 delay(5); /等待(1560us) while(DQ=1); while(DQ=0); delay(20

17、); /读一个字节ReadOneChar() /主机数据线先从高拉至低电平1us以上,产生读时隙,15us内使数据线升为高电平,从而产生读信号 unsigned char i=0; /每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期 unsigned char dat=0; for (i=8;i0;i-) /一个字节有8位 DQ=1; delay(1); /把数据线从高电平拉至低电平 DQ=0;dat=1; DQ=1; if(DQ) dat|=0x80; delay(4); return(dat);/写一个字节void WriteOneChar(unsigned

18、 char dat) unsigned char i=0; /数据线从高电平拉至低电平,产生写起始信号。15us之内将所需写的位送到数据线上, for(i=8;i0;i-) /在1560us之间对数据线进行采样,如果是高电平就写1,低写0发生。 DQ=0; /在开始另一个写周期前必须有1us以上的高电平恢复期。 DQ=dat&0x01; delay(5); DQ=1; dat=1; delay(4);/读温度值(低位放tempL;高位放tempH;)void ReadTemperature() Init_DS18B20(); /初始化 WriteOneChar(0xcc); /跳过读序列号的操

19、作 ,写入0XCC跳过ROM 命令 WriteOneChar(0x44); /启动温度转换 ,写入0X44为温度转换命令 delay(125); /转换需要一点时间,延时 Init_DS18B20(); /初始化 WriteOneChar(0xcc); /跳过读序列号的操作 WriteOneChar(0xbe); /读温度寄存器(头两个值分别为温度的低位和高位) 写入0XBE为读暂存器命令 tempL=ReadOneChar(); /读出温度的低位LSB tempH=ReadOneChar(); /读出温度的高位MSB /对读取的温度进行处理,tempL的低四位为小数,2的负指数次;tempH

20、的高五位为符号位,正温度为0,负温度为1; sdata = tempL/16+tempH*16; /整数部分 xiaoshu1 = (tempL&0x0f)*10/16; /小数第一位 xiaoshu2 = (tempL&0x0f)*100/16%10; /小数第二位/温度处理的范围为1-99摄氏度,由于是水温加热,温度为负数和超过100度不予考虑/温度显示函数void Led(unsigned int date) P1=0xfe; /P1.0=0,选通第一位 P0=seg7codedate/10; delay1(5); P0=0xff; P1=0xfd; /P1.1=0,选通第二位,个位数

21、P0=seg7codeBdate%10; delay1(5); P0=0xff; P1=0xfb; /P1.3=0,选通第三位,小数点第一位 P0=seg7codexiaoshu1; delay1(5); P0=0xff; P1=0xf7; /P1.3=0,选通第四位,小数点第二位 P0=seg7codexiaoshu2; delay1(5); P0=0xff; /*定时模块*/void timer(char minute) /定时器函数 unsigned int t=0; P21=0; while(value=2) if(-second1) /最大定时为59分钟 second=59; if(

22、-minute0) /定时的分钟为-1时,关闭继电器,改变value 的值,跳出函数 P21=0;value=3; TMOD=0x20; /8位自动重装定时器,每200us溢出一次 TH1=0x38; TL1=0x38; TR1=1; do /溢出一次显示一位时间,4次显示约0.8ms,既do_while语句每1ms判断一次条件 keyboard(); P1=0xff; P0=0xff; while(TF1=0) P1=0xf7; P0=tablesecond%10; TF1=0; P1=0xff; P0=0xff; while(TF1=0) P1=0xfb; P0=tablesecond/10; TF1=0; P1=0xff; P0=0xff; while(TF1=0) P1=0xfd; P0=seg7codeBminute%10; /点小数点的显示 TF1=0; P1=0xff; P0=0xff; while(TF1=0) P1=0xfe; P0=tableminute/10;

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

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