




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于 C51 单片机的温度控制系统应用系统设计( 附程序)基于C51 单片机的温度控制系统应用系统设计 单片机原理及应用实践周设计报告姓名:班级:学号:同组成员:指导老师:成绩:时间:2011 年 7 月 3 日单片机温度控制系统摘要温度是日常生活中无时不在的物理量,温度的控制在各个领域都有积极的意义。 很多行业中都有大量的用电加热设备,如用于热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,采用单片机对它们进行控制不仅具有控制方便、简单、 灵活性大等特点,而且还可以大幅度提高被控温度的技术指标, 从而能够大大提高产品的质量。因此, 智能化温度控制技术正被广泛地采用。本温度设计
2、采用现在流行的AT89S51I片机,配以DS18B2散字温度传感器,该温度传感器可自行设置温度上下限。单片机将检测到的温度信号与输入的温度 上、下限进行比较,由此作出判断是否触发相应设备。使得整个设计更本设计还加入了常用的液晶显示及状态灯显示灯常用电路,加完整,更加灵活。关键词: 温度箱;AT89C52 LCD1602单片机;控制目录1 引言 11.1 温度控制系统设计的背景、发展历史及意义11.2 温度控制系统的目的11.3 温度控制系统完成的功能12 总体设计方案22.1 方案一22.2 方案二23 DS18B20温度传感器简介73.1 温度传感器的历史及简介73.2 DS18B20的工作
3、原理7DS18B20工作时序7ROMS作命令93.3 DS18B20的测温原理 98B20的测温原理:9DS18B20的测温流程 104 单片机接口设计124.1 设计原则124.2 引脚连接12晶振电路12串口引脚12其它引脚135 系统整体设计145.1 系统硬件电路设计14主板电路设计14各部分电路145.2 系统软件设计16系统软件设计整体思路16系统程序流图176 结束语21附录 22参考文献391 引言1.1 温度控制系统设计的背景、发展历史及意义随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制系统已应用到人
4、们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。温度是科学技术中最基本的物理量之一,物理、 化学、 生物等学科都离不开温度。在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、 粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。比如, 发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、 煤油等产品。没有合适的温度环境, 许多电
5、子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。因此,各行各业对温度控制的要求都越来越高。可见,温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。1.2 温度控制系统的目的本设计的内容是温度测试控制系统,控制对象是温度。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一
6、种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。1.3 温度控制系统完成的功能本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:当温度低于设定下限温度时,系统自动启动加热继电器加温,使温度上升。当温度高于设定上限温度时,系统自动启动风扇降温,使温度下降。当温度下降到上限温度以下时,停止降温。温度在上下限温度之间时,执行机构不执行。LCD1602夜晶显示即时温度,精度为正负 0.5摄氏度。2 总体设计方案2.1 方案一测温电路的设计,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过
7、来,进行 A/D 转换后, 就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。2.2 方案二考虑使用温度传感器,结合单片机电路设计,采用一只DS18B2耻度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。图 2 1 温度计电路总体设计方控制部分单片机AT89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用,系统应用三节电池供电。2. 显示部分显示电路采用LCD1602夜晶显示器,从P0 口送数,P2 口扫描。3. 温度采集部分DS18B2CW度传感
8、器是美国 DALLAS导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。这一部分主要完成对温度信号的采集和转换工作,由DS18B2O字温度传感器及其与单 片机的接口部分组成。数字温度传感器DS18B2CT巴采集到的温度通过数据引脚传 到单片机的P1.0 口,单片机接受温度并存储。此部分只用到DS18B20f口单片机, 硬件很简单1 DS18B20 的性能特点如下9 :1 独特的单线接口仅需要一个端口引脚进行通信;2多个DS18B2M以并联在惟一的三线上,实现多点组网功能;3 无须外部器件;4 可通过数据线供电,电压范围为 3.05.5V;5 零待机
9、功耗;6 温度以 3 位数字显示;7 用户可定义报警设置;8 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;9 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2 DS18B20 的内部结构DS18B2原用3脚PR 35封装,如图1.2所示;DS18B20勺内部结构,如图 3 所示。图 2-2 DS18B20封装3 DS18B20 内部结构主要由四部分组成5 :1 64位光刻ROM开始8位是产品类型的编号,接着是每个器件的惟一的 序号,共有48位,最后8位是前56位的CRCK验码,这也是多个DS18B2CMW 采用一线进行通信的原因。64闪速ROM勺结构如下
10、图23 DS18B20内部结构2非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。3 高速暂存存储Byte0 温度测量值LSB( 50H)Byte1 温度测量值 MSB(50H)E2PROM Byte2 TH高温寄存器 - TH 高温寄存器Byte3 TL低温寄存器 -TL 低温寄存器Byte4 配位寄存器 配位寄存器Byte5 预留( FFH)Byte6预留(0CH)Byte7 预留(IOH)Byte8 循环冗余码校验(CRC)2非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值3高速暂存存储CRC勺产生64 b ROM 的最高有效字节中存储有循环冗余校验码(C
11、RC) 。主机根据ROM的前56位来计CRCfi,并和存入DS18B20的CRCS做比较,以判断主机收到的RO峨据是否正确。3 DS18B20温度传感器简介3.1 温度传感器的历史及简介温度的测量是从金属物质 的热胀冷缩开始。水银温度计至今仍是各种温度测量的计量标准。可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低, 只能作为一个概略指示。不过在居民住宅中使用已可满足要求。在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、PN 结型、辐射型、光纤式及石英谐振型等。它
12、们都是基于温度变化引起其物理参数如电阻值,热电势等的变化的原理。随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器。3.2 DS18B20的工作原理DS18B20工作时序根据DS18B20勺通讯协议,主机控制DS18B2沈成温度转换必须经过三个步骤:每一次读写之前都要对 DS18B20tt行复位复位成功后发送一条 ROM旨令最后 发送RAM旨令,这样才能对DS18B20tt行预定的操作。复位要求主CPU等数据线 下拉500微秒,然后释放,DS18B20攵到信号后等待1560微秒左右后发出60 240微秒的存在低脉冲,主CPU攵到此信号表示复位成功。3 1 初始化时序总线上的所有传输
13、过程都是以初始化开始的,主机响应应答脉冲。应答脉冲 使主机知道,总线上有从机设备,且准备就绪。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,4.7KQ上拉电阻将总线拉高,延时1560us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时 480us12 。2 写时序图 3 2 写时序写时序包括写0时序和写1时序。所有写时序至少需要 60us,且在2次独立的写时序之间至少需要1us 的恢复时间,都是以总线拉低开始。写 1 时序,主机输出低电平,延时2us,然后释放总线,延时60uso写0时序,主机输出低电平,延时60us,然后释放总线,延时2us8。3
14、读时序图 3 3 读时序总线器件仅在主机发出读时序是,才向主机传输数据,所以, 在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要 1us的恢复时间。每个读时序都由主机发起,至少拉低总线1uso主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时 50us4ROMS作命令当主机收到DS18B20的响应信号后,便可以发出 ROM臊作命令之一,这些 命令如表2.2 : ROM作命令。3.3 DS18B20的测温原
15、理DS18B20的测温原理:每一片DS18B20在其ROW都存有其唯一的48位序列号,在出厂前已写入 片内ROM中。主机在进入操作程序前必须用读 ROM 33HT令将该DS18B20的序 列号读出。程序可以先跳过ROM启动所有DS18B20进行温度变换,之后通过匹配ROM 再逐一地读回每个DS18B20的温度数据。DS18B20勺测温原理如图所示,图中低温度系数晶振的振荡频率受温度的影响很小1,高温度系数晶振随温度变化其震荡2 的脉冲输入,图中还隐含着计数门,当计数DS18B2CM对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量-55 所对应的基数1 和温度寄存器中,减法计数器1
16、和温度寄存器被预置在 -55 所对 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 10 时温度寄存器的值将加1,减法计数器1 的预置将重新被装入,减法计数器1重2计数到0时,中的斜率累加器用读ROM 33H读DS18B20 ROW的编码符合 ROM55H发出此命令之后,接着发出64位ROM码,访问单线总线上与该编码相对应的DS18B20使之作出响应,为下一步对该 DS18B20勺读写作准备搜索ROM 0F0H 用于确定挂接在同一总线上 DS18B20的个数和识别64位ROM6址,为操作各器件作好准备跳过ROM 0CCH 忽略64位ROM 地址,直接向DS18B20g温度变换命令
17、,适用于单片工作续表3 1告警搜索命 令 0ECH 执行后,只有温度超过设定值上限或者下限的片子才做出响应 温度变换 44H启动DS18B20进行温度转换,转换时间最长为500Ms结果存入内部9字节RAMfr读暂存器 0BEH 读内部RAMfr 9字节的内容写暂存器 4EH发出向内部RAM勺第3, 4字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据复制暂存器48H 将E2PRAW第3, 4字节内容复制至U E2PRAMb重调E2PRAM 0BBH 将E2PRAW内容恢复至ij RAW的第3, 4字节 读供电方 式0B4H 读DS18B20勺供电模式,寄生供电时 DS18B2C送“
18、0”,外 接电源供电DS18B20g送“1”另外,由于DS18B20I线通信功能是分时完成的,他有严格的时隙概念,因 此读写时序很重 DS18B20的各种操作必须按协议进行。操作协议为:初始化 DS18B20(发复位脉冲ROMft能命令-发存储器操作命令-处理数据。图 3 4 测温原理内部装置DS18B20的测温流程图3-5 DS18B20测温流程4 单片机接口设计4.1 设计原则口$18820以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20的 1 脚接地, 2 脚作为信号线,3 脚接电源。另一种是寄生电源供电方式,如图3.1所示单片机端口接单线总线,为保证在有效的DS18B2
19、0寸钟周期内提供足够的电流,可用一个MOSFET来完成对总线的上拉。本设计采用电源供电方式,P 口接单线总线当DS18B2昵于写存储器操作和温度 A/D变换操作时,总线上必须 有强的上拉,上拉开启时间最大为10 ns。采用寄生电源供电方式是 VDDffi GND 端均接地。由于单线制只有一根线,因此发送接收口必须是三的。主机控制DS18B20g成温度转换必须经过3个步骤:初始化ROMM乍指令存储器操作指令。5 系统整体设计5.1 系统硬件电路设计主板电路设计单片机的P1.0接DS18B20勺2号引脚,P0 口送数P2 口扫描,P1.1、P1.2控制加热器和电风扇的继电器。如附录2。各部分电路1
20、 显示电路显示电路采用了 LCD1602夜晶显示器,节约了单片机的输出端口 ,便于程序的编写。图 5 1 显示电路图2 单片机电路图 5 2 单片机电路引脚图3 DS18B20 温度传感器电路图 5-3 温度传感器电路引脚图4 晶振控制电路图 5-5 晶振控制电路图5 复位电路图 5-6 复位电路图5.2 系统软件设计系统软件设计整体思路同时还必一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波
21、,信号处理等。因此充分利用其内部丰富的硬件资源和软件资源,采用与 S51 系列单片机相对应的51 汇编语言和结构化程序设计方法进行软件编程。程序设计语言有三种:机器语言、汇编语言和高级语言。机器语言是机器唯一能“懂”的语言,用汇编语言或高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(成为目标程序), 计算机才能 “看懂” , 然后逐一执行。高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强, 常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,但是本系统
22、却选用了汇编语言。原因在于,本系统是编制程序工作量不大、规模较小的单片机微控制系统,使用汇编语言可以不用像高级语言那样占用较多的存储空间,适合于存储容量较小的系统。同时, 本系统对位处理要求很高,需要解决大量的逻辑控制问题。MCS- 51指令系统的指令长度较短,它在存储空间和执行时间方面具有较高的效率, 编成的程序占用内存单元少,执行也非常的快捷,与本系统的应用要求很适合。而且MCS-51指令系统有丰富的位操作(或称位处理)指令,可以形成一个相当完整的位操作指令子集, 这是MCS-51指令系统主要的优点之一。对于要求反应灵敏与控制及时的工控、检测等实时控制系统以及要求体积小、系统小的许多“电脑
23、化”产品,可以充分体现出汇编语言简明、整齐、执行时间短和易 于使用的特点。本装置的软件包括主程序、读出温度子程序、复位应答子程序、写入子程序、以及有关DS18B20勺程序(初始化子程序、写程序和读程序)系统程序流图系统程序主要包括主程序,读出温度子程序,复位应答子程序,写入子程序等。1)主程序主程序的主要功能是负责温度的实时显示、 读出并处理DS18B20勺测量的当前温度值,温度测量每1s 进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图19 所示。通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来图 5-7 主程序流程
24、图图 5-8 读出温度子程序2)读出温度子程序读出温度子程序的主要功能是读出 RAMfr白9字节,在读出时需进行CRO验,校验有错时不进行温度数据的改写。DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有12 位数,小数4 位,整数7 位,还有一位符号位。3)复位、应答子程序图 5-9 复位、应答子程序4)写入子程序5-10 写入子程序5 系统总的流程图图 5-11 系统总的流程图6 结束语通过短短周的课程设计,锻炼了我们的实践能力,也对我们以后的实际工作能力的具体训练。现在是一个高科技的时代,单片机已经成为当
25、今计算机应用中空前活跃的领域,在生活中可以说是无处不在的。因此对于我们这一专业的同学来说,学好单片机,并正确应用单片机是非常重要的。附录 2主板电路图附录 3程序代码:TEMP_ZH EQU 24H; 实测温度值存放单元TEMPL EQU 25HTEMPH EQU 26HTEMP_TH EQU 27H; 高温报警值存放单元TEMP_TLEQU28H;低温报警值存放单元TEMPHCEQU29H;正、负温度值标记TEMPLC EQU 2AHTEMPFC EQU 2BHK1EQUP1.0;查询按键K2EQUP1.1;设置 /调整键K3EQUP1.2;调整键K4EQU P1.3 ; 确定键BEEPEQ
26、UP3.7;蜂鸣器RELAYEQU P3.6 ; 指示灯LCD_X EQU 2FH ;LCD 字符显示位置LCD_RS EQU P2.0 ;LCD 寄存器选择信号LCD_RW EQU P2.1 ;LCD读写信号LCD_EN EQU P2.2 ;LCD允许信号FLAG1 EQU 20H.0 ;DS18B20是否存在标志KEY_UD EQU 20H.1设定按键的增、减标志DQEQU P2.7ORG 0000HLJMP MAINORG 0030HMAIN: MOV SP,#60HMOV A,#00HMOV R0,#20HMOV R1,#10HCLEAR: MOV R0,AINC R0DJNZ R1,
27、CLEARLCALL SET_LCDLCALL RE_18B20START: LCALL RSTJNB FLAG1,START1LCALL MENU_OK程序MOV TEMP_TH,#055HMOV TEMP_TL,#019HLCALL RE_18B20ALCALL WRITE_E2;DS18B20 数据信号;将20H2FH单元清零;调用18B20复位子程序;DS1820不存在;DS1820存在,调用显示正确信息子;设置TH初值85度; 设置 TL 初值 25 度; 调用暂存器操作子程序; 写入 DS18B20LCALL TEMP_BJ; 显示温度标记JMP START2LCALL PROC_
28、KEY; 调用键扫描子程序START1: LCALL MENU_ERRORLCALL TEMP_BJSJMP $START2: LCALL RSTJNB FLAG1,START1MOV A,#0CCHLCALL WRITEMOV A,#44HLCALL WRITELCALL RSTMOV A,#0CCHLCALL WRITEMOV A,#0BEHLCALL WRITELCALL READLCALL CONVTEMPLCALL DISPBCDLCALL CONVLCALL TEMP_COMP较子程序; 调用显示出错信息子程序; 显示温度标记;调用DS18B20g位子程序;DS18B20不存在;跳
29、过ROME配命令; 温度转换命令;跳过ROME配; 读温度命令;调用DS18B2O据读取操作子程序;调用温度数据BCD码处理子程序; 调用温度数据显示子程序;调用LCD显示处理子程序; 调用实测温度值与设定温度值比SJMP START2; 循环.*PROC_KEY:JB K1,PROC_K1LCALL BEEPBLJNB K1,$MOV DPTR,#M_ALAX1MOV A,#1LCALL LCDPRINTLCALL LOOKALARMJB K3,$LCALL BEEPBLJMP PROCK2PROC_K1: JB K2,PROC_ENDLCALL BEEPBLJNB K2,$MOV DPTR
30、,#RST_A1MOV A,#1LCALLLCDPRINTLCALLSETALARMLCALLRE18B20将设定的TH,TL值写入DS18B20LCALL WRITE_E2PROC_K2: LCALL MENU_OKLCALL TEMP_BJPROC_END:RET设 定 温 度 报 警 值 TH 、 TL;*SET_ALARM:LCALL LOOK_ALARMAS0: JB K1,AS00LCALL BEEP_BLJNB K1,$CPL 20H.1 ;UP/DOWN标记AS00: JB 20H.1,ASZ01;20H.1 1 ,增加JMP ASJ01 ;20H.1 0,减小ASZ01: J
31、B K2,ASZ02 ;TH 值调整 增加LCALL BEEP_BLINC TEMP_THMOV A,TEMP_THCJNE A,#120,ASZ011MOV TEMP_TH,#0ASZ011: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP ASZ01ASZ02: JB K3,ASZ03;TL 值调整 增加MOV R6,#10LCALL BEEPBLINC TEMPTLMOV A,TEMP_TLCJNE A,#99,ASZ021MOV TEMP_TL,#00HASZ021: LCALL LOOKALARMMOV R5,#10LCALL DELAYJMP AS
32、Z02ASZ03: JB K4,AS0; 确定调整LCALL BEEPBLJNB K4,$RETASJ01: JB K2,ASJ02;TH 值调整(减少)LCALL BEEPBLDEC TEMPTHMOV A,TEMP_THCJNE A,#0FFH,ASJ011JMP ASJ022ASJ011: LCALL LOOKALARMLCALL DELAYJMP AS0ASJ02: JB K3,ASJ03 ;TL 值调整(减少)LCALL BEEP_BLDEC TEMP_TLMOV A,TEMP_TLCJNE A,#0FFH,ASJ021JMP ASJ022ASJ021: LCALL LOOK_ALA
33、RM ;MOV R5,#10LCALL DELAYJMP AS0ASJ022: CPL 20H.1JMP ASZ01ASJ03: JMP ASZ03RETRST_A1: DB SET ALERT TEMP: ,0.*实测温度值与设定温度值比较子程序*TEMP_COMP:MOV A,TEMP_THSUBBA,TEMP_ZH; 减数 被减数,则JCCHULI1; 借位标志位C 1 ,转MOV A,TEMPFCCJNE A,#0BH,COMPSJMP CHULI2COMP: MOV A,TEMP_ZHSUBB A,TEMP_TLJC CHULI2MOV DPTR,#BJ5LCALL TEMP_BJ3
34、CLR RELAYRETCHULI1: MOV DPTR,#BJ3LCALL TEMP_BJ3CPL P2.3SETB RELAY;LCALL BEEP_BLRETCHULI2: MOV DPTR,#BJ4LCALL TEMP_BJ3CPL P2.4SETB RELAY;LCALL BEEP_BL; 减数 被减数,则; 借位标志位C 1 ,转; 点亮指示灯熄灭指示灯; 蜂鸣器响熄灭指示灯; 蜂鸣器响RETTEMP_BJ3: MOV A,#0CEHLCALL WCOMMOV R1,#0MOV R0,#2BBJJ3: MOV A,R1MOVC A,A+DPTRLCALL WDATAINC R1DJ
35、NZ R0,BBJJ3RETBJ3:DB HBJ4:DB LBJ5:DB !;显示温度标记子程序;*TEMP_BJ: MOV A,#0CBHLCALL WCOM; 指针指到显示消息MOV DPTR,#BJ1MOV R1,#0MOV R29,#2BBJJ1: MOV A,R1MOVC A,A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ1RETBJ1: DB 00H,C; ;*MENU_OK: MOV DPTR,#M_OK1MOV A,#1LCALL LCD_PRINTMOV DPTR,#M_OK2MOV A,#2LCALL LCD_PRINTRETM_OK1: DB Ma
36、de by GYYQM_OK2: DB Current temp is:; ;*显示正确信息子程序; 指针指到显示消息; 显示在第一行; 指针指到显示消息; 显示在第一行,0,0显示出错信息子程序MOV A,#1; 显示在第一行MENU_ERROR:MOV DPTR,#M_ERROR1 指至 U 显示消息LCALL LCD_PRINTMOV DPTR,#M_ERROR2 ; 指针指到显示消息1MOV A,#2; 显示在第一行LCALL LCD_PRINTRETM_ERROR1: DB DS18B20 ERROR ,0M_ERROR2: DB Current is temp:,0.*DS18B2
37、0复位子程序*RST: SETB DQNOPCLR DQ主机发出延时复位低脉冲MOV R0,#6BHMOV R1,#04HTSR1: DJNZ R0,$MOV R0,#6BHDJNZ R1,TSR1; 拉高数据线SETB DQNOPNOPNOPMOV R0,#32HTSR2: JNB DQ,TSR3;等待DS18B2C0应DJNZ R0,TSR2JMP TSR4 ;TSR3: SETB FLAG1JMP TSR5TSR4: CLR FLAG1JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$TSR7: SETB DQRET;*延时置1标志位,表示DS1820存在
38、清0标志位,表示DS1820不存在时序要求延时一段时间DS18B20 暂 存 器 操 作 子 程 序RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:LCALL RSTMOV A,#0CCH;跳过 ROMS配LCALL WRITEWR_SCRAPD:MOV A,#4EH; 写暂器LCALL WRITEMOV A,TEMP_THLCALL WRITEMOV A,TEMP_TLLCALL WRITEMOV A,#7FHLCALL WRITERET;*WRITE_E2:LCALL RSTMOV A,#0CCHLCALL WRITEMOV A,#48HEEROMLCALL
39、 WRITERET;*READ_E2:LCALL RSTMOV A,#0CCHLCALL WRITEMOV A,#0B8H;TH 报警上限);TL 报警下限);12 位精度复制暂存器子程序;跳过ROMS配;把 暂 存 器 里 的 温 度 报 警 值 拷 贝 到重 读 EEROM 子 程 序;跳过ROMS配;把EEROM!的温度报警值拷贝回暂存LCALL WRITERET.*将自定义字符写入LCD的CGRAMfr*STORE_DATA:MOV A,#40HLCALL WCOMMOV R2,#08HMOV DPTR,#D_DATAMOV R3,#00HS_DATA: MOV A,R3MOVC A,
40、A+DPTRLCALL WDATA; 写入数据INC R3DJNZ R2,S_DATARET.*D_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00HDS18B20 数 据 写 入 操 作 子 程 序*WRITE: MOV R2,#8; 一共 8 位数据CLR CWR1: CLR DQ(低)状态MOV R3,#07DJNZ R3,$RRC ACMOV DQ,CMOV R3,#3CHDJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRET;开始写入 DS18B20总线要处于复位; 总线复位保持16 微妙以上;把一个字节DATA分成8个BIT环
41、移给; 写入一位; 等待 100 微妙; 重新释放总线; 写入下一位.*DS18B20 数 据 读 取 操 作 子 程 序*READ: MOV R4,#4;将温度低位、高位、TH TL从 DS18B20中读出MOV R1,#TEMPL ; 存入25H、 26H、 27H、 28H 单元RE00: MOV R2,#8RE01: CLR CYSETB DQNOPANL A,#08HNOPCLR DQNOPNOPNOPSETB DQMOV R3,#09DJNZ R3,$MOV C,DQMOV R3,#3CHDJNZ R3,$RRC ADJNZ R2,RE01MOV R1,AINC R1; 读前总线保
42、持为低; 开始读总线释放延时18 微妙;从DS18B2曲线读得一位等待100 微妙把读得的位值环移给A读下一位DJNZ R4,RE00RET温 度 值 BCD 码 处 理 子 程 序; ;*CONVTEMP: MOV A,TEMPH ; 判温度是否零下JZ TEMPC1温度零上转CLR CMOV A,TEMPL二进制数求补(双字节)CPL A取反加 1ADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BH; 负温度标志MOV TEMPFC,#0BHSJMP TEMPC11TEMPC1:MOV TEMP
43、HC,#0AH; 正温度标志MOV TEMPFC,#0AHTEMPC11:MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FH ;乘 0.0625MOV DPTR,#TEMPDOTTABMOVC A,A+DPTRMOV TEMPLC,A;TEMPLC LOW小数部分BCD整数部分 取出高四位取出低四位重新组合MOV A,TEMPLANL A,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLMOV TEMP_ZH,ALCALL HEX2BCD1MOV TEMPL,AANL A
44、,#0F0HSWAP A;TEMPHC LOWORL A,TEMPHCMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP A;TEMPLC HIORL A,TEMPLCMOV TEMPLC,A十位数 BCD个位数 BCDMOV A,R4JZ TEMPC12ANL A,#0FHSWAP AMOV R4,A百位数 BCDMOV A,TEMPHC ;TEMPHC HIANL A,#0FHORL A,R4MOV TEMPHC,ATEMPC12:RET.*-十 进 制 转 换 子 程 序*HEX2BCD1: MOV B,#064HDIV ABMOV R4,AMOV A,#0AHX
45、CH A,BDIV ABSWAP AORL A,BRETTEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H ; 小数部分码DB 05H,05H,06H,06H,07H,08H,08H,09H.*查询温度报警值子程序; 指针指到显示信息区; 显示在第二行; 加载TH 数据; 设置显示位置; 显示数据; 加载 TL 数据; 设置显示位置; 显示数据*LOOK_ALARM: MOV DPTR,#M_ALAX2MOV A,#2LCALL LCD_PRINTMOV A,#0C6HLCALL TEMPBJ1MOV A,TEMP_THMOV LCD_X,#3LCAL
46、L SHOW_DIG2HMOV A,#0CEHLCALL TEMP_BJ1MOV A,TEMP_TLMOV LCD_X,#12LCALL SHOW_DIG2LRETM_ALAX1: DB LOOK ALERT TEMP,0M_ALAX2: DB HIGH: LOW: ,0TEMP_BJ1: LCALL WCOMMOV DPTR,#BJ2; 指针指到显示信息区MOV R1,#0MOV R0,#2BBJJ2: MOV A,R1MOVC A,A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ2RETLCD 显 示 子 程 序BJ2: DB 00H,C; ;*SHOW_DIG2H:
47、 MOV B,#100DIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RETSHOW_DIG2L:MOV B,#100DIV ABMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCDXMOV A,BMOV B,LCD_XADD A,#30H LCALL LCDP2RET显 示 区 BCD 码 温 度 值 刷 新 子 程 序;*DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,A;小数位MOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,A;个位MOV A,TEMPH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省启东市汇龙中学2025年高三下学期一模考试化学试题含解析
- 教育学原理人物
- 学校兴趣班培训
- 全麻病人术前准备
- 传染病突发公共卫生事件监测与应急处置课件
- 电工电子技术 课件 11.扩音机小信号放大器的制作(方案二)
- 健康皮肤科普与管理
- 2024-2025学年人教版化学九年级上册第五单元检测卷含答案
- 学前班寒假安全须知
- 心理健康教育:做开心的自己
- 一例脓毒性休克的护理查房
- 人教小学二年级数学下册数学广角-推理第1课时《简单的推理(一)》示范教学课件
- 2024年湖北省中考地理·生物试卷(含答案解析)
- 福建省泉州市泉港区2024年小升初考试数学试卷含解析
- 2024年安徽省高考生物试卷(真题+答案)
- 小学六年级数学奥数题100题附答案(完整版)
- 生物专业英语翻译和单词(专业版)
- NB-T+10131-2019水电工程水库区工程地质勘察规程
- 2024陕西中考数学二轮专题训练 题型四 尺规作图 (含答案)
- 2024年大数据应用及处理技术能力知识考试题库与答案
- 五矿集团准入承诺书
评论
0/150
提交评论