随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。
本设计主要介绍以AT89S51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度传感电路、温度控制电路、PC机与单片机串口通讯电路和一些接口电路 。
单片机通过对信号进行相应处理,从而实现温度控制的目的。通过测试表明,本设计对温度的控制有方便、简单的特点,从而大幅提高了被控温度的技术指标。
关键词:AT89S51单片机 DS18B20温度芯片 温度控制 串口通讯
Abstract
As the technology advances in industrial production in the temperature is charged with common parameters, and the use of those charged with SCM to the parameters of control has become the mainstream.
This design take at89S51 monolithic integrated circuit as core temperature control system's principle of work and design method. The temperature signal by the temperature chip DS18B20 gathering, and transmits by digital signal's way for the monolithic integrated circuit. In the article introduced this control system's hardware part, including: Temperature examination electric circuit, temperature-control circuit,
PC machine and monolithic integrated circuit serial port communication channel and some interface circuit.
The monolithic integrated circuit through carries on corresponding processing to the signal, thus realizes the temperature control goal. Passed the tests show that the design of the temperature control is convenient and simple characteristics’, thus greatly raising the temperature was charged with the technical indicators.
Keywords:AT89S51 Monolithic Integrated Circuit ;DS18B20 Temperature Chip;Temperature Control;Serial Port Communication
目录
引言 1
第一章 绪论 2
一、恒温控制器的研究目的 2
二、恒温控制器的设计背景和发展现状 2
三、单片机的发展现状以及未来趋势 3
第二章 系统设计任务及要求 4
一、系统设计任务 4
二、系统设计的基本要求 4
第三章 系统的硬件设计 5
一、电路的总体工作原理 5
二、参数采集模块设计 6
1.温度传感器DS18B20芯片介绍与运用 6 2.DS18B20的测温原理 7 三、主控制模块设计 9 四、温度控制电路的设计 10 五、键盘电路的设计 11 六、显示电路的设计 12 第四章 系统的软件设计 14 一、系统的主程序设计 14 二、程序代码(详见附录 程序清单)第五章 系统的控制 16 一、 温控电路及报警电路的控制 二、 LCD显示电路的控制 17 三、使用说明 17 第六章 电路问题分析 18 第七章 全文总结 19 15 16
一、经济效益分析 19
二、社会效益分析 19
致谢 20
参考文献 21
附录 22
引言
温度控制系统广泛应用于社会生活的各个领域 ,如家电、材料、电力电子等。常用的控制电路根据应用场合和所要求的性能指标有所不同。在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。
第一章 绪论
一、恒温控制器的研究目的
温度是工业生产和科学实验中的重要参数之一。在化工、冶金、医药、航空等领域里,对温度控制的效果直接影响到许多产品的质量及使用寿命。而在我们日常生产、生活中也经常涉及到控制温度的问题。但是我们经常所用的测温元件大部分都是用热敏电阻来实现的,其过程需要比较多的外部硬件支持,软件调试复杂,制作成本高。而采用单片机对温度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温度控制技术指标。它可以对温度进行实时监测和控制,当温度高于设定的上限值或低于下限值时就会发出报警信号,因此被广泛应用于工业生产生活的多个方面。所以恒温控制器的设计就有很高的理论研究价值和实际应用价值。
二、恒温控制器的设计背景和发展现状
温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人工操作加热、通风和降温设备来控制温度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。即使有些用户采用半导体二极管作温度传感器,但由于其互换性差,效果也不理想。在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。对工业生产可靠进行造成影响,甚至操作人员的安全。为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。
现代信息技术的三大基础是信息采集控制(即温度控制器技术)、信息传输(通信技术)和信息处理(计算机技术)。温度控制器属于信息技术的前沿尖端产品,尤其是温度控制器被广泛用于工农业生产、科学研究和生活等领域,数量日渐上升。
温度控制器是基于单片机开发的温度控制装置。其主要功能是,根据用户设定温度与实际温度的差值来控制加热器等执行机构,从而改变温度至用户所需。
近些年来,因为温度控制器环节已经被纳入为分布式控制系统(DCS),个人电脑(PC)和可编程逻辑控制器(PLC),全球工业电子温度控制器市场增长缓
慢。随着我国电子温度控制器市场的迅猛发展,与之相关的核心生产技术应用与研发必将成为业内企业关注的焦点。了解国内外电子温度控制器生产核心技术的研发动向、工艺设备、技术应用及趋势对于企业提升产品技术规格,提高市场竞争力十分关键。
目前主要有模拟、集成机械式温度控制器和智能电子式温度控制器两大系列。且国际上新型温度控制器正从模拟式向数字式、电子式;从集成化向智能化、网络化的方向发展。在当今电子信息时代,电子自动化、信息采集控制在任何行业都是不可逆转的潮流,智能电子式温度控制器全面取代机械式温度控制器将在未来很短时间内实现。
三、单片机的发展现状以及未来趋势
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。(1)SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。(2)MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。(3)单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SOC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SOC的单片机应用系统设计会有较大的发展。
第二章 系统设计任务及要求
一、系统设计任务
设计一个基于DS18B20的温度控制系统,配合硬件实现温度实时采集和自动调控,显示当前温度等功能,实现单片机的闭环控制系统。该系统能在温度高于或低于设置的温度值时自动开启风扇或加热器驱动DS18B20使其温度在规定的值内。
二、系统设计的基本要求
1. 实现单片机闭环控制系统:系统内部能够自动调节。
2. 自动启动风扇或加热器功能:当DS18B20的温度高于设定的的最高温度时,系统能够自动的驱动风扇散热;当DS18B20的温度低于设定的最低温度时,系统能够自动的驱动加热管加热。
3. 设置温度范围控制功能:系统在设计过程中实现上下限温度的按键设置。
温度显示:在整个系统中可以直观的显示当前的温度。
第三章 系统的硬件设计
一、电路的总体工作原理
温度控制系统采用AT89S51八位机作为微处理单元进行控制。采用4X4键盘把设定温度的最高值和最低值存入单片机的数据存储器,还可以通过键盘完成温度检测功能的转换。温度传感器把采集的信号与单片机里的数据相比较来控制温度控制器。
系统框图如图3.1:
图3.1 系统框图
根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89S51为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,优化了电路,缩短了系统的工作时间,降低了系统硬件成本。
该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89S51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器为点阵字符LCD。检测范围5摄氏度到60摄氏度。本系统除了显示温度以外还可以设置一个温度值,对所测温度进行监控,当温度高于或低于设定温度时,开始报警并启动相应程序(温度高于设定温度时,风扇开;当温度低于设定温度时,加热器开)。
中央微处理器 AT89S51: AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80S51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes
Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,片内时钟振荡器,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口。
此外,AT89S51设计和配置了振荡频率,并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。AT89S51单片机综合了微型处理器的基本功能。按照实际需要,同时也考虑到设计成本与整个系统的精巧性,所以在本系统中就选用价格较低、工作稳定的AT89S51单片机作为整个系统的控制器。
二、参数采集模块设计
1.温度传感器DS18B20芯片介绍与运用
DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、功耗小、体积小、抗干扰能力强、使用方便等优点。可以在三根线上同时并联多个温度传感器,每台分机上可以连接多根电缆,每根电缆上可以并联几十个点,构成串行总线工作方式。由于18B20芯片送出的温度信号是数字信号,因此简化了A/D转换的设计,提高了测量效率和精度;并且芯片的ROM中存有其唯一标识码,即不存在相同标识码的DS18B20,适合与微处理芯片构成多点温度测控系统。
综上,在本系统中我采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。
图3.2 DS18B20引脚分布图
引脚定义: DQ为数字信号输入/输出端; GND为电源地; VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
2.DS18B20的测温原理
DS18B20的测温原理如图3.3所示。用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于﹣55℃的一个值。如果计数器在门周期结束前到达0,则温度寄存器的值增加,表明温度大于﹣55℃。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期未结束,将重复这一过程。斜率累加器用于修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器达到被测温度值。
图3.3 DS18B20的测温原理
图 3.4 温度传感电路图
DS18B20有六条控制命令,如表3-1所示:
表3-1 DS18B20控制命令 指令 温度转换 读暂存器 写暂存器 复制暂存器 重新调E2RAM 约定代码 操作说明 44H BEH 4EH 48H B8H 启动DS18B20进行温度转换 读暂存器9个字节内容 将数据写入暂存器的TH、TL字节 把暂存器的TH、TL字节写到E2RAM中 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 启动DS18B20发送电源供电方式的信号给主CPU 读电源供电方式 B4H CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后对存储器操作,数据操作。
三、主控制模块设计
AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统
及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 AT89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 AT89S51芯片内含有4 kB的 E2PROM ,无需外扩存储器 ,电路简单,并且价格低廉 。
图3.5 AT89C51
四、温度控制电路的设计
图 3.6 温度控制电路
实际电路如图2.4所示,通过键盘设定温度的上下限。把实际测量的温度和设定的上下限进行对比,来控制P0.0、P0.1、P0.7端口的高低电平。把P0.0、P0.1、P0.7端口分别与三极管的基极连接来控制温度和报警。当测量的温度超过了设定的最高温度,P2.2由高电平变成低电平,就相当于基极输入为“0”,这时三极管导通推动风扇和控制电路工作,反之,当基极输入为“1”时,三极管不导通,报警器和控制电路都不工作。只要控制单片机的P0.0、P0.1、P0.7口的高低电平就可以控制模拟电路的工作。
五、键盘电路的设计
如图2.6所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;液晶显示器上显示每个按键的“0-F”序号。对应的按键的序号排列如图3.5所示:
图 3.7 按键的序号排列图
图2.6中微处理单元是AT89S51单片机,X1和X2接12M的两脚晶振,接两个30PF的起振电容,J1是上拉电阻.单片机的P1口8位引脚与行列式键盘输出脚相连,控制和检测行列式键盘的输入.行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态;有键按下时,行线的电平状态将由与此行线相连的列线的电平决定.键盘输入的信息主要进程是:
1 CPU判断是否有键按下.
2 确定是按下的是哪个键.
3 把此键所代表的信息翻译成计算机可以识别的代码或者其他的特征符号。
图 3.8 键盘硬件电路图
六、显示电路的设计
液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。
根据显示内容和方式的不同可以分为,数显LCD,点阵字符LCD,点阵图形LCD在此设计中我们采用点阵字符LCD,这里采用常用的2行16个字的1602液晶模块。
1602采用标准的14脚接口,其中:
第1脚:VSS为地电源第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存
器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15~16脚:空脚。
与单片机的连接如图3.9所示。
图 3.9 液晶显示电路图
第四章 系统的软件设计
一、系统的主程序设计
主程序是系统的监控程序,在程序运行的过程中必须先经过初始化,包括键盘程序,中断程序,以及各个控制端口的初始化工作。流程图如3.1 所示。系统在初始化完成后就进入温度测量程序,实时的测量当前的温度并通过显示电路在LCD上显示。程序中以中断的方式来重新设定温度的上下限。根据硬件设计完成对温度的控制。按下4*4键盘上的A键可以设定温度上限,按下B键可设定温度下限。系统软件设计的总体流程图
图 4.1 系统总体设计流程图 声波测距仪设计
301006 _____________________________________________________________________________________________________________
程序开始的时候先设置初始化,然后就控制数码管显示当前温度。接着就判断F1、F2按键是否被按下。按下F1进入温度控制点1的程序、按下F2进入温度控制点2的程序。程序控制设置温度的两个数码管闪烁的,此时键盘输入有效。有按键按下的时候进入按键处理程序。按下“确定”按键后,程序进入判断程序和继电器控制程序。继电器动作后,程序回到显示当前程序,并开始循环。
二、程序代码(详见附录 程序清单)
第五章 系统的控制
一、 温控电路及报警电路的控制
单片机的P0.0、P0.1、P0.7分别与三极管的基极连接来控制控制温度(图4.1)和报警(图4.2)。利用面包板搭了一个PNP9012的偏置电路电路。基极输入为“0”时,这时三极管导通推动报警器和控制电路工作,当基极输入为“1”时,三极管不导通,报警器和控制电路都不工作。只要控制单片机的P0.0、P0.1、P0.7口的高低电平就可以控制模拟电路的工作。
图 5.1 硬件控制电路
图 5.2 硬件报警电路
二、 LCD显示电路的控制
把8根数据线和P2口连接,把3根控制线和P2.5、P2.6、P2.7连接。给VCC端加上+5V的电压,GND端接地。VEE端的驱动电压不要过大,要调节滑动变阻器使VEE在0.7伏以下显示器才能工作。
三、使用说明
键盘中阿拉伯数字0~9是数据输入键,A键是写上限的功能键,B键是写下限的功能键,C键是取消键,其他的键置空。
第六章 电路问题分析
一、调试硬件电路时,用万用表测试所有芯片的电源和地是否确实接电源和接地了,测试各个芯片是否处于正常的工作电压,并测试电路是否有短路、断路、虚焊,有无接错线,同时要特别注意过孔是否连接正确。
二、 硬件电路通电时,注意用手背触摸下芯片是否发烫,防止芯片被烧坏掉。
三、 调试硬件电路,烧写程序看各项功能是否正常实现,分析未实现未实现原因。
四、调试之行动作电路。给参数采集电路一个高温或低温值看是否开启关闭空调或加热器。
五、在调试硬件电路时,注意各部分电路之间的时序配合关系。
六、在调式过程中,应分功能模块调试好了以后再整合成整体调试。
在调试整机电路时,在排除故障中,检测不出故障,可就对各个芯片进行独立检测。
第七章 全文总结
一、经济效益分析
本系统的设计,是为了保证某特定环境温度维持在设定的范围内,以保证工作系统在稳定的状态下工作。本系统的设计成本很低,总成本不超过50元人民币。在市场上的温度自动控制系统的价格在百元人民币以上。对于本系统的使用者来说,本系统能够很稳定的控制温度而且稳定性很高。只要配上适当的温度传感器,这个系统便还可以实现很多领域的温度自动控制。这对于提高系统的利用率,避免重复设计有很大的帮助的。在本系统的作用下,可以为工作系统提供一个良好
的环境,使产品的数量和质量有很大的提高。使得产品的生产成本降低,从而使系统的使用者获得的利润提高了。
通过分析表明:本系统是一个性价比比较好的系统,不论对于生产者还是使用者来说,它都可以带来好的经济效益。
二、社会效益分析
本设计是以AT89S51为核心,利用软硬件相结合的自动控制的典型例子。现阶段传统用模拟电路来控制温度的做法,已经逐渐被淘汰。这个系统的实现,改变了传统的温度控制方法,为温度的控制开辟了一条新的道路。根据我国的科技和工业水平,这个系统的设计是符合工业生产的需要。实现我国的工业化,自动控制是其中的一个重要目标,自动控制系统正广泛的应用于工业生产和人们的日常生活。本系统的设计成功知识实现自动控制的“冰山一角”,但它为以后更加智能化、人性化的自动控制系统的设计,作了铺垫。因此这种系统的设计具有比较好的社会效益。
致谢
参考文献
[1] 沙占友. 集成温度传感器原理与应用. 北京:机械工业出版社,2002, 84~95.
[2] 刘君华. 智能传感器系统. 西安:西安电子科技大学出版社,1999,83~105.
[3] 沙占友. 智能化传感器原理与应用. 北京:电子工业出版社,2004,99~108.
[4] 赵负图. 传感器集成电路手册. 北京:化学工业出版社,2002,692~703.
[5] 张毅刚. MCS-51单片机原理及应用. 哈尔滨:哈尔滨工业大学出版社,2004,81~94
[6] 李玉峰,倪虹霞 MCS-51系列单片机原理与接口技术. 北京:人民邮电出版社,2004,187~216.
[7] 林伸茂. 8051单片机彻底研究经验篇. 北京:人民邮电出版社,2004,7~14.
[8] 沙占友. 单片机外围电路设计. 北京:电子工业出版社,2003,37~48.
[9] 何希才. 传感器及其应用电路. 北京:电子工业出版社,2001,36~47.
附录
程序
DI EQU P3.3
DO EQU P3.4
CLK EQU P3.5
CS EQU P3.6 ; LCD端口定义
D2RS EQU P2.7
D2RW EQU P2.6
D2E EQU P2.5
KEYPORT EQU P1 ; DS18B20端口定义
TEMPER_L EQU 36H
TEMPER_H EQU 35H
TEMPER_NUM EQU 38H
FLAG1 BIT 00H
DQ BIT P2.4
ORG 0000H
LJMP MAIN
ORG 0003H
JMP INT00
ORG 0038H
MAIN: MOV SP,#60H
SETB P2.0
SETB P2.1
SETB P2.2
SETB EA SETB EX0 SETB P2.0 SEETB P2.1 SETB P2.2 MOV R0,#01H LCALL DIS_CMD _WRT MOV R0,#38H LCALL DIS_CMD _WRT CALL DIS_CUR_OFF MOV 42H,#20 MOV 43H,#32 XIAN: LCALL GET_TEMPER LCALL DISP LCALL DELAY43MS MOV A,TEMPER_NUM SUBB A,42H
清屏并置地址计数器AC为0 位数据接口,双行显示,5*7点阵
;
;8
JC ZZZL MOV A,TEMPER_NUM SUBB A,43H JNC ZZZ2 SETB P2.0 SETB P2.1 SETB P2.2 JMP XIAN ZZZL: CLR P2.0 CLR P2.2 JMP XIAN ZZZ2: CLR P2.0 CLR P2.1 JMP XIAN INT0: LCALL ASK SAO: CLR 01H
扫描键盘程序
;
LCALL KEY
JNB 01H,SAO
CJNE A,#10,PAN
LCALL ANSW
RETI
PAN: CJNE A,#12,SAO
RETI ;显示函数部分,可供调用
DIS_CUR_OFF: MOV R0,#0CH
LCALL DIS_CMD_WRT
RET
DIS_CUR_ON: MOV R0,#0EH
LCALL DIS_CMD_WRT
RET
CHK_BUSY_FLG: MOV P0,#0FFH
CLR D2RS
NOP
NOP
NOP
LCALL DISPLAY_RD
JB ACC.7,CHK_BUSY_FLG
RET
CLEAR_DIS: MOV R0,#01H
LCALL DIS_CMD_WRT
RET
DIS_CMD_WRT: LCALL CHK_BUSY_FLG
MOV P0,R0
CLR D2RS
NOP
NOP
NOP
LCALL DISPLAY_WRT
RET
DIS_DATA_WRT: LCALL CHK_BUSY_FLG
CJNE A,#10H,DIS_DAT_WRT1
MOV P0,#0C0H ;1100,00000行起始地址为40 CLR D2RS NOP NOP NOP LCALL DISPLAY_WRT DIS_DAT_WRT1: MOV SETB D2RS NOP NOP NOP LCALL DISPLAY_WRT RET DISPLAY_WRT: CLR NOP NOP NOP
P0,R0
D2RW
SETB D2E NOP NOP NOP CLR D2E NOP NOP NOP RET DISPLAY_RD: SETB NOP NOP NOP SETB D2E NOP NOP NOP
D2RW
MOV A,P0
NOP
NOP
NOP
CLR D2E
NOP
NOP
NOP
RET
DIS_DATA_RD: LCALL CHK_BUSY_FLG
MOV P0,#0FFH
SETB D2RS
LCALL DISPLAY_RD
RET ;键盘程序,出口:A为按键值 01H:0无键按下 1 有键按下
KEY: MOV KEYPORT,#0FH
MOV A,KEYPOR
CJNE A,#0FH,KEYDOWN
MOV A,#0FFH
RET
KEYDOWN: LCALL DELAY43MS
MOV KEYPORT,#0FH
MOV A,KEYPORT
CJNE A,#0FH,KEYDOWN_YES
MOV A,#0FFH
RET
KEYDOWN _YES: MOV B,A
MOV KEYPORT,#0F0H
MOV A,KEYPORT
ORL A,B
PUSH 30H
MOV 30H,A
MOV R3,#10H
MOV DPTR,#KEYVALUE
NEXT_KEY: MOV A,R3
MOVC A,@a+dptr
CJNE A,30h,NEXTKEYVALUE
DEC R3
POP 30H
WAITKEY_F: MOV KEYPORT,#0FH
MOV A,KEYPORT
CJNE A,#0FH, WAITKEY_F
MOV A,R3
SETB 01H
RET
NEXTKEYVALUE: DJNZ R3,NEXT_KEY
DEC R3
POP 30H
WAITKEY_FREE: MOV KEYPORT,#0FH
MOV A,KEYPORT
CJNE A,#0FH, WAITKEY_FREE
MOV A,R3
SETB 01H
RET
KEYVALUE: DB
0FFH,7EH,7DH,7BH,77H,0BEH,0BDH,0BBH,0B7H,0DEH,0DDH,0DBH,0D7H,0EEH,0EDH,0EBH,0E7H
DELAY43MS: PUSH A
MOV A,R3
PUSH A
MOV A,R2
PUSH A
MOV R3,#43
DELAY: MOV R2,#0FAH
LOOP: NOP ;内层循环为1MS
NOP
DJNZ R2,LOOP
DJNZ R3,DELAY
POP A
MOV R2,A
POP A
MOV R3,A
POP A
RET ;确认是否修改温度设定
ASK: MOV R0,#01H ;清屏并置地址计数器AC为0
LCALL DIS_CMD_WRT
MOV 40H,#0
ZDZ: MOV DPTR,#LINE
MOV A,40H
MOVC A,@A+DPTR
MOV R0,A
LCALL DIS_DATA_WRT
INC 40H
MOV A,40H
MOVC A,@A+DPTR
CJNE A,#00H,ZDZ
RET
LINE: DB \" ARE YOU
SURE
CHANGE T(Y/N)?\
ANSW: MOV R6,42H
MOV R7,43H
MOV R0,#01H
LCALL DIS_CMD_WRT
MOV R0,#44H
CALL DIS_DATA_WRT
MOV R0,#6FH
CALL DIS_DATA_WRT
MOV R0,#77H
CALL DIS_DATA_WRT
MOV R0,#6EH
CALL DIS_DATA_WRT
MOV R0,#3AH
CALL DIS_DATA_WRT
MOV 40H,#0
CLR 00H
JMP SAO1
GAI: MOV R0,#0FEH
CALL DIS_DATA_WRT
MOV R0,#55H
CALL DIS_DATA_WRT
MOV R0,#70H
CALL DIS_DATA_WRT
MOV R0,#3AH
CALL DIS_DATA_WRT
MOV 40H,#0
SAO1: CLR 01H
LCALL KEY
JNB 01H,SAO1
MOV R1,A
MOV B,#10
DIV AB
JZ NEXT2
MOV A,A1
CJNE A,#11,XU
JB 00H,DOWN
MOV 42H,40H
CPL 00H
JMP GAI
DOWN: MOV 43H,40H
RETI
XU: CJNE A,#12,SAO1
MOV 42H,R6
MOV 43H,R7
RETI
NEXT2: MOV A,R1
ADD A,#30H
MOV
R0,A
LCALL DIS_DATA_WRT
MOV A,R1
XCH A,40H
MOV
B,#10
MUL AB
NOP
CLR DQ
CLR C
WR1: CLR DQ
MOV R3,#6
DJNZ R3,$
RR
R4,#2 R1,#36H ; 低位存入36H(TEMPER_L),高位存入
35H(TEMPER_
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET 将从DS18B20中读出的温度数据进行转换
;
TEMPER_COV: MOV A,#0f0H
ANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值
SWAP A
MOV TEMPER_NUM,A
MOV A,TEMPER_L
JNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值
INC TEMPER_NUM
TEMPER_COV1:MOV A,TEMPER_H
ANL A,#07H
SWAP A
ORL A,TEMPER_NUM
MOV TEMPER_NUM,A ; 保存变换后的温度数据
RET ;AD0832:
SETB DI
SETB DO
SETB CLK
CLR CS
NOP
SETB CS
CLR CLK
CLR CS
CALL DELAY1
SETB DI
SETB CLK
NOP
CLR CLK
SETB DI
SETB CLK
NOP
CLR CLK
CLR DI
SETB CLK
NOP
CLR CLK
NOP
SETB CLK
NOP
CLR CLK
NOP
SETB CLK
MOV C,DO
CLR CLK
RLC A;7
SETB CLK
MOV C,DO
CLR CLK
RLC A 6
SETB CLK
MOV C,DO
CLR CLK
RLC A ;5
SETB CLK
MOV C,DO
CLR CLK
RLC A ;4
SETB CLK
MOV C,DO
CLR CLK
RLC A ;3
SETB CLK
MOV C,DO
CLR CLK
RLC A ;2
SETB CLK
MOV C,DO
CLR CLK
RLC A ;1
SETB CLK
MOV C,DO
CLR CLK
RLC A ;0
SETB CLK
NOP
CLR CLK ;1
NOP
SETB CLK
NOP
CLR CLK ;2
NOP
SETB CLK
NOP
CLR CLK ;3
NOP
SETB CLK
NOP
CLK ;4
NOP
SETB CLK
NOP
CLR CLK ;5
NOP
SETB CLK
NOP
CLR CLK ;6
NOP
SETB CLK
NOP
CLR CLK ;7
NOP
SETB CLK
NOP
CLR CLK
NOP
SETB CLK
NOP
CLR CLK
NOP
CALL DELAY1
SETB CS
RET
DELAY1: MOV R7,#10
DELAY2: NOP
NOP
DJNZ R7,DELAY2
RET
附录
仿真图
因篇幅问题不能全部显示,请点此查看更多更全内容