温度控制系统设计课设_第1页
温度控制系统设计课设_第2页
温度控制系统设计课设_第3页
温度控制系统设计课设_第4页
温度控制系统设计课设_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告题 目:_温度控制系统的设计_ 专 业:_电子信息工程_ _年 级: 2011级_ _ _学 号:_B_学生姓名: _联系电话:_完成日期:2014 年12月绪论随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。因此,各行各业对温度控制的要求都越来越高。可见,温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。而51单片机是各单片机种最为典型和最有代表性的一种。本系统是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以显示出实时温度。本系统基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制出一个温度控制系统,包括以下功能:1能设置需要控制的温度;2检测实际温度;3能显示设置温度和实际温度;4比较实际温度和设定温度,判断是否启动加热装置;该温度系统主要有LCD显示模块、LED状态灯模块、键盘模块、温度检测模块,复位模块等部分组成。 2011年1月4日于长沙 目 录第一章单片机温度控制系统方案及原理简介1.1 单片机温度控制系统方案 1.2 原理简介第二章系统硬件处理方案及原理2.1单片机控制电路模块2.2 矩阵键盘模块2.3 LCD液晶显示模块2.4 单片机温控模块 第三章系统软件设计3.1 主程序流程3.2 系统软件设计总 结第一章 单片机温度控制系统方案及原理简介1.1 单片机温度控制系统方案单片机温度控制系统是数控系统的一个简单应用。在冶金、化工、建材、机械、食品、石油等各类工业中,广泛使用着加热炉、热处理炉、反应炉等,因此,温度是工业对象中一个主要的被控参数。本单片机温度控制系统是以MCS-5l单片机为控制核心,其系统结构框图可表示为:系统采用单闭环形式,其基本控制原理为:将温度设定值和温度采样值同时送入控制电路部分,然后经过单片机运算得到输出控制量,输出控制量控制其他驱动电路,以此来对所要控制的对象进行温度控制,因此达到一定的温度。温度显示液晶驱动电路矩阵键盘输入单片机状态指示灯温度检测电路时钟电路复位图1-1 硬件电路设计框图1.2 原理简介 本温度控制系统共有四个模块,分别是单片机控制系统,矩阵键盘电路,温度检测电路,液晶显示电路,其中以单片机控制系统为控制核心,如图1-1所示。首先由温度检测电路对环境进行温度采集,本系统中检测电路中用的温度传感器是DS18B20,将所在环境温度检测出来,单片机读取温度数据,接着进行液晶显示。矩阵键盘输入设定的数据,然后与实际温度比较,决定加热还是降温,并在液晶显示屏上显示相应的状态。1.3 系统总的原理图 见附1.第二章 系统硬件处理方案及原理2.1 单片机控制电路模块根据系统要求分析,我们选用MCS-51系列的单片机来完成系统设计,下面对MCS-51系列的单片作简要介绍。MCS-51单片机有4个I/O端口,公32根I/O线,4个端口都是准双向口。每个口都包含一个锁存器,即专用寄存器P0P3,一个输出驱动器和输入缓冲器。为方便起见,我们把4个端口和其中的锁存器都统称P0P3。 在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O口使用。P0口:可作为一般的I/O口用,但应用系统采用外部总线结构时,它分时作低8位地址和8位双向数据总线用。P1口:每一位均可独立作为I/O口。P2口:可作为一般I/O口用,但应用系统采用外部系统采用总线结构时,它分时作为高8位地址线。 P3口:双功能口。作为第一功能使用时同P1口,每一位均可独立作为I/O口。另外,每一位均具有第二功能,每一位的两个功能不能同时使用。AT89C52单片机控制电路的原理图如图2-1所示:图2-1单片控制电路原理图单片机的外围电路有复位电路,晶振电路以及其他一些控制电路。其他引脚功能:1) 主电源引脚VCC和VSSVSS(40脚):主电源+5V,正常操作的对EPROM编程及验证时均接+5V电源。VSS(20脚):接地。2) XTAL1(19脚)和XTAL2(18脚):接外部晶振的两个引脚。3) RST/VPD、ALE、/PROG、PSEN控制信号引脚。RST/VPD(9脚):单片机复位/备用电源引脚。刚接上电源时,其内部寄存器处于随机状态,在引脚上输入持续两个机器周期的高电平将使单片机复位。VCC掉电期间,此引脚可接上备用电源,一旦芯片在使用中VCC电压突然下降或短电,能保护片内RAN中信息不丢失,使复电后能继续正常运行。ALE、/PROG(30脚):当访问片外存储器时,ALE的输出用于锁存低字节地址信号。即使不访问片外存储器,ALE端仍以不变的频率周期性地出现脉冲信号。其频率为振荡器频率1/6。因此,它可用作对外输出的时钟,或用于定时的目的。应注意的是:当访问片外数据存储器时,将跳过一个ALE脉冲;ALE端可以驱动8个LSET负载。对含有EPROM的单片机,片内EPROM编程期间,此引脚用于输入编程脉冲(PROG)。PROG(29脚):输出访问片外程序存储器的读选通信号。CPU在从片外程序存储器取指令(或常数)期间,每个机器周期两次有效。每当访问片外存储器时,这两次有效的PROG信号将不会出现。该端同样可驱动8个LSTTL负载。EA/VPP(31脚):当EA 输入端输入高电平时,CPU可访问片内程序存储器4KB的地址范围。若PC值超出4KB地址时,将自动转向片外程序存储器。当EA 输入低电平时,不论片内是否有程序存储器,则CPU只能访问片外程序存储器。本系统直接将EA端接高电平。2.2 矩阵键盘模块键盘分为编码键盘和非编码键盘,键盘上闭合键的识别有专用的硬件编码器实现,并产生编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的键盘称为非编码键盘,在单片机组成的各种系统中,用的较多的是非编码键盘。而非编码键盘又分为独立键盘和矩阵(又称行列式)键盘。 在本系统中,所需的案件要有12个,故所采用的方案就是矩阵键盘。温度控制系统中34矩阵键盘(如图2-1),是将12个按键排成3行4列,第一行将每个按键的一段连接在一起构成行线,第一列将每个按键的另一端连接在一起构成列线,这样便一共有3行4列共7跟线,我们将这7跟线连接到单片机的7个I/O口上,通过程序扫描键盘就可检测12个键。单片机检测是否有键被按下的依据是检测该键对应的I/O口是否为低电平。矩阵键盘两端都与单片机I/O口相连,因此在检测时需认为通过单片机I/O口送出低电平。检测时,先送一列为低电平,其余几列全为高电平(此时确定了列数),然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平(这时又确定了行数),则便可以确认当前被按下的键是哪一行哪一列的,用同样的方法送各列一次低电平,这就是矩阵键盘检测的原理和方法。图2-2 矩阵键盘2.3 LCD液晶显示模块 温度控制系统选用的液晶显示屏HD44780。各引脚功能如下: 1) 主电源引脚VCC和VSSVSS(引脚1):电源地 ; VCC(引脚2):电源(+5V);2) VEE(引脚3):对比调整电压;3)RS,R/W,ERS(引脚4):数据/命令选择端;R/W(引脚5):读写控制端;E(引脚6):使能端;4) DB0-DB7(引脚7-14):I/O端;5) A 和KA(引脚14): LCD背光源正极;K引脚15):LCD背光源负极;1602液晶模块内部的控制器共有11条控制指令,如表下表:序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。2.4 温度检测模块温度检测模块中检测温度的器件为温度传感器,选用DS18B20,连接电路如图2-2所示:图2-2 温度传感器电路温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。DS18B20的主要特征: 1) 全数字温度转换及输出。 2) 先进的单总线数据通信。 3) 最高12位分辨率,精度可达土0.5摄氏度。 4) 12位分辨率时的最大工作周期为750毫秒。 5) 可选择寄生工作方式。 6) 检测温度范围为55C +125C (67F +257F) 7) 内置EEPROM,限温报警功能。 8) 64位光刻ROM,内置产品序列号,方便多机挂接。 9) 多样封装形式,适应不同硬件系统。DS18B20引脚功能:GND 电压地 DQ 单数据总线 VDD 电源电压如图所示2-2,DS18B20只需要接到控制器(单片机)的一个I/O口上。如要采用寄生工作方式,只要将VDD电源引脚与单总线并联即可。但在程序设计中,寄生工作方式将会对总线的状态有一些特殊的要求。本系统采用的是外接电源。DS28B20芯片ROM指令表:1) Read ROM(读ROM)33H (方括号中的为16进制的命令字)这个命令允许总线控制器读到DS18B20的64位ROM。只有当总线上只存在一个DS18B20的时候才可以使用此指令,如果挂接不只一个,当通信时将会发生数据冲突。2) Match ROM(指定匹配芯片)55H这个指令后面紧跟着由控制器发出了64位序列号,当总线上有多只DS18B20时,只有与控制发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位。这条指令适应单芯片和多芯片挂接。3) Skip ROM(跳跃ROM指令)CCH这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。4) Search ROM(搜索芯片)F0H在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。5) Alarm Search(报警芯片搜索)ECH在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止。6) DS28B20芯片存储器操作指令表:Write Scratchpad (向RAM中写数据)4EH这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。写入过程中可以用复位信号中止写入。7) Read Scratchpad (从RAM中读数据)BEH此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。8) Copy Scratchpad (将RAM数据复制到EEPROM中)48H此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。9) Convert T(温度转换)44H收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。10) Recall EEPROM(将EEPROM中的报警值复制到RAM)B8H此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。注:每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。DS18B20的测温过程由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。图2-3 温度传感器DS18B20测温过程初始化DS18B20跳过ROM匹配温度变换延时1S跳过ROM匹配读暂存器读入CPULCD1602液晶显示11第三章 系统软件设计开始液晶初始化及开始温度转换打印固定显示数据启动温度转换读取温度并显示有检测设置键是否被按下进入中断执行中断无图 2-4 主程序流程图3.1 主程序 3.2 系统总程序:#include #define uchar unsigned char #define uint unsigned int #define ActualTemp_worth 9#define TempSet_worth 9#define row_worth 16void dentify_key(uchar key);void get_temp(void);uchar keyscan();void solid_data(void);uchar sk,temp2;/sk表示有键按下标志,temp2用来临时存储扫描值uchar code table=RealTemp:;uchar code table1=TempRset:;uchar code table2=0xdf,C;uchar code table3=ADD;uchar code table4=SUB;uchar a,a_low,b,t,t1,temp1,key,c;/t表示温度整数部分,t1表示温度小数部分,temp1为中间变量(P3)float t2,f_temp;uint temp;uchar sg=0,made_temp=0,made_temp1=0;sbit lcden=P17; /*LCD1602的使能端sbit lcdrs=P16; /*LCD1602的数据命令端sbit DQ=P11; /*DS18B20的DS端sbit SIG=P15; /*按键输入信号sbit ADD=P12;sbit SUB=P13;sbit ex0_enter=P32;uchar code tablenum=0xc0,0xf9,0xa4,0xb0,0x99,/09 0x92,0x82,0xf8,0x80,0x90;uchar code tablenum2=0x30,0x31,0x32,0x33,0x34,/09的ASIIC值0x35,0x36,0x37,0x38,0x39;/*LCD1602液晶显示*/uchar num=0;void delay(int z)/延迟函数delayuint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay1(uint i)/延迟函数delay1while(i0) i-;void write_com(uchar com)lcdrs=0;P0=com;delay(1);lcden=1;delay(1);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay(1);lcden=1;delay(1);lcden=0;void init_lcd()/LCD1602初始化函数lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);bit int_DS18B20(void)/DS18B20初始化函数unsigned char x=0;uint i;DQ=0;i=103; while(i0)i-;DQ=1;i=4;while(i0)i-;x=DQ;/延时片刻后,若x=0,则初始化成功;若x=1,则初始化失败delay(20);return x;/*DS18B20读取一位数据函数bit tempreadbit(void)uint i;bit dat;DQ=0;i+;DQ=1;i+;i+;dat=DQ;i=8;while(i0)i-;return (dat);/*DS18B20读取一个字节函数uchar Read(void)/DS18B20读取一个字节unsigned char i=0;unsigned char j=0;unsigned char dat=0;for(i=8;i0;i-)j=tempreadbit();dat=(j1);return(dat);/*DS18B20写一个字节函数Write(unsigned char dat)uint i;uchar j;bit testb;for(j=1;j1;if(testb)DQ=0;i+;i+;DQ=1;i=8;while(i0)i-;elseDQ=0;i=8;while(i0)i-;DQ=1;i+;i+;/*启动转换函数void int_(void)while(int_DS18B20();/若为1,重新初始化delay(1);Write(0xcc);Write(0x44);/main()主函数void main()init_lcd();/液晶初始化int_(); /启动温度转换sk=0;c=0;EA=1;/开总中断EX0=1; /打开外部中断0中断 solid_data();/打印固定数据while(1)int_();delay1(1700);get_temp();keyscan(); /此次扫描主要是用来检测设置按键是否被按下if(sk!=0)&(c=1)/表明所要设置的温度已经给定if(t+1)made_temp)ADD=1;SUB=1;write_com(0x80+0x4c);for(num=0;num3;num+)write_data(table4num);elseSUB=1;ADD=0;write_com(0x80+0x4c);for(num=0;num3;num+)write_data(table3num); /main函数/*温度读取函数void get_temp(void)while(int_DS18B20();Write(0xcc);Write(0xBE);/读取温度寄存器指令a=Read();b=Read();temp=b;temp127)sg=1;temp=temp;temp=temp+1;if(a=0x00)b=b+1;a_low=a&0x0f;t2=a_low*5/80;t1=(uchar)(t2*10);a=a4;b=b4;b=b=0&key=9)write_data(tablenum2key);/*显示固定数据void solid_data(void)/*写第一行显示数据write_com(0x80);for(num=0;numActualTemp_worth;num+)write_data(tablenum);delay(1);/*打印温度小数点以及摄氏度 write_com(0x80+0x0c);write_data(0x2e);/打印小数点,0x2e为小数点的ASCII码write_com(0x80+0x0e);for(num=0;num2;num+)write_data(table2num);delay(1);/*写第二行显示数据write_com(0x80+0x40);for(num=0;numTempSet_worth;num+)write_data(table1num);delay(1);/*矩阵键盘扫描函数uchar keyscan()/*矩阵键盘第一列扫描P2=0xfe;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);/延时消斗temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)sk=sk+1;/有按键按下标志temp1=P2;switch(temp1)case 0xee:key=0;break;case 0xde:key=4;break;case 0xbe:key=8;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;/*矩阵键盘第二列扫描P2=0xfd;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)sk=sk+1;/有按键按下标志temp1=P2;switch(temp1)case 0xed:key=1;break;case 0xdd:key=5;break;case 0xbd:key=9;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;/*矩阵键盘第三列扫描P2=0xfb;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)temp1=P2;sk=sk+1;/有按键按下标志switch(temp1)case 0xeb:key=2;break;case 0xdb:key=6;break;case 0xbb:key=10;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;/*矩阵键盘第四列扫描P2=0xf7;temp1=P2;temp1=temp1&0xf0;if(temp1!=0xf0)delay(10);temp1=P2;temp1=temp1&0xf0;while(temp1!=0xf0)temp1=P2;sk=sk+1;/有按键按下标志switch(temp1)case 0xe7:key=3;break;case 0xd7:key=7;break;case 0xb7:key=11;break;while(temp1!=0xf0)temp1=P2;temp1=temp1&0xf0;return (key);/*中断函数void ex_enter() interrupt 0c=1;/表明已进入中断delay(100);write_com(

温馨提示

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

评论

0/150

提交评论