基于51单片机的温度控制系统说明书课程设计说明书.doc_第1页
基于51单片机的温度控制系统说明书课程设计说明书.doc_第2页
基于51单片机的温度控制系统说明书课程设计说明书.doc_第3页
基于51单片机的温度控制系统说明书课程设计说明书.doc_第4页
基于51单片机的温度控制系统说明书课程设计说明书.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

中北大学课 程 设 计 说 明 书学生姓名: 学 号: 学 院: 机械与动力工程学院 专 业: 机械电子工程 题 目: 基于51单片机的温度控制系统设计 指导教师: 职称: 讲师 2015 年 1 月 19 日目录第1章 绪论21.1 题目背景21.2 题目简介2第2章 系统总体设计及方案32.1单片机的介绍32.2系统功能的确定32.3温度传感器ds18b20的介绍32.3.1ds18b20的内部结构42.3.2 ds18b20的引脚介绍62.4人机交互与串口通信6第3章 硬件设计83.1系统结构框图83.2人机交互与串口通信单元设计93.2.1 键盘输入电路93.2.2 串口通信电路93.2.3 led七段数码动态显示电路103.2.4 控制执行单元设计11第4章 软件设计124.1设计思路、程序代码12结束语26参考文献2623第1章 绪论1.1 题目背景不论是对于工业生产还是对于人们的日常生活,温度的变化都会对其产生一定程度的影响。所以,适时和恰当的温度控制对生产生活具有非常重要的作用。在过去,对温度的控制总是采用常规的模拟调节器,然而,这种调节器存在的缺点是控制精度低,具有滞后、非线性等特点。-本文将采用微电子技术来提高温度控制的精度,因为微电子技术的电路设计简单,控制效果好,具有很强的实用性。众所周知,在现代工业以及家用电器测控领域中,单片机系统的开发和运用给其带来了全新的技术创新和变革。而且,自动化和智能化程度的高低均依赖于是否使用单片机。试想:将单片机的温度控制方法如果能够运用到温度控制系统中的话,那么,就可以在一定程度上缓减和克服温度控制系统中存在的滞后现象,同时在很大程度的上,单片机的使用可以提高温度的控制效果以及控制精度。在工业自动化控制中,温度的控制一直都占有非常特殊的地位。在本文中作者针对电烤箱的温控系统利用单片机进行设计,从而达到精确控制电烤箱温度目的。1.2 题目简介课题名称:基于51单片机的温度控制系统设计主要任务:(1)电烤箱由1kw电炉加热,最高温度为120;(2)电烤箱温度可设置,电烤过程恒温控制,温度控制误差2;(3)实时显示温度和设置温度,显示精确为1;(4)温度超出设置温度5时发出超限报警,对升温和降温过程不作要求。开发环境:本环境温度控制系统的软件部分是通过keil进行编译,并由proteus 7 professional进行仿真测试。技术指标:(1)以at89c51系列单片机为核心部件(2)以数字电路和模拟电路为硬件基础(3)以c语言为软件实现语言功能概述:在该温度控制系统中,单片机作为核心部件进行检测控制。在该环境温度控制系统中温度检测采用ds18b20温度传感器将实时温度传送至单片机,并加以显示。再通过按键来设定温度,并实时显示。按下确定键后将实际温度与设定温度进行比较,如果实际温度大于设定温度,则进行降温过程,反之,则进行升温过程,实现温度控制和报警等目的,按复位键后,从新开始。 第2章 系统总体设计及方案2.1单片机的介绍 随着大规模集成电路的出现及其发展,将计算机的cpu 、ram 、 rom 、定时/计数器和多种i/o接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机 。 单片机具有以下特点:1.具有优异的性能价格比 2.集成度高、体积小、可靠性高 3.控制功能强 4.低电压、低功耗 2.2系统功能的确定 一个控制系统是否能被大众所接受,在于该控制系统是否拥有人性化的操作功能。为了使本次设计的环境温度控制系统具有操作简单、灵活及高可靠性等特点,确定了该系统功能: 1.独立键盘输入。 2.单总线温度传感器ds18b20进行温度采集。 3.温度显示。 4.温度控制执行,温度超限进行报警。 5.温度测量范围为-55-125度,温度有效范围为2-98度,允许误差为1度。2.3温度传感器ds18b20的介绍 ds18b20温度传感器是dallas公司生产的1wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,在一根通信线,可以挂很多这样的温度传感器,十分方便。 ds18b20具有以下的的特点: 1.只要求一个端口即可实现通信。 2.在ds18b20中的每个器件上都有独一无二的序列号。 3.实际应用中不需要外部任何元器件即可实现测温。 4.测量温度范围55到125。 5.数字温度计的分辨率用户可以从9位到12位选择。 6.内部有温度上、下限告警设置。2.3.1ds18b20的内部结构ds18b20采用3脚pr-35封装或8脚soic封装,其内部结构框图如图2.1所示。 64位rom和单线接口 存储器与控制逻辑 高速缓存 温度传感器高温触发器th低温触发器tl配置寄存器8位crc发生器 图2.1 ds18b20内部结构框图 64位rom的位结构如图2.2所示。开始8位是产品类型的编号;接着是每个器件的唯一的序号,共有48位;最后8位是前面56位的crc检验码,这也是多个ds18b20可以采用单线进行通信的原因。非易失性温度报警触发器th和tl,可通过软件写入用户报警上下限数据。8位检验crc48位序列号8位工厂代码(10h)msb lsb msb lsb msb lsb图2.2 64位rom的位结构图ds18b20温度传感器的内部存储器还包括一个高速暂存ram和一个非易失性的可电擦除的e2prom。 高速暂存ram的结构为9字节的存储器,结构如图2.3所示。前2字节包含测得的温度信息。第3和第4字节是th和tl的拷贝,是易失的,每次上电复位时被刷新。第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,ds18b20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图2.4所示,其中,低5位一直为1;tm是测试模式位,用于设置ds18b20在工作模式还是在测试模式,在ds18b20出厂时,该位被设置为0,用户不要去改动;r1和r0决定温度转换的精度位数,即用来设置分辨率,其定义方法见表2.1。温度 lsb温度 msbth用户字节1th用户字节11tl用户字节2e2promtl用户字节2配置寄存器保留保留保留crc图2.3 高速暂存ram结构图表2.1 ds18b20分辨率的定义和规定 r1r0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750tm r1 r0 1 1 1 1 1 1图 2.4 配置寄存器位定义 由表可见,ds18b20温度转换的时间比较长,而且设置的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存ram的第6、7、8字节保留未用,表现为全逻辑1。第9字节是前面8字节的crc码,可用来检验数据,从而保证通信数据的正确性。当ds18b20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存ram的第1、2字节中。单片机可以通过单线接口读出该数据。读数据时,低位在先,高位在后,数据格式以0.0625c/lsb形式表示。温度值格式如图2.5所示:低字节232221202-12-22-32-4高字节sssss262524图2.5 温度数值格式2.3.2 ds18b20的引脚介绍to92封装的ds18b20的引脚排列见图2.6,其引脚功能描述见表2.2。图2.6(底视图)表2.2 ds18b20详细引脚功能描述序号名称引脚功能描述1gnd地信号2dq数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3vdd可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。2.4人机交互与串口通信该热炉温度控制系统由温度采集、独立键盘输入、温度显示、温度控制执行等四大模块组成。 1. 温度采集:由温度传感器ds18b20完成,并通过串口通信技术与单片机进行数据传输,使用单片机p2.2端口。2. 独立键盘输入:将键盘扫描程序设置在主函数中while循环函数的第一条语句,不断刷新获得设定温度,按下确定键后执行温度比较和温度控制。使用单片机的p2.1,p2.3,p2.4,p2.5端口。3. 温度显示:通过8个7段led数码显示管显示当前温度值和设定的温度值,及时反应当前温度的变化与设置温度的关系,使用单片机p0.0-p0.7端口。4. 温度控制执行:系统根据当前温度与设置的温度自动进行相应的升温或降温的操作,在系统自动进行升温或降温处理的同时显示相应的指示灯,在本文的设计中,考虑到加入升温降温设备也不会使得ds18b20传感器有所感应,故而没有添加升降温设备。只是通过两个升温降温指示灯来表示升降温过程,同样能让使用者知道系统正在进行的操作,使更加简洁。但是,在实际的生产中升降温度设备是必须添加的。两个指示灯使用单片机p1.4,p1.5端口。 5.超限报警:在任务书要求中,当温度超出设置温度5时发出超限报警,但是由于作者能力所限,未能达到要求的5,我选择了比较设置温度和实际温度的十位数据的方法,将误差控制在了10以内,在仿真过程中影响是很小的。第3章 硬件设计3.1系统结构框图at89c51显示模块键盘模块温控执行模块传感器模块报警模块图3.1系统硬件总体框图该系统由核心部件at89c51来处理从键盘输入电路和温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作。如果超出温度限制则激发报警模块。图3.2 系统硬件原理图3.2人机交互与串口通信单元设计在该系统中,人机交互技术主要应用在恒定温度的设置,以及当前温度与设置温度的显示;串口通信技术应用在对温度的采集。3.2.1 键盘输入电路在本系统中,键盘输入主要采用四个独立按键来实现温度的设定。如图3.3所示,当按下“加一”键时,恒定温度从0开始加一,按下“减一”键,设定温度从现有值减一。按下“清零”键,设置温度清零。按“确定”键,保存设置并退出键盘输入,进入温度控制状态。只有按下“确定”后才开始执行温度控制和超限报警。图3.3 键盘输入原理图3.2.2 串口通信电路为了使测得的温度更准确,在本系统中采用了温度传感器ds18b20来获取当前温度,而ds18b20是采用ic总线进行通信的,如图3.4所示,单片机使用p2.2端口与ds18b20的数据通讯端口相连接,并通过软件实现p2.2控制ds18b20的读和写。图3.4温度传感器原理图3.2.3 led七段数码动态显示电路在本系统中采用了led七段数码动态显示电路来显示温度值,设定温度显示范围在0-99之间,实时温度显示范围在-55-120之间。该电路由显示、位选锁存器、段选锁存器三部分组成。 显示部分:由两个四位的led七段共阴数码管构成,用来显示当前温度和设置温度,如图3.5所示。图3.5 led七段共阴数码管位选和段选部分:如图3.6所示,由两片74hc573锁存器构成,单片机的p2.6和p2.7分别输出段选和位选信号,然后再将p0口信号传递到锁存器,并完成段选。进行译码后输出到led七段数码管显示。图3.6 位选段选锁存器符号编码符号编码00x3f80x7f10x0690x6f20x5ba0x7730x4fb0x7c40x66c0x3950x6dd0x5e60x7de0x7970x07f0x71表3.7 共阴极数码管编码 3.2.4 控制执行单元设计该电路的主要任务是完成单片机所发出的升温或降温操作,来控制外部的升温或降温设备。在本文的设计中使用红、绿两色发光二极管代替。在程序中,先将p1.4和p1.5端口初始为低电平,当需要升温或降温时,将相应端口置为高电平,使得二极管发光。提醒使用者正在进行的温度操做。例如:当设置温度高于实时温度时,单片机向温控执行部分发送升温指令,将p1.5置为高电平,使得升温指示灯亮。3.2.5 温度超限报警 当实时温度和设定温度十位数值不同时发出警报,由于在proteus中选用的发声元件为speaker,此元件与计算机音频输出设备相连,因此,当触发报警部分的时候,计算机会发出蜂鸣。第4章 软件设计4.1设计思路、程序代码根据所学知识,实现本系统的软件部分将使用汇编语言,要配合硬件部分实现输入一个需要恒定的温度,与从温度传感器所获取的当前实际温度相比较,并向温度控制执行电路发出升温或降温的命令,以及温度超限报警命令。在这一过程中将随时显示当前温度值和设置的温度值。其主要实现的部分包括:键盘输入、温度采集、数据转换、动态显示、温度控制,超限报警等。程序如下。键盘扫描程序:/*功能描述:用数码管的前两位显示一个十进制数,变化范围是0120,开始时显示0,每次按下k1:数值加一,每次按下k2:数值减一。每次按下k3:数值归零。每次按下ok:执行温度比较,显示升温或降温过程,以及蜂鸣器的开闭。the end : successful*/#includedelay.h#includeinden_key.hvoid keyscan(void)unsigned char count;if(!key1)delayms(10);if(!key1) count+;if(count=120) count=0;while(!key1);if(!key2)delayms(10);if(!key2) if(count=0) count=0;count-;while(!key2);if(!key3)delayms(10);if(!key3) count=0; while(!key3);主函数:/*- 名称:基于51单片机的温控系统设计 编写:叶瑞夺 日期:2015.1.25 内容:对电烤箱进行温度控制。 1.8位数码管的12位(左边数起)显示设定的温度值(只有在确定键按下之后才会显示) 2.8位数码管的38位(左边数起)显示温度传感器采集到的实时温度值 3.当设定温度值小于实时温度时,绿灯亮(表示降温)。 4.当设定温度值大于或等于实时温度时,红灯亮(表示升温)。 5.蜂鸣器的误差为+-10,当设定温度值与实时温度值误差超过10度时蜂鸣器会响。(按下确定键才会进行比较) 6.k1键:加一 k2键:减一 k3:归零 ok键:确定键(跟蜂鸣器和红绿灯显示有关)-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include 18b20.h#include delay.h#define dataport p0 /定义数据端口 程序中遇到dataport 则用p0 替换#define waringvalue 17 /定义报警值 sbit led_green = p14; /设定温度比实际温度低sbit led_red = p15; /设定温度比实际温度高sbit led = p17;sbit beep = p20;sbit ok = p21;sbit key1 = p23;sbit key2 = p24;sbit key3 = p25;sbit latch1=p26;/定义锁存使能端口 段锁存sbit latch2=p27;/ 位锁存bit readtempflag;/定义读时间标志bit button_flag; /确认按下的标志位unsigned char count;/-the part of new add-/uchar code du_table=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;/describtion: it is a array from 0 to f, the type of nixie tube is common cathode/uchar code we_table=0xff, 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f;/description: it is a array to realize the location is selected,the we_table0s funtion is to cose all dispaly /-unsigned char code dofly_duanma10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值09unsigned char code dofly_weima=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分别对应相应的数码管点亮,即位码unsigned char tempdata8; /存储显示值的全局变量void display(unsigned char firstbit,unsigned char num);/数码管显示函数void init_timer0(void);/定时器初始化void keyscan(void)if(!key1)delayus2x(20);if(!key1) count+;if(count=120) count=0;while(!key1);if(!key2)delayus2x(20);if(!key2) if(count=0) count=0;else count-;while(!key2);if(!key3)delayus2x(20);if(!key3) count=0; while(!key3);if(!ok)delayus2x(20);if(!ok) button_flag = 1; while(!ok);/*- 主函数-*/void main (void) unsigned int temph,templ,temp;init_timer0();led_red = 0;led_green = 0;while (1) /主循环 keyscan();if(button_flag)/-the part of beep. below is the real time range of tempeture-if(count/10 = (temph%100)/10)beep = 1;elsebeep = 0;/-button_flag = 0;if(tempdata2=0x40)led_red = 1;led_green = 0;else if(tempdata3!=0)led_red = 0;led_green = 1;elseif(count/10 (temph%100)/10 )led_red = 1;led_green = 0;elseif(count/10 = (temph%100)%10 )led_red = 1;led_green = 0;elseled_red = 0;led_green = 1;if(readtempflag=1) readtempflag=0; temp=readtemperature(); tempdata0= dofly_duanmacount/10; tempdata1= dofly_duanmacount%10; if(temp&0x8000) tempdata2=0x40;/负号标志 temp=temp; / 取反加1 temp +=1; else tempdata2=0; temph=temp4; templ=temp&0x0f; templ=templ*6/10;/小数近似处理 if(temph/100=0) tempdata3=0;else tempdata3=dofly_duanmatemph/100; /百位温度 if(temph/100=0)&(temph%100)/10=0)/消隐 tempdata4=0;else tempdata4=dofly_duanma(temph%100)/10; /十位温度 tempdata5=dofly_duanma(temph%100)%10|0x80; /个位温度,带小数点 tempdata6=dofly_duanmatempl; tempdata7=0x39; /显示c符号 /*- 显示函数,用于动态扫描数码管 输入参数 firstbit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。 num表示需要显示的位数,如需要显示99两位数值则该值输入2-*/void display(unsigned char firstbit,unsigned char num) static unsigned char i=0; dataport=0; /清空数据,防止有交替重影 latch1=1; /段锁存 latch1=0; dataport=dofly_weimai+firstbit; /取位码 latch2=1; /位锁存 latch2=0; dataport=tempdatai; /取显示数据,段码 latch1=1; /段锁存 latch1=0; i+; if(i=num) i=0;/*- 定时器初始化子程序-*/void init_timer0(void) tmod |= 0x01; /使用模式1,16位定时器,使

温馨提示

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

评论

0/150

提交评论