基于单片机的温度监测系统方案_第1页
基于单片机的温度监测系统方案_第2页
基于单片机的温度监测系统方案_第3页
基于单片机的温度监测系统方案_第4页
基于单片机的温度监测系统方案_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要信息技术的高速发展和广泛应用给人类带来了革命性的进步和影响。结果,出现的计算机和服务器机房引起了严重的日常维护。消防是计算机和服务器机房的其中之一。本文旨在设计一种基于温度监控的自动报警系统。作者通过理论探讨与实际开发相结合,研究了美国达拉斯半导体公司开发的1-wire总线技术。同时,作者基于DALLAS 1-wire总线技术和MCU实现了温度监控作为自动报警系统的一部分。此外,作者还设计并设计了一种在线且廉价的温度监测系统。关键词: 1-wire总线,DS1820, AT89C51目录1 引言1.1课题意义 1.2 课题主要研究内容2 系统硬件电路设计 2.1 基于数字温度传感器的系统硬

2、件设计方案2.2 单线总线网络2.3 系统硬件结构框图图2.4 结构框图简述2.4.1 基于 AT89C51 单片机及其外围电路的主机控制单元2.4.2 DS 1820 串行组成的单线总线网络2.4.3 LED 数显及其驱动电路2.5 系统可行应用分析3 主要元器件介绍3.1 AT89C51 3.1.1 单片机选型3.1.2 主要特点3.1.3 管脚说明3.2 DS1820 3.2.1 概述3.2.2 特点3.2.3 DS1820管脚3.2.4 DS1820管脚说明3.2.5 DS1820逻辑框图3.2.6 DS1820运行时的协议3.3 LED数显 3.4 7406/7407 4 单线总线技

3、术4.1单线总线(1-Wire Bus)技术troduction4.2 单线总线工作原理4.3 单线总线协议介绍 软件实现总结参考资料1 引言1.1 课题意义近年来,随着我国信息化进程的加快,许多高校和科研院所建设了大量的计算机机房和服务器机房。因此,在狭小的空间区域内使用了大量有价值的设备,再加上空调、测试平台等辅助设备,整个机房需要几十个电源插座(即电源插座)。一些插座触点可以消耗数十安培或更多电流。电线触点容易出现局部高温、高温,因此需要一个监控系统来“替代”机房的管理人员,在那些平时不易看到和不易看到的地方(比如隐蔽的地方)进行监控。无法在第一时间发现危险。电源线连接器)。一旦发生险情

4、,可以及时准确地向机房人员报告,确保险情得到准确及时的处理。如果进一步设计这个系统,它还可以提供预警功能:我们知道,当火灾发生时,易燃物质在一定环境下温度达到燃点时开始燃烧。该系统可设计用于提醒在场人员在发生火灾危险时采取有效措施。这内容提前警告。目前,国际温度传感器正从模拟向数字化、从集成化向智能化快速发展。如今,随着数字温度传感器的诞生,曾经令人眼花缭乱的电路和密集焊接的元器件,如今已被小巧、不起眼的数字传感器所取代。 MAXIM、DALLAS(被MAXIM收购)等全球有实力的公司根据不同应用领域的不同需求推出了多种产品,性能好,价格低。这为我们提供了足够的数字温度传感器选择。1.2 本课

5、题主要研究内容本课题研究是基于温度传感的火灾报警系统中温度监测与显示部分的实现。开发基于智能温度传感器应用技术和单片机应用技术。其中,涉及一线公交技术的开发与应用;单片机技术的开发与应用;智能传感器的应用。并在理论分析和技术方案的基础上,在不断的实验和方案调整中完成了温度监测系统的设计。 2 系统硬件电路设计2.1 基于数字温度传感器的系统硬件设计方案图2-1 监控系统示意图DS1820的所有功能和操作都在单片机的控制之下。线路连接数个DS1820传感器,可进行多点温度采集。值得注意的是,所有指令码都通过单线总线串行输出到DS 1820,读取的数字温度值也以串行方式输入到单片机并存储在数据缓冲

6、器中。 2.2 单线总线网络根据DS 1820数字温度传感器的功能特点,选择单线总线的网络结构。该网络基于具有单线总线协议的 DS1820。其特点将在后面的章节中详细介绍,此处不再赘述。 图2-2 系统逻辑框图2.3 系统硬件结构框图型网络; LED数显及其驱动电路。电路原理图如下: 2.4 结构框图简述2.4.1 基于AT89C51单片机的主机控制单元及其外围电路AT89C51单片机功能强大,I/ O端口,但它的数据暂存内存空间比较小,只有128字节。 DS 1820的ROM码为64位,也就是说,记录一个ROM码占用了8字节的数据暂存内存空间,外加搜索、温度值存储、指针等操作的额外分配。内存

7、空间。其实AT89C51单片机部门也没有多少剩余,在编程中发现最多内容10个ROM码。即使添加额外的 8 字节 ROM 代码也必须使用扩展的片外 RAM。考虑到该系统目前仅计划应用于小型机房,监控点并不多;同时,本设计的重点是数字温度传感器及其一线总线技术的应用研究。因此,没有办法通过使用外部RAM来扩大单线总线网络的规模。相信即使系统因为某种原因需要扩展单线总线网络,无论是选择单片机替代,还是选择扩展RAM,实现起来应该都没有太大的障碍。 AT89C51有4个I/O口,分别是P0口、P1口、P2口和P3口。三个 I/O 端口用于与系统的其他部分连接以实现不同的功能:端口 P1 连接到由 10

8、 个 DS 1820 传感器组成的单线总线网络,同时也连接显示一个 ROM 代码单个 DS 1820 传感器。接口电路。端口 P0 和 P2 连接到 LED 数显单元。 P0口接14脚反相门芯片7406,用于选择和控制6个LED显示屏灯。同时,7406还可以作为反向驱动器。 P2口接两个14针7407芯片,用于致显示容量。同时,7407还起到前驱的作用。 2.4.2 DS 1820 系列组成的单线总线网络 由最多10 台DS 1820 组成的单线总线网络,通过三线连接。它们是电源线、数据传输线和公共接地线。电源线按照DS1820的要求采用5V直流供电。在具体设计中,可以与 AT89C51 使用

9、相同的电压源。数据传输线直接连接到P1端口的P1.5管脚,对应P1寄存器的P1.5数据位,所以主机对总线上DS 1820的操作实际上是P1.5 数据位。所以在设计程序时需要注意这一点。另外,只是出于特殊情况的特殊考虑,本系统设置了一个插座,用于读取某个DS 1820传感器ROM代码。该插座在硬件上与单线总线网络的接口没有区别,只是中间的管脚接AT89C51的P1.6管脚。但在软件方面,它专门用于读取单个DS 1820的ROM代码。在实际设计中,作者在数据线上设置了一个开关跳线。当系统需要读取ROM代码时,该管脚接上拉电源,上拉电阻5K左右;系统需要切换到正常状态。当该引脚的温度监测运行时,将该

10、引脚的数据传输线连接到地线。 AT89C51可以通过读取和判断P1.6引脚来决定是切换到读ROM操作还是运行温度监控。通过一个小的切换跳线,您可以轻松地在两种功能之间切换。该跳线和DS 1820插座设置在主机面板上,使用非常方便。 2.4.3 LED数码显示屏及其驱动电路LED显示屏的工作状态有两种:一种是温度显示;另一种是温度显示。另一种是ROM代码显示。 DS 1820温度测量范围的上限为125C,因此温度的十进制显示需要使用3位数字;需要显示系统总线上10个DS 1820传感器的温度值,所以要显示系统自动分配给每个传感器的编号,必须设置2位显示;此外,考虑到数字和温度显示值相邻可能会混淆

11、,因此在它们之间添加了一个单独的数字。这里最后的选择是设置6位LED显示。显示 ROM 代码时,即使显示为 16 进制,也必须显示至少 16 个 16 进制数。因此,在设计中,只能将6个LED从低位到高位一一显示3遍,这样就可以显示所有的LED。考虑到手动录制所需的时间,软件设计采用了无限循环显示方式。要中止显示 ROM 操作,只需拔下被测 DS 1820 并跳动切换跳线即可测量温度操作。本系统采用7406和7407作为电路驱动芯片,主要考虑简化硬件设计和软件设计。降低系统硬件和软件的复杂性。方便后期调试,为以后可能的功能扩展留出空间。当LED显示屏超过最高温度时,系统还可以扩展控制电路。当监

12、控点温度超标时,自动开启风扇降温。如果温度仍不能降至控制范围内,则会开启报警系统,并提醒工作人员。有效的控制措施。 2.5 系统的可行性应用分析由于监测点的数量不确定,系统的规模应具有一定的可扩展性。也就是说,总线上的传感器数量可以在一定范围内任意增加或减少。系统的正常运行不会受到传感器数量变化的影响。系统必须能够同时监测多个点的温度,所以必须具备地址查询功能。此外,每个DS 1820传感器都有一个ROM码,为实现地址查询提供了技术上的可能。为了支持总线上的地址识别,需要事先读取 DS 1820 传感器 ROM 代码。因此,系统必须具有读取和显示ROM代码的功能。 作为多通道监测系统,需要确认

13、多个测量点的实际地理位置。也就是说,应该明确某个传感器放置在特定的地方。否则,即使系统提供了某个线路触点温度异常的信息,管理人员也无法确认是哪个触点出现问题。 这里的解决方案是使用自动排序、双地址方案: 64位ROM码可以确认传感器的唯一性,但是直接用在传感器的现场识别中还是很不方便的。如果主机可以自动排序所有安装在总线上的传感器。并且编译容易识别,可以很好的解决这个问题。但是,这也要求传感器的排序结果必须是主机唯一的,否则在系统重启后可能会出现双地址排序错误的问题。 DS1820本身具有报警功能。当测得的温度值超过主机设定的上限或下限时,DS1820会向总线致报警信号,监控总线的主机会知道报

14、警信息。该功能的设置使我们能够在系统设计中增加手段和实现方法。 但是,经过仔细研究,得出的结论是轮询方法更合适。作为报警系统,要克服和避免漏报的问题。当总线上的 DS 1820 发生故障时,DS 1820 不会提供警报,即使温度值超出公差。而传感器的故障情况,管理者也无从得知。虽然使用轮询访问方式也无法克服从站意外故障的问题,但由于轮询会定期访问每个 DS 1820 传感器,作为管理员,您可以随时知道总线上的某个从站出现故障,并且可以与时间进行通信.处理。这样,可以提高系统本身的可靠性,减少漏失故障的机会。 因为我国普遍采用摄氏温度测量方法。因此,最终的测量结果也应该以人们更习惯的十进制度摄氏

15、度来直观清晰地显示出来。 3 主要元器件介绍3.1 AT89C51 3.1.1 单片机选型深入测试领域并发挥其作用,是现代测试技术发展的必然趋势,也是设计的通用方法目前的智能仪器。从数据总线宽度来看,主要有8位计算机、16位计算机、32位计算机。其中,32位单片机近年来在信号分析处理、语音处理、数字图像处理等数字信号处理应用中得到广泛应用。 ,但在工业测控现场,以8位和16位计算机为主。对于本课题涉及的多路温度监测,使用单片机的主要目的是组成具有一定判断和计算能力的计算机。具有显示和通讯等功能的智能测量仪器,其处理的信息量和复杂性足以使用8位计算机,因为它是温度。目前,单片机制造商众多,尤其是

16、近年来微电子技术和计算机技术的飞速发展,比较有名的有英特尔、飞利浦、微芯、摩托罗拉、Zilog、爱特梅尔等半导体公司。由于采用智能数字温度传感器,省去了A/D转换电路、信号放大电路等外围电路,只需从一个I/O引出总线即可连接多个传感器组成多点检测系统端口引脚。 .考虑到一般单片机I/O口的驱动能力,一条总线上可以承载的传感器数量是有限的。传感器过多会导致数据丢失和误码。原则上,总线上的传感器数量应根据测试结果而定。当检测点较多且总线的负载能力超过单总线的负载能力时,还可以根据需要考虑在软件和硬件方面进行改进,从而在总线上安装更多的传感器。此外,单片机必须分配足够的内存来存储DS 1820的RO

17、M代码。由于DS 1820的ROM代码很长(64位),会占用很大的寄存器空间。如果占用空间太大,则需要为单片机设计外部扩展寄存器。这里为了开发方便,选择了经典的单片机AT89C51。 3.1.2 主要特性 兼容 MCS-51 4K 字节可编程闪存 寿命:1000 次写入/擦除周期 数据保持时间:10 年 全静态操作:0Hz-24Hz 三级程序存储器锁定 128 * 8 位内部 RAM 。 32 条可编程 I/O 线。两个 16 位定时器/计数器。 5个中断源。可编程串行通道。低功耗空闲和掉电模式。片上振荡器和时钟电路。 3.1.3 引脚说明VCC:电源电压。 GND:接地。 P0 口:P0 口

18、为 8 位开漏双向 I/O 口,每个引脚可吸收 8TTL 栅极电流。当端口 P1 的管脚第一次写 1 时,定义为高阻输入。 P0 可用作外部程序数据存储器,可定义为数据/地址的第 8 位。在 FIASH 编程中,P0 端口用作原始代码输入端口。 FIASH 验证时,P0 输出原始码。此时,必须将外部 P0 拉高。 P1 端口:P1 端口是一个 8 位双向 I/O 端口,提供上拉电阻。 P1端口缓冲器可以接收和输出4TTL栅极电流。 P1端口引脚写1后上拉高电平,可作为输入使用。当 P1 端口被外部拉低到低电平时,它会输出电流,这是由于外部上拉引起的。在 FLASH 编程和验证过程中,接收 P1

19、 端口作为第八个地址。 P2 端口:P2 端口是一个带有上拉电阻的 8 位双向 I/O 端口。 P2 端口缓冲器可以接收和输出 4 个 TTL 栅极电流。当P2端口写“1”时,其引脚接上拉电阻,上拉电阻作为输入。因此,当它作为输入时,P2口的管脚被外部拉低,电流就会输出。这是由于上拉。当 P2 端口用于外部程序存储器或 16 位地址外部数据存储器访问时,P2 端口输出地址的高 8 位。当给定地址“1”时,它利用外部上拉电阻。 P2口在读写外部8位地址数据存储器时,输出其特殊功能寄存器的内容。 P2端口在FLASH编程和验证过程中接收高位八位地址信号和控制信号。 P3口:P3口引脚为8个双向I/

20、O口,带上拉电阻,可接收和输出4路TTL门极电流。当 P3 端口写“1”时,它们被拉高并用作输入。作为输入,由于外部下拉为低电平,P3端口将输出电流(ILL)。这是由于上拉。 P3口也可以作为AT89C51的一些特殊功能口使用,如下表: P3.0 RXD(串口输入口) P3.1 TXD(串口输出口) P3.2 /INT0(外部中断0) P3 .3 /INT1(外部中断 1) P3.4 T0(定时器 0 外部输入) P3.5 T1(定时器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器read strobe) P3 端口同时接收一些控制信号,用于 Fl

21、ash 编程和编程验证。 RST:复位输入。当振荡器复位器件时,将 RST 引脚保持高电平两个机器周期。 ALE/PROG:访问外部存储器时,地址锁存使能输出电平用于锁存地址的状态字节。在 FLASH 编程期间,该引脚用于输入编程脉冲。正常情况下,ALE 端输出一个频率周期恒定的正脉冲信号,为振荡器频率的 1/6。因此它可以用作外部输出的脉冲或用于定时目的。但是请注意,当用作外部数据存储器时,会跳过 ALE 脉冲。要禁用 ALE 的输出,请将 SFR8EH 地址设置为 0。此时,ALE 仅在 MOVX 和 MOVC 指令为 ALE 时有效。此外,该引脚被略微拉高。如果微处理器在外部执行状态 A

22、LE 禁用,则设置无效。 /PSEN:外部程序存储器的选通信号。在从外部程序存储器取指期间,/PSEN 每个机器周期有效两次。但是在访问外部数据存储器时,这两个有效的/PSEN 信号不会出现。 /EA/VPP:当/EA保持低电平时,在此期间外部程序存储器(0000H-FFFFH),不管是否有程序存储器。注意当加密模式为1时,/EA会被锁定为RESET;当 /EA 端保持高电平时,程序存储器将存储在这里。在 FLASH 编程期间,该引脚也用于施加 12V 编程电源 (VPP)。 XTAL1:反向振荡放大器的输入,部分时钟工作电路的输入。 XTAL2:反相振荡器的输出。 3.2 DS1820 3.

23、2.1 概述DS1820 数字温度计提供9 位温度读数,指示设备的温度。信息通过单线接口致到 DS1820 和从 DS1820 致,因此从 CPU 到 DS1820 只需要一根线(和地线)。读取、写入和完成温度转换所需的电源可由数据线本身提供,无需外接电源。因为每个 DS1820 都有一个唯一的芯片序列号,所以多个 DS1820 可以存在于同一条单线总线上。这内容将温度敏感设备放置在许多不同的地方。此功能的应用包括 HVAC 环境控制建筑物。物理设备或机械的温度检测,以及过程监控中的温度检测。 3.2.2独特的单线接口 仅 1 个用于通信的接口引脚多点功能简化了分布式温度传感应用无需外部元件1

24、25C,增量为 0.5C。等效华氏温度范围为 -67 F 至 257 F。增量为 0.9 F。温度以 9 位数字值的形式读出,温度在 1 秒内转换为用户可定义的非易失性数字(典型值)温度报警设置报警搜索命令 识别和寻址温度超出编程限制(温度报警条件)的设备应用包括恒温控制、工业系统、消费温度计或任何热系统4 DS1820 引脚说明 引脚 符号 说明1 GND 地2 DQ 开漏数据输入/输出引脚,用于单线操作3 VDD 可选 VDD 引脚 两种供电方式DS 1820 有两种供电方式可供选择,即数据总线供电和外部供电供电。采用数据总线供电方式,可节省一根电线,但完成测温耗时较长;采用外接供电方式会

25、多用一根线供电,好处是可以更快的得到测温结果。3.2.5 DS 1820的逻辑框图DS 1820 使用两个 8 字节 RAM 存储 9 位温度值,最高有效位是符号位。下图为DS 1820的温度储存方式。当温度为负时,S=1,当温度为正时,S=0。3.2.6 DS1820工作过程中的协议(1)初始化; (2) ROM操作指令; (3) 内存操作指令; (4) 数据处理; 3.3 LED数码显示为了使监测结果显示更加直观,系统采用6只10针的数码显示管与相应的驱动电路组成一个显示模块。 (右图为管脚配置) 3.4 7406/7407 14脚反相门芯片7406作为反向驱动器。 14 针 7407 芯

26、片充当正向驱动器。4. 1-Wire 总线技术4.1 1-Wire 总线技术介绍DALLAS SEMICONDUCTOR 推出的1-Wire 总线技术使用一条信号线来传输时钟和数据。而且数据传输是双向的,具有线路简单、减少硬件开销、成本低、软件设计方便、易于总线扩展和维护等优点,具有无可比拟的优势。 单线总线适用于能够控制一个或多个从设备的单个主系统。主机可以是微控制器,从机是单线总线设备。它们之间的数据交换只通过一根信号线。当只有一台从设备时,系统可以作为单节点系统运行;当有多个从设备时,系统作为多节点系统运行。 4.2 单线总线的工作原理顾名思义,单线总线只有一根数据线,系统中的数据交换和

27、控制都在这条线上完成。设备(主设备或从设备)通过漏极开路或三态端口连接到此数据线,当设备不致数据时,这内容释放总线供其他设备使用。其等效电路如下图所示。单线总线需要外接4.7k欧左右的上拉电阻,这样总线空闲时,其状态为高电平。 master和slave之间的通信一般通过以下3个步骤完成:初始化1-wire设备;识别 1-wire 设备;交换数据。由于两者是主从结构,所以从机只有在主机调用从机时才能响应。因此,主机在访问 1-wire 设备时必须严格遵循单线总线命令顺序:初始化、ROM 命令和功能命令。如果出现故障,1-wire 设备将不会响应主机(搜索 ROM 命令除外,警报搜索命令除外)。通

28、信信号模式要求所有单线总线设备遵循严格的通信协议,以保证数据的完整性。4.3 单线总线协议简介单线总线系统网络的主从机遵循单线总线协议进行通信。目前,大多数传感器系统采用放大、传输和数模转换的处理方式。该模式下,传输方式采用并口或串口。这两种方式一般占用多条数据/控制线,限制了单片机功能的扩展。单线总线协议解决了这个问题。数字传感器的核心之一是可以使用什么协议以最大的速度和安全性传输数据,另一个是如何更好地节省硬件资源。单线总线协议是通过总线实现主设备对从设备的控制(主设备往往是微控制器等),单线总线设备以这种方式工作时充当从设备。由于只有一根线,没有解码功能,这些设备是单线总线系统中唯一的从

29、设备。所有的数据和命令都在这条总线上传输,数据和命令字节按从低到高的顺序传输。为了使其他设备能够使用这条线,单线总线协议通过一个三态门来切换传输状态,使每个设备在不传输数据时腾出数据线给其他设备。由于单线总线外接上拉电阻,总线空闲时为高电平。为了保证信号的完整性,单线总线协议定义了以下信号:复位脉冲、存在脉冲、读写0或1。除存在脉冲外,其他所有信号均由主设备致.如上图所示,RX和TX分别是数据的致端和接收端。外部环境的变化引起感光膜的变化。产生的电信号被编码成数字量,存储在专用寄存器中,并通过 DQ 端子读取。进入微控制器。主设备给一个低电平并保持480 us以清空总线并进入接收模式RX。此时

30、,上拉电阻使总线为高电平,即空闲状态。一旦单线总线设备检测到这个上升沿,它会等待1560us,并给出存在脉冲,使总线保持在60240us的低电平。写操作在读写时隙之间进行,在每个时隙中,系统只传输一个二进制位。 1-Wire协议定义的几种信号类型:复位脉冲、响应脉冲、写0、写1、读0和读1时序,它们构成了在所有总线上传输的信号。也就是说,所有的单线总线命令序列(初始化、ROM命令、功能命令)都是由这些基本信号类型组成的。这些信号,除了确认脉冲外,都是由主机致的,致的所有命令和数据都是该字节的低位字节。此外,初始化序列包括主机致的复位脉冲和从机致的响应脉冲。主机通过将单线总线拉低至少480us来

31、产生TX复位脉冲;然后主机释放总线并进入RX接收模式。当主机释放总线时,总线由低电平变为高电平时产生一个上升沿。单线总线设备检测到这个上升沿后,延迟1560us,然后单线总线设备将总线拉低60240us。我们产生一个响应脉冲。主机收到从机的响应脉冲后,表示有单线总线设备在线,此时主机可以开始操作从机上的ROM命令和功能命令。综上所述,在单线总线上进行数据传输时,单线总线设备和主机必须遵循严格的读时序和写1写0时序。在每个时序中,总线只能传输一位数据。所有读取和写入序列至少需要 60 us,每两个独立序列之间至少需要 1 us 的恢复时间。当主机将总线拉低时,读取和写入序列都开始。写序列中,主机

32、拉低总线后,在15us内释放总线,向单线总线设备写入1;如果主机将总线拉低并保持低电平至少 60 us,则将 0 写入单线总线设备。单线总线设备仅在主机致读序列时才向主机致数据。因此,主机向单线总线设备致读数据命令后,必须立即产生读序列,以使单线总线设备能够传输数据。主机致读序列后,单线总线设备开始在总线上致0或1。如果单线总线设备致 1,则保持总线为高电平,如果致 0,则将总线拉低。单线总线设备致数据后,保持15us有效。因此,主机在读序列期间必须释放总线,并且必须在 15us 内采样才能接收到从机致的一位数据。 5 系统软件设计5.1 系统程序设计总框图所有系统代码都是用汇编语言编写的。如

33、上图所示,是系统整体软件设计的逻辑框图,说明了编写软件的实际操作逻辑过程。下面结合系统的硬件结构,对系统软件的算法进行详细说明。 5.2 软件算法说明算法步骤: 1. AT89C51 监测P1.6 引脚电平,为高电平转步骤2,低电平转步骤6; 2、AT89C51向P1.6致复位脉冲并释放总线,DS 1820致响应脉冲,如果没有脉冲响应,则返回步骤1,否则进行下一步; 3、AT89C51向DS 1820致READ ROM命令,AT89C51等待监听P1.6端口; 4. DS 1820 向AT89C51 致64 位ROM 5. AT89C51将ROM 码一一显示,16 位十六进制码全部显示后,返回

34、步骤1; 6、AT89C51引出P1.5引脚后,向P1.5引脚致复位脉冲后,总线被释放,所有总线上的DS1820发出响应脉冲。如果没有脉冲,则循环执行此步骤,否则进行下一步; 7、AT89C51收到DS 1820响应,向总线致SEARCH ROM命令,进入二叉树查询子程序(二叉树查询算法及其子程序在软件中编写起来很复杂)。查询总线上所有DS 1820,匹配其ROM码,并将ROM码记录到数据暂存存储器中; 8、AT89C51向总线致复位脉冲后,释放总线,然后向总线致SKIP ROM命令,释放总线,全部总线 9、AT89C51向总线致CONVERT T命令,延时1- 2秒,所有DS 1820进行温

35、度转换并将结果存入内存; 10 、AT89C51向总线致复位脉冲,收到响应脉冲后,向总线致MATCH ROM命令; 11、AT89C51向总线致ROM码,匹配ROM码的DS 1820继续响应,其余DS 1820停止响应; 12、AT89C51致READ到总线SCRATCHPAD命令,释放总线; 13、DS 1820将内存中存储的温度转换结果致到总线; 14、AT89C51将接收到的结果转换成十进制,通过LED数码管显示; 15、系统是否已完成所有DS 1820温度读数,若未完成,程序返回步骤10进入下一个传感器的温度读数。如果完成,返回步骤8。注意:当系统进入温度监控操作时,不能再次进入读RO

36、M操作。此时如果用户想确定一个DS 1820的值,需要将开关跳线切换为读ROM操作模式。每次系统重启进入温度监控运行模式时,都必须重新搜索总线上DS 1820的ROM码。所以,如果总线上的DS 1820在系统重启前发生了变化,系统会对DS 1820进行重新排序和编号。用户每次重启时都需要注意这个问题。查看总线上的 DS 1820 是否发生了变化。如果有变化,这些 DS 1820 号码必须重新记录。相反,如果系统总线上的 DS 1820 发生变化,则必须重新启动系统。再次对 DS 1820 的 ROM 代码进行查找和排序,确保 DS 1820 编号的正确性。 5.3 单线总线协议的软件实现单线总

37、线协议的实现基于三个 I/O 操作,即是总线复位脉冲、读时序和写时序。直接相关的子程序它们是:总线复位子程序;总线读取8位数据位子程序;总线写8位数据位子程序。在8位数据位读写子程序中,涉及到读/写“0”序列和读/写“1”序列的汇编语言实现。以下是用汇编语言编写的三个子程序的源代码和说明,晶振频率12M:初始化DS 1820的子程序: INIT: L0: MOV P1,#OOH MOV R2,#5 L1:MOV R1,#125;总线低复位电平 L2:DJNZ R1、L2 DJNZ R2、L1;总线复位电平维持在 125X5=625 us MOV P1,#OFFH;释放 DS 1820 总线MO

38、V R2,#63 L3:DJNZ R2,L3;释放 DS 1820 总线并等待 63 us MOV R3, #41;监控存在脉冲 41 X 10 us L4: MOV C, P1.5 JNC L6;监测存在脉冲,跳转到延迟 420 us DEC R3 MOV A,R3 JZ L5;接收存在脉冲不存在以重新启动SJMP L4;继续监测脉冲的存在L5: SJMP L0 L6: MOV R1, #3; delay 630 us L7: MOV R6, #210 L8: DJNZ R6, L8 DJNZ R1, L7 MOV P1, #OFFH ;初始化完成释放总线RET ;退出初始化子程序 主机写时

39、序时的子程序:注:取A寄存器的8位数据写入总线WRITE: MOV R3,#8;写DS 1820的位数,一个字节8位WR1:RRC A;把一个字节分成8个比特环,移到C CLR P1.5;主机开始传输数据,总线应处于低电平状态MOV R4,#10;总线保持低电平 10 us WR2: DJNZ R4, WR2 JC WR5;从数据位判断,是写0还是1 CLR P1.5;写入器0 MOV R2,#50;写入器“0”延迟 55 ps,由 DS1820 WR3 采样:DJNZ R2,WR3 MOV P1,#OFFH;总线释放 101, s MOV R5, #10 WR4: DJNZ R5, WR4

40、DJNZ R3, WR1 ;倒入下一位SJMP WR7;写入完成,转入退出WR5:SETB P1.5; writer 1 , DS1820 总线释放MOV R2, #55 WR6: DJNZ R2, WR6;等待 551, s, DS 1820 样本DJNZ R3, WR 1;写下一位WR7:MOV P1,#OFFH MOV R5,#5 WR8:DJNZ R5,WR8 RET;退出 WRITE 子程序主机读取时序时的子程序:注意:一旦读取总线上传输的 8 位数据,结果存储在进入 A 寄存器READ: MOV R6, #8;连续读取 8 位RE1:CLR P1.5;总线在读取MOV R4, #5

41、 RE2: DJNZ R4, RE2 之前保持低电平; 5 us低电平MOV P1,#OFFH;总线释放 7 us MOV R2,#5 RE4:DJNZ R2,RE4 MOV C,P 1.5;从 DS 1820 总线读取位RRC A;将读取的位值移动到 A MOV R5, #55 RE3: DJNZ R5, RE3;最后 55 我们MOV P1, #OFFH;重新发布 DS 1820 总线MOV R4,#5 RE5:DJNZ R4,RE5;恢复 5 我们DJNZ R6, RE1;读取下一位RET; exit READ sub Program以上三个子程序都是系统工作在温度监控模式时的子程序。如

42、果系统处于读取单个DS 1820的ROM码的操作模式,则上述三个子程序中的P1.5都必须改为P1.6,才能调用。除了操作引脚不同外,这三个子程序即使在两种不同的操作模式下也几乎完全相同。为了增加程序的可移植性,WRITE和READ子程序都使用特殊功能寄存器A作为目标寄存器。在开始调用 WRITE 子程序之前,必须将目标值写入 A 寄存器。目标值写入A寄存器后,需要立即调用WRITE子程序,防止A寄存器中的值因插入其他操作而被改写。这在主程序调用 WRITE 子程序时需要特别注意。 READ 子程序是将读取的目标值循环到 A 寄存器中。在将 A 寄存器中的值传送到其他存储空间之前,请勿向 A 寄

43、存器写入或设置 0 或 1。否则,由于中间插入了其他操作,从总线读回的结果会变成错误值。因此,调用READ子程序后,应立即将A寄存器中的值写入系统分配的固定存储空间,以防止数据损坏。这在主程序调用 READ 子例程时也需要特别注意。基于WRITE和READ两个子程序,实现了单线总线网络通信协议中的双向通信。这两个子程序构成了通信协议程序软件的基础。基于 WRITE 子程序,可以轻松实现单线总线通信协议中的所有 ROM 命令和存储器命令。即实现主机AT89C51单片机到从机DS 1820数字温度传感器方向的通信。只需将命令对应的代码写入A寄存器,然后调用并执行WRITE子程序即可实现命令的致。例如,只需要: MOV A,#BEH LCALL WRITE这两条语句就可以实现READ SCRATCHPAD命令BEH的传输。基于READ子程序,也很容易实现单线总线通信协议中所有从DS 1820到主机AT89C51单片机的数据传输。也就是说,实现了从DS 18

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论