




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机技术课程设计说明书 数字温度计 院 、 部: 电气与信息工程学院 学生姓名: 指导教师: 职称 讲师 专 业: 自动化 班 级: 自本1001 完成时间: 2012年12月12日 摘 要随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。 我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度范围为-55125 C,最高分辨率可达0.0625 C。DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。本文介绍一种基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围0-+100,使用LED模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。该电路设计新颖、功能强大、结构简单。关键词:温度测量;DS18B20;AT89C51 IIABSTRACT Along with national economy development, the people need to each heating furnace、the heat-treatment furnace、in the reactor and the boiler the temperature carry on the monitor and the control. Not only uses the monolithic integrated circuit to come to them to control has the control to be convenient, simple and flexibility big and so on merits, moreover may enhance large scale is accused the temperature technical specification, thus can big enhance the product the quality and quantity.In daily life and industrial production process, often used in the detection and control of temperature, temperature is the production process and scientific experiments in general and one of the important physical parameter. In the production process, in order to efficiently carry out the production, to be its main parameters, such as temperature, pressure, flow control, etc. Temperature control in the production process of a large proportion. Temperature measurement is the basis of temperature-controlled, more mature technology.Traditional thermocouple and temperature components are the second resistor.The thermocouple and thermal resistance are generally measured voltage, and then replaced by the corresponding temperature, these methods are relatively complex, requiring a relatively large number of external hardware support. We use a relatively simple way to measure. We use the United States following DALLAS Semiconductor DS1820 improved after the introduction of a smart temperature sensor DS18B20 as the detection element, a temperature range of -55 125 C, up to a maximum resolution of 0.0625 C. DS18B20 can be directly read out the temperature on the north side, and three-wire system with single-chip connected to a decrease of the external hardware circuit, with low-cost and easy use.The introduction of a cost-based AT89C51 MCU a temperatur measurement circuits, the circuits used DS18B20 high-precision temperatur sensor, measuring scope 0-+100,can set the warning limitation, the use of seven segments LED that can be display the current temperature. The paper focuses on providing a software and hardware system components circuit, introduced the theory of DS18B20, the founctions and applications of AT89C51 .This circuit design innovative, powerful, can be expansionary strong.keywords:temperatur measurement; DS18B20; AT89C51目 录1 数字温度计设计任务、功能要求说明11.1 课题的设计目的11.2 功能要求说明11.3 设计课题总体方案介绍及工作原理说明1方案一1方案二21.4 系统设计原理22 数字温度计硬件系统的设计32.1 各模块功能简要介绍32.1.1 80C51单片机的介绍32.1.2 80C51单片机主要特性42.1.3 80C51单片机的中断系统72.1.4 80C51单片机的定时/计数器72.1.5 温度传感器工作原理72.2 最小系统各电路简介92.3 元器件清单142.4 数字温度计系统仿真设计153 系统的软件设计163.1 数字温度计系统程序设计163.1.1 主程序163.1.2 初始化DS18B20163.1.3 DS18B20读字节173.1.4 DS18B20写字节183.1.5 启动温度测量193.1.6 读取测量结果193.2 程序流程图203.3 程序清单224设计结论27参考文献28致谢29附 录30I1 数字温度计设计任务、功能要求说明1.1 课题的设计目的1. 巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。2. 培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力。3. 通过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。1.2 功能要求说明设计一个具有特定功能的数字温度计。该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。测量温度范围099,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。编程语言:汇编或C51;1.3 设计课题总体方案介绍及工作原理说明该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案。方案一采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有A/D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D 转换电路,感温电路比较麻烦。系统主要包括对A/D0809 的数据采集,自动手动工作方式检测,温度的显示等,这几项功能的信号通过输入输出电路经单片机处理。此外还有复位电路,晶振电路,启动电路等。故现场输入硬件有手动复位键、A/D 转换芯片,处理芯片为51 芯片,执行机构有4 位数码管、报警器等。系统框图如图1所示。图 1 热电偶温差电路测温系统框图方案二采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。1.4 系统设计原理利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,处理后的数据送到LED中显示。2 数字温度计硬件系统的设计2.1 各模块功能简要介绍2.1.1 80C51单片机的介绍80C51单片机最初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。如是市面上出现了各式各样的但均以51 为内核的单片机,倒是Intel 公司自己的单片机却显得逊色了。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51 一致的。80C51有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。80C51的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。 80C51单片机的基本组成框图见图2。图2 80C51单片机组成框图由图2可见,8051单片机主要由以下几部分组成:1. cpu系统 8位cpu,含布尔处理器; 时钟电路; 总线控制逻辑。2. 存储器系统 4K字节的程序存储器(ROM/EPROM/Flash,可外扩至64KB); 128字节的数据存储器(RAM,可再外扩64KB); 特殊功能寄存器SFR。3. I/O口和其他功能单元 4个并行I/O口; 2个16位定时计数器; 1个全双工异步串行口; 中断系统(5个中断源,2个优先级)。2.1.2 80C51单片机主要特性1. 一个8 位的微处理器(CPU)。2. 片内数据存储器RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供1K 的RAM。3. 片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31 等。目前单片机的发展趋势是将RAM 和ROM 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。SST 公司推出的89 系列单片机分别集成了16K、32K、64K Flash 存储器,可供用户根据需要选用。4. 四个8 位并行IO 接口P0P3,每个口既可以用作输入,也可以用作输出。5. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。6. 五个中断源的中断控制系统。现在新推出的单片机都不只5 个中断源,例如SST89E58RD 就有9 个中断源。7. 一个全双工UART(通用异步接收发送器)的串行IO 口,用于实现单片机之间或单机与微机之间的串行通信。8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12MHz。SST89V58RD 最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。图3 80C51单片机管脚图部分引脚说明:1. 时钟电路引脚XTAL1 和XTAL2:XTAL2(18 脚):接外部晶体和微调电容的一端;在8051 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。要检查8051/8031 的振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出。XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。2. 控制信号引脚RST,ALE,PSEN 和EA:RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源Vcc 发生故障,降低到低电平规定值时,将5V 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST 引脚的第二功能是VPD,即接入RST 端,为RAM 提供备用电源,以保证存储在RAM 中的信息不丢失,从而合复位后能继续正常运行。ALE/PROG(30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC 的1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低8 位地址的控制信号。平时不访问片外存储器时,ALE 端也以振荡频率的1/6 固定输出正脉冲,因而ALE 信号可以用作对外输出时钟或定时信号。如果想确定8051/8031 芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031 基本上是好的。ALE 端的负载驱动能力为8 个LS 型TTL(低功耗甚高速TTL)负载。此引脚的第二功能PROG 在对片内带有4KB EPROM 的8751 编程写入(固化程序)时,作为编程脉冲输入端。PSEN(29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引肢接EPROM 的OE 端(见后面几章任何一个小系统硬件图)。PSEN 端有效,即允许读出EPROMROM 中的指令码。PSEN 端同样可驱动8 个LS 型TTL 负载。要检查一个8051/8031 小系统上电后CPU 能否正常到EPROMROM 中读取指令码,也可用示波器看PSEN 端有无脉冲输出。如有则说明基本上工作正常。EA/Vpp(31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA 引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051 为4K)时,将自动转去执行片外程序存储器内的程序。当输入信号EA 引脚接低电平(接地)时,CPU 只访问外部EPROM/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM 的8031 或8032,需外扩EPROM,此时必须将EA 引脚接地。此引脚的第二功能是Vpp 是对8751 片内EPROM固化编程时,作为施加较高编程电压(一般12V21V)的输入端。3. 输入/输出端口P0/P1/P2/P3:P0口(P0.0P0.7,3932 脚):P0口是一个漏极开路的8 位准双向I/O口。作为漏极开路的输出端口,每位能驱动8 个LS 型TTL 负载。当P0 口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在CPU 访问片外存储器时,P0口分时提供低8 位地址和8 位数据的复用总线。在此期间,P0口内部上拉电阻有效。P1口(P1.0P1.7,18 脚):P1口是一个带内部上拉电阻的8 位准双向I/O口。P1口每位能驱动4 个LS 型TTL 负载。在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。P2口(P2.0P2.7,2128 脚):P2口是一个带内部上拉电阻的8 位准双向I/O口。P口每位能驱动4个LS 型TTL 负载。在访问片外EPROM/RAM 时,它输出高8 位地址。P3口(P3.0P3.7,1017 脚):P3口是一个带内部上拉电阻的8 位准双向I/O口。P3口每位能驱动4个LS型TTL负载。P3口与其它I/O 端口有很大的区别,它的每个引脚都有第二功能,如下:P3.0:(RXD)串行数据接收。P3.1:(RXD)串行数据发送。P3.2:(INT0#)外部中断0输入。P3.3:(INT1#)外部中断1输入。P3.4:(T0)定时/计数器0的外部计数输入。P3.5:(T1)定时/计数器1的外部计数输入。P3.6:(WR#)外部数据存储器写选通。P3.7:(RD#)外部数据存储器读选通。2.1.3 80C51单片机的中断系统80C51系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。2.1.4 80C51单片机的定时/计数器在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。80C51单片机内集成有两个可编程的定时/计数器:T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。2.1.5 温度传感器工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。DS18B20功能特点:1. 采用单总线技术,与单片机通信只需要一根I/O线,在一根线上可以挂接多个DS18B20。2. 每只DS18B20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件。3. 低压供电,电源范围从35V,可以本地供电,也可以直接从数据线上窃取电源(寄生电源方式)。4. 测温范围为-55+125,在-1085范围内误差为0.5。5. 可编辑数据为912位,转换12位温度时间为750ms(最大)。6. 用户可自设定报警上下限温度。7. 报警搜索命令可识别和寻址哪个器件的温度超出预定值。8. DS18B20的分辩率由用户通过EEPROM设置为912位。9. DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。DS18B20有4个主要的数据部件:1. 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位 (28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用 是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 2. DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以 0.0625/LSB形式表达,其中S为符号位。3. DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器 TH、TL和结构寄存器。 4. 配置寄存器。DS18B20内部结构及功能:DS18B20的内部结构如图4所示。主要包括:寄生电源,温度传感器,64位ROM和单总线接口,存放中间数据的高速暂存器RAM,用于存储用户设定温度上下限值的TH和TL触发器,存储与控制逻辑,8位循环冗余校验码(CRC)发生器等7部分图4 DS18B20的内部结构2.2 最小系统各电路简介在课题设计的温度控制系统设计中,控制核心是AT89S52单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4K FLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,其外部晶振为12MHz,一个指令周期为1S。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、晶振电路、电源电路、以及数码管显示电路。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经过一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。单片机复位电路参数的选定须在振荡稳定后保证复位高电平持续时间大于2个机器周期。图5 复位电路单片机晶振两个电容的作用:这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。它会影响到晶振的谐振频率和输出幅度,一般订购晶振时候供货方会问你负载电容是多少。 晶振的负载电容=(Cd*Cg)/(Cd+Cg)+Cic+C (1)式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+C(PCB上电容)经验值为3至5pf。在本系统中设计电容大小为3pf。图 6 晶振电路 在本系统中使用+5V稳压电源,可以使用USB电源插座。也可以使用下载线口提供电。还可以使用插针供电。图7 电源电路显示电路有两个四位7段数码管显示。图8 数码管显示电路 在本系统中采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控制。其测温电路(如图9)。正确接线的方法如图10。左负右正,一旦接反就会立刻烧掉!接反是导致该传感器总是显示85的原因。 图9 测温电路 图10 DS18B20引脚图数字温度计系统硬件设计总原理图如图11所示图11 数字温度计系统原理图数字温度计系统PCB图如图12 所示:图12 数字温度计PCB图2.3 元器件清单元器件及材料名称规格数目AT89S5240P1DS18B201AT89S52芯片插座40P1四位一体共阳数码管2数码管单排插座(母)40P1晶振12MHz1发光二极管9单排插针(公)40P1三极管90129蜂鸣器1小按键9下载口座子十芯1六脚按键开关1Usb电源线1Usb电源线插座1电阻2001电阻4.7k1电阻1K3电阻47024电解电容22uf1瓷片电容33pf2排阻10k2短路冒2杜邦线8P1PCB板子1322.4 数字温度计系统仿真设计利用软件proteus仿真原理图如图13所示: 图13 proteus仿真图3 系统的软件设计 3.1 数字温度计系统程序设计 3.1.1 主程序/*- 主函数 -*/void main()while(1)Convert(); /调用启动温度转换函数RdTemp(); /调用读取温度值函数 温度测量3.1.2 初始化DS18B20/*- 初始化DS18B20 -*/void TxReset() uint i;DQ=0;/发送复位脉冲i=100;while(i0) i-; /拉低900us DQ=1; /释放总线i=4;while(i0) i-; 等待应答信号/*- 等待DS18B20应答 -*/void RxWait() uint i;while(DQ); /等待15-60uswhile(DQ); /DS18B20发出存在脉冲60-240usi=4;while(i0) i-;3.1.3 DS18B20读字节/*- 读取一位数据 -*/bit RdBit()uchar i;bit b;DQ = 0; /读开始1usi+;DQ = 1; /产生读时间隙15usi+;i+;b = DQ; /读位i = 8;while(i0) i-; /等待60usDQ = 1; /释放总线return b;/*- 读取字节数据 -*/uchar RdByte()uchar i,j,d;d=0;for(i=0;i8;i+) /各位由低向高读出DS18B20j=RdBit();d=(j1);return d;3.1.4 DS18B20写字节/*- 写入字节数据 -*/void WrByte(uchar d)uint i;uchar j;bit btmp;for(j=0;j1;if(btmp) /写1DQ=0; /延时15usi+;i+;DQ=1; /写1时隙不低于60ui=8;while(i0) i-;else /写0DQ=0;i=8;while(i0) i-; /保持低电平60us到120usDQ=1; /释放总线i+;i+; 3.1.5 启动温度测量/*- 启动温度测量-*/void Convert()uint i;Delay(125); /延时1msTxReset(); /初始化DS18B20RxWait(); /等待DS18B20答应Delay(125); /延时WrByte(0xcc); /跳过ROM命令WrByte(0x44); /温度转换命令for(i=0;i250;i+) /延时1sDisplay();3.1.6 读取测量结果/*- 读取温度值 -*/void RdTemp(void)short int temp;uint x;bit flag = 1;TxReset(); /初始化DS18B20RxWait(); /等待DS18B20应答Delay(125); /延时WrByte(0xcc); /跳过ROM命令WrByte(0xbe); /读暂存存储器命令templow = RdByte(); /温度值低字节,低4位为小数temphigh = RdByte(); /温度值高字节temp = (temphigh 4; /温度值整数 x = temp & 0x000f; tempxiao = (x*10)/16; /温度值小数disp1 = (tempzheng%100)/10; /十位disp2 = tempzheng%10; /个位disp3 = tempxiao; /小数 3.2 程序流程图图13 主程序流程图发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY图14 温度转换流程图开始 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY 图15计算温度流程图 图16显示数据刷新流程图3.3 程序清单#include /将ret52.h头文件包含到主程序#define ulong unsigned long#define uint unsigned int /变量类型宏定义,用uint表示无符号整形#define uchar unsigned char /变量类型宏定义,用uchar便是无符号字符型uchar code led= 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0, 0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x02,0x00 ; /数码管码表uchar disp4=1,2,3,4; /数码管显示缓冲区/数码管位选P1低四位,段选P0sbit DQ=P35; /DS18B20数据端uchar templow; /温度值低字节uchar temphigh; /温度值高字节char tempzheng; /温度值整数char tempxiao; /温度值小数void Delay(uint x);void Display();void TxReset();void RxWait();bit RdBit();uchar RdByte();void WrBit(bit b);void WrByte(uchar d);void Convert();void RdTemp();sbit ACC0 = ACC0;sbit ACC7 = ACC7;/*- 主函数 -*/void main()while(1)Convert(); /调用启动温度转换函数RdTemp(); /调用读取温度值函数/*- 初始化DS18B20 -*/void TxReset() uint i;DQ=0;/发送复位脉冲i=100;while(i0) i-; /拉低900us DQ=1; /释放总线i=4;while(i0) i-;/*- 等待DS18B20应答 -*/void RxWait() uint i;while(DQ); /等待15-60uswhile(DQ); /DS18B20发出存在脉冲60-240usi=4;while(i0) i-;/*- 读取一位数据 -*/bit RdBit()uchar i;bit b;DQ = 0; /读开始1usi+;DQ = 1; /产生读时间隙15usi+;i+;b = DQ; /读位i = 8;while(i0) i-; /等待60usDQ = 1; /释放总线return b;/*- 读取字节数据 -*/uchar RdByte()uchar i,j,d;d=0;for(i=0;i8;i+) /各位由低向高读出DS18B20j=RdBit();d=(j1);return d;/*- 写入字节数据 -*/void WrByte(uchar d)uint i;uchar j;bit btmp;for(j=0;j1;if(btmp) /写1DQ=0; /延时15usi+;i+;DQ=1; /写1时隙不低于60ui=8;while(i0) i-;else /写0DQ=0;i=8;while(i0) i-; /保持低电平60us到120usDQ=1; /释放总线i+;i+;/*- 启动温度转换 -*/void Convert()uint i;Delay(125); /延时1msTxReset(); /初始化DS18B20RxWait(); /等待DS18B20应答Delay(125); /延时WrByte(0xcc); /跳过ROM命令WrByte(0x44); /温度转换命令for(i=0;i250;i+) /延时1sDisplay();/*- 读取温度值 -*/void RdTemp(void)short int temp;uint x;bit flag = 1;TxReset(); /初始化DS18B20RxWait(); /等待DS18B20应答Delay(125); /延时WrByte(0xcc); /跳过ROM命令WrByte(0xbe); /读暂存存储器命
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》高分题库附答案详解【夺分金卷】
- 2025呼伦贝尔农垦那吉屯农牧场招聘考试备考及参考答案详解
- 遵义机场有限责任公司招聘笔试题库2025
- 教师招聘之《小学教师招聘》强化训练附完整答案详解【全优】
- 2025年教师招聘之《小学教师招聘》题库必刷100题附参考答案详解(巩固)
- 教师招聘之《小学教师招聘》过关检测附参考答案详解【培优】
- 静海泊泰医院有限公司招聘笔试题库2025
- 2025年教师招聘之《小学教师招聘》综合提升练习题含完整答案详解【各地真题】
- 教师招聘之《小学教师招聘》模拟考试高能含完整答案详解【夺冠系列】
- 教师招聘之《小学教师招聘》能力测试备考题带答案详解(精练)
- 2025年消防设施操作员考试题库(消防设施操作)消防设施操作员职业素养试题
- 2025光纤购销合同(高速通信光纤)
- 北京同仁堂中药特色药材介绍 - 首都医科大学陈敏课件
- 初中年级家委会分工及工作职责
- 企业会计准则实施典型案例
- 院感惩罚管理制度
- 江苏省泵站技术管理办法
- 进口铁矿石的报关流程
- 新苏教版一年级数学上册第一单元《练习一》教案
- 冀教版英语五年级上册单词表
- 医院感染在眼科医疗中的预防与控制
评论
0/150
提交评论