DS18B20测温系统课程设计任务书.doc

上传人:scccc 文档编号:12395783 上传时间:2021-12-03 格式:DOC 页数:37 大小:5.09MB
返回 下载 相关 举报
DS18B20测温系统课程设计任务书.doc_第1页
第1页 / 共37页
DS18B20测温系统课程设计任务书.doc_第2页
第2页 / 共37页
DS18B20测温系统课程设计任务书.doc_第3页
第3页 / 共37页
DS18B20测温系统课程设计任务书.doc_第4页
第4页 / 共37页
DS18B20测温系统课程设计任务书.doc_第5页
第5页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《DS18B20测温系统课程设计任务书.doc》由会员分享,可在线阅读,更多相关《DS18B20测温系统课程设计任务书.doc(37页珍藏版)》请在三一文库上搜索。

1、沈航北方科技学院课程设计说明书课程名称 Protel软件及单片机技术综合训练 教 学 部 工学一部 专 业 自动化 班 级 学 号 学生姓名 指导教师 2010年 1 月沈航北方科技学院课程设计任务书教 学 部 工学一部 专业 自动化 课程设计题目 DS18B20测温系统 班级 学号 姓名 课程设计时间: 2009 年 10月 19 日至 2009 年11月 6日课程设计的内容及要求: (一)主要内容设计基于单片机的DS18B20测温系统。 (二)基本要求1、编程读取DS18B20数据;2、精度达0.1度,温度范围099度;3、LED显示;4、学习1Wire 总线协议方式。 (三)主要参考书1

2、 马淑华.单片机原理与接口技术.北京邮电大学出版社,2007,82 张义和.例说51单片机. 人民邮电出版社,2008,43 黎小桃.Protel 99 se入门与提高.电子工业出版社,2009,74 赵建领. Protel 99 SE设计宝典. 电子工业出版社,2009,6(四)评语 (五)成绩指导教师 2010 年 1 月 16 日负责教师 年 月 日32 / 37文档可自由编辑打印摘 要温度是表示物体冷热程度的物理量,是一种最基本的环境参数,它与我们的日常生活及工农业生产都细细相关。温度的测量已成为我们生产和生活中的需要,随着时代的进步和社会的发展,基于单片机控制的数字式温度计的应用越来

3、越广泛,已经深入到生产和生活中的各个领域。本设计介绍一种基于单片机控制的数字式温度计,采用单总线温度传感器测温和LED数码管显示,不仅测温准确,测量范围广,而且读数方便。关键词:单片机AT89S52;温度传感器DS18B20;LED数码管目 录1、绪论12、总体方案设计分析12.1、设计要求12.2、总体设计框图13、硬件电路设计23.1、硬件基本知识介绍23.1.1、单片机23.1.2、数字温度传感器DS18B2043.1.3、4位七段LED数码管73.2、DS18B20温度传感器与单片机接口电路103.3、7段LED数码管与单片机接口电路104、软件设计114.1、Keil Vision3

4、114.2、DS18B20测温系统的程序设计134.2.1、程序流程图134.2.2、部分模块化程序及功能说明165、综合调试20总结及课设体会22参考文献23附录 DS18B20测温系统硬件原理图24附录 DS18B20测温系统模拟硬件电路图25附录 DS18B20测温系统程序26附录 DS18B20测温系统元器件清单311、绪论随着微电子技术和计算机技术的发展,单片机微控处理器也有了突飞猛进的发展。单片机微控处理无疑是人们的首选,它的优点也是不可否定的,如比体积小、耗电少、控制简单、可靠性好、成本低等优点。其中基于8051单片机的数字温度计就是一个典型的例子。人们对温度测量的要求越来越高,

5、要为现代人工作、生活提供更好的、更方便的设施就需要从数单片机技术入手,向着数字化、智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确和输出温度采用数码管显示等优点。主要应用于家庭、生产车间和其它对温度测量要求比较准确的场所。本设计使用控制器单片机AT89S52,使用测温传感器DS18B20,四位共阳极LED数码管显示实时温度,准确度达到0.1摄氏度。2、总体方案设计分析2.1、设计要求本设计要求设计一个DS18B20测温系统。要求如下:1、 编程读取DS18B20数据;2、 精度达0.1度,温度范围0-99度;3、 LED显示;4、 学习1Wir

6、e 总线协议方式。2.2、总体设计框图根据设计要求,设计总体的设计框图如图2.1所示。控制器采用PDIP封装形式AT89S52,温度传感器为美国DALLAS公司生产的DS18B20,四位共阳LED数码管显示,外部5V电源供电。图2.1 总体设计框图3、硬件电路设计3.1、硬件基本知识介绍3.1.1、单片机单片机是单片微型计算机(Single Chip Microcomputer)的简称,是将CPU、存储器、总线、I/O接口电路集成在一片超大规模集成电路芯片上,是典型的嵌入式微控制器。单片机具有体积小、功能全、可靠性好、价格低廉的突出优点,因此单片机问世后便广泛应用于工业控制、仪器仪表、交通运输

7、、通信设备、办公设备、家用电器等众多领域,使得许多领域的自动化水平和自动化程度得以大幅度提高,成为现代电子系统中最重要的智能化器件之一。AT89S52是ATMEL公司生产的51系列单片机,是一种低功耗、高性能CMOS 8位微控制器,具有8K系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash不仅允许程序存储器在常规编程器上编程,还适用于在线编程下载,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 1、 8k字节Flash;2、 256字节RAM;3、 32 位

8、I/O 口线;4、 看门狗定时器;5、 2 个数据指针;6、 三个16位定时器/计数器;7、 一个6向量2级中断结构;8、 全双工串行口;9、 片内晶振及时钟电路。另外,AT89S52 的工作频率可降至0Hz静态逻辑操作,支持两种软件可选择节电模式:空闲模式和掉电保护模式。在空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作;在掉电保护方式下,RAM内容被保存,振荡器停止振荡,单片机一切工作停止,直到下一个中断或硬件复位为止。采用PDIP封装形式的AT89S52引脚图定义如图3.1所示。图3.1 AT89S52引脚定义3.1.2、数字温度传感器DS18B201、 DS1

9、8B20数字温度传感器介绍 DS18B20数字温度传感器该是美国DALLAS公司生产的单总线器件,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。因此用DS18B20数字温度传感组成的测温系统,具有线路简单、测量精度高、硬件系统体积小等优点。它使用一根总线通信,可以挂很多同样的数字温度计,实现多点温度测量,使测量误差大大减小,此外温度传感器可使用总线提供的电压来工作,可以在无法供给传感器电源的情况下使用,十分方便。2、 DS18B20数字温度传感器的特点(1) 只要求一个端口即可实现通信,工作电源: 35V/DC;(2) 在DS18B20中的每个器件上都

10、有独一无二的序列号;(3) 实际应用中不需要外部任何元器件即可实现测温;(4) 测温范围 55125,固有测温分辨率0.5;(5) 数字温度计的分辨率用户可以从9位到12位选择;(6) 内部有温度上、下限告警设置。3、 DS18B20的引脚介绍DS18B20有To-92和8-Pin SOIC两种封装形式,本设计选用的是To-92封装形式的。TO-92封装的DS18B20的引脚排列如图3.2所示,其引脚功能描述见表3.3。表3.3 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选

11、择的VDD引脚。当工作于寄生电源时,此引脚必须接地。图3.2 TO-92封装的DS18B20的引脚排列4、 DS18B20温度传感器的部分温度对应值如表3.4所示。表3.4部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 00

12、00FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H5、 DS18B20的1-Wire总线协议方式(1) 1-wire 单总线是Maxim 全资子公司Dallas 的一项专有技术,与目前多数标准串行数据通信方式如SPI、I2C、MICROWIRE不同,它采用单根信号线既传输时钟又传输数据,而且数据传输是双向的。它具有节省I/O 口线资源,结构简单,成本低廉,便于总线扩展和维护等诸多优点。(2) 1-wire 单总线适用于单个主机控制一个或多个从机设备的系

13、统。当只有一个从机位于总线上时,主机可按照单节点系统操作;而当多个从机位于总线上时,系统按照多节点系统操作。(3) 由于DS18B20采用的就是这种1Wire总线协议方式,即在一根数据线上实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的操作。(4) 由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的通信协议时序要求,来保证各位数据传输的正确性和完整性。该协议定义了几种操作的时序:初始化时序、写时序、读时序。所有时序操作都是将单片机作为主机设备,单总线器件作为从机设

14、备,而每一次命令和数据的传输都是从单片机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,单片机需启动读时序完成数据接收。数据和命令的传输都是低位在先。6、 DS18B20的工作时序(1) DS18B20的初始化时序初始化时序如图3.3所示。主机总线在t0时刻发送一低电平复位脉冲信号(最短为480us),接着在tl时刻释放总线并进入接收状态,DSl820在检测到总线的上升沿之后等待560us,接着DS1820在t2时刻发出一低电平存在脉冲(持续60240 us), 低电平存在脉冲如图中虚线所示。图3.3 DS18B20的复位时序图(2) DS18B20的写时序主机总线在t0时刻从

15、高拉至低电平时就产生写时间隙,从t0时刻开始15us之内,主机应将需要写入的数据位送到总线上,DSl820在t1后1560us期间对总线进行采样。若总线为低电平,则写入的位是0;若总线为高电平,则写入的位是1。若要求连续写入两位以上数据,那么两位数据之间的时间隙应大于1us,以保证数据的准确性。DS18B20的写时序图如图3.4所示。图3.4 DS18B20的写时序图(3) DS18B20的读时序主机总线在t0时刻从高电平拉至低电平时,总线只须保持低电平7us之后在t1时刻将总线拉高,此时产生读时间隙。读时间隙在t1时刻后,t2时刻前有效,t2距t0为15us,也就是说在t2时刻前主机必须完成

16、读位操作,并在t0后的60us120us内释放总线。DS18B20的读时序图如图3.5所示。图3.5 DS18B20的读时序图3.1.3、4位七段LED数码管LED数码管是一种半导体发光器件,其基本单元是发光二极管。7段LED数码管就是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,它可以显示“09”十个数字、小数点和一些简单的英文字母。由于LED数码管具有颜色丰富、亮度高、功耗低、回应速度快等优点,因此,LED数码管广泛应用于各类仪器、仪表、家用电器等的数位显示电路。 现在市场上有很多种类的LED数码管,其中按显示数位上分可分为1位、2位、4位等数码管;按发光二极管单元

17、连接方式可分为共阳极数码管和共阴极数码管。市售七段1位和4位LED数码管实物如图3.6所示。图3.6 市售1位和4位LED数码管实物图共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,其单元连接方式如图3.7(1)所示。共阳数码管在使用时应将COM接到正电源上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,其单元连接方式如图3.7(2)所示。共阴数码管在应用时应将COM接到地(GND)上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。图3.7 LED数码管内单元连接方式数码管要

18、正常工作显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们所需要的字符,因此根据数码管的驱动方式的不同,又可分为静态显示式和动态显示式两类。(1) 静态显示驱动静态显示驱动也称直流显示驱动。静态显示驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用译码器译码进行驱动。它优点是编程简单、显示亮度高;缺点是占用I/O端口多。实际应用时须使用译码器进行驱动,这就增加了硬件电路的复杂性。(2) 动态显示驱动动态显示驱动是单片机中应用最为广泛的一种显示方式之一。动态显示驱动是将所有数码管的8个显示笔划“a、b、c、d、e、f、g、dp”的同名端连在一起,另外将每个数码管的

19、公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制完成。当单片机输出字符码时,所有数码管都接收到相同的字符码,单片机通过对位选通电路的控制,就可以使被选通的位显示出字符。通过分时轮流控制各个数码管的选通,就可以使各个数码管轮流受控显示不同的字符,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,只要扫描的频率足够快,不会有闪烁感产生,但扫描频率过快也会使数码管显示亮度降低。动态显示驱动能够节省大量的I/O端口,而且功耗更低。动态显示驱动原理图如图3.8所示。图3.87段LED动态显示驱动原理图3.

20、2、DS18B20温度传感器与单片机接口电路DS18B20使用单总线协议工作,它与单片机的连接电路如图3.9所示。图3.9 DS18B20温度传感器与单片机接口电路3.3、7段LED数码管与单片机接口电路由于单片机I/O端口带负载能力的限制,在I/O端口与7段LED数码管之间加入一级驱动电路,以保证单片机有足够的功率驱动数码管正常工作。本设计采用动态显示方式驱动数码管,所使用的驱动芯片为8D锁存器74LS573,由三极管2AS1015组成了数码管的位选通电路,7段LED数码管与单片机接口电路图如图3.10所示。图3.10 7段LED数码管与单片机接口电路注:完整的系统硬件电路原理图及模拟硬件电

21、路图如附录所示。4、软件设计4.1、Keil Vision3单片机开发中除必要的硬件外,同样离不开开发软件,来完成系统程序的编写、编译、调试。本设计所使用的开发软件是Keil Vision3,Keil软件是目前最流行开发MCS-51系列单片机的软件之一,软件开发界面如图4.1所示。图4.1 Keil Vision3。软件开发界面我们使用汇编语言编写的源程序要编译为单片机可执行的机器码,生成“.HEX”或“.BIN”文件,再烧写入单片机的程序存储器中才能运行。编译机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了,大都使用机器汇编。机器汇编是通过汇编软件将源程序变

22、为机器码, MCS-51单片机早期使用汇编软件A51进行汇编,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行的开发MCS-51系列单片机的软件,这一点从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。Keil C51是51系列兼容单片机C语言软件开发系统,它提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后

23、生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势。uVision的主要构成如图4.1所示,大致描述了uVision所提供的工作环境和用户的基本操作流程。图4.2 uVision所提供的工作环境和用户的基本操作流程。4.2、DS18B20测温系统的程序设计4.2.1、程序流程图1、主程序流程图如图4.2所示。图4.2 主程序流程图2、初始化DS18B20子程序流程图如图4.3所示。图4.3 初始化DS18B20子程序流程图3、读取温度值子程序如图4.4所示。图4.4 读取温度值子程序流程图4、温度

24、读取转换子程序如图4.5所示。图4.5 温度读取转换子程序流程图5、温度显示子程序如图4.6所示。图4.6 温度显示子程序流程图4.2.2、部分模块化程序及功能说明1、初始化单片机RAM子程序INIT:MOV R0,#7FH CLR A II: MOV R0,A DJNZ R0,II MOV SP,#07H LJMP START 以上为初始化单片机的RAM程序,它的作用是在单片机上电复位时,将RAM单元内的杂乱数据清零,比如清除显示缓存区,温度数据缓存区等,保证程序更稳定地运行。2、初始化DS18B20子程序INIT_18B20:SETB PORT NOP NOP CLR PORT MOV R

25、0,#0FAH DJNZ R0,$ SETB PORT MOV R0,#19H INI2: JNB PORT,INI3 DJNZ R0,INI2 CLR FLAG LJMP INI4 INI3: SETB FLAG MOV R0,#64H DJNZ R0,$ INI4: SETB PORT RET 初始化DS18B20子程序按照初始化时序要求编写,初始化过程如下:首先拉低总线发送长度为500us复位脉冲(最短为480us的低电平信号),接着释放总线并进入接收状态,DSl8B20在检测到总线的上升沿之后等待1560us发出存在脉冲(低电平持续60240 us)。若单片机检测到存在脉冲,则子程序返

26、回,否则继续等待。3、读取温度子程序GET_TEMP: LCALL INIT_18B20 MOV A,#0CCHLCALL WRITE_18B20MOV A,#44HLCALL WRITE_18B20LCALL DISPLCALL INIT_18B20MOVA,#0CCH LCALLWRITE_18B20MOVA,#0BEH LCALL WRITE_18B20LCALL READ2_18B20RET首先判断总线上是否有传感器存在,若没有则子程序返回,若有则依次写入跳过ROM指令、温度转换指令和温度读取指令将温度数据读取到指定的缓存区中。其中跳过ROM指令作用是可以快速地对传感器中的ROM进行操

27、作,快速地读取到温度数据,提高了温度测量速度;温度转换指令的写入和温度数据的读出部分是分别通过调用WRITE_18B20(读)、READ2_18B20(写)子程序来完成,它们实际上是一段按位发送,按位读取的子程序,它的发送和读取是按照DS18B20读、写的时序要求编写,具体程序详见附录。4、温度读取转换子程序CHANGE: MOV A,#0CHMOV 30H,AMOVDPTR,#DOTMOVA,21HANLA,#0FHMOVCA,A+DPTRMOVB,#10DIVABMOV31H,AMOVA,20HSWAPAANLA,#0F0HMOV20H,AMOVA,21H SWAPAANLA,#0FHAD

28、DA,20H MOVB,#10DIVABMOV32H,BMOV33H,ARET温度数据转换子程序作用是将读取来的温度数据转换为按十位、个位和小数位分开的三个字节的十进制数据,其转换过程如下:先处理小数位,将它转换成十进制代码后存入显示缓存区的31H单元,接着将十位和个位数据取出转换为十进制代码后存入33H和32H,最后再将摄氏度符号“C”的地址偏移量存入30H,为后面温度显示作准备。5、显示子程序DISP: MOV R0,#30HMOV R1,#7FHST1: MOV A,R0MOV DPTR,#TABMOVC A,A+DPTRCJNE R0,#32H,NODOTANL A,#7FHNODOT

29、:MOV P0,AMOV A,R1MOV P2,AMOVR7,#0FFHDJNZR7,$INC R0MOV A,R1JNB ACC.4,ST2MOV P2,#0FFHRR AMOV R1,ALJMP ST1ST2: MOV P2,#0FFHRET显示程序主要由LED段代码转换、数码管扫描部分和小数点叠加部分组成,LED段代码转换部分采用查表的方式将十进制温度数据转换为LED段代码。扫描数码管部分程序始终按照显示缓存区的首地址逐个将十进制温度数据转换为对应的LED段代码,送往对应显示位的数码管进行显示。小数点叠加部分程序将小数点显示到个位数码管上。注:为了使DS18B20测温系统能在更低和更高的

30、温度下也能正常测量,本设计对原设计要求进行了程序升级,现在的系统测量温度范围为:-55+125,测量精度为0.1,完整程序详见附录。5、综合调试1、对照硬件原理图,搭接硬件系统。硬件实物图如图5.1、图5.2所示。2、焊接完成后,在插单片机前进行了通电测试,各测试位置的电压及电流均在正常的偏差范围内。3、将程序烧写进单片机内,插到芯片座上,通电观察,系统并未按照预想的结果那样直接读出环境温度,经检测各个I/O端口电平状态发现LED数码管在准备焊接元件时拿错了,设计图纸是按照共阳的设计的,而焊接时误用了共阴的。将共阴数码管拆下改换成共阳数码管后,再次进行各项检测通过后,插上单片机,系统工作正常。

31、图5.1 硬件实物图正面图5.2 硬件实物图背面4、将系统显示的温度值与所处相同环境下标准液体温度计温度值进行比较,所测温度基本相同。由上述调试现象可知,系统达到设计要求。总结及课设体会为期5周的单片机综合训练结束了,本次综合实训完成了基于单片机控制的DS18B20测温系统的设计制作,从原理图的绘制、元器件的选择到最后的焊接,都是我们自己独立完成的。可以说系统很简单但这其中却涵概了许多内容,这就需要熟悉和掌握很多相关知识,同时还要将所设计的系统通过硬件电路真正的实现。于是图书馆和网络就成了我很好的助手。在查阅资料的过程中,我学会了判断优劣、取舍相关知识方法,不知不觉中我的查阅资料能力也得到了很

32、好的提高。我们学习的知识是有限的,在以后的工作中我们肯定会触及到许多未知的领域的知识,这方面的能力便会使我得到很大帮助。让人欣慰的是我们自己设计并焊接的DS18B20测温系统在经过简单的调试之后就能正常的工作了,不仅能完成预想的功能,而且只需经过对原有程序的升级就可以测量更宽的温度范围。更适合实际应用。在此还要感谢辛勤带领我们的指导老师,谢谢老师们的耐心指导。参考文献1 马淑华.单片机原理与接口技术.北京邮电大学出版社,2007,82 张义和.例说51单片机. 人民邮电出版社,2008,43 李朝青.单片机原理及接口技术.北京航空航天大学出版社,2005,104 王守中. 51单片机开发入门与

33、典型实例. 人民邮电出版社,2009,105 黎小桃.Protel 99 se入门与提高.电子工业出版社,2009,76 赵建领. Protel 99 SE设计宝典. 电子工业出版社,2009,67 陈强主. Protel电路设计入门与实例. 中国电力出版社,2009,4附录 DS18B20测温系统硬件原理图附录 DS18B20测温系统模拟硬件电路图附录 DS18B20测温系统程序FLAG BIT 22H;定义存在标志位HUNFBIT23H ;定义百位标志位PORT BIT P3.5;定义传感器总线接入端口;*程序起始*ORG0000HLJMPINIT;调用初始化RAM子程序ORG0050H;

34、*主程序*START: LCALL INIT_18B20 ;调用初始化DS18B20子程序 LCALLGET_TEMP;调用读取温度子程序LCALL CHANGE;调用温度数据转换子程序LCALLDISP;调用显示子程序LJMPSTART ;*DS18B20初始化程序*INIT_18B20:SETB PORT NOP CLR PORT ;将总线拉低,复位DS18B20 MOV R0,#0FAH DJNZ R0,$ SETB PORT ;延时500us,释放总线等待DS18B20发出应答停信号MOV R0,#19H INI2: JNB PORT,INI3 DJNZ R0,INI2 ;检测DS18

35、B20应答信号,无应答继续检测 CLR FLAG ;未检测到应答信号,准备返回 LJMP INI4 INI3: SETB FLAG MOV R0,#64H ;检测到应答信号,将存在标志位置位,延时一小段时 DJNZ R0,$ 间,准备返回INI4: SETB PORT ;释放总线,子程序返回 RET ;*读转换后的温度值*GET_TEMP: LCALL INIT_18B20 ;调用初始化DS18B20子程序 JB FLAG,GOON ;判断传感器是否存在,若不存在,子程序返回RET GOON: MOV A,#0CCH LCALL WRITE_18B20;向DS18B20中写入跳过ROM命令MO

36、V A,#44H LCALL WRITE_18B20;向DS18B20中写入温度转换命令LCALL DISP LCALL INIT_18B20;调用初始化DS18B20子程序MOVA,#0CCH LCALLWRITE_18B20;向DS18B20中写入跳过ROM命令MOVA,#0BEH LCALL WRITE_18B20;向DS18B20中写入读温度命令LCALL READ_18B20 ;调用读程序,读出两个字节的温度RET ;*写DS18B20程序*WRITE_18B20:MOVR2,#8CLR CWRT:CLR PORTMOVR3,#7DJNZR3,$RRCAMOVPORT,CMOV R3

37、,#25DJNZR3,$SETBPORTNOPDJNZR2,WRTSETB PORT;利用DS18B20的写时隙,将累加器中的数据按位写入DS18B20中RET;*读DS18B20程序*READ_18B20:MOV R4, #2 MOV R1, #21HREA0:MOV R2, #8REA1: CLR CCLR PORTNOPNOPNOPNOPSETB PORTMOV R3,#7DJNZ R3,$MOV C,PORTMOV R3,#25DJNZ R3,$RRC ADJNZ R2,REA1MOV R1,ADEC R1DJNZ R4,REA0;利用DS18B20读时隙,将DS18B20中的数据按位读到累加器中,再将读取的高位、低位分别存入20H、21H中RET ;*读出的温度进行数据转换*CHANGE: CLR C CLR F0 MOV A,20H ;判断读取温度数据的正负 ANL A,#0F0H SWAP A JZ POIT ;若为正,转入正温度处理,否则进入负温度处理NEVG: SETB F0 MOV A,21H CPL A INC A MOV 21H,A MOV A,20H CPL A ANL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1