




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、江海职业技术学院 毕 业 设 计毕业设计题目: 基于单片机数字温度计的设计 学 生 学 号: 107010232 学 生 姓 名: 杨 亮 所在系 (部): 机电工程系 专 业 及班级: 机电1002 指 导 教 师: 张丽红 完 成 日 期: 基于单片机数字温度计的设计摘要:本文综述了数字温度计的设计与制作过程,介绍了设计制作一个完整的数字温度计需要做的准备与制作过程,通过一段时间的努力制作,从刚开始透彻理解题目要求及所要设计的产品的各项性能功能,然后觉得利用单片机作为控制内核,其次主要的就是温度传感器DS18B20,及其他重要部分电路的配合下设计出一套完整的硬件系统,及它的灵魂软件系统。得
2、到了一种基于单片机控制的数字温度计。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。 关键词:单片机,数字控制,温度计, DS18B20,AT89S51目录前言4第一章 系统方案设计51.1温度测量系统功能描述51.2系统设计性能指标51.3 DS18B20工作原理61.3.1性能特点61.3.2 外部结构61.3.3 内部结构71.3.4 DS18B20测温原理91.4 AT89C51简介101.
3、5 显示部分11第二章 系统硬件电路设计152.1 DS18B20温度传感器的连接152.2 单片机端口连接15第三章 系统软件设计173.1 主程序173.2 读出温度子程序183.3 温度转换命令子程序193.4 计算温度子程序203.5 显示数据刷新子程序20第四章 系统调试及仿真354.1 系统程序调试354.2 系统软硬件仿真35第五章 总 结39参考文献40 前言在一些温度测量系统电路中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应的信号调理电路,转换成AD转换器能接收的模拟量,再经过采样保持电路进行AD转换,最终送入单片机及其相应的外围电路,完成监控。但是由于传统的信号
4、调理电路实现复杂、易受干扰、不易控制且精度不高。本温度测量仪采用单片机结合DS18B20智能温度传感器控制系统设计,因此,本系统用一种新型的可编程温度传感器(DS18B20),不需复杂的信号调理电路和AD转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。第一章 系统方案设计1.1温度测量系统功能描述采用8051单片机和温度传感器DS18B20设计一种数字温度计,测温范围为-55到128,由按键设定温度报警上下限值TH和TL,采用点陈字符液晶模块作为数字温度计的显示部分,分两行显示,第一行显示工作状态,正常时显示“DS18B20 OK”,不正常时显示“DS1
5、8B20 ERROR”;第二行显示实测温度值和状态符号,“>H”表示实测温度值大于温度报警值TH,“<L”表示实测温度小于温度报警值TL,“!”表示实测温度位于设定的温度范围之内。当实测温度超过设定温度限制范围时,发出声光报警信号。1.2系统设计性能指标测温范围为-55-125,误差在+1以内。DS18B20最高分辨率可达0.0625,所以系统误差指标可以限制在+1以内。按照系统设计功能的要求,确定系统由3个模块组成:主控制器,测温电路和显示电路。温度测量仪总体电路结构框图如图1.1所示。图1. 1 温度测量仪电路结构框图本温度测量仪设计采用美国DALLAS半导体公司的智能型传感器
6、DS18B20作为检测元件,测温范围限制在-55125。DS18B20可以直接读出被测量温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。系统硬件电路由单片机AT89C51、字符液晶显示器LM016L和1k×8的排阻构成。单片机实现对LCD命令和显示数据的读写控制功能。1.3 DS18B20工作原理一、性能特点DS18B20温度传感器与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的 数字值读数方式。DS18B20的性能特点如下:a.独特的单线接口仅需要一个端口引脚进行通信;b.多个DS18B20可以
7、并联在唯一的三线上,实现多点组网功能;c.不需要外部器件d.可通过数据线供电,电压范围为3.05.5V;e.零待机功耗;f.温度以912位数字量读出;g.用户可定义的非易失性温度报警设置;h.报警搜索命令识别并标志超过程序限定温度的器件;i.负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作;二、外部结构DS18B20采用3脚PR-35封装或8脚SOIC封装。引脚排列及说明如图1.2与表1.1所示。图1.2 DS18B20引脚排列表1.1 详细引脚说明三、内部结构内部结构框图如图1.3所示。图1.3 DS18B20内部结构框图高速暂存RAM的结构为9字节的存储器,第5字节为配
8、置寄存器,其内容用于确定温度值的数字转换分辨率,该字节的定义如图1.4所示,其中,低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率,其定义方法见表1.2。表1.2 DS18B20分辨率的定义和规定R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750TMR1R011111图1.4 配置寄存器位定义四 DS18B20测温原理DS18B20测温原理图如图1.5所示图1.5 DS18B20测温原理图DS18B20是
9、这样测温的:用一个高温系数的振荡器确定一个门周期,内部计数器在 这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应与-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的值来实现的。因此,要想获得所需的分辨力,必须同时知
10、道在给定温度下计数器的值和每一度的计算值。DS18B20内部对此计算的结果可提供0.5的分辨力。温度以16bit带符号位扩展的二进制补码形式读出,DS18B20温度与表示值如表1.3所示。表1.3 DS18B20温度与表示值对应表温度测量仪系统控制器使用单片机AT89C51,用三位共阴LED数码管以动态扫描法实现温度显示。1.4 AT89C51简介AT89C51是1种低功耗、高性能的片内含有4KB闪烁可编程、可擦除只读存储器(Flash Programmable and Erasable Read Only Memory)的8位CMOS单片机,并且与MCS-51系列单片机引脚和指令系统完全兼容
11、。芯片上的FPEROM允许在线编程或采用通用的编程器对其重复编程,而且性能价格比高。所以本控制系统选用它作为我们的控制器。一、 AT89C51的性能及片内闪烁存储器1. AT89C51的主要性能包括:(1) 与MCS-51微控制器系列产品兼容。(2) 片内有4KB可在线重复编程的闪烁存储器(Flash Memory)。(3) 存储器可循环写入/擦除1万次。(4) 存储器数据保存时间为10年(5) 宽工作电压范围:Vcc可为+2.7V-+6V.(6) 全静态工作:可从0Hz16MHz.(7) 程序存储器具有3级加密保护。(8) 空闲状态维持低功耗和掉电状态保存存储器内容。2. 片内闪烁存储器(F
12、lash Memory)由于E2PROM具有在线改写,并在掉电后仍能保存数据的特点,可为我们的特殊应用提供便利。但是,擦除和写入对于要有数据高速吞吐的应用还显得时间过长,这是E2PROM的主要缺陷。表产1.4列出了几种典型E2PROM芯片的主要性能数据。表1.4 几种典型E2PROM芯片的主性能型号性能参数28162816A28172817A2864A取数时间/ms250200/250250200/250250擦/写电压/V2152155字节擦除时间/ms109-15101010写入时间/ms109-15101010由表1.4可见,所列各种芯片的字节擦除时间和写入时间基本上均为10ms,这样长
13、的时间对于许多实际应用是不能接受的。因此,将存储器集成到单片机芯片内,设法缩短此类存储器的擦除和写入时间是1个首要的问题。片内闪烁存储器(Flash Memory)的概念就是在这种背景下提出来的。目前,美国ATMEL公司生产的带有片内闪烁存储器的AT89C51/89C52/89C55单片机,由于价格便宜,且与MCS-51系列兼容,受到了我国广大工程技术人员的欢迎,使用该系列单片机,省去了外扩存储器的工作,只需了解片内闪烁存储器的特性以及如何对其编程即可。二、 片内闪烁存储器的编程AT89C51的I/O口P0、P1、P2和P3除具有与MCS-51相同的一些性能和用途外,在FPEROM编程时,P0
14、口还可接收代码字节,但在程序校验时要外加上拉负载电阻。在FPEROM编程和程序校验期间,P1口接收低地址字节,P2口接收高地址位和一些控制信号,P3口也接收FPEROM编程和校验用的控制信号。此时,ALE/引脚是编程脉冲输入()端。 对AT89C51片内的闪烁存储器编程,只需在市场上购买相应的编程器,按照编程器的说明进行操作。如想对写入的内容加密,只需按照编程器的菜单,选择加密功能选项即可。1.5 显示部分在电子系统设计中,一般都需要有显示器的存在。作为当前主流的显示器件,液晶显示器(LCD)的应用越来越广泛。从显示容量上划分,LCD可分为两种类型,一种是“AlphaNumericLCDs”,
15、只能显示字符和数字;另一种是“GraphicalLCDs”,既能显示字符和数字,还能显示图形。汉字显示需要后一种点阵图形式LCD。液晶显示器是由液晶显示屏及控制器两部分组成的,不同的液晶显示器所对应的控制器不尽相同,了解LCD控制器的控制功能是设计液晶显示的关键3一、液晶模块简介 LM016L的结构及功能 LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DD
16、RAM),字符发生器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
17、*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LM016L 液晶模块的引脚功能如下表所示: 引脚说明引脚说明引脚说明引脚说明1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中: 引脚 符号 功能说明 1 VSS 一般接地 2 VDD 接电源(+5V) 3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个1
18、0K的电位器调整对比度)。 4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 5 R/W R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 6 E E(或EN)端为使能(enable)端,下降沿使能。 7 DB0 底4位三态、 双向数据总线 0位(最低位) 8 DB1 底4位三态、 双向数据总线 1位 9 DB2 底4位三态、 双向数据总线 2位 10 DB3 底4位三态、 双向数据总线 3位 11 DB4 高4位三态、 双向数据总线 4位 12 DB5 高4位三态、 双向数据总线 5位 13 DB6 高4位三态、 双向数据总线 6位 1
19、4 DB7 高4位三态、 双向数据总线 7位(最高位)(也是busy flang) 15 BLA 背光电源正极 16 BLK 背光寄存器选择控制表 RS R/W 操作说明 0 0 写入指令寄存器(清除屏等) 0 1 都busy flag(DB7),以及读取位址计数器(DB0DB6)值 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数二、 LM016L的工作原理LM016L是16×2数码液晶显示器,每行可显示16个字符,共2行。LM016L的控制器为HD44780,与液晶屏集成在一起。HD44780有3个存储器,分别是字符存储器CGROM、显示数据存储器DDRAM和字
20、符产生器CGRAM。在LM016L的CGROM中,共有192个可供显示的字符和数字,其中5×7(宽×高)字符150个,5×10(宽×高)字符42个。LM016L分行显示时,只能显示5×7字体的字符,想要显示5×10字符,只能单行显示。如果要显示除CGROM中192个字符以外的其它字符,可以自定义最多8个特殊字符写入CGRAM中以供显示调用。DDRAM与液晶显示屏上的位置是映射关系,只要把CGROM或CGRAM中的字符成功写入对应的DDRAM地址,便可在LCD上显示出相应的字符。单行显示时,DDRAM的显示地址自左至右分别为80H87H
21、,C1HC7H;双行显示时,显示地址首行自左至右为80H8FH,第2行自左至右为C0HCFH。HD44780的控制端有3个,分别是RS、RW和E。RS=0时,配合读写控制端RW实现命令读写;RS=1时,配合读写控制端RW实现显示数据的读写。RW是LCD的读写控制端,RW=0为写有效;RW=1为读有效。E为LCD的使能信号,每次读写都需要产生一个宽450ns周期为1000ns的脉冲信号5,6。HD44780的写时序如图2所示。从图2中可以看出,每次读写数据时,先使RS和RW有效,然后E(图中为EN)脉冲信号有效,E脉冲信号应先为高电平后为低电平。最后通过D0D7送出命令或数据,也可以把送出命令或
22、数据放在第一步。HD44780的控制命令共有11条,主要用来控制光标的显示方式、单行或双行显示方式、4线或8线数据传输方式、存储器地址指针增减方等,可以根据不同的设计需求选用不同的命令形式4第二章 系统硬件电路设计2.1 DS18B20温度传感器的连接测温仪电路设计原理图如图2.12.3所示,控制器使用单片机AT89C51,温度传感器使用DS18B20,用字符液晶显示器LM016L和1k×8的排阻构成。DS18B20温度传感器提供9位(二进制)温度读数。信息经过单线接口送入DSB1820或从DS18B20送出,因此从单片机到DS18B20仅需一条线(和地线)。DS18B20的电源可以
23、由数据线本身提供而不需要外部电源。如图2.1所示。89C51对DS18B20的数字量输出读入,即读P2.5端口。如图2.1所示。图2.1 测温仪电路设计原理图(左)2.2 单片机端口连接P0口作数据口,与LM016L的D0D7相接,在P0口与D0D7数据线之间分别接8个上拉电阻,以确保电路能够正常显示。AT89C51的P2口作为LCD的控制线,P2.0P2.2分别接LM016L的RS、RW和E端;LM016L的其它3个控制端VDD和VSS、VEE分别接电源和地。系统硬件电路组成如图1所示89C51对读入的数据处理后先输出到P0端口,然后锁存器74LS373将P0口的输出字数据进行锁存。锁存命令
24、由89C51单片机发出,锁存地址为7FFFH。如图2.2所示。图2.2测温仪电路设计原理图 第三章 系统软件设计本控制系统软件设计基于软件工程5模块化思想,将它分割成若干子模块,每个模块完成不同的功能,采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解,模块化使得软件容易测试和调试,易于扩展,有利于提高软件的可靠性,减少系统开发的工作量。把一些具有独立功能的模块编成子程序,以便主程序调用,本控制系统模块子程序包括:键值读入子程序、显示子程序、T0中断控制子程序、外部中断0子程序。本系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等。3.
25、1 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1s进行一次。主程序流程图如图3.1所示。图3.1 主程序流程图3.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。读出温度子程序流程图如图3.2所示图3.2 读出温度子程序流程图3.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms.在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图3.3所示。图3.3 温度转换命令子程序流程图3.
26、4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。计算温度子程序的流程图如图3.4所示。图3.4 计算温度子程序的流程图3.5 显示数据刷新子程序显示刷新子程序主要是对显示缓冲区中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。显示数据刷新子程序流程图如图3.5所示。图3.5显示数据刷新子程序流程图3.6 程序清单TEMPHC EQU 29H ;正、负温度值标记 TEMPLC EQU 2AH TEMPFC EQU 2BH K1 EQU P1.4 ;查询按键 K2 EQU P1.5 ;设置/调整键 K3 EQU P1.6 ;调
27、整键 K4 EQU P1.7 ;确定键 BEEP EQU P3.7 ;蜂鸣器 RELAY EQU P1.3 ;指示灯 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 ;设定按键的增、减标志 DQ EQU P3.3 ;DS18B20数据信号 ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV SP,#60H MO
28、V A,#00H MOV R0,#20H ;将20H2FH 单元清零 MOV R1,#10HCLEAR: MOV R0,A INC R0 DJNZ R1,CLEAR LCALL SET_LCD LCALL RE_18B20 START: LCALL RST ;调用18B20复位子程序 JNB FLAG1,START1 ;DS1820不存在 LCALL MENU_OK;DS1820存在,调用显示正确信息子程序 MOVTEMP_TH,#055H;设置TH初值85度 MOVTEMP_TL,#019H;设置TL初值25度 LCALL RE_18B20A;调用暂存器操作子程序 LCALL WRITE_E
29、2 ;写入DS18B20 LCALL TEMP_BJ ;显示温度标记 JMP START2START1: LCALL MENU_ERROR;调用显示出错信息子程序 LCALL TEMP_BJ ;显示温度标记 SJMP $START2: LCALL RST;调用DS18B20复位子程序 JNB FLAG1,START1 ;DS18B20不存在 MOV A,#0CCH ;跳过ROM匹配命令 LCALL WRITE MOV A,#44H ;温度转换命令 LCALL WRITE LCALL RST MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#0BEH ;读温度命令
30、LCALL WRITE LCALL READ;调用DS18B20数据读取操作子程序 LCALL CONVTEMP;调用温度数据BCD 码处理子程序 LCALL DISPBCD;调用温度数据显示子程序 LCALL CONV;调用LCD显示处理子程序 LCALL TEMP_COMP;调用实测温度值与设定温度值比较子程序 LCALL PROC_KEY ;调用键扫描子程序 SJMP START2;循环;* 键扫描子程序 *PROC_KEY:JB K1,PROC_K1 LCALL BEEP_BL JNB K1,$ MOV DPTR,#M_ALAX1 MOV A,#1 LCALL LCD_PRINT LC
31、ALL LOOK_ALARM JB K3,$ LCALL BEEP_BL JMP PROC_K2PROC_K1: JB K2,PROC_END LCALL BEEP_BL JNB K2,$ MOV DPTR,#RST_A1 MOV A,#1 LCALL LCD_PRINT LCALL SET_ALARM LCALL RE_18B20 ;将设定的TH,TL值写入DS18B20 LCALL WRITE_E2PROC_K2: LCALL MENU_OK LCALL TEMP_BJPROC_END:RET;* 设定温度报警值 TH、TL *SET_ALARM:LCALL LOOK_ALARMAS0:
32、JB K1,AS00 LCALL BEEP_BL JNB K1,$ CPL 20H.1 ;UP/DOWN 标记AS00: JB 20H.1,ASZ01 ;20H.1=1,增加 JMP ASJ01 ;20H.1=0,减小ASZ01: JB K2,ASZ02 ;TH值调整(增加) LCALL BEEP_BL INC TEMP_TH MOV A,TEMP_TH CJNE A,#120,ASZ011 MOV TEMP_TH,#0ASZ011: LCALL LOOK_ALARM MOV R5,#10 LCALL DELAY JMP ASZ01ASZ02: JB K3,ASZ03 ;TL值调整(增加) L
33、CALL BEEP_BL INC TEMP_TL MOV A,TEMP_TL CJNE A,#99,ASZ021 MOV TEMP_TL,#00HASZ021: LCALL LOOK_ALARM MOV R5,#10 LCALL DELAY JMP ASZ02ASZ03: JB K4,AS0 ;确定调整 LCALL BEEP_BL JNB K4,$ RETASJ01: JB K2,ASJ02 ;TH值调整(减少) LCALL BEEP_BL DEC TEMP_TH MOV A,TEMP_TH CJNE A,#0FFH,ASJ011 JMP ASJ022ASJ011: LCALL LOOK_AL
34、ARM MOV R5,#10 LCALL DELAY JMP AS0ASJ02: JB K3,ASJ03 ;TL值调整(减少) LCALL BEEP_BL DEC TEMP_TL MOV A,TEMP_TL CJNE A,#0FFH,ASJ021 JMP ASJ022ASJ021: LCALL LOOK_ALARM ; MOV R5,#10 LCALL DELAY JMP AS0ASJ022: CPL 20H.1 JMP ASZ01ASJ03: JMP ASZ03 RETRST_A1: DB " SET ALERT CODE " ,0;*实测温度值与设定温度值比较子程序 *
35、TEMP_COMP:MOV A,TEMP_TH SUBB A,TEMP_ZH ;减数>被减数,则 JC CHULI1 ;借位标志位C=1,转 MOVA,TEMPFC CJNEA,#0BH,COMP SJMPCHULI2COMP: MOV A,TEMP_ZH SUBB A,TEMP_TL ;减数>被减数,则 JC CHULI2 ;借位标志位C=1,转 MOV DPTR,#BJ5 LCALL TEMP_BJ3 CLR RELAY ;点亮指示灯 RET CHULI1: MOV DPTR,#BJ3 LCALL TEMP_BJ3 SETB RELAY ;熄灭指示灯 LCALL BEEP_BL
36、;蜂鸣器响 RET CHULI2: MOV DPTR,#BJ4 LCALL TEMP_BJ3 SETB RELAY ;熄灭指示灯 LCALL BEEP_BL;蜂鸣器响 RET;-TEMP_BJ3: MOV A,#0CEH LCALL WCOM MOV R1,#0 MOV R0,#2BBJJ3: MOV A,R1 MOVC A,A+DPTR LCALL WDATA INC R1 DJNZ R0,BBJJ3 RETBJ3: DB ">H"BJ4: DB "<L"BJ5: DB " !" ;* 显示温度标记子程序 *TEMP_B
37、J: MOV A,#0CBH LCALL WCOM MOV DPTR,#BJ1 ;指针指到显示消息 MOV R1,#0 MOV R0,#2BBJJ1: MOV A,R1 MOVC A,A+DPTR LCALL WDATA INC R1 DJNZ R0,BBJJ1 RETBJ1: DB 00H,"C"* 显示正确信息子程序 *MENU_OK: MOV DPTR,#M_OK1 ;指针指到显示消息 MOV A,#1 ;显示在第一行 LCALL LCD_PRINT MOV DPTR,#M_OK2 ;指针指到显示消息 MOV A,#2 ;显示在第一行 LCALL LCD_PRINT
38、RETM_OK1: DB " DS18B20 OK ",0M_OK2: DB " TEMP: ",0;* 显示出错信息子程序 *MENU_ERROR:MOV DPTR,#M_ERROR1 ;指针指到显示消息 MOV A,#1 ;显示在第一行 LCALL LCD_PRINT MOV DPTR,#M_ERROR2 ;指针指到显示消息1 MOV A,#2 ;显示在第一行 LCALL LCD_PRINT RETM_ERROR1: DB " DS18B20 ERROR ",0M_ERROR2: DB " TEMP: - ",
39、0;*DS18B20复位子程序 *RST: SETB DQ NOP CLR DQ MOV R0,#6BH ;主机发出延时复位低脉冲 MOV R1,#04HTSR1: DJNZ R0,$ MOV R0,#6BH DJNZ R1,TSR1 SETB DQ ;拉高数据线 NOP NOP NOP MOV R0,#32HTSR2: JNB DQ,TSR3 ;等待DS18B20回应 DJNZ R0,TSR2 JMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置1标志位,表示DS1820存在 JMP TSR5TSR4: CLR FLAG1 ; 清0标志位,表示DS1820不存在 JMP TSR
40、7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$ ; 时序要求延时一段时间TSR7: SETB DQ RET;* DS18B20暂存器操作子程序 *RE_18B20:JB FLAG1,RE_18B20A RETRE_18B20A:LCALL RST MOV A,#0CCH ;跳过ROM匹配 LCALL WRITEWR_SCRAPD: MOV A,#4EH ;写暂器 LCALL WRITE MOV A,TEMP_TH ;TH(报警上限) LCALL WRITE MOV A,TEMP_TL ;TL(报警下限) LCALL WRITE MOV A,#7FH ;12位精度 LCAL
41、L WRITE RET;* 复制暂存器子程序 *WRITE_E2:LCALL RST MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#48H ;把暂存器里的温度报警值拷贝到EEROM LCALL WRITE RET;* 重读EEROM子程序 *READ_E2:LCALL RST MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#0B8H ;把EEROM里的温度报警值拷贝回暂存器 LCALL WRITE RET;* 将自定义字符写入LCD的CGRAM中 *STORE_DATA: MOV A,#40H LCALL WCOM MOV R2,#08H MOV DPTR,#D_DATA MOV R3,#00HS_DATA: MOV A,R3 MOVC A,A+DPTR LCALL WDATA ;写入数据 INC R3 DJNZ R2,S_DATA RETD_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00H;* DS18
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理健康课件及教案
- 二零二五版高端母婴护理月嫂专业服务协议书
- 2025年度建筑工程施工进度保证金合同模板文件
- 二零二五年度大数据中心建设及运维服务合同
- 2025年度房产销售代理与房地产广告投放合同
- 2025年旅游景点景区场地租赁与旅游服务合同
- 2025年度北京车辆租赁合同(含押金)
- 2025版新能源发电项目股权转让协议书模板
- 2025年度企业特定岗位储备人员代理招聘服务合同
- 2025年版工程升级分包合同-总公司与分公司技术创新与应用
- 车位销售培训课件
- 2025发展对象考试测试题库及参考答案
- 2025至2030煤矿钻探机械行业发展趋势分析与未来投资战略咨询研究报告
- 2024-2030年中国休闲素食行业市场深度分析及发展潜力预测报告
- 电商仓储与物流配送合作协议
- 朝花夕拾考试题及答案
- DBJ04-T306-2025 建筑基坑工程技术标准
- MOOC 宇宙探索与发现-大连大学 中国大学慕课答案
- 幼儿园绘本:《你看起来好像很好吃》 PPT课件
- OxfordPhonics1牛津自然拼读1级单词闪卡教学卡片
- 系统性红斑狼疮-第九版内科学
评论
0/150
提交评论