资源描述
机电系统检测与控制课程设计报告
(测温控制系统)
专 业
班 级 ___
姓 名 ________
指导教师 ___ _______
提交日期 _2017年_6月_9__日
目录
一、设计目的和内容 2
二、测温控制系统 2
1、硬件设计 2
1.2.1 显示电路设计 3
1.2.2 单片机电路图 5
1.2.3 温度传感器电路图 6
1.2.4继电器电路 9
1.2.5 晶振控制电路 9
1.2.6 复位电路 10
1.2.7蜂鸣器电路图 10
1.2.8 按键电路设计 11
2软件设计 11
2.1主程序流程图 11
2.2 读出温度子程序流程图 12
2.3显示温度子程序流程图 14
三、测温控制系统的仿真过程 15
四、仿真分析 20
五、总结和体会 20
参考文献 21
一、设计目的和内容
目前,测控系统在工业生产中起着把关者和指导者的作用,它从生产现场到各种参数的获取,运用科学规律和系统工程的做法,综合有效地利用各种先进技术,通过自动手段和装备,使每个生产环节得到优化,进而保证生产规范化,提高产品质量,降低成本,满足需要,保证安全生产。传统的测控系统主要由“测控电路”组成,所具备的功能较少,也比较弱。随着计算机技术的迅速发展,使得传统的系统发生了根本性的变化,即采用微型计算机作为测控系统的主题和核心,代替传统测控系统的常规电子线路,从而成为新一代的微机化测控系统。而由于单片机具有集成度高、功能强、体积小、价格低、抗干扰能力等优于一般CPU的优点,故在工业控制系统诸多领域得到了极为广泛的应用。将其引人到测控系统中,可在很大程度上提升自动化水平,促进控制质量的进一步提高,经济效益显著,极具推广价值。
在现代生产当中,对于温度的测量与控制是十分必要的,且有着普遍的应用, 在生活中,例如:人们需要对饮水机、热水器的温度进行控制;在养殖业中,人们需要对孵化箱的温度进行控制;在工业生产中,人们需要对各种加热炉、反应炉和锅炉的温度进行控制等。因此,随着生产技术的发展和人们生活水平的大幅提高,一个简单,稳定的温度控制系统能更好的适应市场。为了满足当前社会市场需求,故设计了此温度控制系统,以AT89C51为核心,以及LM016L液晶显示器,电磁继电器,电阻,按键等元件作为辅助,以电路分析作为理论指导和理论基础,设计出此系统,将被控对象的温度控制在一定的范围内,通过LM016L液晶显示器直观的显示出来,并且通过发光二极管,蜂鸣器等不同的信号告诉我们现在的温度在什么范围内,以便于我们做出相应的处理措施。
本文针对的是饮水机的水温控制。温度控制的基本思路是:通过采集到的温度与设定温度之间对比,若温度比设定温度低,则控制负载(加热器)对水温进行加热,当超过设定值时,停止负载工作。
二、测温控制系统
1、硬件设计
1.1主板电路设计
1.1.1 AT89C51单片机各引脚设计
单片机引脚
电器元件
P1.0
蜂鸣器
P1.1
继电器
P3.4
DS18B20
P3.5
LED的RE端口
P3.6
LED的RW端口
P3.7
LED的E端口
P2.0
按键1
P2.1
按键2
P2.2
按键3
P2.3
按键4
表1-1 单片机各引脚接线
1.2各部分电路设计
1.2.1 显示电路设计
在当今社会上,液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。固有体积小、重量轻的特点,本文就选择了LM016L液晶显示器作为DS18B20温度检测器的显示单位。
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可以查看参考文献(30)中的表4. CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM。
在proteus仿真中,使用Proteus仿真1602--即LM016L--依照数据手册说明可能遇到困难,可以尝试采用以下方案解决:
1、数据手册中可能介绍1602内部D0~D7已有上拉,可以使用P0口直接驱动。在Proteus里LM016L内部可能没有,应该人为加上拉电阻。建议不要使用排阻,使用普通电阻一个一个拉应该可以解决问题;
2、可能碰到不能检测忙信号的问题,尝试使用延时把忙信号拖过去
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。
电路接口设计,AT889C51 的P0口作为数据的输出端,P3.5和P3.6, P3.7 作为控制信号的输出端,连接图如图1-1所示:
图1-1 显示电路图
1.2.2 单片机电路图
单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。单片机又称单片微控制器,概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。在本文中,选择了AT89C51单片机作为控制元件。
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51有3个并行I/O端口,P0:P0.0~P0.7、P1.0~P1.7、P2.0~P2.7。P0端口在没有片内存储器时,可以作为普通I/O口使用,外接存储器时作为地址线/数据线使用。P1端口可以作为普通I/O口使用,同时P1.0、P1.1、P1.5~P1.7还具备特殊功能,如表3.4所示。P2端口在没有片外存储器时,可以作为普通I/O口使用,外接存储器时作为高8位地址使用。
引脚
特殊功能
P1.0
T2: 定时器|计数器2的外部计数器输入
P1.1
T2EX: 定时器/计数器2的捕捉/重载触发及方向控制
P1.5
MOSI: 用于在线编程(ISP)
P1.6
MOSI: 用于在线编程(ISP)
P1.7
SCK: 用于在线编程(ISP)
表1-2 AT89C51 P3端口的特殊功能
引脚
特殊功能
P3.0
RXD (串行口输入)
P3.1
TXD (串行口输入)
P3.2
INT0 (外部中断输入0)
P3.3
INT1 (外部中断输入1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
WR (外部数据存储器写控制)
P3.7
RD (外部数据存储器读控制)
表1-3 AT89C51 P3端口的特殊功能
外形及引脚排列如图1-2所示。
图1-2 AT89C51引脚图
1.2.3 温度传感器电路图
随着科学技术的不断进步与发展,温度传感器的种类日益繁多,数字温度传感器更因适用于各种微处理器接口组成的自动温度控制系统具有可以克服模拟传感器与微处理器接口时需要信号调理电路和A/D转换器的弊端等优点,被广泛应用于工业控制、电子测温计、医疗仪器等各种温度控制系统中。其中,比较有代表性的数字温度传感器有DS18B20、MAX6575、DS1722、MAX6635等。相比较而言,传统的温度检测以热敏电阻为温度敏感元件,热敏电阻成本低,但需要后续信号处理电路,而且热敏电阻的可靠性相对较差,测量温度的准确度低,检测系统的精度差。数字式温度传感器的种类也不少,并且在实际工程设计中具有上述诸多优点。本文采用DS18B20温度传感器。
DS18B20是美国DALLAS半导体公司生产的可组网数字式温度传感器,与其它温度传感器相比,DS18B20具有以下特性:独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。DS18B20在使用中不需要任何外围元件,全部传感器元件及转换电路集成在形如一只三极管的集成电路内。温度范围-55℃~+125℃,固有测温分辨率±0.5℃;测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC效验码,具有极强的抗干扰纠错能力;测量结果以9位数字量方式串行传送。
图1-3 DS18B20温度值表示方法
D9为符号位,0表示正,1表示负,高字节的其他位(D10~D15)是以符号位的扩展位表示的;D0~D8为数据位,以二进制补码表示。温度是以1/2℃LSB形式表示的。表1-4为数值和温度的关系。
温度℃
数字输出(二进制)
数字输出(十六进制)
+125
0000 0111 1101 0000
07D0H
+85
0000 0101 0101 0000
0550H
+25.0625
0000 0001 1001 0001
0191H
+10.125
0000 0001 1010 0010
00A2H
+0.5
0000 0001 1010 1000
0008H
0
0000 0000 0000 0000
0000H
-10.125
1111 1111 0101 1110
FF5EH
-25.0625
1111 1110 0101 1111
FE6FH
-55
1111 1100 1001 0000
FC90H
表1-4 DS18B20输出数据与温度的对应关系
DS18B20内部结构主要由64bit闪速ROM、温度传感器、非易失性温度报警触发器TH和TL、高速暂存存储四部分组成,如图1-4所示。
图1-4 DS18B20内部结构
温度传感器电路图如图1-5所示
图1-5 DS18B20电路图
原理:DS18B20在出厂时默认配置为十二位,其中最高位是符号位,因此温度值共11位,单片机在读取数据时,一次会读2字节共十六位,读完后将低11位的二进制数转换成十进制数再乘以0.0625便为所测的真实值。另外,还需要判断温度的正负。前五位数字是符号位,这五位同时变化,我们只需要判断11位就可以了。前五位为1时,读取温度为负值,则测量到的数值需要求出补码(求反加一),再乘以0.0625才得到实际温度值。前五位为0时,读取温度为正值,
只要将测得数值乘以0.0625即可得到实际温度值。
1.2.4继电器电路
图1-6中P1.1引脚控制加热器继电器,给P1.1低电平,三极管导通,电触头放下开始工作。
图1-6继电器电路
原理:当单片机P1.1引脚输出低电平时,三极管导通,则继电器线圈中会有电流流过,电流会产生电磁场,在电磁场的作用下,开关会被吸合。当P1.1为高电平时,三极管处于截止状态,则线圈中没有电流流过,因此开关因失去磁场的吸合力而断开。
1.2.5 晶振控制电路
单片机工作的时间基准是由时钟电路提供的,单片机的内部时钟电路如图2-1所示
图2-1晶振控制电路图
电路中的器件选择是可以通过计算和实验确定,也可以参考一些典型电路参数。电路中,电容器C2和C3对振荡频率有微调作用,帮助振荡器起振,通常的取值范围30±10pF;石英晶体选择6MHz或12MHz都可以。其结果只是机器周期不同,从而影响计数器的计算初值。
1.2.6 复位电路
复位电路图如图2-2所示
图2-2复位电路图
单片机的RST引脚为主机提供一个外部复位信号输出端口,复位信号是高电平有效,高电平有效持续时间应为2个机器周期以上。
1.2.7蜂鸣器电路图
蜂鸣器电路图如图2-3所示
图2-3蜂鸣器电路图
原理:当P1.0为低电平时,三极管导通,则蜂鸣器中有电流流过,因此蜂鸣器发声。当P1.0为高电平时,三极管截止,蜂鸣器由于没有电流通过,因此停止发声
1.2.8 按键电路设计
按键电路如图2-4所示
说明:按键1-----显示温度TH(最高值)和TL(最小值)
按键2-----调整TH(最高值)
按键3-----调整TL(最小值)
按键4-----确认调整值
2软件设计
系统的软件部分由主程序流程图、读温度程序流程图、显示温度流程图三部分组成。
2.1主程序流程图
系统的主程序流程图如图3-1,当有信号输入时,主程序启动,根据内部设定的条件逐步运行,达到设计目的。
加热
是否大于?
比较设定温度值和实际温度温度值
显示实际温度
数值处理
启动A/D转换
设定温度值并显示
初始化
开始
N
Y
图3-1 主程序流程图
2.2 读出温度子程序流程图
读出温度子程序的主要功能是读出RAM中的9字节,在读出时进行CRC校验,校验有错时不进行温度数据的改写。DS18B20每一次温度测量若要读出当前温度数据需要执行两次工作周期,如图3-2所示。
DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目标,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。读出温度子程序:
读RAM9字节数据
跳过ROM匹配命令
DS18B20复位、应答子程序
显示子程序
写入子程序
启动温度转换命令
跳过ROM匹配命令
DS18B20复位、应答子程序
终止
开始
图3-2读出温度子程序
2.3显示温度子程序流程图
显示温度子程序流程图如下图3-3所示
开始
初始化LM016L
继续检测?
显示错误信息
显示温度值
温度转换
读取温度值
显示说明信息
DS18B20正常?
退出
延时
延时
N
Y
Y
N
图3-3 显示温度流程图
单片机从DS18B20中读到的温度值是16位的数字信息,其中高5位是表示温度正负的符号位。数字温度值的读取并转换成实际温度十进制值的子程序流程图如图3-4所示。
开始
读温度值的低8位
读取温度值的高8位
计算实际温度值
取高8位的低4位数值
取低8位的高4位数值
设置符号标志为0
温度低于0?
N
二进制转换成十进制温度值的百、十、个位及小数位
退出
求补码,设置符号标志为1
Y
图3-4 温度转换子程序流程图
三、测温控制系统的仿真过程
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
Proteus可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。
除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。
Proteus可提供的调试手段 Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。
随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。故本文采用proteus对所设计的温度测控系统进行仿真测试。测试过程如下:
3.1 查找电器元件并连线
(1)查找电器元件
如图3-1和图3-2所示,连线图见总电路图。
图3-1
图3-2
3.2导入单片机程序
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程,导入单片机程序如图3-3所示
图3-3
3.3设置温度最高值和最低值
按按键设置TH和TL,如图3-4所示
图3-4
3.4测试
设置的温度上下限为60—70℃,当DS18B20检测到温度低于60℃时,继电器闭合(即打开加热元件给饮水机里的水加热)。仿真图如图3-5所示。
图3-5
当DS18B20检测到水温的温度高于70℃时,蜂鸣器响,继电器断开。如下图3-6所示
图3-6
仿真成功。
四、仿真分析
在仿真的过程中,遇到了许许多多的问题,对于proteus这个软件,我是不熟悉的,它要怎么仿真,怎么添加元件都不知道。还好,通过网络上的各种查找,初步学会了这个软件的操作。第一次仿真时,软件就提示我把那个DS18B20的元件名称和AT89C51单片机的名称符号重合了,出现了错误。还有就是接电源和地线时提示出现了一次短路现象。导入单片机程序后又出现了各种问题,例如:显示器不显示温度,按键无法调整温度上限和下限,蜂鸣器不响等等。不过都通过查找各种资料、论坛找到了解决方法,最后完成了这个设计的仿真模拟。可以由按键控制温度的上线限,通过采集到的温度与设定温度之间对比,若温度比设定温度低,则控制负载(加热器)对水温进行加热,当超过设定值时,停止负载工作并报警。
五、总结和体会
在刚做这个课程设计时,老师让我们随便选一个测控系统来进行设计,一开始,我是不知道要做什么的,茫然了好几天才选择了进行做这个饮水机的温度控制系统。随后就开始查找关于温度控制系统的各种文献与资料,进行准备工作。通过网络和书籍查找自己所需元件的特性和使用方法。便开始设计自己的电路图,这个真是难的要死,设计完电路图后,就开始了控制电路图的单片机程序的设计,因为我们以前学过的是汇编语言,故选择了汇编语言进行这个单片机程序的设计。经过几天反复的编写,在软件中编译,调试,纠错,最终编译结果终于通过。接下来就是进行软件仿真,结果与所期待的相差有点大,出现了各种错误,然后通过查找资料,逛单片机论坛,重新修改了一些程序和电路图,最终我的电路终于达到了我所预期的结果。那一个,我很兴奋,高兴的无法用语言来描述。通过这次的课程设计,我懂得了如何将自己学过的东西用于实践,即理论和实践相结合。
知道了该如何去查找自己想要的资料,要点。学到了许多知识,真是应了那句老话,活到老,学到老,以为自己懂的很多,没想到自己不懂的更多。
参考文献
1.基于AT89C51单片机的温度测控系统设计_黄保瑞
2.王振红.综合电子技术与实践[M].北京:清华大学出版社,2005.2:28-33.
3.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,2003.7
4.基于DS18B20的数字式温度采集报警系统设计.汤锴,重庆交通大学机电与汽车工程学院, 1000-9787
附录一 电路总图
附录二 源代码
; ―――――――――――――――――――――――――――――――
; 温度值存放单元
TEMP_ZH EQU 24H
TEMPL EQU 25H
TEMPH EQU 26H
TEMP_TH EQU 27H
TEMP_TL EQU 28H
TEMPHC EQU 29H
TEMPLC EQU 2AH
;―――――――――――――
;按键输入引脚定义
K1 EQU P1.0
K2 EQU P2.1
K3 EQU P2.2
K4 EQU P2.3
;―――――――――――――
SPK EQU P1.0 ;蜂鸣器引脚
RELAY1 EQU P1.1 ;继电器引脚
X EQU 2FH
;―――――――――――――
;LCD控制引脚
RS EQU P3.5
RW EQU P3.6
E EQU P3.7
;―――――――――――――
FLAG EQU 20H.0
KEY_UD EQU 20H.1
DQ EQU P3.4
;----------------------------------------------------------------------------
;============= 主程序 ==============
MAIN:
LCALL SET_LCD
ACALL WR_THL
TOOP: ACALL RESET_1820
JNB FLAG,TOOP1
ACALL MEU_OK
ACALL RE_THL
ACALL TEMP_BJ
JMP TOOP2
TOOP1: ACALL MEU_ERROR
ACALL TEMP_BJ
JMP $
;――――――――――――――
TOOP2:
ACALL RE_TEMP
ACALL SET_DATA
ACALL TEMP_COMP
ACALL P_KEY
SJMP TOOP2
;--------―― 读取温度数据子程序 --------――
RE_TEMP:
ACALL RESET_1820
JNB FLAG,TOOP1
MOV A,#0CCH
ACALL WRITE_1820
MOV A,#44H
ACALL WRITE_1820
ACALL RESET_1820
MOV A,#0CCH
ACALL WRITE_1820
MOV A,#0BEH
ACALL WRITE_1820
ACALL READ_1820
RET
;-------- 温度数据处理显示子程序----------
SET_DATA:
ACALL CONV_TEMP
ACALL DISP_BCD
ACALL CONV
RET
;----------- 按键键扫描子程序 ----------
P_KEY: ;按键K1处理
JB K1, PK1
ACALL SPK_BZ
JNB K1,$
MOV DPTR,#M_ALAX1
MOV A,#1
ACALL LCD_PRINT
ACALL LOOK_ALARM
JB K3, $
ACALL SPK_BZ
JMP PK2
PK1:
JB K2, PK3
ACALL SPK_BZ
JNB K2,$
MOV DPTR, #TA1
MOV A,#1
ACALL LCD_PRINT
ACALL SET_ALARM ;设定报警值 TH、TL
ACALL WR_THL ;将设定的TH,TL值写入DS18B20内
ACALL WRITE_E2
PK2:
ACALL MEU_OK ;显示"OK"信息子程序
ACALL TEMP_BJ ;显示温度标记子程序
PK3:
RET
;―――――――――――――
TA1:
DB "RESET ALERT CODE"
;―――――――――――――
;--------- 设定报警值 TH、TL子程序 --------
SET_ALARM:
ACALL LOOK_ALARM
A0: JB K1,A2
ACALL SPK_BZ
JNB K1,$
CPL 20H.1
A2: JB 20H.1,A3
JMP A8
;―――――――――――――
; TH值调整(增加)
A3: JB K2, A5
ACALL SPK_BZ
INC TEMP_TH
MOV A,TEMP_TH
CJNE A,#120,A4
MOV TEMP_TH,#0
A4: ACALL LOOK_ALARM
MOV R5, #10
ACALL DELAY
JMP A3
;―――――――――――――
;TL值调整(增加)
A5: JB K3,A7
ACALL SPK_BZ
INC TEMP_TL
MOV A, TEMP_TL
CJNE A,#80,A6
MOV TEMP_TL,#00H
A6: ACALL LOOK_ALARM
MOV R5, #10
ACALL DELAY
JMP A5
;―――――――――――――
;确定调整 OK
A7: JB K4, A0
ACALL SPK_BZ
JNB K4, $
RET
;―――――――――――――
;TH值调整 (减少)
A8: JB K2, A10
ACALL SPK_BZ
DEC TEMP_TH
MOV A,TEMP_TH
CJNE A,#0FFH,A9
JMP A12
A9: ACALL LOOK_ALARM
MOV R5, #10
ACALL DELAY
JMP A0
;――――――――――――――
;TL值调整(减少)
A10: JB K3, A13
ACALL SPK_BZ
DEC TEMP_TL
MOV A,TEMP_TL
CJNE A,#0FFH,A11
JMP A12
A11: ACALL LOOK_ALARM
MOV R5, #10
ACALL DELAY
JMP A0
A12: CPL 20H.1
JMP A3
A13: JMP A7
RET
;---------- 显示信息区子程序 -----------
LOOK_ALARM:
MOV DPTR,#M_ALAX2
MOV A,#2
ACALL LCD_PRINT
MOV A,#0C6H
ACALL TEMP_BJ1
MOV A,TEMP_TH
MOV X,#3
ACALL SHOW_LINE2H
MOV A,#0CEH
ACALL TEMP_BJ1
MOV A,TEMP_TL
MOV X,#12
ACALL SHOW_LINE2L
RET
M_ALAX1:
DB " LOOK ALERT CODE",0
M_ALAX2:
DB "TH: TL: ",0
;――――――显示温度标记子程序――――――
TEMP_BJ1:
ACALL WR_COMM
MOV DPTR,#BJ2
MOV R1,#0
MOV R0,#2
B0: MOV A,R1
MOVC A,@A+DPTR
ACALL WR_DATA
INC R1
DJNZ R0,B0
RET
;―――――――――――――
B
展开阅读全文