已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
郑州轻工业学院本科课程设计(论文) 题 目 _水温控制系统设计_学生姓名 专业班级 电信11-01班 学 号 院 (系) 电子信息工程学院 指导教师(职称) 耿鑫 完成时间 2015 年1月 16日 目 录1 系统方案设计11.1系统设计技术指标11.2系统总体方案设计12 硬件设计22.1 温度检测22.2 实测温度显示22.3 温度设定32.4 设定温度显示32.5 温度控制43 软件设计53.1 工作流程53.2 功能模块53.3 资源分配53.4 功能软件设计63.4.1 主程序与中断服务子程序63.4.2 温度设定值检测与显示子程序83.4.3 当前温度检测子程序93.4.4 显示子程序123.4.5 温度控制子程序153.4.6 报警子程序:16总 结17参考文献18附 录19摘 要本设计是利用8051 实现对温度自动控制。在设计中采用了DS18B20数字温度传感器,其具有较高的精确度,可完成对温度的精准测量;在显示模块分别采用串行口和并行口对设定温度和测定温度进行显示。系统设计有体积小、交互性强等优点。为了实现高精度的水温控制,本单片机系统采用PID算法控制和PWM脉宽调制相结合的技术,通过控制双向可控硅改变电炉和电源的接通、断开,从而改变水温加热时间的方法来实现对水温的控制。本系统由键盘显示和温度控制两个模块组成,通过模块间的通信完成温度设定、实温显示、水温升降等功能。具有电路结构简单、程序简短、系统可靠性高、操作简便等特点。关键字:传感器 水温控制 高精度1 系统方案设计现在的电子产品朝着密集型发展,而电子产品的温度特性普遍比较差,这就对温度的自动控制提出了新的要求。如果采用国外进口的温度检测与自控系统,虽然性能较好,但是结合国情,其价格相当昂贵,又全是英文,推广起来比较困难。基于以上问题,本论文设计出一个温度传感器,配合单片机计算机系统,从软件的编制上实现对各外围硬件的控制,最终实现对水温的自动控制。1.1系统设计技术指标 本设计水温设定由人工设定,温度设定范围为40-90,最小区分度为0.2,标定温差0.2;环境温度降低时,温度控制的静态误差0.2;用十进制数码管显示水的实际温度;采用适当的控制方法,当设定温度突变(由40提高到90)时,减小系统的调节时间和超调量。1.2系统总体方案设计本系统的电路设计方框图如图2-1所示,它由七部分组成:控制部分主芯片采用单片机AT89C51;显示部分采用3位LED数码管以动态扫描方式实现温度显示;温度采集部分采用DS18B20温度传感器;加热控制部分采用继电器电路;时钟电路;复位电路;单列3按键键盘输入设定温度值。 图1-1 系统设计方框图2 硬件设计2.1 温度检测这部分需用数字温度传感器DS18B20,DSl820数字温度计提供9位(二进制)温度读数,指示器件的温度信息经过单线接口送入DSl820或从DSl820送出,因此从主机CPU到DSl820仅需一条线(和地线)。DSl820的电源可以由数据线本身提供而不需要外部电源。因为每一个DSl820在出厂时已经给定了唯一的序号,因此任意多个DSl820可以存放在同一条单线总线上。这允许在许多不同的地方放置温度敏感器件。DSl820的测量范围从-55到+125,增量值为0.5,可在l s(典型值)内把温度变换成数字。P1.6口连接单总线温度传感器DS18B20,如图2.1所示。图2.1 温度检测电路2.2 实测温度显示这部分由有3位LED数码显示器,三个锁存器74LS373和三个非门器件组成。与8051的P0口相连需要输出锁存,三位静态显示电路需要有三位控制锁存部分。采用并口静态显示电路作为显示接口电路,如图2.2所示。图2.2 实测温度静态显示电路2.3 温度设定这部分键盘只设置4个功能键,分别是启动、“十位+”、“个位+”和“小数位+”键,P1口低四位作为键盘接口,利用按键可分别实现对温度的十位、个位加一设置和对小数位加2设置。连续按键可实现40-90的温度设置,如图2.3所示。图2.3 温度设定控制电路2.4 设定温度显示本系统设有3位LED数码显示器,显示设定的温度。采用串行口扩展的静态显示电路作为显示接口电路。图2.4 设定温度显示电路2.5 温度控制 这部分包括报警器电路和电炉控制电路。报警电路如图2.5所示 ,由P1.7口控制,达到设定温度发出报警信号。图2.5 报警电路电炉加热控制电路如图2.6所示,由P1.4口控制,检测温度超过设定温度时关电炉。图2.6 电炉加热控制电路3 软件设计3.1 工作流程 启动加热电路,对温度进行设定范围(4090),显示预置温度,温度设定后就可以按启动键来启动系统工作了。温度检测系统不断检测当前温度,并送往显示器显示,达到预置温度后停止加热并报警;当温度下降到下限(比预置温度低2)时再启动加热。这样不断重复上述过程,使温度保持在预定温度范围之内。按复位键可以随时重新设定预置温度。3.2 功能模块1、键盘管理:检测键盘输入,接受温度设定,启动工作系统。2、显示:显示设定温度和检测温度。3、温度检测:接受温度传感器,转换温度值。4、温度控制:根据检测到的温度对电炉进行控制。5、报警:当检测温度达到设定温度发出报警信号。 3.3 资源分配为了便于阅读程序,数据存储器的分配与定义见下表:地址功能名称初始化值50H51H当前检测温度,小数位在前TEMP0TEMP10052H53H预置温度,小数位在前ST0ST10054H56HBCD码显示缓冲区,十位、个位、小数位T10 T1 T00057H58H二进制缓冲区,低位在前BT0BT10000059HDS1820存在标志位FLAG10060H7FH堆栈区08004H显示数码管段控口 PSW.5报警允许标志F0=0时禁止报警;F0=1时允许报警F003.4 功能软件设计3.4.1 主程序与中断服务子程序开始30秒到?中断返回并行口中断初始化串行口初始化定时器初始化等待定时中断中断系统初始化YN温度设定值检测与显示当前温度检测显示当前检测温度温度控制达到设定温度报警定时中断程序3.1 主程序和中断服务子程序的流程图按图3.1所示主程序流程图,可编写出主程序和中断服务子程序。由于温度有较大的惯性,进行定时器30S定时,30S对温度进行刷新一次。当采用6MHZ晶振时,每机器周期2us,定时器方式一,最大定时为131ms。要实现30s定时,还要另外设置一个软件计数器,对定时时间进行计次,累加后实现30s定时。为了便于计算,取定时时间为120ms,250次,合计30s。时间常数:T=216 120*103 /2=5536=15A0主程序:ORG 0000HAJMP MAINORG 000BHAJMP TOINT ;转T0中断服务子程序MAIN: MOV SP ,60H ;置堆栈指针 MOV P1,0FH ;置p1.0-P1.3 MOV TMOD,#01H ;T0定时器,方式1 MOV TH0,#15H ;置T0时间常数 MOV TL0,#0A0H SETB ET0 ;T0开中断SETB EASETB TR0 ;T0启动MOV R7,#250 ;置三十秒计数初值LMO:AJMP LM0 ;等待T0中断;定时器中断服务子程序ORG 0200HTOINT: MOV TH0,#15H ;重置定时常数MOV TL0,#0A0HDJNZ R7,BACK ;判断30 秒到否?未到返回MOV R7,#250 ;重置三十秒计数初值LCALL KIN ;调用温度设定值检测与显示子程序LCALL TIN ;调用当前温度检测子程序MOV BT1,TEMP1;送当前温度到显示缓冲区MOV BT0,TEMP0LCALL DISP2 ;调用温度检测显示子程序LCALL CONT ;调用温度控制子程序LCALL ALARM ;调用报警子程序BACK:RETI ;中断返回3.4.2 温度设定值检测与显示子程序图2.2 为温度设定值检测与显示程序流程图。A有键闭合P1.1=0?P1.2=0?P1.3=0?P1.0=1?有键闭合返回启动加热释放键ANYYYYNNYN检验温度是否在需求范围设定温度送显示缓冲区调用显示子程序调用显示子程序延时去抖10送A1送A0.2送AA加预置温度送预置缓冲区N2.2 温度设定值检测与显示程序流程图KIN: ACALL CHK ;检验温度是否在需求范围MOV BT1,ST1 ;设定温度送显示缓冲区MOV BT0,ST0 LCALL DISP1 ;调显示子程序KIN0: ACALL KEY ;读键值JZ KIN0 ;无键闭合,则从新检测 ACALL DISP1 ACALL DISP1 ;两次调显示子程序延时去抖ACALL KEY ;再检测有无键按下JZ KIN0 ;无键按下重新检测JB ACC.1,S1MOV A,#100 ;十位按下AJMP SUM S1: JB ACC.2,S0MOV A ,#10 ;个位键按下AJMP SUM S0: JB ACC.3,S ;小数位按下,键值加2MOV A,#02SUM: ADD A,ST0MOV ST0,AMOV A,#00HADDC A,ST1MOV ST1,AKIN1: ACALL KEY ;判断闭合键释放JNZ KIN1 ;未释放,继续判断AJMP KIN ;闭合建释放继续扫描键盘S: JNB ACC.0,KIN ;无键闭合重新扫描键盘RETKEY: MOV A,P1CPL AANL A,#0FHRET;判断温度是否在40-90度CHK: MOV A,#84H ;90度低八位送aCLR CSUBB A,ST0 ;低八位减,借位送cyMOV A ,#03H ;90度高八位送aSUBB A,ST1 ;高八位带借位减 JC OUTA ;越界转移RETOUTA: MOV ST1,#01H ;将40度写入数据区MOV ST0,#90HRET3.4.3 当前温度检测子程序图3.3为温度检测子程序流程图。为了确保检测数据的可靠性,采用四点均值滤波法进行软件滤波,即每次测温都使DS18B20连续四次采样,然后取算术平均值作为该次温度检测值。温度检测值存入TEMP0、TEMP1,R6记录连续采样次数。返回返回调读取温度子程序转换结果送TEMP0、TEMP1取四次采样平均值将结果单元TEMP0、TEMP1和寄存器B清零转换次数4送R6(R6)1=0?返回温度检测程序NY图3.3 温度检测子程序流程图TIN : MOV TEMP0,#00H ;清结果单元MOV TEMP0,#00HMOV B,#00H;清BMOV R6,#04H ;四次取样LOOP: LCALL READAD ;调读取温度子程序ADD A,TEMP0MOV TEMP0,A MOV A,#0ADDC A,TEMP1MOV TEMP1 ,AGN1: MOV A,TEMP0 ;取四次采样平均值CLR CRRC AMOV TEMP0,AMOV A,TEMP1CLR CRRC AMOV TEMP1,A MOV A,TEMP0CLR CRRC AMOV TEMP0,AMOV A,TEMP1CLR CRRC AMOV TEMP1,ADJNZ R6,LOOPRETREADAD:SETB PSW.3 ;设置工作寄存器当前所在的区域CLR EA ;使用ds1820一定要禁止任何中断产生LCALL INT ;调用初使化子程序MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A, #44HLCALL WRITE ;送入温度转换命令LCALL INT ;温度转换完全,再次初使化ds1820MOV A,#0CCHLCALL WRITE ;送入跳过ROM命令MOV A,#0BEHLCALL WRITE ;送入读温度暂存器命令LCALL READMOV TEMP0,A ;读出温度值低字节存入TEMP0LCALL READMOV TEMP1,A ;读出温度值高字节存入TEMP1SETB EARETINT: ;初始化ds1820子程序CLR EAL0:CLR P1.6 ;ds1820总线为低复位电平MOV R2,#200L1:CLR P1.6DJNZ R2,L1 ;总线复位电平保持400usSETB P1.6 ;释放ds1820总线MOV R2,#30L4:DJNZ R2,L4 ;释放ds1820总线保持60usCLR C ;清存在信号ORL C,P1.6JC L0 ;存在吗?不存在则重新来MOV R6,#80L5:ORL C,P1.6JC L3DJNZ R6,L5SJMP L0L3:MOV R2,#240L2:DJNZ R2,L2RETWRITE: ;向ds1820写操作命令子程序CLR EAMOV R3,#8 ;写入ds1820的bit数,一个字节8个bitWR1:SETB P1.6MOV R4,#8RRC A ;把一个字节data(A)分成8个bit环移给 CCLR P1.6 ;开始写入ds1820总线要处于复位(低)状态WR2:DJNZ R4,WR2 ;ds1820总线复位保持16usMOV P1.6,C ;写入一个bitMOV R4,#20WR3:DJNZ R4,WR3 ;等待40usDJNZ R3,WR1 ;写入下一个bitSETB P1.6 ;重新释放ds1820总线RETREAD:CLR EAMOV R6,#8 ;连续读8个bitRE1:CLR P1.6 ;读前总线保持为低MOV R4,#4NOPSETB P1.6 ;开始读总线释放RE2:DJNZ R4,RE2 ;持续8usMOV C,P1.6 ;从ds1820总线读得一个bitRRC A ;把读得的位值环移给 AMOV R5,#30RE3:DJNZ R5,RE3 ;持续60usDJNZ R6,RE1 ;读下一个bitSETB P1.6 ;重新释放ds1820总线RETEND3.4.4 显示子程序;串口显示子程序DISP1: ACALL HTB ;调用BCD转换子程序MOV SCON,#00H ;置串行口 为方式0MOV R2,#03H ;显示数据位数送R2 MOV R0,#T10 ;显示缓冲区首地址送R0 LED: MOV A ,R0 ;取显示数MOV SBUF,A INC R0WAIT: JBC TI, LED ; 发送结束,转下一位,并清中断标志SJMP WAIT ;为发送完,等待RET;并口显示子程序DISP2: ACALL HTB ;调用BCD转换子程序MOV R0,#T10 MOV R1,#03MOV P2,#01H ;P2.0置1 ,锁存允许LOOP: MOV A ,R0 ;取数据MOV DPTR,#OUTSEG ;显示端口地址MOVX DPTR ,A INC R0 MOV A,P2RL A ;下一位锁存允许MOV P2,ADJNZ R1,LOOP ;三位未显示完继续RET 显示完,返回HTB: ;BCD码转换 MOV A,BT0MOV B,#100DIY ABMOV T10,AMOV A,#10XCH A,BDIY ABMOV T1,AMOV T0,BMOV A ,BT1LH: CJNE A,#01H,LH0 ;高位为1时,加256(十进制),否则转移MOV A ,#06HADD A,T0DA AMOV T,AMOV A,#05HADDC A ,T1DA AMOV T1,AMOV A,#02HADDC A,T10DA AMOV T10,ALH0:CJNE A,#02H,LH1 ;高位为2 时,加512(十进制),否则转移MOV A ,#02HADD A,T0DA AMOV T,AMOV A,#01HADDC A ,T1DA AMOV T1,AMOV A,#05HADDC A,T10DA AMOV T10,ALH1:MOV A ,#08H ;高位为3 时,加768(十进制)ADD A,T0DA AMOV T,AMOV A,#06HADDC A ,T1DA AMOV T1,AMOV A,#07HADDC A,T10DA AMOV T10,ALMAP: ;将BCD码转换位显示字型代码MOV R0,T10 ;十位数据字型代码MOV DPTR,#TAB1 ;小数点暗MOV A ,R0MOV A,A+DPTRMOV R0,A;INC R0 ;个位数据字型代码MOV DPTR,#TAB2 ;小数点亮MOV A,R0MOV A,A+DPPTRMOV R0,A;INC R0 ;小数位数据字型代码 MOV DPTR,#TAB1 ;小数点暗MOV A,R0MOV A,A+DPTRMOV R0,ARETTAB1: ;共阳小数点暗 0-9 字型代码 DB 0C0H 0F9H 0A4H 0B0H 99HDB 92H 82H 0F8H 80H 90HTAB2: ;共阳小数点亮 0-9 字型代码DB 40H 79H 24H 30H 19HDB 12H 02H 78H 00H 10H 3.4.5 温度控制子程序将当前温度与预置温度比较,当前温度小于预置温度时,接电炉加热;当前温度大于预置温度时,停止加热;当二者温度相等是电炉保持原来状态;当前温度降低到比预置温度低2度时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热,当前温度可能低于报警下限,为了防止误报,在未达到预置温度时,不允许报警,为此设置了报警允许标志F0。程序流程图如图3.4 所示:当前温度与预置温度比较当前温度预置温度到达过预置温度当前温度预置温度-2开电炉返回置允许报警标志关电炉NYYYNN图3.4 温度控制流程图CONT:MOVA,TEMP1;检测温度整数部分送ACLR C;c清零SUBBA,ST1JNCLOFF;无借位,表示当前温度大于等于预置温度JNBF0,LON;F0为零,说明温度还没有超过预置温度CLR C;F0为1,说明温度已到达过预置温度,再检测温SUBBA,#2;差是否低于预置温度2度JNCLOFFLON:CLRP1.4;开电炉SJMPEXITLOFF:SETBF0;置电炉允许标志SETBP1.4;关电炉EXIT:RET3.4.6 报警子程序:ALARM:MOVA,TEMP1;检测温度整数部分送ACLRC;c清零SUBBA,ST0JCLA;有借位,表示当前温度小于预置温度;返回SETBP1.4;无借位,开警报SETB P1.5;关电炉ACALL DELAY;延时0.6秒CLR P1.4;关警报LA:RET;延时子程序Delay:MOVR3,#250LOOP1:MOVR4,#10LOOP2:DJNZR4,LOOP2 DJNZR3,LOOP1 RET总 结经过近二周的努力,在老师和同学的帮助下,我基本上完成了设计任务.通过这次课程设计,我充分认识到了自学的重要性,以及学以致用的道理.我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用.在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识.也使我加深了对单片知识的了解和应用. 通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工人腰背痛预后影响因素研究
- 康复机器人交互界面的适老化设计
- 应急指挥视角下传染病医院应急管理团队效能提升策略实践
- 平衡调控策略
- 干细胞治疗伦理共识形成机制
- 帕金森病自主神经功能障碍的中医辨证论治方案
- 帕金森病冲动控制障碍的预防与干预策略
- 巨噬细胞M2极化材料的设计与应用策略
- 感染科病例分析汇报
- 医疗信息化系统运行评估报告
- 2025年人文常识竞赛题库及答案
- 2025中国B2B市场营销现况白皮书
- 耳鼻喉科护士长2025年度述职报告
- 酒店工程全过程监理合同
- 购销摄像机合同范本
- 电力系统经济学原理课后习题及答案
- 智能水杯行业状况分析报告
- 电力部门春节安全生产培训
- 公司财务部门工作职责
- 人教版九年级数学上册22 3 3拱桥问题和运动中的抛物线 一课一练 (含答案)
- 网球运动基本知识及规则课件
评论
0/150
提交评论