机电系统检测与控制课程设计报告-测温控制系统_第1页
机电系统检测与控制课程设计报告-测温控制系统_第2页
机电系统检测与控制课程设计报告-测温控制系统_第3页
机电系统检测与控制课程设计报告-测温控制系统_第4页
机电系统检测与控制课程设计报告-测温控制系统_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

机电系统检测与控制课程设计报告(测温控制系统)专业班级___姓名________指导教师__________提交日期_2017年_6月_9__日目录一、设计目的和内容 2二、测温控制系统 21、硬件设计 21.2.1显示电路设计 31.2.2单片机电路图 51.2.3温度传感器电路图 61.2.4继电器电路 91.2.5晶振控制电路 91.2.6复位电路 101.2.7蜂鸣器电路图 101.2.8按键电路设计 112软件设计 112.1主程序流程图 112.2读出温度子程序流程图 122.3显示温度子程序流程图 14三、测温控制系统的仿真过程 15四、仿真分析 20五、总结和体会 20参考文献 21一、设计目的和内容目前,测控系统在工业生产中起着把关者和指导者的作用,它从生产现场到各种参数的获取,运用科学规律和系统工程的做法,综合有效地利用各种先进技术,通过自动手段和装备,使每个生产环节得到优化,进而保证生产规范化,提高产品质量,降低成本,满足需要,保证安全生产。传统的测控系统主要由“测控电路”组成,所具备的功能较少,也比较弱。随着计算机技术的迅速发展,使得传统的系统发生了根本性的变化,即采用微型计算机作为测控系统的主题和核心,代替传统测控系统的常规电子线路,从而成为新一代的微机化测控系统。而由于单片机具有集成度高、功能强、体积小、价格低、抗干扰能力等优于一般CPU的优点,故在工业控制系统诸多领域得到了极为广泛的应用。将其引人到测控系统中,可在很大程度上提升自动化水平,促进控制质量的进一步提高,经济效益显著,极具推广价值。在现代生产当中,对于温度的测量与控制是十分必要的,且有着普遍的应用,在生活中,例如:人们需要对饮水机、热水器的温度进行控制;在养殖业中,人们需要对孵化箱的温度进行控制;在工业生产中,人们需要对各种加热炉、反应炉和锅炉的温度进行控制等。因此,随着生产技术的发展和人们生活水平的大幅提高,一个简单,稳定的温度控制系统能更好的适应市场。为了满足当前社会市场需求,故设计了此温度控制系统,以AT89C51为核心,以及LM016L液晶显示器,电磁继电器,电阻,按键等元件作为辅助,以电路分析作为理论指导和理论基础,设计出此系统,将被控对象的温度控制在一定的范围内,通过LM016L液晶显示器直观的显示出来,并且通过发光二极管,蜂鸣器等不同的信号告诉我们现在的温度在什么范围内,以便于我们做出相应的处理措施。本文针对的是饮水机的水温控制。温度控制的基本思路是:通过采集到的温度与设定温度之间对比,若温度比设定温度低,则控制负载(加热器)对水温进行加热,当超过设定值时,停止负载工作。二、测温控制系统1、硬件设计1.1主板电路设计1.1.1AT89C51单片机各引脚设计单片机引脚电器元件P1.0蜂鸣器P1.1继电器P3.4DS18B20P3.5LED的RE端口P3.6LED的RW端口P3.7LED的E端口P2.0按键1P2.1按键2P2.2按键3P2.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—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。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.0T2:

定时器|计数器2的外部计数器输入P1.1T2EX:

定时器/计数器2的捕捉/重载触发及方向控制P1.5MOSI:

用于在线编程(ISP)P1.6MOSI:

用于在线编程(ISP)P1.7SCK:

用于在线编程(ISP)表1-2AT89C51P3端口的特殊功能引脚特殊功能P3.0RXD

(串行口输入)

P3.1TXD

(串行口输入)P3.2INT0

(外部中断输入0)P3.3INT1

(外部中断输入1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR

(外部数据存储器写控制)P3.7RD

(外部数据存储器读控制)表1-3AT89C51P3端口的特殊功能外形及引脚排列如图1-2所示。图1-2AT89C51引脚图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-3DS18B20温度值表示方法D9为符号位,0表示正,1表示负,高字节的其他位(D10~D15)是以符号位的扩展位表示的;D0~D8为数据位,以二进制补码表示。温度是以1/2℃LSB形式表示的。表1-4为数值和温度的关系。温度℃数字输出(二进制)数字输出(十六进制)+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100010191H+10.125000000011010001000A2H+0.500000001101010000008H000000000000000000000H-10.1251111111101011110FF5EH-25.06251111111001011111FE6FH-551111110010010000FC90H表1-4DS18B20输出数据与温度的对应关系DS18B20内部结构主要由64bit闪速ROM、温度传感器、非易失性温度报警触发器TH和TL、高速暂存存储四部分组成,如图1-4所示。图1-4DS18B20内部结构温度传感器电路图如图1-5所示图1-5DS18B20电路图原理: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转换设定温度值并显示初始化开始加热是否大于?比较设定温度值和实际温度温度值显示实际温度数值处理启动A/D转换设定温度值并显示初始化开始NY 图3-1主程序流程图2.2读出温度子程序流程图读出温度子程序的主要功能是读出RAM中的9字节,在读出时进行CRC校验,校验有错时不进行温度数据的改写。DS18B20每一次温度测量若要读出当前温度数据需要执行两次工作周期,如图3-2所示。DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目标,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。读出温度子程序:读RAM9字节数据跳过ROM匹配命令DS18B20复位、应答子程序显示子程序写入子程序启动温度转换命令跳过ROM匹配命令DS18B20复位、应答子程序终止开始读RAM9字节数据跳过ROM匹配命令DS18B20复位、应答子程序显示子程序写入子程序启动温度转换命令跳过ROM匹配命令DS18B20复位、应答子程序终止开始图3-2读出温度子程序2.3显示温度子程序流程图显示温度子程序流程图如下图3-3所示开始开始初始化LM016L初始化LM016L继续检测?显示错误信息显示温度值温度转换读取温度值显示说明信息DS18B20正常?退出延时延时继续检测?显示错误信息显示温度值温度转换读取温度值显示说明信息DS18B20正常?退出延时延时NNYYYYNN图3-3显示温度流程图单片机从DS18B20中读到的温度值是16位的数字信息,其中高5位是表示温度正负的符号位。数字温度值的读取并转换成实际温度十进制值的子程序流程图如图3-4所示。开始开始读温度值的低读温度值的低8位读取温度值的高读取温度值的高8位计算实际温度值取高8位的低4位数值取低8计算实际温度值取高8位的低4位数值取低8位的高4位数值设置符号标志为0温度低于0? N 二进制转换成十进制温度值的百、十、个位及小数位退出求补码,设置符号标志为1Y二进制转换成十进制温度值的百、十、个位及小数位退出求补码,设置符号标志为1图3-4温度转换子程序流程图三、测温控制系统的仿真过程Proteus软件是英国LabCenterElectronics公司出版的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-23.2导入单片机程序在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程,导入单片机程序如图3-3所示图3-33.3设置温度最高值和最低值按按键设置TH和TL,如图3-4所示图3-43.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.74.基于DS18B20的数字式温度采集报警系统设计.汤锴,重庆交通大学机电与汽车工程学院,1000-9787附录一电路总图附录二源代码;―――――――――――――――――――――――――――――――;温度值存放单元TEMP_ZHEQU24HTEMPLEQU25HTEMPHEQU26HTEMP_THEQU27HTEMP_TLEQU28HTEMPHCEQU29HTEMPLCEQU2AH;―――――――――――――;按键输入引脚定义K1EQUP1.0K2EQUP2.1K3EQUP2.2K4EQUP2.3;―――――――――――――SPKEQUP1.0;蜂鸣器引脚RELAY1EQUP1.1;继电器引脚XEQU2FH;―――――――――――――;LCD控制引脚RSEQUP3.5RWEQUP3.6EEQUP3.7;―――――――――――――FLAGEQU20H.0KEY_UDEQU20H.1DQEQUP3.4;;=============主程序==============MAIN:LCALLSET_LCDACALLWR_THLTOOP:ACALLRESET_1820JNBFLAG,TOOP1ACALLMEU_OKACALLRE_THLACALLTEMP_BJJMPTOOP2TOOP1:ACALLMEU_ERRORACALLTEMP_BJJMP$;――――――――――――――TOOP2:ACALLRE_TEMPACALLSET_DATAACALLTEMP_COMPACALLP_KEYSJMP TOOP2;--------――读取温度数据子程序--------――RE_TEMP:ACALLRESET_1820JNBFLAG,TOOP1MOVA,#0CCHACALLWRITE_1820MOVA,#44HACALLWRITE_1820ACALLRESET_1820MOVA,#0CCHACALLWRITE_1820MOVA,#0BEHACALLWRITE_1820ACALLREAD_1820RET;--------温度数据处理显示子程序----------SET_DATA:ACALLCONV_TEMPACALLDISP_BCDACALLCONVRET;-----------按键键扫描子程序----------P_KEY:;按键K1处理 JBK1,PK1 ACALLSPK_BZJNBK1,$MOVDPTR,#M_ALAX1MOVA,#1ACALLLCD_PRINTACALLLOOK_ALARMJBK3,$ACALLSPK_BZJMPPK2PK1:JBK2,PK3ACALLSPK_BZJNBK2,$MOVDPTR,#TA1MOVA,#1ACALLLCD_PRINTACALLSET_ALARM;设定报警值TH、TLACALLWR_THL;将设定的TH,TL值写入DS18B20内ACALLWRITE_E2PK2:ACALLMEU_OK;显示"OK"信息子程序ACALLTEMP_BJ;显示温度标记子程序PK3:RET;―――――――――――――TA1:DB"RESETALERTCODE";―――――――――――――;---------设定报警值TH、TL子程序--------SET_ALARM:ACALLLOOK_ALARMA0:JBK1,A2ACALLSPK_BZJNBK1,$CPL20H.1A2:JB20H.1,A3JMPA8;―――――――――――――;TH值调整(增加)A3:JBK2,A5ACALLSPK_BZINCTEMP_THMOVA,TEMP_THCJNEA,#120,A4MOVTEMP_TH,#0A4:ACALLLOOK_ALARMMOVR5,#10ACALLDELAYJMPA3;―――――――――――――;TL值调整(增加)A5:JBK3,A7ACALLSPK_BZINCTEMP_TLMOVA,TEMP_TLCJNEA,#80,A6MOVTEMP_TL,#00HA6:ACALLLOOK_ALARMMOVR5,#10ACALLDELAYJMPA5;―――――――――――――;确定调整OKA7:JBK4,A0ACALLSPK_BZJNBK4,$RET;―――――――――――――;TH值调整(减少)A8:JBK2,A10ACALLSPK_BZDECTEMP_THMOVA,TEMP_THCJNEA,#0FFH,A9JMPA12A9:ACALLLOOK_ALARMMOVR5,#10ACALLDELAYJMPA0;――――――――――――――;TL值调整(减少)A10:JBK3,A13ACALLSPK_BZDECTEMP_TLMOVA,TEMP_TLCJNEA,#0FFH,A11JMPA12A11:ACALLLOOK_ALARMMOVR5,#10ACALLDELAYJMPA0A12:CPL20H.1JMPA3A13:JMPA7RET;----------显示信息区子程序 -----------LOOK_ALARM:MOVDPTR,#M_ALAX2MOVA,#2ACALLLCD_PRINTMOVA,#0C6HACALLTEMP_BJ1MOVA,TEMP_THMOVX,#3ACALLSHOW_LINE2HMOVA,#0CEHACALLTEMP_BJ1MOVA,TEMP_TLMOVX,#12ACALLSHOW_LINE2LRETM_ALAX1:DB"LOOKALERTCODE",0M_ALAX2:DB"TH:TL:",0;――――――显示温度标记子程序――――――TEMP_BJ1:ACALLWR_COMMMOVDPTR,#BJ2MOVR1,#0MOVR0,#2B0:MOVA,R1MOVCA,@A+DPTRACALLWR_DATAINCR1DJNZR0,B0RET;―――――――――――――BJ2:DB00H,"C";―――――――――――――;―――――在LCD的第二行显示高温数字――――SHOW_LINE2H:MOVB,#100DIVABADDA,#30HPUSHBMOVB,XACALLLCDP2;―――――――――――――POPBMOVA,#0AHXCHA,BDIVABADDA,#30HINCXPUSHBMOVB,XACALLLCDP2POPBINCXMOVA,BMOVB,XADDA,#30HACALLLCDP2RET;―――――在LCD的第二行显示低温数字―――――SHOW_LINE2L:MOVB,#100DIVABMOVA,#0AHXCHA,BDIVABADDA,#30HPUSHBMOVB,XCALLLCDP2;――――――――――――――POPBINCXMOVA,BMOVB,XADDA,#30HACALLLCDP2RET;-----------温度值比较子程序------------;实际温度值与标记温度值比较TEMP_COMP:MOVA,TEMP_THSUBBA,TEMP_ZHJCTCL1;借位标志位C=1,转TCL1MOVA,TEMP_ZHSUBBA,TEMP_TLJCTCL2;借位标志位C=1,转TCL2 MOVDPTR,#BJ5ACALLTEMP_BJ3CLRRELAY1RET;―――――――――――――TCL1:;实时温度>高温报警值的处理程序MOVDPTR,#BJ3ACALLTEMP_BJ3SETBRELAY1ACALLSPK_BZRET;―――――――――――――-TCL2: ;实时温度<低温报警值的处理程序 MOVDPTR,#BJ4ACALLTEMP_BJ3 CLRRELAY1;ACALLSPK_BZRET;---显示高、低温度及加热标记程序----TEMP_BJ3:MOVA,#0CEHACALLWR_COMMMOVR1,#0MOVR0,#2BJJ:MOVA,R1MOVCA,@A+DPTRACALLWR_DATAINCR1DJNZR0,BJJRET;―――――――――――――BJ3:DB">H"BJ4:DB"<L"BJ5:DB"!";―――――――――――――;---------报警上下线写入暂存器子程序--------WR_THL:JBFLAG,WR_TRET;―――――――――――――WR_T:ACALLRESET_1820MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#4EHLCALLWRITE_1820MOVA,TEMP_THLCALLWRITE_1820MOVA,TEMP_TLLCALLWRITE_1820MOVA,#7FHLCALLWRITE_1820RET;---------报警值拷贝到EEROM子程序-----------WRITE_E2:ACALLRESET_1820MOVA,#0CCHLCALLWRITE_1820MOVA,#48HLCALLWRITE_1820RET;----------报警值拷贝回暂存器子程序----------RE_THL:ACALLRESET_1820MOVA,#0CCHLCALLWRITE_1820MOVA,#0B8HACALLWRITE_1820RET;----------处理温度BCD码子程序----------CONV_TEMP:MOVA,TEMPH;判温度是否零下ANLA,#80HJZTC1CLRCMOVA,TEMPLCPLAADDA,#01HMOVTEMPL,AMOVA,TEMPHCPLAADDCA,#00HMOVTEMPH,AJMPTC2;―――――――――――――TC1:MOVTEMPHC,#0AHTC2:MOVA,TEMPHCSWAPAMOVTEMPHC,AMOVA,TEMPLANLA,#0FHMOVDPTR,#DOTTABMOVCA,@A+DPTRMOVTEMPLC,A;―――――――――――――MOVA,TEMPLANLA,#0F0HSWAPAMOVTEMPL,AMOVA,TEMPHANLA,#0FHSWAPAORLA,TEMPLMOVTEMP_ZH,ALCALLHEX2BCD1MOVTEMPL,AANLA,#0F0HSWAPAORLA,TEMPHCMOVTEMPHC,AMOVA,TEMPLANLA,#0FHSWAPAORLA,TEMPLCMOVTEMPLC,AMOVA,R4JZTC3ANLA,#0FHSWAPAMOVR4,AMOVA,TEMPHCANLA,#0FHORLA,R4MOVTEMPHC,ATC3:RET;―――――――――――――HEX2BCD1:MOVB,#064HDIVABMOVR4,AMOVA,#0AHXCHA,BDIVABSWAPAORLA,BRET;―――――――――――――;小数部分码表DOTTAB:DB00H,00H,01H,01H,02H,03H,03H,04HDB05H,05H,06H,06H,07H,08H,08H,09H;―――――――――――――;--------显示区BCD码温度值刷新子程序--------DISP_BCD:MOVA,TEMPLCANLA,#0FHMOV70H,AMOVA,TEMPLCSWAPAANLA,#0FHMOV71H,AMOVA,TEMPHCANLA,#0FHMOV72H,AMOVA,TEMPHCSWAPAANLA,#0FHMOV73H,AMOVA,TEMPHCANLA,#0F0HCJNEA,#010H,DI0JMPDI2;―――――――――――――DI0:MOVA,TEMPHCANLA,#0FHJNZDI2MOVA,TEMPHCSWAPAANLA,#0FHMOV73H,#0AHMOV72H,ADI2:RET;――――――――DS18B20复位初始化子程序――――――――――RESET_1820:SETBDQNOPCLRDQ;―――――――――――――MOVR1,#3DLY:MOVR0,#107DJNZR0,$DJNZR1,DLY;―――――――――――――SETBDQNOPNOPNOP;―――――――――――――MOVR0,#25HT2:JNBDQ,T3DJNZR0,T2JMPT4;―――――――――――――;置标志位FLAG=1,表示DS1820存在T3:SETBFLAGJMPT5;―――――――――――――;清标志位FLAG=0,表示DS1820不存在T4:CLRFLAGJMPT7;―――――――――――――T5:MOVR0,#117T6:DJNZR0,T6;――――――――――――――T7:SETBDQRET;――――――――――写入DS18B20子程序―――――――――――WRITE_1820:MOVR2,#8CLRCWR1:CLRDQMOVR3,#6DJNZR3,$RRCAMOVDQ,CMOVR3,#23DJNZR3,$SETBDQNOPDJNZR2,WR1SETBDQRET;――――――――――读出DS18B20子程序―――――――――――;将温度值从DS18B20中读出(有具体的时序要求)READ_1820:MOVR4,#4MOVR1,#TEMPLRE0:MOVR2,#8RE1:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQ;―――――――――――――MOVR3,#9DJNZR3,$MOVC,DQ;―――――――――――――MOVR3,#23;DJNZR3,$RRCADJNZR2,RE1MOV@R1,AINCR1DJNZR4,RE0RET;===========LCD1602显示程序===========;初始化设置SET_LCD:CLRECALLINIT_LCD;初始化LCDCALLSTORE_DATARET;-----------LCD初始化子程序-----------INIT_LCD:MOVA,#38H;设置8位、2行、5x7点阵ACALLWR_COMMACALLDELAY1MOVA,#0CHACALLWR_COMM;ACALLDELAY1MOVA,#01HACALLWR_COMM;ACALLDELAY1RET;----------显示温度标记子程序-----------TEMP_BJ:MOVA,#0CBHACALLWR_COMMMOVDPTR,#BJMOVR1,#0MOVR0,#2TP1:MOVA,R1MOVCA,@A+DPTRACALLWR_DATAINCR1DJNZR0,TP1RET;―――――――――――――BJ:;代码表DB00H,"C";-----------自定义字符子程序-----------;将自定义字符写入LCD1602的CGRAM中STORE_DATA:MOVA,#40HACALLWR_COMMMOVR2,#08HMOVDPTR,#TABMOVR3,#00HS_D:MOVA,R3MOVCA,@A+DPTRACALLWR_DATAINCR3DJNZR2,S_DRET;;―――――――――――――TAB:;代码表DB0CH,12H,12H,0CHDB00H,00H,00H,00H;-----------显示"OK"信息子程序---------MEU_OK:MOVDPTR,#M_OK1MOVA,#1ACALLLCD_PRINTMOVDPTR,#M_OK2MOVA,#2ACALLLCD_PRINTRET;――――――――――――――M_OK1:DB"DS18B20OK",0M_OK2:DB"TEMP:",0;----------显示"ERROR"信息子程序------―――MEU_ERROR:MOVDPTR,#M_ERROR1MOVA,#1ACALLLCD_PRINTMOVDPTR,#M_ERROR2MOVA,#2ACALLLCD_PRINTRET;---------------M_ERROR1:;代码表DB"DS18B20ERROR",0M_ERROR2:DB"TEMP:",0;---------------;------―――――菜单显示子程序―――――――-----;在LCD的第一行或第二行显示字符LCD_PRINT:CJNEA,#1,LINE2LINE1:ACALLCLR_LINEMOVA,#80HACALLWR_COMMJMPFILLLINE2:ACALLCLR_LINEMOVA,#0C0HACALLWR_COMMFILL:CLRAMOVCA,@A+DPTRCJNEA,#0,LC1RETLC1:ACALLWR_DATAINCDPTRJMPFILLRET;---------―LCD显示子程序----------CONV:MOVA,73HMOVX,#6CJNEA,#1,CO1JMPCO2CO1:MOVA,#""MOVB,XACALLLCDP2JMPCO3CO2:ACALLSHOW_LINE2CO3:INCXMOVA,72HACALLSHOW_LINE2INCXMOVA,71HACALLSHOW_LINE2INCXMOVA,#'.'MOVB,XACALLLCDP2MOVA,70HINCXACALLSHOW_LINE2RET;-----――显示第二行-----―――;在LCD的第二行显示数字SHOW_LINE2:ADDA,#30HMOVB,XACALLLCDP2RETLCDP2:PUSHACCMOVA,BADDA,#0C0HACALLWR_COMMPOPACCACALLWR_DATARET;-----――――――写指令子程序――――――――――--WR_COMM:MOVP0,ACLRRSCLRRWSETBEACALLDELAY1CLRERET;---------―――写数据子程序------------WR_DATA:MOVP0,ASETBRSCLRRWSETBEACALLDE

温馨提示

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

评论

0/150

提交评论