版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE26课程设计任务书:设计并制作一个简易的单片机温度自动控制系统(见图一)。控制对象为自定。恒温箱执行器可编程控制器显示器变送器设置键盘电源220VAC 恒温箱执行器可编程控制器显示器变送器设置键盘电源220VAC温度传感器温度传感器图一恒温箱控制系统(一)设计要求如下(1)温度设定范围为40℃~90℃,最小区分度为1℃(2)用十进制数码显示实际温度和设定温度。(3)显示加热器工作时间。(4)显示加热器的工作状态:加热、恒温保持。(5)温度控制的静态误差≤2℃。(6)当温度越过上限时(自己设定),声光报警(二)扩充功能:(1)控制温度可以在一定范围内设定,并能实现自动调整,以保持设定的温度基本保持不变(测量温度时只要求在现场任意设置一个检测点)。(2)显示调节时间和超调量
二、摘要本次设计的主要目的是实现对温度的控制,其主要思路是通过温度传感器感应物体的温度,通过数码管显示出来,并与设置的温度比较调节。当温度与设定温度的差超过某一设定值时,需要进行加温降温调节;另外当温度不在40度到90度范围内时,就需要报警。本次设计设定了键盘,通过键盘输入设定的数,然后通过调温使该物体的温度达到设定的数值。本次设计采用单片机原理,共有温度采集、显示、键盘扫描、温度比较调节四大模块。通过温度动态显示,可以显示被测物体的温度,而通过键盘扫描可以得到设定的温度值,通过温度传感器可以感应环境的温度。那么,本次设计所能实现的功能就是可以测定环境的温度并能实现自动调整和手动键盘设置。本次实验使用52系列单片机,DS18B20温度传感器,运用简单的编程,模拟实际功能。三、前言随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向,特别是近年来,温度控制系统已应用到生活的各个方面,但是温度控制一直是一个热门领域,是与人们息息相关的问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景和实际意义。温度是科学技术中最基本的物理量之一。物理、化学、生物等学科都离不开温度,在工业生产等许多领域,温度常常是表征对象和过渡状态的重要物理量。各个工程应用领域对温度的要求越来越高,可见温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用越来越广泛,各种试用于不同场和的温度控制器应运而生。在这种背景下,本次课程设计具有显著的理论和现实意义。四、方案分析方案分析论证:方案综述:温度采集,显示,键盘扫描,温度比较调节,报警。温度采集采用温度传感器DS18B20,该温度传感器内含AD转换器,因此连接简单,应用方便,直接输出温度数据。显示采用动态显示,P0口输出八段数码管的特征码,P1口输出的是片选信号。键盘扫描法采用逐行扫描查询的方法,取得按键控制信号。温度比较调节环节是运用单片机内部单元的数据比较指令,由比较结果得到相应的控制信号,P3口的两位输出电平,控制外部设备工作。(1)硬件的说明本次设计硬件用到了单片机89C52、温度传感器18B20、三—八译码器74LS138、驱动74LS245、数码管、矩阵式键盘、灯泡加热,风扇等。单片机89C52是常用的单片机之一,单片机上有32个P口,其中P0、P1、P2、P3各8个。温度传感器18B20接到单片机的一个P口上,本次设计是,因为温度传感器18B20可以直接位串行输出,可直接连接。三八译码器74LS138出线端用于连接驱动74LS245,入线端ABC连接到单片机的P1口上的、、P1.2,通过调节P1口上的这三端的值进而控制出线端0到7哪个为低电平。本次设计用到2个74LS245,它的输出端接数码管,输入端一个接P0口,一个接74LS138,它们分别控制数码管的字型码输出和数码管选择,作为驱动。矩阵式键盘采用3×3式,分别表示1到9。通过将6个出线端接到P2口上,然后通过P2口控制键盘,键盘的行拉高电阻和5伏电压。另外,在主电路的加热模块引入的是型号为JQC-3F的继电器,其目的是电气隔离,将弱点驱动的控制电路(2)软件实现说明:a.温度采集,利用DS18B20,DS18B20_Reset进行传感器复位,DS18B20_WriteByte给单片机写入命令,DS18B20_ReadByte从单片机种读出数据,读出的数据以十六位二进制的数据存储在两个单元当中,其中包括第四位的小数数据,将其舍去,将中间八位的数据拿出来,存放在单元3CH中。b.数据显示:用查表的方法,将3CH中的八位二进制数转化成压缩BCD码,再用查表的方法将压缩BCD码转换成为分离BCD码,从P0口输出。在输出相应位时,同时从P1口输出片选信号,有3-8译码器74LS138实现译码,采用动态显示,是各个LED数码管一位一位轮流显示。c.键盘扫描:利用扫描法确定是否按键,按的是哪一个,从而改变设置温度,或者跳到显示加热时间的状态。d.温度比较调节:将设定温度和现实温度对比,若是低于或者高过设定温度一定值的话,就会启动加热或者降温设备,实现温度调节。用软件实现温度范围的设定,调用比较语句来判定系统状态,从改变输出电平,控制外设。因此如果单纯地令传感器温度和键盘温度相等,就会出现灯泡一闪一灭的抖动状态,消抖方略是在设定温度上下各加2度。使最终温度在这个范围内来回波动。e.报警功能:当实时温度在40度以下或者90度以上时,从片选的74LS138的最后两位分别交替输出高低电平,从而驱动蜂鸣器和指示灯,实现报警功能。(3)、软硬件系统概述:本次设计的主题思路如下:本次设计的温度控制系统为手动、自动双重输入系统。如果键盘没有按下键值,则系统自动将温度设定在40度到90度。如果键盘输入数据,但数据不在40度到90度的范围之内,那么作报警处理。如果键盘输入的数据在40度到90度范围内,那么系统会将被控对象的温度控制在设定温度左右,且误差不超过2度。运用80C52的存储器和运算器来实现采集数据,逻辑分析比较,输出控制等功能的综合。外部设备再加一些必要的驱动电路,就能实现设计要求。软件设计流程图见附录。五、实现本次设计的功能模块分为:温度显示模块、键盘输入模块、自动比较调整模块、加热时间显示模块,报警模块。温度显示功能:温度传感器18B20能自动感应温度,并且内含AD转换器,能够直接串行输出一个温度值,并将它存储在单片机某两个单元内。功能如图所示:在内部经过数据处理,分析比较之后,送到留个7段数码管显示:2.键盘输入模块:在键盘扫描过程中,若发现外部有键按下,就改变内部单元的值,即改变设定温度。另外,在第三个键按下时,主程序不再显示实时温度和设定温度,转而显示加热时间,将定时器内容转换显示在数码管上,键盘模拟如图所示:3.自动比较调整模块:此模块主要是由单片机内部单元完成的,由软件实现比较的操作,根据结果实行相应的控制操作。操作电平由和输出。在外接设备中,加热器由白炽灯实现,由于其是用市电的,所以需要接入JQC-3F继电器做电气隔离,降温设备采用额定电压5V的风扇,由于单片机的输出功率不足以驱动继电器和风扇需要加入驱动放大9013以保证外设正常工作。4.加热时间显示模块:在加热状态下,打开计时器中断,开始计时;当实时温度上升到设定温度时,关闭计时,将加热时间存入单元,并转换成为时分秒显示;当键盘输入时间显示命令时,系统进入了加热时间显示模块:晶振计时加热时间显示——时分秒显示模式5.报警模块:本实验要求温度的范围设定在40度到90度之间,在此范围外要进行声光报警,外接的蜂鸣器和LED指示灯在交替电平作用下,可以实现报警要求。蜂鸣器—LED报警电路在调试过程中出现的问题:1.问题:在仿真中发现继电器不工作;原因:9013驱动电流太小解决方案:把两个9013复合起来,增大驱动电流;2.在连接外电路灯泡时,发现接好后灯泡不亮原因:继电器的开关接线端接错解决方法:将继电器的接线端接好;3.发现实物中当电灯泡的温度达到设定温度时,灯泡开始一亮一闪不停闪烁原因:灯泡的温度不停地升降,导致灯泡不停的抖动解决方法:在设定的温度上下各加2度,使温度在这个范围内来回波动;4.问题:把两个继电器复合在一起后,发现继电器还是不能工作,原因:在第一级的9013中的集电极上接了一个发光二极管,分压解决方案:去掉发光二极管;5.问题:在使用18B20是容易反接,高温击穿等原因:18B20是温度传感器,对温度及其敏感,快速加热或者温度过高很容易击穿解决方案:焊接和脱焊18B20时,速度要快否则可能烧坏,焊接时认准方向;6.发现程序40H单元初始化后并没有保存温度原因:地址重叠解决方法:修改18B20程序存放地址;7.拔点后发光二极管还在亮原因:没有并联反馈二极管解决方法:并联反馈二极管;8.问题:数码显示管上显示的18B20采集的温度永远都是85度原因:在从单片机板子上取下18B20时,由于温度过高使得18B20损坏解决方案:从新换了一个18B20;附录1原件明细表
单片机89C52温度传感器18B20驱动74LS245三线—八线译码器7段数码管键盘继电器晶振蜂鸣器附录2系统仿真图:附录3系统流程图温度显示流程图温度范围设定温度范围键盘扫描程序附录4设计程序TPHEQU3AH;实际温度高位TPLEQU3BH;实际温度低位SHEDEQU40H;设定温度存放ORG0000HLJMPMAINORG000BH;定时器中断LJMPT0INTORG0030HMAIN:MOVSP,#70H初始化;;加热器初始化;显示加热初始化 CLRA SETBEA;开放cpu中段 SETBET0;开放定时器中段 MOVTMOD,#01H;定时器初始化15536 MOVTH0,#3CH MOVTL0,#0B0H MOV41H,#14H;设置分支 MOV3CH,#00H MOV3AH,#00H MOV3BH,#00H MOVSHED,#25;设定温度初值 MOV42H,#00H MOV43H,#00H MOV44H,#00H MOV50H,#00H MOV51H,#00H MOV52H,#00H MOV53H,#00H MOV54H,#00H MOV55H,#00HAGAIN:LCALLGETTEMP;获取实际温度MOVA,3CH CLRC SUBBA,#5AH;与90度比较,大于则报警 JCCONTIUE LCALLFENGMING LJMPCONTIUE1CONTIUE:CLRCMOVA,3CHSUBBA ,#28H;与40度比较,小于则报警 JNCCONTIUE1 LCALLFENGMING CONTIUE1:LCALLSCANKEY;键盘扫描JB20H.0,TIME LCALLTEMPSHOW;显示温度REDO1:JB20H.1,TUP JB20H.2,DOWNREDO:UNEQ:CLRC;阈值判断MOVA,3CH ADDA,#1 SUBBA,SHED JCTIP1 CLRC MOVA,3CH SUBBA,#2 SUBBA,SHED JNCTIP2 LJMPAGAIN LJMPAGAINDOWN:CLRTR0;关闭计时器 S;散热;关加热器;关显示灯 LJMPREDO LJMPAGAIN;开加热器;开指示灯 SETBTR0 LJMPREDOTIME:LCALLTIMESHOWLJMPREDO1ORG0300HT0INT:PUSHPSW;保护现场PUSHACC MOVTH0,#3CH;50ms20次一秒 MOVTL0,#0B0H DJNZ41H,OVER MOV41H,#14H INC42H MOVA,42H CJNEA,#60,OVER;秒清零,分加1 MOV42H,#00H INC43H MOVA,43H CJNEA,#60,OVER;分清零,时加1 INC44H MOV43H,#00HOVER:POPACC恢复现场POPPSW RETIGETTEMP:Reset:CALLDS18B20_Reset;设备复位MOVA,#0CCH;跳过ROM命令CALLDS18B20_WriteByte;送出命令MOVA,#044H;开始转换CALLDS18B20_WriteByte;送出命令JNBDQ,$;等待转换完成CALLDS18B20_Reset;设备复位MOVA,#0CCH;跳过ROM命令CALLDS18B20_WriteByte;送出命令MOVA,#0BEH;读暂存存储器CALLDS18B20_WriteByte;送出命令CALLDS18B20_ReadByte;读温度低字节MOVTPL,A;存储数据CALLDS18B20_ReadByte;读温度高字节MOVTPH,A;存储数据 CALLTEMP_REVERSE RET ;**************************************;延时X*10微秒(STC90C52RC@12M);不同的工作环境,需要调整此函数;入口参数:R7;出口参数:无;**************************************DelayX0us:;2当改用1T的MCU时,请调整此延时函数NOP;1NOP;1NOP;1NOP;1NOP;1NOP;1NOP;1NOP;1DJNZR7,DelayX0us;2RET;2;**************************************;复位DS18B20,并检测设备是否存在;入口参数:无;出口参数:无;**************************************DS18B20_Reset:CLRDQ;送出低电平复位信号MOVR7,#48;延时至少480usCALLDelayX0usSETBDQ;释放数据线MOVR7,#6;等待60usCALLDelayX0usMOVC,DQ;检测存在脉冲MOVR7,#42;等待设备释放数据线CALLDelayX0usJCDS18B20_Reset;如果设备不存在,则继续等待RET;**************************************;从DS18B20读1字节数据;入口参数:无;出口参数:ACC;**************************************DS18B20_ReadByte:CLRAPUSH0MOV0,#8;8位计数器ReadNext:CLRDQ;开始时间片NOPNOPSETBDQ;准备接收NOPNOPMOVC,DQ;读取数据RRCAMOVR7,#6;等待时间片结束CALLDelayX0usDJNZ0,ReadNextPOP0RET;温度显示程序;**************************************;向DS18B20写1字节数据;入口参数:ACC;出口参数:无;**************************************DS18B20_WriteByte:PUSH0MOV0,#8;8位计数器WriteNext:CLRDQ;开始时间片NOPNOPRRCA;输出数据MOVDQ,CMOVR7,#6;等待时间片结束CALLDelayX0usSETBDQ;准备送出下一位数据DJNZ0,WriteNextPOP0RET TEMP_REVERSE:MOVA,TPH ;将TPH,TPL转换为无符号数,并存放于3CH单元 ANLA,#0FH ;保留低四位,其最高位为符号位 SWAPA MOV3CH,A MOVA,TPL ANLA,#0F0H;保留高四位,丢弃小数部分 SWAPA ORLA,3CH MOV3CH,A JBACC.7,FUWENDU ;最高位符号位 为1为负数 HUIQU:RET FUWENDU:CPLA ADDA,#01 MOV3CH,A CALLTEMPSHOW MOVDPTR,#TABLE MOVA,#12 MOVCA,@A+DPTR MOVP1,#02 ;显示负号 MOVP0,A CALLDELAY CALLDELAY LJMPHUIQUTEMPSHOW:MOVA,40H ;温度暂存储MOVDPTR,#TABLE1;查表获得十进制温度 MOVCA,@A+DPTR MOV39H,A ;十进制温度存储于40单元 ANLA,#0F0H ;分离温度的十位数 SWAPAMOVDPTR,#TABLE MOVCA,@A+DPTR ;取十位数字型码 MOVP1,#00 ;显示位置 MOVP0,A CALLDELAY CALLDELAY ;延时 MOVA,39H ANLA,#0FH ; 分离温度的个位数 MOVDPTR,#TABLE MOVCA,@A+DPTR ;取个位字型码 MOVP1,#01;显示低位MOVP0,A CALLDELAY CALLDELAY MOVA,#11 MOVCA,@A+DPTR ;取C得字型码 MOVP1,#02;显示C,表示摄氏度 MOVP0,A CALLDELAY MOVA,3CH ;温度暂存储MOVDPTR,#TABLE1;查表获得十进制温度 MOVCA,@A+DPTR MOV3DH,A ;十进制温度存储于3CH单元 ANLA,#0F0H ;分离温度的十位数 SWAPAMOVDPTR,#TABLE MOVCA,@A+DPTR ;取十位数字型码 MOVP1,#03 ;显示位置 MOVP0,A CALLDELAY CALLDELAY ;延时 MOVA,3DH ANLA,#0FH ; 分离温度的个位数 MOVDPTR,#TABLE MOVCA,@A+DPTR ;取个位字型码 MOVP1,#04;显示低位MOVP0,A CALLDELAY CALLDELAY MOVA,#11 MOVCA,@A+DPTR ;取C得字型码 MOVP1,#05;显示C,表示摄氏度 MOVP0,A CALLDELAY RET DELAY: MOVR6,#250;1MS延时程序 DEL:NOPNOP DJNZR6,DEL RETTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,39H,40HTABLE1:DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,10H,11H,12H,13H,14H,15HDB16H,17H,18H,19H,20H,21H,22H,23H,24H,25H,26H,27H,28H,29H,30H,31H DB32H,33H,34H,35H,36H,37H,38H,39H,40H,41H,42H,43H,44H,45H,46H,47H DB48H,49H,50H,51H,52H,53H,54H,55H,56H,57H,58H,59H,60H,61H,62H,63H DB64H,65H,66H,67H,68H,69H,70H,71H,72H,73H,74H,75H,76H,77H,78H,79H DB80H,81H,82H,83H,84H,85H,86H,87H,88H,89H,90H,91H,92H,93H,94H,95HTIMESHOW:MOVA,44H;时间显示程序 MOVDPTR,#TABLE1;数值码首地址给DPTR MOVCA,@A+DPTR;取数值 ANLA,#0F0H SWAPA MOV50H,A MOVA,44H;显示时 MOVDPTR,#TABLE1 MOVCA,@A+DPTR ANLA,#0FH MOV51H,A MOVA,43H;显示分 MOVDPTR,#TABLE1 MOVCA,@A+DPTR ANLA,#0F0H SWAPA MOV52H,A MOVA,43H MOVDPTR,#TABLE1 MOVCA,@A+DPTR ANLA,#0FH MOV53H,A MOVA,42H;显示秒 MOVDPTR,#TABLE1 MOVCA,@A+DPTR ANLA,#0F0H SWAPA MOV54H,A MOVA,42H MOVDPTR,#TABLE1 MOVCA,@A+DPTR ANLA,#0FH MOV55H,A MOVR0,#50H MOVR2,#06H MOVR3,#00HGOTO:MOVA,@R0;时间显示MOVDPTR,#TABLET MOVCA,@A+DPTR MOVP0,A MOVP1,R3 LCALLDL1MS INCR0 INCR3 DJNZR2,GOTO RETTABLET:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDL1MS:MOVR7,#250;延时1msHL:NOP NOP DJNZR7,HL RETSCANKEY:MOVP2,#0F0H;键盘扫描程序MOVA,P2ANLA,#11110000B;判断是否有键按下XRLA,#11110000BJZNEXT3LCALLDLA20MS;延时20ms再判断是否有键按下MOVA,P2ANLA,#11110000BXRLA,#11110000BJZNEXT3MOVA,P2MOVR5,#00HCONT:RLCAINCR5JNCFOUNDCJNER5,#03,CONTFOUND:MOVA,P2;判断是否放开键ANLA,#11110000BXRLA,#11110000BJNZFOUND
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度中级软考预测复习附完整答案详解【夺冠】
- 2024-2025学年度公务员(省考)试题预测试卷附答案详解(培优)
- 2024-2025学年度公务员(省考)模拟试题附完整答案详解【考点梳理】
- 2024-2025学年医师定期考核试题及参考答案详解(综合题)
- 2024-2025学年中医执业医师过关检测试卷带答案详解(考试直接用)
- 2024-2025学年度电梯考试考前冲刺练习重点附答案详解
- 2024-2025学年度化验员模拟试题【重点】附答案详解
- 2024-2025学年刑法期末考试通关考试题库及答案详解【新】
- 2024-2025学年度注册公用设备工程师练习题附参考答案详解【突破训练】
- 2024-2025学年度电梯考试模拟题库含答案详解【满分必刷】
- 股东清算协议书范本
- 中国认知功能社区筛查及管理指南2026
- 2025年消防设施操作员中级维保方向考试试卷及答案
- 呼吸道疾病护理策略与实践
- 中小型企业人力资源外包存在的问题及对策研究
- 2025年6月青少年软件编程Scratch图形化等级考试一级真题(含答案和解析)
- 水基清洗剂使用安全手册MSDS
- 钢结构工程施工方案(完整版)
- “动物医学专业”、“畜牧兽医专业”单招复习参考试题
- 广电网络面试准备及问题预测集
- 2026甘肃省公务员考试题及答案行测
评论
0/150
提交评论