数字温度计的设计.doc

上传人:laozhun 文档编号:3944334 上传时间:2023-03-28 格式:DOC 页数:30 大小:232KB
返回 下载 相关 举报
数字温度计的设计.doc_第1页
第1页 / 共30页
数字温度计的设计.doc_第2页
第2页 / 共30页
数字温度计的设计.doc_第3页
第3页 / 共30页
数字温度计的设计.doc_第4页
第4页 / 共30页
数字温度计的设计.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《数字温度计的设计.doc》由会员分享,可在线阅读,更多相关《数字温度计的设计.doc(30页珍藏版)》请在三一办公上搜索。

1、学科分类号: 0809 湖南人文科技学院本科生毕业论文题 目: 数显式电子温度计的设计 The Design of Counts Explicit Thermotron 学生姓名: 卢明 学号: 08417320 系 部: 物理与信息工程系 专业年级: 信息科学与技术08级电子 指导教师: 李铭华 职 称: 副教授 辅导教师: 黄雪莲 李双桂 湖南人文科技学院教务处制湖南人文科技学院本科毕业论文诚信声明本人郑重声明:所呈交的本科毕业论文,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品

2、成果。对本文的设计做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 作者签名: 二 年 月 日目 录摘 要1Abstract11引言21.1 选题的根据21.2 研究内容21.3 拟达到目标2第2章 数字温度计总体详细设计32.1数字温度计设计方案论证32.1.1方案一:热敏电阻32.1.2 方案二:温度传感器DS18B2032.1.3 方案三:控制内核不用单片机,用DSP4第3章 数字温度计详细设计43.1 主控制器AT89C205143.1.1 AT89C2051的主要性能43.1.2 引脚说明53.2温度传感器DS18B2063.2.1 DS1

3、8B20的测温原理103.2.2 温度数据的计算处理方法113.3 DS18B20与单片机的接口电路12第四章 硬件电路的设计134.1 电路仿真图13第五章 系统的程序设计135.1 主程序145.2 读出温度子程序145.3 温度转换命令子程序145.4 计算温度子程序155.5 显示数据刷新子程序15参考文献16致 谢17附录一18附录二20数显式电子温度计的设计摘 要:数显式电子温度计可以准确的判断和测量温度,以数字显示,而非指针或水银显示。故称数字温度计。数字温度表与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示。本文综述了利用单片机和温度传感器DS18

4、B20、数码管的数字温度计的设计原理与制作过程。关键词:温度传感器 单片机 数码管.The Design of Counts Explicit ThermotronAbstract : Digital type electronic thermometer can accurately judge and measure temperature, with digital display, rather than a pointer or mercury. So called digital thermometer. Compared with the traditional thermome

5、ter, Digital thermometer with a reading of convenience, a wide range of temperature measurement, accurate temperature measurement, the output of the temperature digital display. This article reviews the use of MCU and the temperature sensor DS18B20, digital tube digital thermometer design principle

6、and fabrication processKey Words:MCU Temperature sensor Digital tube1引言1.1 选题的根据温度是我们日常生产和生活中实时能接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。数显温度计应用非常广泛。它既可以用在人们的日常生活中,也可以用在工农业生产中,还可以是一个电子产品的一部分。数显温度计电路的种类非常多,既可以用专用集成电路实现,又可以用通用数字电路实现,还能用单片机来控制。

7、随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,温度传感器DS18B20具有性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和控制。又随着电子技术的发展,人们的生活日趋数字化,多功能的数字温度计可以给我们的生活带来很大的方便;支持“一线总线”接口的温度传感器简化了数字温度计的设计,降低了成本;以美国MAXIM/DALLAS半导体公司的单总线温度传感器DS18B20为核心,以ATMEL公司的AT89S52为控制器设计的DS18B20温度控制器结构简单、测温准确、具有一定控制功能的智能温度控制器1.2 研究内容采用数字式温度传感

8、器为检测器件,进行单点温度检测。用单片机作为数字温度计的控制系统,用数码管直接显示温度值。(1)检测的温度范围:0100,检测分辨率 0.5。(2)用4位数码管来显示温度值。1.3 拟达到目标设计出来的电子温度计能够精确的测量出温度值,能够显示0100的温度.第2章 数字温度计总体详细设计2.1数字温度计设计方案论证2.1.1方案一:热敏电阻由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应1,在将随被测温度变化的电压或电流采集过来,进行A/D转换后2,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦3。感温元件

9、如图1:图1 热敏电阻2.1.2 方案二:温度传感器DS18B20 (1).进而考虑到用温度传感器,在现代设计中,温度的检测大都是使用传感器,这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 (2).方案二的总体设计框图温度计电路总体框图设计思路如图2所示,其中,主控制器采用AT89C2051,温度采集模块为DS18B20,温度显示用4位LED数码管以串口传送数据的方式实现4。DS18B20AT89C2051主控制器显示电

10、路扫描驱动图2 总体设计方框图2.1.3 方案三:控制内核不用单片机,用DSP主 控 制 器LED显 示温 度 传 感 器单片机复位时钟振荡报警点按键调整选定了温度传感器之后,再来考虑它的控制内核,因为数字温度计的设计并不复杂,单片机完全可以处理的了,DSP是比较高端的控制内核应用成本相对较高,综合比较选用单片机是即经济又实惠的选择。第3章 数字温度计详细设计3.1 主控制器AT89C20513.1.1 AT89C2051的主要性能1、含可重编程的2KB FLASH存储器(10000次);2、电压适应范围宽,2.7-6V电压范围;3、15条可编程I/O线;4、128*8位内部RAM;5、和MC

11、S-51产品兼容; 6、全静态工作:0Hz-24MHz; 7、2级程序存储器保密锁定;8、可编程串行通道; 9、两个16位定时器/计数器; 10、6个中断源;11、可直接驱动LED的输出端口;12、高精度电压比较器; 3.1.2 引脚说明 AT89C2051 PDIP/SOIC RST/VPPVCC (RXD)P3.0 P1.7 (TXD)P3.1 P1.6 XTAL2 P1.5 XTAL1 P1.4 (INT0)P3.2 P1.3(INT1)P3.3 P1.2 P1.2 (TO)P3.4 P1.1(AIN1) (T1)P3.5 P1.0(AIN0) GND P3.7 AT89C2051 图3

12、 AT89C2051的引脚图AT89C205 的引脚图如图3所示,各引脚功能如下: 1、VCC:电源电压。 2、GND:地。 3、P3口:P3口的P3.0P3.5、P3.7是带有内部上拉电阻 的七个双向I/O口引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。P3口缓冲器可吸收20mA电流。当P3口写入“1”时,它们被内部上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的P3口脚将用上拉电阻而流出电流。 P3口还用于实现AT89C2051的各种第二功能,如表1所列:表1 AT89C2051P3口的各种第二功能引脚口功 能P3.0RXD串行输入端口P3.1TX

13、D串行输出端口P3.2INT0 外中断0P3.3INT1 外中断1P3.4T0定时器0外部输入P3.5T1定时器1外部输入P3口还接收一些用于闪速存储器编程和程序校验的控制信号。4、P1口:P1口是一个8位双向I/O口。口引脚P1.2P1.7提供内部上拉电阻,P1.和P1.1要求外部上拉电阻。P1.1和P1.0和还分别作为片内精密模拟比较器的反相输入和(AIN1)同相输(ANI0)。P1口作为输出缓冲器可吸收20mA电流并能直接驱动LED显示。当P!口引脚写入“1”时,他可作为输入端,当引脚P1.2P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。当引脚P1.2P1.

14、7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流5。 5、XTAL2:振荡器反相放大器的输出端。6、RST:复位输入。RST一旦变成高电平所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。 7、XTAL1:振荡器反相器的输入端和内部时钟发生器的输入。 3.2温度传感器DS18B20DS18B20温度传感器是美国推出的第一片支持“一线总线”接口的温度传感器它具有微型化、低功耗、高抗性、易配处理器等优点,可直接将温度转化为串行数字信号供处理器处理,并且可根据实际要求通过简单的编程实现位的数字值读

15、数方式6。 TO92封装的DS18B20的引脚排列见图4,其引脚功能描述见表2。图4 (底视图)DS18B20表2 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的性能特点如下:接口为独特的单线方式,它与微机处理器连接时仅需要一条口线即可实现微机处理器与DS18B20的双向通信支持多网点测组网功能,多个DS18B20可以并联在唯一的三线上,实现组网点测温;在使用中无需任何外围元件,全部传感器元件及转换电路集成在

16、形如一只三级管的集成电路内;适应电压范围宽,电压范围为3.05.5;可编程分辨率为912;在9位分辨率时,最多在93.75ms内把温度转换成数字;负电压特性,当电源接负极性时,温度计不会因发热而烧毁,但不能完成温度的测量; DS18B20采用3脚PR35封装或8脚SOIC封装,SOIC是指一类封装的集合,其包含了SOP、SSOP、TSSOP等封装。SOIC是表面贴装集成电路封装形式中的一种,它比同等的DIP封装减少约30-50%的空间,厚度方面减少约70%。与对应的DIP封装有相同的插脚引线。对这类封装的命名约定是在SOIC或SO后面加引脚数。其内部结构框图如图5所示。C64 位ROM和单线接

17、口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddI/O 图5 DS1DS18B20内部结构64位ROM的结构起始的位是产品类型的编号,接下来就是每一个器件单独对应的序号,一起有48位,最后的位是前面各位的循环冗余度检测码,这是DS18B20可以进行单线通信的原理。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM7。其中,高速暂存RAM为一个八字节的存储器,结构如图5所示8。首位的个字节中的数据是测得的温度值,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的信息主要包含温度数

18、字转换分辨率。DS18B20工作时寄存器中的主要信息是分辨率,它可以转换成与分辨率对应的精度的数值。该字节各位的定义如图6所示。低位一直为,工作模式由确定,它的主要功能是设置DS18B20在工作模式还是在测试模式, R1和0决定温度转换的精度位数,用来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC 图6 DS18B20字节定义由表3可见,DS18B20中需要花费较长的时间进行温度的转换,并且当分辨率越高,温度数据转换花费的时间越长。所以,在实际的情况中当中必须综合考虑分辨率和温度的转换时间。高速暂存的第、字节没有应用,全部置。根据第字节可读出前面所

19、有字节的循环冗余度码,由此检验数值,用来确定数值的正确性。当DS18B20接收到有主控制器传送的温度转换命令后,便立即开始转化。完成转换后的温度数值值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。读出该数据单片机通过单线接口读取,读数据时高位在后,低位在先,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为负值,要先将补码变成原码9,当符号位时,表示测得的温度值为正值。可以直接将二进制位转换为十进制;,再计算十进制数值。表4是一部分温度值对应的二进制温度数据。表3 DS18B20温度转换时间表R1R0分辨率/位温度最大转换时间/ms00993.75011

20、0187.510113751112750在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位是用来计算CRC值,并和存入DS18B20的循环冗余检验码值作比较,以确认主机收到的ROM数据是否正确。3.2.1 DS18B20的测温原理DS18B20的测温具体步骤为,由于高温度系数晶振的震荡频率随温度变化很大,它产生的脉冲信号作可作为减法计数器的脉冲输入;元器件中的低温度系数晶振随着温度的变化的振荡频率的变化比较小,所以它可以发出固定频率的脉冲信号传给减法计数器。斜率累加器预置比较 预置低温度系数晶振计数器 1温度寄存器= 0 加1高温度系数晶振计数器 2= 0 停止

21、 图7 DS18B20测温原理器件中还存在有单个的计数门,计数门打开时间的长短决定于高温度系数振荡器,当计数门开启时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。而每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其

22、输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表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 0000FFF8H-10.1251111 1111 0101 111

23、0FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H 3.2.2 温度数据的计算处理方法 从DS18B20读出的二进制值必须先转换成十进制值10,表4中列出了一些部分十进制温度值转化成二进制和十六进制的温度值。DS18B20可选的换位精度有9到12位的换位精度,为了使数值更加的精确,一般采用12位的精度。在计算实际的十进制温度时,必须把温度寄存器里的实际温度乘以0,0625。这是由于在使用12位的转换精度时,温度寄存器里的数是采用的0.0625的步进方式。一个十进制的数和二进制的数存在着固定的转换关系,就是把二进制的

24、低字节的高半字节和高字节的低半字节组成一字节,把这个2进制的数值转换成十进制的数后,该数值就是就是温度的十进制数值,剩下的字节转变成十进制的数后,就是该温度十进制输的小数部分。因为小数部分是半字节,所以二进制值范围是0-F,转换成十进制小数值就是0,0625的倍数(0-15倍)。表5中列出了一些二进制与十进制的近似对应关系。实际应用不必有这么高的精度,只要用1个LED数码管显示小数部分就行,可以精确到0.1。表5 就是二进制与十进制的近似对应关系表小数部分二进制值0123456789ABCDEF十进制值0011233455667889 另外,由于DS18B20单线通信功能是分时完成的,有严格的

25、时隙概念,因此读/写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。3.3 DS18B20与单片机的接口电路DS18B20可以采用两种方式供电,一种是寄生电源供电方式,如图8所示单片机端口接单线总线,这是一种独特的连线方式,电源线和信号线连接在一起,每一个芯片可单独进行编码,这样就能节省大量的连线和各种逻辑电路,使占用的微机处理器端口更少。另一种方法是使用电源直接供电,此时DS18B20的1脚接地,2脚直接与单片机相连,作为通信线,3脚连接电源。DS18B20DS18B20DS18B20单片机4.

26、7KVCCVCC图8 DS18B20与单片机的接口电路图当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。第四章 硬件电路的设计 4.1 电路仿真图图4.1 电路仿真图第五章 系统的程序设计系统程序主要包括主程序、温度转换命令子程序、显示数据刷新子程序、读出温度子程序、计算温度子程序等。5.1 主程序主程序的主要功能是把测出的温度显示出来,并且能读出DS18B20的所测量到的温度数值,温度测量的时间为1S,这样就可以每隔一定的时间测量一次温度。Y发DS18

27、B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正确?移入温度暂存器结束NNYN初始化调用显示子程序1s到?初次上电?读出温度值温度计算处理显示数据刷新发温度转换开始命令NYY图9 主程序流程图 图10 读出温度子程序流程图5.2 读出温度子程序读出温度子程序的主要功能是通过发出DS18B20复位命令后,发出读取命令后来读RAM中的9字节,并在读数据时进行循环冗余度检验,如果发现检验错误,不能改写温度的数据。其程序流程图如图10所示。5.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。在这次设计中,使用的方法是1S的延时程序,使温度转换程序

28、有充足的时间得以完成。温度转换命令子程序流程图如图11所示。发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图11 温度转换命令子程序流程图5.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图12所示。5.5 显示数据刷新子程序显示数据刷新子程序的功能是对显示缓冲器数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图13所示。YNY温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束NY开始温度零下?温度值取补码置“-”标志计算小数位温度BCD值计

29、算整数位温度BCD值 结束置“+”标志N图12 计算温度子程序流程图 图13 显示数据刷新子程序流程图参考文献:1、康华光主编.电子技术基础模拟部分M.第五版.北京:高等教育出版社,20052、康华光主编.电子技术基础数字部分M.第五版.北京:高等教育出版社,20053、William Keith.Digital Electronics,-A Practical Approach.6th Ed.New Jersey:Prentice-Hall Upper Saddle River,20024、吴景邀. 单片机的键盘及LED数码管显示接口J.电子世界.20025、黄苑虹,梁惠冰. 基于AT89C

30、52的温度测控系统J.仪器仪表.20026、G Jiang M Zhang, X Xie, S Li.Application on temperature controlof DS18B20J.Control Engineering of China, 20037、赵海兰.智能温度传感器DS18B20的原理与应用J.现代电子技术.20038、张毅刚主编单片机原理及应用M.北京:高等教育出版社,2003 9、王志力主编C语言程序设计M。天津:天津科学技术出版社,200810、Brian W.Kernighan,Dennis M.RitchieThe C programming Language

31、2M. 北京.机械工业出版社 2006致 谢: 经过几个月的忙碌和工作,本次毕业设计已经接近尾声,由于经验的匮乏,难免有许多考虑不周的地方,如果没有导师的督促指导,想要完成这个设计是难以想象的。在这里要感谢李铭华老师,他循导善诱的教导和不拘一格的思路给予我无尽的启迪;他严谨细致,一丝不苟的作风一直是我们工作.学习中的榜样;并将积极影响我今后的学习和工作。然后要感谢大学4年来的所有老师,为我们打下了电子专业知识的基础;同时还要感谢08电科所有的同学们,正是因为有你们的支持和鼓励。我才能在温暖的环境中茁壮成长并顺利完成毕业设计。附录一 DS18B20的各条ROM命令Read ROM33H。这条命令

32、允许总线控制器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。只有在总线上存在单只DS18B20时,才能使用该命令。如果总线上有不止一个从机,则当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成相“与”的效果)。2. Match ROM55H。这是一条匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有与64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。所有与64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。3. Skip ROM0CCh=H。这条命令允许总线控制

33、器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间。如果总线上不止一个从机,则在Skip ROM命令之后跟着发一条读命令。由于多个从机同时传送信号,所以总线上就会发生数据冲突(漏极开路下拉效果相当于相“与”)。4. Search ROM0F0H。当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。5. Alarm Search0ECH。这条命令的流程与Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况下,DS18B20才会响应这条命令。

34、报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。6. Write Scratchpad4EH。这条命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。7. Read scratchpad0BEH。这条命令读取暂存器的内容。读取将从第一字节开始,一直进行下去,直到第九字节(CRC)读完。如果不想读完所有字节,则控制器可以在任何时间发出复位命令来中止读取。8. Copy scratchpad48H。这条命令把暂存器的内容拷贝到DS18B20的E2PROM存储器里,即把温度报警触发字节存入非

35、易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E2PROM存储器,则DS18B20就会输出一个0,如果拷贝结束则DS18B20输出1。如果使用寄生电源,则总线控制器必须在这条命令发出后立即启动强上拉,并最少保持10ms。9. Convert44H。这条命令启动一次温度转换而无需其他数据。温度转换命令被执行后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换,则DS18B20将在总线上输出0;如果温度转换完成,则输出1.如果使用寄生电源,则总线控制器必须在发出这条命令后立即启动强上拉,并保

36、持500ms以上时间。10. Recall E20B80H。这条命令把报警触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后读数据隙,器件会输出温度转换忙的标识:0表示忙;1表示完成。11. Read Power Supply0B4H。若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:0表示寄生电源;1表示外部电源。 附录二/*/ / DS18B20温度计C程序/ /*/使用AT89C2051单片机,12MHZ晶振,用共阳LED数码管/P1口输出段码,P3口扫描/#pragma src(d

37、:aa.asm)#include reg51.h#include intrins.h /_nop_();延时函数用#define Disdata P1 /段码输出口#define discan P3 /扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P37; /温度输入口sbit DIN=P17; /LED小数点控制uint h;/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x

38、08,0x08,0x09,0x09;/uchar code dis_712=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf;/* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; / 列扫描控制字uchar data temp_data2=0x00,0x00; / 读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00;/显示单元数据,共4个数据,一个运算暂存用/*11微

39、秒延时函数*/void delay(uint t)for(;t0;t-);/*显示扫描函数*/scan()char k; for(k=0;k4;k+) /四位LED扫描控制 Disdata=dis_7displayk; if(k=1)DIN=0; discan=scan_conk;delay(90);discan=0xff; /*18B20复位函数*/ow_reset(void)char presence=1;while(presence)while(presence) DQ=1;_nop_();_nop_();DQ=0; /delay(50); / 550usDQ=1; / delay(6); / 66uspresence=DQ; / presence=0继续下一步 delay(45); /延时500uspresence = DQ;DQ=1; /*18B20写命令函数*/向 1-WIRE 总线上写一个字节void write_byte(uchar

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号