




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 题 目: 温室/冷库温度监控器毕业设计目录1. 引言- 4 -2. 方案论证及各电路设计- 4 -2.1主控制器- 6 -2.2温度传感器的选择- 7 -2.3 显示电路- 12 -2.4 单片机与计算机串行通行电路- 15 -2.5 温度控制部分的电路- 16 -半导体制冷器工作原理- 16 -2.6按键控制部分接口电路- 17 -2.7 温度报警电路- 18 -3. 软件设计- 19 -3.1温度传感器DS18B20模块软件设计- 19 -3.1.1 DS18B20 1-Wire总线的基本通信协议- 19 -3.1.2 多点温度测量- 24 -3.2 显示程序设计- 26 -3.3 按键
2、程序设计- 30 -3.4 控制程序设计- 33 -3.5报警程序设计- 34 -3.6主程序流程图及程序设计- 35 -3.5.1 系统主程序流程图- 35 -主程序设计- 36 -4. 设计小结- 38 -5. 致谢- 39 -6. 参考文献- 40 -摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。本文主要介绍了一个基于STC89C52单片机的温度测控系统,详细描述了利用数字温度传感器DS18B20开发控温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍。该系
3、统可以方便的实现温度采集显示和控制,并可根据需要任意设定保持温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89C52结合实现最简温度控制系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度监控,具有广泛的应用前景。关键词:单片机;温度控制;DS18B20;STC89C52Along with the time progress and the development,1. 引言单片机在电子产品中的应用已经越来越广泛,并且
4、在很多电子产品中也将其用到温度检测和温度控制。为此本文中设计了基于STC89C52的温度测量控制系统。这是一种低成本的利用单片机实现的温度检测和控制电路, 该电路简单, 易于实现, 并且适用于几乎所有类型的片机。液晶HM12864来2. 方案论证及各电路设计温度监控电路设计,控制器使用单片机STC89C52,温度计传感器使用DS18B20,用液晶实现温度显示。本验证电路温度监控系统大体分四个工作过程。首先,由DS18820温度传感器芯片测量当前的温度,并将结果送入单片机。其次,通过STC89C52单片机芯片对送来的测量温度读数进行计算和转换,并将此结果送入液晶显示模块。然后,HM12864芯片
5、将送来的时间和温度值显示于显示屏上。最后,将温度值与设定的温度值进行比较,并驱动控制器,实现对温度的控制。 本电路主要由DSl8B20温度传感器芯片、HM12864液晶显示模块芯片、STC89C52单片机芯片和输出控制部分组成。其中,DSI8B20温度传感器芯片采用“单总线”与单片机相连,它独立地完成温度测量以及将温度测量结果送到单片机的工作。温度控制器主板温度传感器接线图加热器_制冷器电气接线图2.1主控制器主控制器我们采用价格便宜,体积小,性能强大,而且能与DS18B20直接通信的单片机作为主控制器。使用单片机,对于单片机的选择,可以考虑使用8031与8052系列,由于8031没
6、有内部RAM,系统又需要大量内存存储数据,因而不适用。SCT89C52 是低功耗,高性能 CMOS8位单片机,片内含4kbytes 的可编程的Flash只读程序存储器和内部集成了看门狗系统,兼容标准 8051 指令系统及引脚。它集 Flash 程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位STC89C52单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机STC89C52 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。主要特性如下与MCS-51
7、 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环 数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道 低功耗的闲置和掉电模式片内振荡器和时钟电路 SCT89C52 引脚功能介绍:SCT89C52 单片机为40引脚双列直插式封装。 其引脚排列和逻辑符号如图 所示。 各引脚功能简单介绍如下: VCC:供电电压 GND:接地 STC89C52单片机引脚图P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P0口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序
8、数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管
9、脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为SCT89C52的一些特殊功能口:P3.0 RX
10、D(串行输入口)l P3.1 TXD(串行输出口)l P3.2 INT0(外部中断0)l P3.3 INT1(外部中断1)l P3.4 T0(记时器0外部输入)l P3.5 T1(记时器1外部输入)l P3.6 WR (外部数据存储器写选通)l P3.7 RD (外部数据存储器读选通)同时P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,保持RST脚两个机器周期的高电平时间。ALE / PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频
11、率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN: 外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部RO
12、M。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.2温度传感器的选择如果采用热敏电阻,可满足测量范围,但热敏电阻精度、重复性、可靠性较差,传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高,软件编程也比较复杂。如果在温度测控系统中,采用单片温度传感器,比如AD590,LM35等。但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂。另外,这种测温装置的一根线上只能挂一
13、个传感器,不能进行多点测量。即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。DS18B20数字式温度传感器,与传统的热敏电阻有所不同的是,使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。部分功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,这也就缩短了开发的周期。同时能够在单总线上连接多个DS18B20,进行多点测温。使实现多点测控温度变得简单
14、,而且软件编程也不太复杂。多点测控温度在工农业中有重要的应用价值,对于实现工农业的自动化控制有重大的意义。一DS18B20单线数字温度传感器,具以下有独特的优点:( 1 )采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。( 2 )测量温度范围宽,测量精度高DS18B20的测量范围为-55+125;在-10+ 85°C 范围内,精度为±0.5°C。( 3 )在使用中不需要任何外围元
15、件。( 4 )支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。( 5 )供电方式灵活,DS18B20可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定要求时,可以不接外部电源,从而使系统结构更简单,可靠性更高。( 6 )测量参数可配置,DS18B20的测量分辨率可通过程序设定 912 位。( 7 )负压特性。电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。( 8 )掉电保护功能DS18B20内部含有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的
16、电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1 ,为计数器提供一频率稳定的计数脉冲。高温度系数晶振随温度变化其震荡频率明显改变,很敏感的振荡器,所产生的信号作为减法计数器 2 的脉冲输入,为计数器 2 提供一个频率随温度变化的计数脉冲。图中还隐含着计数门,当计数门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将 -55 所对应的基数分别置入减法计数器 1 和温度寄存器中,减法计数器
17、1 和温度寄存器被预置在 -55 所对应的一个基数值。减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1 ,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。DS18B20 的管脚排列及封装图DQ 为数字信号输入 / 输出端; GN
18、D 为电源地; VDD 为外接供电电源输入端,电源供电 3.05.5V (在寄生电源接线方式时接地)。DS18B20与单片机的连接方式有两种,分别是寄生电源方式和外接电源方式。寄生电源工作方式1-WIRE 网络具有严谨的控制结构,一般通过双绞线与 1-WIRE 元件进行数据通信,它们通常被定义为漏极开路端点,主 / 从式多点结构,而且一般都在主机端接上一个上拉电阻 +5V 电源。通常为了给 1-WIRE 设备提供足够的电源,需要一个 MOSFET 管将 1-WIRE 总线上拉至 +5V 电源。DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-WIRE 器件将
19、不响应主机,因此读写时序很重要。系统对 DS18B20 的各种操作必须按协议进行。根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转换必须经过以下 4 个步骤 :(1)每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500us ,然后释放,DS18B20 收到信号后等待16us60us 左右,然后发出60us240us 的存在低脉冲,主CPU收到此信号后表示复位成功。(2)发送一条 ROM 指令,如下表所示:指令名称指令代码指令功能读 ROM33H读DS18B20ROM中的编码(即读 64 位地址)ROM匹配(符合 ROM)55H发出此
20、命令之后,接着发出64位ROM编码,访问单总线上与编码相对应DS18B20使之作出响应,为下一步对该DS18B20的读写作准备搜索 ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过 ROM0CCH忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作警报搜索 0ECH该指令执行后,只有温度超过设定值上限或下限的片子才做出响应(3)发送存储器指令,如下表所示:指令名称指令代码指令功能温度变换44H启动DS18B20进行温度转换,转换时间最长为 500ms(典型为200ms),结果存入内部9字节 RAM 中 读暂存器0BE
21、H 读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第3,4字节写上,下限温度数据命令,紧跟该命令之后,是传送两字节的数据复制暂存器48H将RAM中第3 ,4字节的内容复制到EEPROM中重调 EEPROM0B8HEEPROM中的内容恢复到RAM中的第3 ,4字节读供电方式0B4H 读DS18B20的供电模式,寄生供电时DS18B20 发送“0”,外接电源供电DS18B20发送“1” (4)进行数据通信。DS1820 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:(1)每一次读写之前都要对 DS18B20 进行复位,复位成功后发
22、送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后释放, DS18B20 收到信号后等待 16 60 微秒左右,后发出 60 240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。(所有的读写时序至少需要 60us ,且每个独立的时序之间至少需要 1us 的恢复时间。在写时序时,主机将在下拉低总线 15us 之内释放总线,并向单总线器件写 1 ;若主机拉低总线后能保持至少 60us 的低电平,则向单总线器件写 0 。单总线仅在主机发出读写时序时才向主机传送数据,所以,当主机向单总线器件发出读数据
23、指令后,必须马上产生读时序,以便单总线器件能传输数据。(2)在写数据时,写 0 时单总线至少被拉低 60US, 写 1 时 ,15US 内就得释放总线。(3)转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0 ,这 5 位为 0 ,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0 ,这 5 位为 1 ,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。(4)较小的硬件开销需要相对复杂的软件进行补偿,由于 DS1820 与微处理器间采用串行数据传送,因此,在对 DS1820
24、进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用 PL/M 、 C 等高级语言进行系统程序设计时,对 DS1820 操作部分最好采用汇编语言实现。(5) 在 DS1820 的有关资料中均未提及单总线上所挂 DS1820 数量问题,容易使人误认为可以挂任意多个 DS1820 ,在实际应用中并非如此。当单总线上所挂 DS1820 超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。四DS18B20与单片机的接口电路:P3.4口和DSl8B20的引脚DQ连接,作为单一数据线。本验证电路只使用了一片DSl8B20 ,为了简单起见,采用外部供电的
25、方式,如下图:2.3 显示电路采用七段LED数码显示,LED显示器内部由7段发光二极管组成,因此亦称之为七段LED显示器,由于主要用于显示各种数字符号,故又称之为LED数码管。每个显示器还有一个圆点型发光二极管,用于显示小数点。但其编程相对复杂,可显示字符比较少。而且不可以显示中文字体,而本设计中需要显示中文,因而采用七段LED数码管显示不能实现。而采用HM12864汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。能够很好的显示我们需要显示的信息,而且它与单片机的接口电路时比较简单的。
26、比起LED显示的接口电路要简单很多,而其显示的内容要多很多,使得用户获得的信息更加的全面,能够更好的,更及时的掌握系统运行的信息,便于用户对系统的掌控。一HM12864概述主要技术参数和显示特性:电源:VDD 3.3V+5V(内置升压电路,无需负压);显示内容:128列× 64行显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光.二模块引脚说明128X64HZ 引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号
27、5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位 低电平有效18NC空脚19LED_A-背光源正极(LED+5V)20LED_K-背光源负极(LED-OV)逻辑工作电压(VDD):4.55.5V电源地(GND):0V工作温度(Ta):060(常温) / -2075(宽温)三显示坐标关系
28、1、图形显示坐标水平方向X以字节单位 垂直方向Y以位为单位2、汉字显示坐标 X坐标Line180H81H82H83H84H85H86H87HLine290H91H92H93H94H95H96H97HLine388H89H8AH8BH8CH8DH8EH8FHLine498H99H9AH9BH9CH9DH9EH9FH3、字符表四液晶显示器与单片机的接口电路HM12864与单片机的接口电路分为两种一种是串口方式,另一种是并口方式。并口方式连接比较复杂,而且占用单片机的接口多,优点是传输数据速度快。串口方式连接比较简单,占用单片机接口少,缺点是传输数据速度慢。本验证电路中传输的数据不是太多,而且对于数
29、据传输速度没有太高的要求,因此用连接比较简单的串口方式比较合理。SCT89C52与HM12864串口连接方式SCT89C52与HM12864并口连接方式2.4 单片机与计算机串行通行电路一串口通信功能实现在实际的工作中,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。串行通信是指:数据是一位一位按顺序传送的通信方式。它的突出优点是只需一对传输线(利用电话线就可以作为传输线),这样就大大降低了成本,特别适用与远距离通信,其缺点是传送速度低。二MAX232与单片机接口电路设计下图为MAX232与单片机接口电路;通过它可以把单
30、片机和计算机连接起来,实现远程通讯功能。它可以实现单片机与计算机之间的双向通信,即可以实现从计算机向单片机发送数据,也可以实现计算机从单片机读取数据。可以采用此接口电路再结合一定的软件程序可以实现计算机远程操控单片机,从而使控制端更加灵活,更加方便直接和高效。由于时间有限所以本验证电路中并没有实现此功能。2.5 温度控制部分的电路本验证电路中加热运用的是电阻丝进行加热,制冷运用的是半导体制冷片,可以作为一个小型的恒温箱。而在现实大型的温控中,加热和制冷主要采用压缩机来实现。半导体制冷是运用帕尔帖效应原理进行温度控制,它具有体积小、重量轻、寿命长、无噪音、无机械运动、制冷灵活迅速、温控精度高、不
31、需制冷剂,对环境无污染等优点。半导体制冷器工作原理当直流电通过具有热电转换特性的导体组成的回路时具有制冷功能这就是所谓的热电制冷。半导体制冷是热电制冷的一种,即直流电通过由半导体材料制成的PN结回路时,在PN结的接触面上有热电能量转换的特性,又由于半导体材料是一种较好的热电能量转换材料,在国际上热电制冷器件普遍采用半导体材料制成,因此称为半导体制冷。半导体的热电效应包括塞贝克效应、帕尔帖效应、汤姆逊效应等不同的效应,半导体制冷技术主要是帕尔帖效应在制冷技术方面的应用。帕尔帖(peltire)效应就是电流流过两种不同导体的界面时,将从外界吸收热量,或向外界放出热量。由帕尔帖效应产生的热流量称作帕
32、尔帖热。 对帕尔帖效应的物理解释是:电荷载体在导体中运动形成电流。由于电荷载体在不同的材料中处于不同的能级,当它从高能级向低能级运动时,便释放出多余的能量;相反,从低能级向高能级运动时,从外界吸收能量。能量在两材料的交界面处以热的形式吸收或放出,称这种现象为帕尔帖效应。单片帕尔帖元件吸收或放出的热量是有限的,在实际应用中,通常是把许多帕尔帖元件级联起来,这样就制成了半导体制冷器。由以上分析可知:(1)使用半导体制冷器进行温度控制,只需控制流过半导体制冷器的电流。改变电流方向可以实现加热和制冷的转换;改变电流的大小可以调节吸收或放出热量的大小,而且可以根据需要采取并联或者串联结构。(2)半导体制
33、冷器的制冷量受环境温度影响。在不同环境温度条件下同一个半导体制冷器所能达到的温控下限不一样。(3)焦耳效应和热传导影响了半导体制冷器的制冷效果。当半导体制冷器处于制冷状态时,应该使用风扇对其进行散热,减少焦耳效应和热传导对半导体制冷器制冷效果的影响。温度控制执行电路2.6 按键控制部分接口电路当按键没有按下的时候各引脚为高电平,当某一按键按下时,与其相连的引脚的电压被拉低,引脚变成低电平,电路图如下:按键接口电路2.7 温度报警电路本验证电路采用发光二级管报警电路,判断温度的差值是否与预设一样,如不一样,需要报警,则将P3.4引脚位置置1,发光报警,(也可以采用蜂鸣器发声报警,但考虑到如果采用
34、蜂鸣器报警时,发声时间有时可能比较长,容易产生噪音,让人感觉不适,而采用发光报警则不会出现这种情况,所以采用发光二极管报警比较好,而在现实工业生产中则需要采用专门的报警装置来产生报警,报警的强度需要加强。)报警电路硬件连接如图:报警发光二极管电路连接图3. 软件设计系统程序主要包括主程序,DS18B20复位程序,DS18B20读写程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,温度比较程序,按键程序等。3.1温度传感器DS18B20模块软件设计 DS18B20 1-Wire总线的基本通信协议作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量
35、几乎不受限制。为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5k左右)。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。复位、读和写是1-Wire总线通信的基础,下面通过具体程序详细介绍这3种操作的时序要求。1 1-Wire总线的复位复位是1-Wire总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。如如程序所示,产生复位信号时主机首先将总线拉低480960s然后释放,由于上拉电阻的存在,此时总线变为高电平。1-Wire总线器件在接收到有效跳变的1560s内
36、会将总线拉低60240s,在此期间主机可以通过对DQ采样来判断是否有从器件挂接在当前总线上。总线复位程序:/*/ DS18B20复位和初始化函数: DS18B20_Reset(void)/ 功能: 8051发出时间长度>=480us的低电平到数据线,然后拉高数据线维持1560us/ 输入: 无/ 输出: DS18B20被复位/ 返回: 无/*void DS18B20_Reset(void)uchar i;DQ = 0; /拉低数据线DQi = 80; /使用12MHz晶体时用80,根据晶体频率按比例增减i的值while(i-);/软件延时,"while(i-);"的反
37、汇编代码单次循环消耗6us,80*6us=480usDQ = 1;i = 5; /使用12MHz晶体时用5,根据晶体频率按比例增减while(i-); /软件延时,"while(i-);"的反汇编代码单次循环消耗6us,5*6us=30us2 1-Wire总线的写操作由于只有一条I/O线,主机1-Wire总线的写操作只能逐位进行,连续写8次即可写入总线一个字节。如程序所示,当单片机的时钟频率为11.0592MHz时,程序中的语句DQ=0或DQ=1可以产生1s的延时。向1-Wire总线写1bit至少需要60s,同时还要保证两次连续的写操作有1s以上的间隔。若待写位为0则主机拉
38、低总线60s然后释放(DQ=1),写0操作完成。若待写位wbit为1,则主机拉低总线并在115s内释放,然后等待60s,写1操作完成。向总线写1个字节程序:/*/ 写一个字节数据或命令函数: bytewrite(uchar dat)/ 功能: 写一个字节数据或命令到DS18B20中/ 输入: dat是准备写入DS18B20的一个命令字节或数据字节/ 输出: 命令字节或数据字节被写入DS18B20中/ 返回: 无/ 按位写入: 位值1写法:在DQ上发 1 15us低电平后跟高电平,应使位时间>=60us/ 位值0写法:在DQ上发60120us低电平后跟高电平,应使位时间>=60us/
39、 注意:延时时间的统计计算需要浏览反汇编代码/*void bytewrite(uchar dat)uchar i, j;for(j=0; j<8; j+)if(dat&0x01) /如果当前位的值为1,发115us低电平后跟高电平到数据线DQ DQ = 0; /拉低数据线DQ DQ = 0; /延时1us DQ = 0; /到此共延时2us, 1us<2us<15us DQ = 1; /拉高数据线DQ i = 7; /自DQ拉低后到此语句执行完毕共耗时4us while(i-); /每次循环耗时8us,7*8us=56us, 56us+4us=60us else /如
40、果当前位的值为0,发60120us低电平后跟高电平到数据线DQ DQ=0; /拉低数据线DQ i = 8; while(i-); /延时约65us, 60us<65us<120us DQ =1; /拉高数据线DQ DQ =1; /延时1us DQ =1; /延时2us dat = dat>>1; /右移,准备下一个位 3 1-Wire总线的读操作与写操作类似,主机对1-Wire总线的读操作也只能逐位进行,连续读8次,即可读入主机一个字节。从1-Wire总线读取1bit同样至少需要60s,同时也要保证两次连续的读操作间隔1s以上。如程序所示,从总线读数据时,主机首先拉低总
41、线1s以上然后释放,在释放总线后的115s内主机对总线的采样值即为读取到的数据。从总线读1位和一字节程序:/*/ 读取一位数据函数: bit bitread(void)/ 功能: 51发长3us的低电平到数据线, 然后拉高数据线7us,再读回数据线,最后由/ 软件延时消耗掉60us位时间的剩余部分。/ 输入: 无/ 输出: 无/ 返回: 位值/*bit bitread(void)uchar i;bit dat;DQ = 0; /拉低数据线DQi+; /模拟115us的延时,反汇编显示实际延时3usDQ = 1; /拉高数据线DQi+; i+; /适当延时,反汇编显示实际延时7usdat = D
42、Q; /至此,DS18B20会在DQ上给出位值,读回此位值i = 8; /从DQ拉低至此,反汇编显示已耗时13us, 60us-13us=47us约=48uswhile(i-); /软件延时,"while(i-);"的反汇编代码单次循环消耗6us,8*6us=48usreturn(dat); /返回位值/*/ 读取一个字节数据函数: uchar byteread(void)/ 功能: 通过8次调用读取一位函数, 从DS18B20读回一个字节值,注意先读的是最低位/ 输入: 无/ 输出: 无/ 返回: 字节值/*uchar byteread(void)uchar i, j,
43、dat;dat = 0;for(i=1; i<=8; i+) j = bitread(); /顺序读8个位 dat >>= 1; dat |= (j<<7); /组装成一个字节 return(dat); /返回字节值4. 1-Wire总线ROM功能命令在DS18B20内部光刻了一个长度为64bit的ROM编码,这个编码是器件的身份识别标志。当总线上挂接着多个DS18B20时可以通过ROM编码对特定器件进行操作。ROM功能命令是针对器件的ROM编码进行操作的命令,共有5个,长度均为8bit(1Byte)。读ROM(33H)当挂接在总线上的1-Wire总线器件接收到此
44、命令时,会在主机读操作的配合下将自身的ROM编码按由低位到高位的顺序依次发送给主机。总线上挂接有多个DS18B20时,此命令会使所有器件同时向主机传送自身的ROM编码,这将导致数据的冲突。匹配ROM(55H)主机在发送完此命令后,必须紧接着发送一个64bit的ROM编码,与此ROM编码匹配的从器件会响应主机的后续命令,而其他从器件则处于等待状态。该命令主要用于选择总线上的特定器件进行访问。跳过ROM(CCH)发送此命令后,主机不必提供ROM编码即可对从器件进行访问。与读ROM命令类似,该命令同样只适用于单节点的1-Wire总线系统,当总线上有多个器件挂接时会引起数据的冲突。查找ROM(F0H)
45、当主机不知道总线上器件的ROM编码时,可以使用此命令并配合特定的算法查找出总线上从器件的数量和各个从器件的ROM编码。报警查找(ECH)此命令用于查找总线上满足报警条件的DS18B20,通过报警查找命令并配合特定的查找算法,可以查找出总线上满足报警条件的器件数目和各个器件的ROM编码。5. DS18B20器件功能命令与1-Wire总线相关的命令分为ROM功能命令和器件功能命令两种,ROM功能命令具有通用性,不仅适用于DS18B20也适用于其他具有1-Wire总线接口的器件,主要用于器件的识别与寻址;器件功能命令具有专用性,它们与器件的具体功能紧密相关。下面是DS18B20的器件功能命令。启动温
46、度转换(44H)该命令发送完成后,主机可以通过调用读字节函数判断温度转换是否完成,若读字节函数的返回值为0则表示转换正在进行,若读字节函数的返回值为1则表示转换完成。读RAM(BEH)该命令发送完成后,主机可以通过调用读字节函数将DS18B20中RAM的内容从低位到高位依次读出。写RAM(4EH)该命令发出后,主机随后写入1-Wire总线的3字节将依次被存储到DS18B20的报警上限、报警下限和配置寄存器中。复制RAM(48H)该命令会将DS18B20的报警上限、报警下限和配置寄存器中的内容复制到EEPROM中。该命令发出后,主机可以通过调用读函数判断复制操作是否完成,若读函数的返回值为1,则
47、表示复制操作完成。回读EEPROM(B8H)该命令会将存储在EEPROM中的报警上限、报警下限和配置寄器的内容回读到RAM中,主机可以通过调用读字节函数判断回读操作是否完成,若读字节函数的返回值为1则表示回读操作完成。DS18B20在上电时会自动进行一次回读操作。6.主机与DS18B20的通信流程主机通过1-Wire总线接口对DS18B20的每次访问都以复位信号和ROM功能命令开始,访问的结束位置是不确定的,这与具体的功能命令相关。对总线上的DS18B20来说,复位信号意味着又一次通信的开始,器件对此的响应是拉低总线以告知主机自身的存在,然后准备接收ROM功能命令。7.DS18B20温度读取程序DS18B20上电后处于空闲状态,需要控制器发能完成温度转换。DS18B20的单线通讯功能是分时完成的,具有严格的时序要求,而SCT89C52单片机并不支持单线传输,必须采用软件的方法来模拟单线的协议时序。DS18B20的操作必须严格按照协议进行。工作协议流程为:主机发复位脉冲初始化DS18B20DS18B20发响应脉冲主机发ROM操作指令主机发存储器操作指令数据传输。温度转换读取温度数值程序流程:1.初始化DS18B20;2.发跳过ROM检测命令;3.发开始温度转换命令;4.延时一秒,等待温度转化完成;5.初始化DS18B20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教学流程设计规范
- 网络批发商风险管理及应对策略考核试卷
- 禽类屠宰行业发展趋势与挑战考核试卷
- 虚拟时尚设计平台考核试卷
- 2023中国彩妆洞察报告
- 2025年过热蒸汽干燥设备项目建议书
- 中医外科学多媒体课件-皮肤病疾患
- 2024年全球及中国别墅装修服务行业头部企业市场占有率及排名调研报告
- 玖舍文化课件
- 2019-2025年安全员之B证(项目负责人)题库与答案
- 高阶数独解题技巧讲解
- GB/T 22581-2024混流式水泵水轮机基本技术条件
- 2023-2024学年人教版八年级下册数学期末复习试题
- 第03讲三步解决一次函数的行程问题(原卷版+解析)
- 2024年社会工作者《社会工作实务(中级)》考试真题必考题
- 新能源汽车维修技术与标准
- DZ∕T 0211-2020 矿产地质勘查规范 重晶石、毒重石、萤石、硼(正式版)
- 人体常见病 知到智慧树网课答案
- 幼儿诗歌《家》课件
- 2023年调度受令资格和停电申请资格考试题库(笔试+停送电操作单+上机题)
- JJG 818-2018磁性、电涡流式覆层厚度测量仪
评论
0/150
提交评论