1、 目录1 硬件设计41.1 温度检测41.2 实测温度显示41.3 温度设定51.4 设定温度显示61.5 温度控制62 软件设计72.1 工作流程72.2 功能模块72.3 资源分配72.4 功能软件设计82.4.1 主程序与中断服务子程序82.4.2 温度设定值检测与显示子程序92.4.3 当前温度检测子程序112.4.4 显示子程序152.4.5 温度控制子程序172.4.6 报警子程序:19总结20参考文献20附录20水温控制器设计摘要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计以保质、节
2、能、安全和方便为基准设计了一套电热壶水温控制系统,能实现在4090范围内设定控制温度,且95时高温报警,十进制数码管显示温度,在PC机上显示温度曲线等功能,并具有较快响应与较小的超调。整个系统核心为SPCE061A,前向通道包括传感器及信号放大电路,按键输入电路;后向通道包括三部分:LED显示电路,上位机通信电路以及控制加热器的继电器驱动电路。利用SPCE061A的8路10位精度的A/D转换器,完成对水温的实时采样与模数转换,通过数字滤波消除系统干扰,并对温度值进行PID运算处理,以调节加热功率大小。同时在下位机上通过数码管显示当前温度,通过USB接口传送信息至上位机,可以直接在PC端观察温度
3、的变化曲线,并根据需要进行相应的数据分析和处理,由此完成对水温的采样和控制。通过验证取得了较满意的结果。本设计是利用8051 实现对温度自动控制。在设计中采用了DS18B20数字温度传感器,其具有较高的精确度,可完成对温度的精准测量;在显示模块分别采用串行口和并行口对设定温度和测定温度进行显示。关键词数字温度传感器(DS18B20,DSl820); LED数码显示器;三个锁存器74LS373。1 硬件设计1.1 温度检测这部分需用数字温度传感器DS18B20,DSl820数字温度计提供9位(二进制)温度读数,指示器件的温度信息经过单线接口送入DSl820或从DSl820送出,因此从主机CPU到
4、DSl820仅需一条线(和地线)。DSl820的电源可以由数据线本身提供而不需要外部电源。因为每一个DSl820在出厂时已经给定了唯一的序号,因此任意多个DSl820可以存放在同一条单线总线上。这允许在许多不同的地方放置温度敏感器件。DSl820的测量范围从-55到+125,增量值为0.5,可在l s(典型值)内把温度变换成数字。P1.6口连接单总线温度传感器DS18B20,如图1.1所示。图1.1 温度检测电路1.2 实测温度显示这部分由有3位LED数码显示器,三个锁存器74LS373和三个非门器件组成。与8051的P0口相连需要输出锁存,三位静态显示电路需要有三位控制锁存部分。采用并口静态
5、显示电路作为显示接口电路,如图1.2所示。图1.2 实测温度静态显示电路1.3 温度设定这部分键盘只设置4个功能键,分别是启动、“十位+”、“个位+”和“小数位+”键,P1口低四位作为键盘接口,利用按键可分别实现对温度的十位、个位加一设置和对小数位加2设置。连续按键可实现40-90的温度设置,如图1.3所示。图1.3 温度设定控制电路1.4 设定温度显示本系统设有3位LED数码显示器,显示设定的温度。采用串行口扩展的静态显示电路作为显示接口电路。图1.4 设定温度显示电路1.5 温度控制 这部分包括报警器电路和电炉控制电路。报警电路如图1.5所示 ,由P1.7口控制,达到设定温度发出报警信号。
6、图1.5 报警电路电炉加热控制电路如图1.6所示,由P1.4口控制,检测温度超过设定温度时关电炉。图1.6 电炉加热控制电路2 软件设计2.1 工作流程 启动加热电路,对温度进行设定范围(4090),显示预置温度,温度设定后就可以按启动键来启动系统工作了。温度检测系统不断检测当前温度,并送往显示器显示,达到预置温度后停止加热并报警;当温度下降到下限(比预置温度低2)时再启动加热。这样不断重复上述过程,使温度保持在预定温度范围之内。按复位键可以随时重新设定预置温度。2.2 功能模块1、键盘管理:检测键盘输入,接受温度设定,启动工作系统。2、显示:显示设定温度和检测温度。3、温度检测:接受温度传感
7、器,转换温度值。4、温度控制:根据检测到的温度对电炉进行控制。5、报警:当检测温度达到设定温度发出报警信号。 2.3 资源分配为了便于阅读程序,数据存储器的分配与定义见下表:地址功能名称初始化值50H51H当前检测温度,小数位在前TEMP0TEMP10052H53H预置温度,小数位在前ST0ST10054H56HBCD码显示缓冲区,十位、个位、小数位T10 T1 T00057H58H二进制缓冲区,低位在前BT0BT10000059HDS1820存在标志位FLAG10060H7FH堆栈区08004H显示数码管段控口 PSW.5报警允许标志F0=0时禁止报警;F0=1时允许报警F002.4 功能软
8、件设计2.4.1 主程序与中断服务子程序开始30秒到?中断返回并行口中断初始化串行口初始化定时器初始化等待定时中断中断系统初始化YN温度设定值检测与显示当前温度检测显示当前检测温度温度控制达到设定温度报警定时中断程序2.1 主程序和中断服务子程序的流程图按图2.1所示主程序流程图,可编写出主程序和中断服务子程序。由于温度有较大的惯性,进行定时器30S定时,30S对温度进行刷新一次。当采用6MHZ晶振时,每机器周期2us,定时器方式一,最大定时为131ms。要实现30s定时,还要另外设置一个软件计数器,对定时时间进行计次,累加后实现30s定时。为了便于计算,取定时时间为120ms,250次,合计
9、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:
10、 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 ;中断返回2.4.2 温度设定值检测与显示子程序图2.2 为温度设定值检测与显示程序流程图。A有键闭合P1.1=
11、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 ;再检
12、测有无键按下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 AA
13、NL 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,#90HRET2.4.3 当前温度检测子程序图2.3为温度检测子程序流程图。为了确保检测数据的可靠性,采用四点均值滤波法进行软件滤波,即每次测温都使DS18B20连续四次采样,然后取算术平均值作为该次温度检测值。温度检测值存入TEMP0、TEMP1,R6记
14、录连续采样次数。返回返回调读取温度子程序转换结果送TEMP0、TEMP1取四次采样平均值将结果单元TEMP0、TEMP1和寄存器B清零转换次数4送R6(R6)1=0?返回温度检测程序NY图2.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 AMO
15、V 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,
16、#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总
17、线保持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总线复位保持1
18、6usMOV 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 ;读下
19、一个bitSETB P1.6 ;重新释放ds1820总线RETEND2.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,
20、#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 ,#06H
21、ADD 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
22、 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
23、0A4H 0B0H 99HDB 92H 82H 0F8H 80H 90HTAB2: ;共阳小数点亮 0-9 字型代码DB 40H 79H 24H 30H 19HDB 12H 02H 78H 00H 10H 2.4.5 温度控制子程序将当前温度与预置温度比较,当前温度小于预置温度时,接电炉加热;当前温度大于预置温度时,停止加热;当二者温度相等是电炉保持原来状态;当前温度降低到比预置温度低2度时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热,当前温度可能低于报警下限,为了防止误报,在未达到预置温度时,不允许报警,为此设置了报警允许标志F0。程序流程图如图2.4 所示:当前温度与预
24、置温度比较当前温度预置温度到达过预置温度当前温度预置温度-2开电炉返回置允许报警标志关电炉NYYYNN图2.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:RET2.4.6 报警子程序:ALARM:MOVA
25、,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总结通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动
26、自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。经过近二周的努力,在老师和同学的帮助下,我基本上完成了设计任务.通过这次课程设计,我充分认识到了自学的重要性,以及学以致用的道理.我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用.在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识.也使我加深了对单片知识的了解和应用.由于知识水平的局限和时间的仓促,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正.最后衷心感谢老师的悉心指导和同学们的热心帮助!参考文献1 单片微型计算机原理及应用 张毅坤等 西安电子科技大学出版社;2 单片机原理及应用技术 李全利主编 高等教育出版社;2008年;3 单片机原理与控制技术 张志良主编 机械工业出版社 2001年7月;4 单片微型计算机控制系统设计 范立南等编著 人民邮电出版社 2004年3月附录21
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922