毕业设计(论文)-单片机数字温度计的设计.doc

上传人:爱问知识人 文档编号:3953577 上传时间:2019-10-11 格式:DOC 页数:26 大小:329.50KB
返回 下载 相关 举报
毕业设计(论文)-单片机数字温度计的设计.doc_第1页
第1页 / 共26页
毕业设计(论文)-单片机数字温度计的设计.doc_第2页
第2页 / 共26页
毕业设计(论文)-单片机数字温度计的设计.doc_第3页
第3页 / 共26页
毕业设计(论文)-单片机数字温度计的设计.doc_第4页
第4页 / 共26页
毕业设计(论文)-单片机数字温度计的设计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《毕业设计(论文)-单片机数字温度计的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-单片机数字温度计的设计.doc(26页珍藏版)》请在三一文库上搜索。

1、目 录摘要 I第一章 绪论. .1 1.1概述 . 1第二章 单片机的应用与发展1 2.1 单片机概述 . 1第三章 温度计所用芯片的简介. .2 3.1芯片的选择与简介.2 3.1.1 AT89C52芯片简介2 3.1.2 DS18B20简介.43.2 其他器件7第四章 系统设计方案论证与选择7 4.1数字温度计设计方案论证.7 411方案一74.1.2方案二7第五章 系统的实现与设计75.1系统硬件设计.75.1.1 系统总框图.75.1.2 温度计控制线路85.1.3系统工作原理.8 5.2系统整体硬件电路8 5.2.1主板电路.9 5.2.2 显示电路 .9第六章 系统软件设计. 9

2、6.1系统软件算法分析.9 6.1.1主程序. . .9 6.1.2 读出温度子程序. . .10 6.1.3 写温度子程序.。. . .10 6.1.4温度转换命令子程序.10 6.1.5计算温度子程序. 10 616显示数据刷新子程序. 11第七章 单片机系统开发. 11 7.1单片机开发系统简介11 7.2开发简介.11 7.2.1 开发平台. .11 7.2.2 开发步骤 . .11 7.3系统编程信息. 12 7.3.1 系统内存分配和I/0接口使用.12 7.3.2 实验程序原代码. .12第八章 毕业设计总结. . 20 8.1 结论. .20 8.2 致谢. .20参考文献.2

3、1单片机数字温度计的设计摘 要温度计应用广泛,在工农业生产和科学研究中经常要用到数字式温度计进行温度的检测与控制。近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异地更新。同时,随着传感器技术的发展,使得单片机检测系统功能、性能、精度、成本等都有了很好地提高。本系统就是采用单片机AT98C52芯片和DS18B20数字温度传感器,驱动电路, LED数码管等多部件组合而成的一个数字式温度计.它主要使用DS18B20数字温度传感器作为原始测温器件,把采集到的数据传送到单片机P0口读取,经单片机采集、处理及译码后通过三极管驱动,推动数码管显示温度值。关键词:单片机,

4、DS18B20传感器,温度计,AT89C52第一章 绪论 1.1 概述随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字式温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,用4位共阳极LED数码管以P口传送数

5、据,实现温度显示,能准确达到以上要求。第二章 单片机的应用与发展 2.1 单片机概述 单片机实际是微型计算机的一个重要分支,也是颇具生命力的机种。自从它问世以来,人们对它不断地改进,以应用于现代化社会的各个方面,特别适用于控制领域,故又称为微控制器。又因为单片机的体积小,价格低廉,开发较为容易,可根据需要制作成各种智能控制器以代替人工操作,实现自动化。单片机已广泛应用在智能仪器仪表,工业设备过程,家用电器中。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机

6、经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压底功耗。第三章 温度计所用芯片的简介3.1 芯片的选择与简介 3.1.1 AT89C52单片机简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。A

7、T89C52单片机包含中央处理器、数据存储器(RAM)、定时/计数器、并行接口,串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM)AT89C52有256字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的.FLASH存储器AT89C5

8、2单片机内部有8K字节的FLASH PEROM,这个FLASH存储陈列出厂时已处于擦除状态(即所有存储单元的内容均为FFH),用户随时可对其进行编程.特殊功能寄存器:AT89c52片内存存储器中,80H-FFH共有128个单元为特殊功能寄存器.这个地址中也并不是所有都被定义,从80H-FFH共128个字节只有一部分被定义,还有相当一部分没有定义,对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失.定时/计数器(ROM):AT89C52有三个16位的定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(I/O)口:8051共有4组8位I/O口(P0、 P1、

9、P2或P3),用于对外部数据的传输。全双工串行口:AT89C52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:AT89C52有6个中断源,2个中断优先级,IE寄存器控制中断位,IP寄存器中6个中断源的每一个可定义为2个优先级.时钟振荡电路: AT89C52中有一个用物构成内部振荡器的高增益反相放大器,引脚XTAL1T和XTAL2分别是该放在器的输入端和输出端.这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器.电路如下图所示:下图是AT89C52单片机的内部结构示意图。图2 AT89C52单片机的

10、内部结构示意图AT89C52的引脚说明:AT89C52单片机与8031、8051及8751单片机一样,均采用40Pin封装的双列直接DIP结构,下图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个可编程I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如图3 图3Pin9: RESET/Vpd复位信号复用脚,当芯片通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高

11、电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,AT89C52的初始态。AT89C52的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。图4Pin30:ALE/ PGOG 当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会

12、跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。Pin29: 程序储存允许输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据时)每个机器周期两次有效,即输出两个脉冲.在此期间,当访问外部数据存储器,将跳过两次信号.Pin31:EA/Vpp程序存储器的内外部选通线,欲使CPU访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地).需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态.如EA端为高电平时,CPU则执行内部程序存储器中的指令.当FLASH存储器编程时,A/Vpp脚还需加上21V的编程电压。 3.1

13、.2 DS18B20简介DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B

14、20采用脚PR35封装或脚SOIC封装,其内部结构框图如图2所示。C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd图2 DS18B20内部结构64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷

15、新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图3 DS18B20字节定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未

16、用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表1 DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间/ms00993.

17、750110187.510113751112750在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首

18、先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表2一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+

19、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 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时

20、序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。3.2 其他器件共阳极的七段数码管。如图5 图5通过控制9012晶体管的导通与截止来控制数码管的电位的高低,从而控制数码管的亮暗。第四章 系统设计方案论证与选择4.1数字温度计设计方案论证 4.1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度值显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。4.1.2

21、 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。第五章 系统的实现与设计5.1系统硬件设计 选用设备:AT89C52单片机一片,DS18B20数字式温度传感器一个,四位共阳极的七段数码管,9012晶体管4个,1K电阻和连线若干。主 控 制 器LED显 示温 度 传 感 器单复位片机时钟振荡 5.1.1系统总框图如下: 图65.1.2 温度计控制线

22、路图 5.1.3系统工作原理基于DS18B20的温度测量装置图如图7所示:温度传感器DS18B20将被测环境温度转化成带符号的数字信号(以十六位补码形式,占两个字节),传感器可置于离装置150米以内的任何地方,输出脚I/O直接与单片机的P3.4相连,R1为上拉电阻,传感器采用外部电源供电。AT89C52是整个装置的控制核心,AT89C52内带8K字节的Flash ROM,用户程序存放在这里。显示器模块由四位一体的共阳极数码管和4个9012组成。系统程序分传感器控制程序和显示器程序两部分,传感器控制程序是按照DS18B20的通信协议编制。系统的工作是在程序控制下,完成对传感器的读写和对温度的显示

23、。.2系统整体硬件电路 5.1 主板电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主板电路等,如图7所示。5.2 显示电路显示电路是四位一体的八段显示管,通过P1口输出,,在P3口采用晶体管9012驱动四位数码管,实现动态显示。第六章 系统软件设计6.1 系统软件算法分析系统程序主要包括主程序,读出温度子程序,写温度子程序,温度换命令子程序,计算温度子程序,显示数据刷新子程序等。 6.1.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图8所示Y发DS18B20

24、复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验12字节完?CRC校验正?确?移入温度暂存器结束NNY初始化调用显示子程序1mS到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNY 图8 主程序流程图图9读温度流程图 6.1.2读出温度子程序读出温度子程序的主要功能是读出RAM中的12字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图9所示发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束 图10 温度转换流程图 6.1.3 温度写子程序发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数

25、据. 6.1.4温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1MS显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图10所示 6.1.5 计算温度子程序温度数据移入显示寄存器小数位数显示个位数显示十位数显示符号百位数不显示十位数不显示数据(不显示符号) 结束计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图11所示 开始温度零下?温度值取补码置“”标志计算整数位温度BCD值 计算小数位温度BCD值 结束置符号为0暗NY NYNY图11计算温度流程图 图12显

26、示数据刷新流程图6.1.6 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当小数点后一位显示则移入下一位显示。到显示十位数据,直到判断符号位,当符号位显示“”时则表示负温度,反之则不亮,表示温度为正,这都是采用延时实现动态显示.程序流程图如图12。第七章 单片机系统开发7.1 单片机开发系统单片机开发系统实际上也是一种计算机系统,是专门用来开发单片机应用系统的一种工具,它通常由一台系统机、一个仿真开发系统和一个通用编程器构成.在主机上运行开发软件(编辑软件、调试软件)就可以输入、删除、编辑和运行用户程序,也可以把用户目标代码传送到仿真开发系统中编译生成HEX文

27、件。运行编程器把HEX文件写入单片机芯片内。7.2开发简介 7.2.1开发平台HK-51系列仿真开发系统简介:HK-51系列仿真开发系统具有编辑,连接,动态调试综合实验仪的硬件接口等功能。通过运行HK-51系列仿真开发系统对用户编写的ASM文件进行编译。TOP851型编程器:TOP851型编程器具有体积更小巧,功耗低,可靠性高的优点,是专为开发51系列单片机和擦写各类存储器而设计的普及性机型。TOP851采用TS232串口与PC机连接通信,抗干扰性能好,可靠性能极高,特别适合擦写各种一次性(OTP)和电擦除器件.它支持WIN 95/98/2000/ME/XP.性能特点:1:40脚优质万能零拔插

28、插座,性能优良,寿命长久,可以不依赖适配器也能直接编程大部分单片机和存储器。2:采用RS232串口与PC机连接通信,通讯速率115200bps,为抗干扰性能好,可靠性能极高,特别适用于擦写各种一次性(OTP)器件,适合手提电脑和台式机使用。能自动探测电脑的运算速度,编程速度与计算机性能无关,适合486至P-III电脑使用。3:提供WINDOWS95/98界面的中文软件,全新中文操作界面。4:塑料机壳,体积小,重量轻,功耗低(静态50mA)5:完善的过电流保护,在超过限制电流的0.1秒内自动切断电源6:自动检测芯片是否插好,插座有错误提示.6:自动探测机器速度,编程速度与计算机无关,适合486到

29、P-III使用. 7.2.2 开发步骤1.按照系统硬件连线图连好2.把编程好的程序进行汇编对输入单片机8051仿真器进行初始化。3用编程器把程序写入到AT89C524反复调试程序和认真检查线路连接是否正确,直到与预定目的一致。7.3系统编程信息 7.3.1 系统内存分配和I/0接口使用1.程序空间(表1)地址程序中使用的声明说明28HTEMPER_H用于保存读出温度的高8位29HTEMPER_L用于保存读出温度的低8位30H数码管符号位数存放内存位置31H数码管小数点后一位数存放内存位置32H数码管个位数存放内存位置33H数码管十位数存放内存位置38HFLAG1是否检测到DS18B20标志位表

30、12. I/0口使用(表2)信号线程序中使用的声明说明P3.4DQ温度传感器与单片机连接I/O口 表2 7.3.2 实验程序原代码;这是关于DS18B20的读写程序,数据脚P3.4,晶振12MHZ;温度传感器DS18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒 ORG 0000HFLAG1 EQU 38H;是否检测到DS18B20标志位 DQ EQU P3.4 ;温度传感器与单片机连接I/O口MAIN: LCALL INIT_1820MOV A,#0CCH;写CCH到DS18B20,以便中跳过ROM匹配LCALL WRITE_1820 ;WID18B20是写18B20子程序

31、JNB FLAG1,MAIN ;若DS18B20不存在则从新开始MOV A,#44H;发温度转换命令LCALL WRITE_1820LCALL DISPLAYLCALL INIT_1820MOV A,#0BEH;发读温度命令LCALL WRITE_1820LCALL READ_18200LCALL GET_TEMPER;调用读温度子程序LCALL ZWDS18B20 ;调用温度计算程序LCALL DISPLAYLJMP MAIN;*温度计算程序*ZWDS18B20: MOV R0, #34H JNB 47H, BTOD0 ;28H中的最高位是否为1(温度0) QB00: MOV A, 29H

32、;负数取补 CPL A ADD A, #01H MOV 29H, A MOV A, 28H CPL A ADDC A, #00H MOV 28H, A MOV R0, #12H ;显示负号 LJMP BTOD1 BTOD0: MOV R0, #11H BTOD1: MOV A,29H MOV 27H, A MOV C,40H ;将28H中的最低位移入C,40H41H42H43H为28H中的位地址 RRC A MOV C,41H RRC A MOV C,42H RRC A MOV C,43H RRC A MOV 29H,A MOV A, 29H ;将29H中的十六进制数转换成10进制 MOV B

33、, #100 DIV AB JZ BTOD2 MOV R0, A ;十位存于33H LJMP BTOD4 BTOD2:CJNE R0, #12H, BTOD3 LJMP BTOD4 BTOD3: MOV R0, #00H ;符号位存于30H,符号位为零则暗 BTOD4: DEC R0 MOV A, #10 XCH A, B DIV AB MOV R0, A DEC R0 MOV R0, B ;个位存于32H DEC R0 ANL 27H, #0FH ;小数点后一位进制转换 MOV A, 27H MOV B, #06H MUL AB MOV B, #10 DIV AB MOV R0, A ;小数

34、点后一位存于31H JB P2.4, BTOD5 ;小数点后一位是否显示判断 MOV R0, #0FFH BTOD5: RET ;*DS18B20复位初始化子程序 *INIT_1820: SETB P3.4NOP CLR P3.4;主机发出延时537微秒的复位低脉冲 MOV R1,#3 TSR1:MOV R0,#107 DJNZ R0,$ DJNZ R1,TSR1 SETB P3.4;然后拉高数据线 NOP NOP NOP MOV R0,#25H TSR2: JNB P3.4,TSR3;等待DS18B20回应 DJNZ R0,TSR2 LJMP TSR4 ; 延时 TSR3: SETB FLA

35、G1 ; 置标志位,表示DS1820存在 LJMP TSR5 TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在 CLR P1.1 LJMP TSR7 TSR5: MOV R0,#117 TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间 TSR7: SETB P3.4RET ; *读出转换后的温度值 *GET_TEMPER: SETB P3.4LCALL INIT_1820;先复位DS18B20 JB FLAG1,TSS2 RET ; 判断DS1820是否存在?若不存在则返回 TSS2: MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 ;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒 LCALL DISPLAY LCALL INIT_1820;准备读温度前先复位 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820 LCALL READ_18200; 将读出的温度数据保存到35H/36H RET ;*写DS18B20的子程序(有具体的时序要求)*

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

当前位置:首页 > 其他


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