大学毕业设计-基于单总线的实时温度监控系统

合集下载

毕业设计-温度监控系统的设计

毕业设计-温度监控系统的设计

毕业设计温度监控系统的设计引言随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。

传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。

因此,了解并掌握各类传感器的基本结构、工作原理及特性是非常重要的。

由于传感器能将各种物理量、化学量和生物量等信号转变为电信号,使得人们可以利用计算机实现自动测量、信息处理和自动控制,但是它们都不同程度地存在温漂和非线性等影响因素。

传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。

因此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应用。

另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产力、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感器系统不断涌现。

温度传感器是其中重要的一类传感器。

其发展速度之快,以及其应用之广,并且还有很大潜力。

为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。

本文利用单片机结合传感器技术而开发设计了这一温度监控系统。

文中传感器理论单片机实际应用有机结合,详细地讲述了利用热敏电阻作为热敏传感器探测环境温度的过程,以及实现热电转换的原理过程。

本设计应用性比较强,设计系统可以作为生物培养液温度监控系统,如果稍微改装可以做热水器温度调节系统、实验室温度监控系统等等。

课题主要任务是完成环境温度检测,利用单片机实现温度调节并通过计算机实施温度监控。

设计后的系统具有操作方便,控制灵活等优点。

本设计系统包括温度传感器,A/D转换模块,输出控制模块,数据传输模块,温度显示模块和温度调节驱动电路六个部分。

基于18B20温度报警系统毕业设计

基于18B20温度报警系统毕业设计

基于18B20温度报警系统毕业设计摘要温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于AT89C51的温度检测及报警系统。

该系统将多个单总线温度传感器DS18B20并接在控制器的一个端口上,对各个传感器温度进行循环采集,将采集到的温度值与设定值进行比较,当超出设定的上限温度时,通过ISD1420语音电路给出语音提示及报警信号。

文中给出了单根数据线上扩展多个温度传感器的设计方法,并给出了系统实现的硬件原理图及软件流程图。

经实验测试表明,该系统测量精度高、抗干扰能力强、报警及时准确,具有一定的参考价值。

该系统设计和布线简单,结构紧凑,体积小,重量轻,抗干扰能力强,性价比高,扩展方便,在大型仓库,工厂,智能化建筑等领域的多点温度检测中有广阔的应用前景。

关键词:数字温度传感器;单总线;通信协议;DS18B20;AT89C2051;LED显示器;报警信号。

Based on the 18B20 temperature alarm system designAbstractTemperature detection and control of industrial production process, one of the more typical applications, with sensors in production and life is more widely used, using a new single-bus digital temperature sensor to achieve the test and control the temperature more rapidly development, this paper is designed based on AT89C51 temperature detection and alarm systems. The system will be more than a single-bus temperature sensor DS18B20 and connected to a port on the controller, the temperature sensors on each loop collection, the temperature will be collected to compare with the set value, when the temperature exceeds the upper limit set , through the ISD1420 voice circuit gives voice prompts and alarm signal. In this paper, a single data lines extend multiple temperature sensor design methods and gives the system implementation of hardware and software flow diagram. The experimental tests show that this high accuracy, strong anti-interference ability, alarm timely and accurate, with a certain reference value. The system design and layout simple and compact structure, small size, light weight, anti-jamming capability, cost-effective to expand convenience, in large warehouses, factories, construction and other areas of intelligent multi-point temperature measurement in a wide range of applications prospects.Key words:digital temperature sensor; single bus; communication protocols;DS18B20; AT89C2051; LED display; alarm signal.目录摘要 (I)ABSTRACT (II)第一章:绪论 (1)1.1:课题背景 (1)1.2:温度检测与及报警系统的国内外状况 (1)1.3:温度参数、温度检测和语音报警 (3)1.3.1 温度参数 (3)1.3.2 温度检测 (3)1.3.3 语音报警 (3)第二章:系统总体设计方案 (4)2.1单片机语音温度报警系统的总体设计 (4)2.2系统的基本工作过程 (4)第三章:单片机温度控制和语音报警系统硬件设计 (5)3.1温度控制和报警主机 (5)3.1.1主控制单片机 (5)3.1.2 AT89S52特点 (5)3.1.3 AT89S52主要功能特性: (6)3.1.4 温度检测和报警主机硬件电路设计 (9)3.1.5单片机及复位键控制模块 (10)3.2语音电路 (11)3.2.1 ISD1420芯片简述 (11)3.2.2 芯片引脚介绍 (12)3.2.3 芯片工作原理 (13)3.2.4 芯片工作模式 (13)3.2.5语音电路设计 (14)3.3DS18B20芯片简介 (14)3.3.1温度传感器的历史及简介 (14)3.3.2 DS18B20性能特点与内部结构 (15)3.3.3 DS18B20工作时序 (20)3.3.4 DS18B20的操作协议 (22)3.3.5 DS18B20序列号编码 (24)3.3.6 DS18B20的测温原理 (24)3.3.7 DS18B20的测温流程 (26)3.3.8 DS18B20数据校验与纠错 (26)3.3.9 DS18B20在测温系统中的应用 (28)3.3.10测温系统的硬件工作原理 (28)3.3.11 注意事项 (28)第四章软件设计 (29)4.1设计思路 (29)4.2程序设计 (31)4.2.1 主程序 (31)4.2.2 读出温度子程序 (31)4.2.3温度转化命令子程序 (32)4.2.4计算温度子程序 (32)4.2.5显示数据刷新子程序 (33)4.2.6 LED显示程序模块 (33)第五章:系统调试 (34)5.1硬件调试 (34)5.1.1 硬件静态的调试 (34)5.1.2 系统硬件调试 (35)5.2软件调试 (35)5.3软硬联调 (35)结论 (36)致谢 (37)参考文献 (38)附录 (39)第一章:绪论1.1:课题背景测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。

基于单总线的测温系统方案解析

基于单总线的测温系统方案解析

基于单总线的测温系统方案解析单总线技术是美国Dallas 公司的一项专有技术,采用单根信号线传输数据,具有节省I/O 口资源、结构简单、成本低、便于总线扩展和维护等诸多优点。

单总线技术适用于单个主机系统控制一个或多个从机设备。

Dallas 公司的单总线产品中均有一个8 字节只读存储器(ROM),用于存放产品的序列号(每个芯片唯一的64 位标识代码)。

如图1 所示,从低位起第一个字节(8 位)是器件的家族代码,表示产品的分类;接下来的6 个字节(48 位)是每个器件唯一的ID 号;最后一个字节(8 位)是前56 位的CRC 校验码。

同一种类型的器件有248 个ID 号码总量,确保了在总线上不会产生地址冲突。

传统的基于单总线的测温系统采用ROM 搜索的方式在线识别挂接在总线上器件的注册码和器件的类型,由此可在线确定总线上的器件数量。

但是,随着挂接在总线上的单总线器件增加,搜索ROM 的时间也随之增加,系统开销增大。

基于此,本设计采用支持菊链模式的新型数字温度传感器芯片DS28EA00 组建单总线测温网络。

该方案无需进行传统的ROM 搜索步骤,允许用户将器件在链路中的物理位置与序列号对应,节省了RAM 开销,简化了基于单总线的应用设计。

1 DS28EA00 特性分析DS28EA00 是具有9 位(0.5℃)至12 位(0.062 5℃)分辨率和用户可编程非易失性(NV)上/下触发点报警功能的数字温度计。

每个DS28EA 00 都有工厂编程的唯一64 位序列号。

DS28EA00 具有滞回和干扰滤波功能,使其能够在大的单总线网络中可靠工作。

与其他单总线器件(例如DS18B20)不同,DS28EA00 具有两个额外的引脚用以执行顺序检测功能。

该特性允许用户将器件在链路中的物理位置与序列号对应,例如用来测量储存塔不同高度处的温度。

如果无需顺序。

基于单总线的温度实时监控

基于单总线的温度实时监控

淮海工学院课程设计报告书课程名称:综合课程设计题目:基于单总线的温度实时监控系统系(院): ____电子工程系___________ 学期: ___ 11-12-1 _____ 专业班级: ____ DZ电子083________ 姓名: __嘉敏________ 学号: __510830310__________-1 引言随着计算机技术的发展和计算机应用的普与, 计算机在各个领域都有着广泛的应用, 特别是在一些需要精确控制的应用中采用实时的、动态的控制显得特别的重要, 通过硬件采集到的数据如何合理的、科学的处理, 是实施控制的关键, 并且方便的、功能强大的软件处理能更好地实施精确控制。

很多现有的实时控制系统的软件部分是用汇编语言编写的, 软件调试、维护起来比较困难, 应用的界面也不是很好, 给用户的使用带来了很多不便,下面是采用功能强大的可视化的高级语言Delph i 和SQL server 2000 做为后台数据库来实现软件部分。

1.1 本设计主要任务(1)对单总线设备的结构特点和以单总线技术构建起来的微型局域网的拓朴结构、网络结构优化以与设备与单总线的连接进行阐述和研究。

(2)设计基于单总线的温度采集电路,单总线和PC机串行口的接口电路。

(3)用自己熟悉的计算机语言编写温度实时监控系统软件。

1.2 设计要求(1)温度测量围-50℃~+100℃。

(2)测温分辨率不低于0.0625℃。

(3)数据传输距离不低于60米。

(4)温度测量点不少于3。

(5)温度采集间隔不底于10分钟。

(6)能显示一天实时温度变化曲线。

1.3 注意事项(1)设计时重点考虑单总线的供电问题,数据的可靠采集,单总线与PC机串口的连接问题。

(2)设计单总线与PC机接口时,要正确掌握PC机串口的电参数、DS2480B的电参数,要采取一定的过电压与过电流保护措施,防止损坏PC机串行端口。

(3)软件的界面要友好、简明、直观。

在编写软件时要重点考虑温度采集数据的存储、单总线设备的CRC循环冗余码的实现方法、从设备的“即时插即用”的算法研究等。

基于AT89C51的温度控制器设计毕业设计

基于AT89C51的温度控制器设计毕业设计

题目: 基于AT89C51的温度控制器设计摘要温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的广泛应用,利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。

随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研各个领域。

数字式温度计以数字温度传感器作感温元件,它以单总线的连接方式,使电路大大的简化。

传统的温度检测大多以热敏电阻为传感器,这类传感器可靠性差,测量温度准确率低且电路复杂。

因此,本温度计摆脱了传统的温度测量方法,利用单片机对传感器进行控制,这样易于智能化控制。

本次设计采用AT89C51单片机作为控制芯片,采用半导体集成温度传感器AD590采集温度信号来控制外围电路。

关键词:温度传感器;AT89C51单片机;AD590温度传感器ABSTRACTthe temperature detection and control is the process of industrial production is one of the typical applications, with the sensor in the production and life of the more widely used, use of novel single bus digital temperature sensor to realize the temperature measurement and control get faster development, with the era of progress and development, single-chip technology has spread to our life, work, research, each field. A digital thermometer with digital temperature sensor as a temperature-sensing element, with single bus connection, so that the circuit is greatly simplified. The traditional temperature detection mostly by the thermistor as a sensor, the sensor reliability, accurate temperature measurement rate and low circuit complexity. Therefore, the thermometer out of traditional method of temperature measurement using MCU, sensor control. It is easy to intelligent control.Key words: temperature sensor; AT89C51 microcontroller; AD590 temperature sensor目录1 系统总体方案设计 (1)2 系统硬件设计 (1)2.1 中央处理器 (1)2.1.1 AT89C51简介 (1)2.1.2特殊功能存储器 (2)2.1.3芯片擦除 (2)2.1.4复位电路的设计 (2)2.1.5时钟电路设计 (3)2.2 温度传感器AD590 (3)2.3 信号调理电路 (4)2.4 A/D转换 (5)2.5 LED显示 (7)2.6 控制电路 (9)3 系统软件设计 (10)3.1程序初始化 (12)3.2主程序 (12)3.3 A/D转换子程序 (13)3.4 标度转换子程序 (14)3.5控制子程序 (14)3.6 键盘子程序 (14)结论 (15)参考文献 (16)致谢 (17)1 系统总体方案设计本次设计采用MCS-51单片机作为控制芯片,采用半导体集成温度传感器AD590采集温度信号。

【精品】基于单片机的温度控制系统的设计毕业论文设计

【精品】基于单片机的温度控制系统的设计毕业论文设计

基于单片机的温度控制系统的设计系(院):学生姓名:专业班级:学号:指导教师:20XX 年 XX 月 XX 日声明本人所呈交的基于单片机的温度控制系统的设计,是我在指导教师的指导和查阅相关著作下独立进行分析研究所取得的成果。

除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。

对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。

作者签名:日期:【摘要】本课题主要介绍基于AT89S51单片机和DS18B20数字温度传感器的温度控制系统。

该系统利用AT89S51单片机分别采集各个温度点的温度,实现温度显示、报警等功能。

它以AT89S51单片机为主控制芯片,采用数字温度传感器DS18B20实现温度的检测,测量精度可以达到0.5摄氏度。

该系统采用LED显示,形象直观的显示测出的温度值。

本文功能设计目标包括以下几个方面:温度采集部分,时钟电路,复位电路,报警电路,继电器控制电路,按键输入部分以及数码管显示部分。

基于AT89S51单片机的单总线温度测控系统具有硬件组成简单、读书方便、精度高、测温范围广等特点,在实际工程中得到广泛应用。

【关键词】:AT89S51 DS18B20 温度测控ABSTRACTThis paper mainly introduced based on AT89S51 microcontroller and digital temperature sensor DS18B20 temperature control system. The system uses AT89S51 chip were collected in each temperature point temperature, temperature display,alarm and other functions. It takes AT89S51 MCU as the main control chip, the use of digital temperature sensor DS18B20 to realize the temperature measurement, the measurement precision can reach 0.5 degrees celsius. The system adopts LED display, intuitive display of the image of measured temperature values. In this paper, function design objectives include the following several aspects: temperature acquisition part, a clock circuit, reset circuit, an alarm circuit, a relay control circuit, a key input part and a digital display part. Based on the AT89S51 MCU single bus temperature measurement and control system has simple hardware composition, reading convenience, high precision, wide measuring range and other characteristics, are widely used in practical engineering. 【KEY WORD】: AT89S51 DS18B20 temperature control目录引言 (1)一、系统总体方案 (1)二、单片机AT89S51 (2)(一)单片机的发展概况 (2)(二)AT89S51简介 (2)三、硬件电路设计 (6)(一)温度采集部分 (6)(二)时钟电路 (7)(三)复位电路 (8)(四)按键输入电路 (8)(五)LED电路 (9)(六)报警电路 (10)(七)温度控制电路 (10)四、软件设计 (11)(一)主程序流程图 (11)(二)中断程序流程图 (13)(三)显示流程图 (14)结束语 (14)附录一原理图 (16)附录二PCB图 (17)附录三源程序 (18)参考文献 (23)致谢 (24)引言二十一世纪是科技高速发展的信息时代,电子技术、微型单片机技术的应用更是空前广泛,伴随着科学技术和生产的不断发展,需要对各种参数进行温度测量。

基于单总线技术的温度监控系统硬件设计

同时 , 业 监 控 系 统 是 一 个 很 重 要 的 监 控 系 统 领 域 。 这 工 种 监 控 系 统 普 遍 采 用 计 算 机 作 为 上 位 机 , 利 用 其 强 大 功 能 进 行 数 据 处 理 和 分 析 , 单 片 机 作 为 下 位 机 , 用 它 们 功 能 将 利
术 。它将地址线 、 据 线 、 制 线 、 数 控 电源 线 合 为 一 根 信 号 线 , 允许在 这根信 号线上 挂数百 个测控 对象 ,这些 测控对 象所 用芯片均 由该公司提供 。
方便 、 传输距离远 且抗干扰性 强等 特点 。
为 了 实 现 上 述 功 能 , 系 统 的 设 计 方 案 采 用 目前 最 新 的 本
路 转换开 关连接 到 A D上 ,变成 数字 信号 后 由计 算机进行 / 处理 。 这样 的设计存 在两大缺 点: 先, 铺设较长 的线路才 首 要
能把 现 场 传 感 器 的 信 号 输 送 到 采 集 卡 上 , 布 线 施 工 麻 烦 , 成
本较 高 ; 次 , 路传 送 的是模 拟 信 号 , 受干扰 、 损耗 。 其 线 易 易
于 掌 握 。因 此 , 极 推 广 单 总线 技 术 的应 用 会 有 较 好 的 经 济 积 效益和社会效益 [ 。 1 .
量输 出到单片机 接 口, 无须 经过变 换 电路 , 同时通 过 RS2 2 .3
串行 口 与 上 位 机 P 连 接 , W idws 台 上 进 行 更 高 一 级 C 在 no 平
强、 抗干扰性 能好等 优点 , 进行 数据 采集 和实现 控制 。这种 监控 系统很容 易组装 计算机通 信 网络 ,这就给 企业 的分布 式监控带来 了许 多方便 , 非常有利 于工业 自动化 的发展 。 2 .单总线技术 介绍

(完整版)基于DS18B20的温度检测系统毕业论文

下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械…等。
第二章
温度检测系统有则共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。若采用一般温度传感器采集温度信号,则需要设计信号调理电路、AD转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。这样,由于各种因素会造成检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降。所以多点温度检测系统的设计的关键在于两部分:温度传感器的选择和主控单元的设计。温度传感器应用范围广泛、使用数量庞大,也高居各类传感器之首。
附录二:电路原理图……………………………………………26
致谢 ………………………………………………………………30
摘要ቤተ መጻሕፍቲ ባይዱ
DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。
§3.1 电源以及看门狗电路………………………………………………………8
§3.2键盘以及显示电路………………………………………………………10
§3.2温度测试电路……………………………………………………………12

基于DS18B20的单总线数字温度计毕业设计

1 前言在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。

而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。

其缺点如下:硬件电路复杂;软件调试复杂;制作成本高。

针对以上问题,采用一种改进型智能温度传感器作为检测元件,测温范围为-55~+125 ℃,最高分辨率可达0.0625℃,误差 +0.5℃以内。

数字温度计传感器可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。

本数字温度计设计采用一种改进型智能温度传感器作为检测元件,测温范围为-55~125 ℃,最高分辨率可达0.0625℃,误差 +0.5℃以内。

而传统的温度计,如热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。

硬件电路复杂,软件调试困难,制作成本高等缺点都给科技、工业、农业等诸多领域带来许多问题,尤其在生物学,珊瑚以其独特的生物学及生态学特性成为研究热带海洋环境的重要信息载体.阐明了珊瑚微量元素Sr/Ca、Mg/Ca温度计的建立基础、测定方法、研究成果、环境意义、争论问题及进一步研究的设想.多种海表温度计的对比研究,为现代和古海洋环境的重建、探索气候的变率与特征事件(冷暖、旱涝、ENSO等)的关联以及为预测未来气候变化的趋势提供科学的判据。

因此,鉴于以上问题主要设计测温范围为-55~125 ℃,精度为0.1℃的数字温度计。

2 系统硬件的设计本数字温度计设计采用美国DALLAS 半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55~+125 ℃,最高分辨率可达0.0625℃.DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。

按照系统设计的功能和要求,确定系统由3个模块组成:主控制器,测温电路和显示电路[1]。

基于单总线协议的温度监测系统

《 工业 控 制 计 算 机 } 0 2年第 2 21 5卷 第 3期
9 7
基于单总线协议的温度监测系统
De in o e sg fT mp r t r De e t n S s e Ba e n Sigl s Pr t c eau e t c i y t m s d o n e Bu o o o o
生报 警 信 号 。 1 系统 总 体 方 案
I —● “●
MA T Rf ^ S E i O L E O S OT

MA , R 剐 D1 S 0  ̄E T ^ L T
4 . uT ∞ _ ● 哦t _l《
eU s

~一
—一 4 ・’ 。
f 叫一 T ~・ ” I 一
传 感 器 1 B 0和 蜂 鸣 器 , 82 实现 对 温 室 温度 的 测 量 和报 警 。该 系统 将 程 序 烧 录 至 单 片机 中 , 1 B 0进 行 温 度 的 测 量 并 用 由 82 数码 管显 示 , 温度 超 出一 定 范 围, 出信 号 给蜂 鸣 器进 行 报 警 。 实验 结果 表 明该 装 置 价格 低 廉 , 当 发 测量 方 便 , 简单 实用 。
关 键 词 : 室 , 片机 , 度 传 感 器 , 鸣 器 , 总 线协 议 温 单 温 蜂 单
Ab ta t sr c I iw f r blm h tm o tgr e o se tlu e m a almont r g n ve o p o e ta s e nh u s s i s l nu i i modet i p erpr os s a d i ft p a ue on , s ap op e esgn o em ert r h
目前 国 内温 室 种植 现 已 经大 范 围 的普 及 ,温 室 的温 度 监 测 对 于作 物 的生 长 是 至关 重要 的 。经 调 查 发 现 , 由于 成 本 的 问 题 , 现在 普 遍 采 用 的是 在 温 室 内悬 挂 温度 计 来 人 工 读 取 。这 种 方 式 即麻 烦 也 容 易 造 成 因 为读 取 不 及 时而 造 成 温 度 高 于 或 低 于 农 作 物生 长 温 度 范 围 的 事情 发 生 。 对 此 问 题 , 文 设计 了一 种 基 于 针 本 单 总线 协 议 的 温 度 监测 报 警 系统 。此 系 统 既 能 监 测 温 度 又 能 发
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大学毕业设计-基于单总线的实时温度监控系统基于单总线的实时温度监控系统2硬件电路设计在硬件电路设计时,应着重考虑电子器件的供电方式,以及对器件的限压和限流保护。

因为本次设计要求利用单总线技术,所以可以考虑使用寄生供电方式。

设计的电路图如下。

图2 基于单总线的温度实时监控系统硬件电路总图2.3软件设计2.3.1设计窗体本次设计要求软件的可视化窗体中包含实时温度显示、数据记录、存储管理和ROM数据,并且能将测得的数据保存到指定的数据库中。

窗体界面如下。

图3 窗体界面实时温度显示中可以看到当前室温,并且可以显示摄氏温度和华氏温度。

数据记录包含温度曲线和温度日志,可以显示一天内的温度变化曲线。

存储管理和ROM数据用来对数据库中已经保存的温度数据进行管理,如删除、转移等操作。

2.3.2软件编程本系统软件部分采用Delphi来实现初始化、数据采集处理、温度报表管理,其主程序的流程图见图4。

图4 主程序流程图本系统软件部分共分为3个部分,分别是:1)初始化程序。

a.设置串行通信波特率;b.串行通讯方式的初始化;c.对TO,T1两个计数器的初始化;d.中断控制程序的初始化。

此外,还负责从E2PROM 中调出以前的采样参数,使器件能够以它采样温度数据。

2)当监控到ONTIME1和NTIME2标记时作相应温度的存储、转换、发送处理。

ONTIME1和NTIME2的标记主要有定时电路决定,当到达采样间隔时,做出相应的处理。

3)采用动态显示方式即时显示温度,以节省电路规模,使得整个系统的体积变小。

3元器件的选择3.1主要元器件知识3.1.1 DS18B20DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D 转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

以上特点使DS18B20非常适用于远距离多点温度检测系统。

1) DS18B20的内部结构DS18B20内部结构如图5所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

DS18B20的管脚排列如图7-1-2所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端,在寄生电源接线方式时接地,见图6。

图5 DS18B20的内部结构图6 DS18B20的管脚排列ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。

64位ROM的排的循环冗余校验码(CRC=X8+X5+X4+1)。

ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。

其中配置寄存器的格式如下:0R1R011111MSBLSBR1、R0决定温度转换的精度位数:R1R0=“00”,9位精度,最大转换时间为93.75ms;R1R0=“01”,10位精度,最大转换时间为187.5ms;R1R0=“10”,11位精度,最大转换时间为375ms;R1R0=“11”,12位精度,最大转换时间为750ms;未编程时默认为12位精度。

高速暂存器是一个9字节的存储器。

开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。

2) DS18B20的工作时序DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。

其工作时序包括初始化时序、写时序和读时序,如图7(a)(b)(c)所示。

(a)初始化时序(b)写时序(c)读时序图7 DS18B20的工作时序图3) DS18B20与微处理器的连接DS18B20与微处理器的连接如下图8所示。

(a)寄生电源工作方式(b)外接电源工作方式图8 DS18B20与微处理器的典型连接图3.1.2 DS2480B1) DS2480B主要特性串口UART/RS232至单总线通信协议的转接桥,可直接连到UART和5V RS232系统中, 支持Dallas全系列单总线器件,如数字温度传感器DS18B20、A/D转换器DS2450等;将主机从单总线时序控制中解脱出来,提供规范的、灵活的和强驱动的单总线定时;支持标准UART通信,支持9.6(默认)、19.2、57.6和115.2 kbps速率;具有较强的总线驱动能力,通信距离可达300 m;可编程下拉摆率控制和有源上拉,工作范围 5 V,-40 ~ +85 ℃,8引脚SOIC 封装。

2)管脚图及引脚说明1 2 87RXDGND 1-W图9 DS2480B的封装和引脚DS2480B为8脚贴片式封装,如图9所示。

引脚功能如表1所列引脚名称引脚功能引脚号1 GND地线2 1-W单总线输入输出端3 NC悬空4 VDD 4.5~5.5V电压5 VPP EPROM编程电压6 POL RXD/TXD选择端7 TXD发送端8 RXD接收端表1 引脚功能说明DS2480B工作原理框图如图10所示。

图10 DS2480B工作原理框图3) DS2480B与RS232的接口技术:DS2480B与RS232的接口如图11所示。

图11 DS2480B与RS232的接口图3.2元件清单表2 元件清单4 学习心得通过该温度监控实验,我们可以发现:基于DS18B20数字温度传感器构成的实时监控系统确实具有精度高、抗干扰能力强、电路简单等诸多优点,温度传感器得到电缆长度达到几十米都可以正常读取温度数据,并且已经在站长开发的机房安全监控系统中得到了实际考验,那可是要365天从不间断地对机房及相关设备提供实时温度监控的哦。

相比之下,传统的温度检测系统采用热敏电阻等温度敏感元件,热敏电阻成本低,但需要后续信号调理、AD 转换处理电路才能将温度信号转换成数字信号,不但电路复杂,而且热敏电阻的可靠性相对较差,测量温度的精度差,很难保证热敏电阻的一致性和线性,在应用中需要很好的解决引线误差补偿问题、共模干扰问题和放大电路零点漂移误差等技术问题。

因此,如果你开发的系统对温度监控精度要求不是非常高,而且测温的范围DS18B20的-55~+125 ℃之间的话,那么采用DS18B20是一个不错的选择,序号元件个数 1 PC 机串行口UART/RS232 1 个 2 转接桥DS2480B 1 个 3 数字温度传感器DS18B20 1 个 4 电容U07HF1 个5 稳压管 2个6 二极管M7 2个7 电路板XF07 1个通过软件的插值运算,其实DS18B20的测温精度还可以进一步提高的,具体的实现方法大家可以参考DALLAS公司相关技术资料。

当然,如果你有条件的话,也可以预先对每一个DS18B20进行一次校验,在标准恒温箱中测量并记录下每个传感器的测温误差,在实际应用中,我们就可以根据每个传感器的实际校准对读出的实时温度进行适当的误差纠正,这样也不失为提高DS18B20测温精度的一个好办法。

可惜的是,并非大家都有这种高精度的恒温箱来校验传感器,如果你的参考温度不准确,那么校准将会适得其反。

通过对这个课程设计的学习,为我们掌握单片机实时温度监控的开发、串口通信程序的开发及计算机串口实时控制开发原理及PC监控软件的开发,以及开发其他功能更加完善的单片机综合应用系统打好基础。

5 参考文献[1] DS18B20 Programmable Resolution 1-Wire Digital Thermometer[2] DS2480B Serial 1-Wire Line Driver with Load Sensor[3] 左冬红,谢瑞和.实现单总线搜索ROM命令的一种算法[4] 求是科技.单片机典型模块设计实例导航附:源程序清单{------------------------------------------------------------------------------------------------------ TEMPDL32 : This utility uses TMEX to view a read the temperature froma DS18B20. It requires the 32-Bit Windows TMEX driversto be present.Compiler : Borland Delphi 5.0}procedure TForm1.FormCreate(Sender: Tobject;Varztbuf : array[0..200] of Char;Typebuf : array [0..200] of Char;i,k,RetValue : smallint;RetStr : array[0..200] of Char;SetupDone: Boolean;PortNum, PortType : smallint;begindieer :=false;SetupDone := FALSE; { TMSetup not done yet }Label4.Caption := '';{Read default Port Number and Port Type from registry}RetValue := TMReadDefaultPort(@PortNum, @PortType);if (RetValue < 1) thenTMReadDefaultPort(@PortNum, @PortType) beginShowMessage('Please set port first');Halt;endelsebegin{ read the tmex version and type version}Get_Version(@ztbuf);Label1.Caption := StrPas(ztbuf);TMGetTypeVersion(PortType,@Typebuf);Label2.Caption := StrPas(Typebuf);{attemp to get a session }Done := False;RepeatSHandle := TMExtendedStartSession(PortNum,PortType,NI L);If (SHandle > 0) Thenbeginif (TMSetup(SHandle) = 1) then{The device that will be found is Temperature Device DS18B20,so Family Type is set to $28}FindFirstFamily($28,SHandle)elsebeginTMEndSession(SHandle);ShowMessage('Fail to setup MicroLan!');Halt;end;endelsebeginif (SHandle < 0 ) thenBeginShowMessage('The Default Port Type does not have a driver !');Halt;end;end;{Release control back to window}Application.ProcessMessages;until (Done);Done := False;RepeatSHandle := TMExtendedStartSession(PortNum,PortType,NI L);If (SHandle > 0) Thenbeginif (TMSetup(SHandle) = 1) then{The device that will be found is Temperature Device DS18B20,so Family Type is set to $28}FindSecondFamily($28,SHandle)elsebeginTMEndSession(SHandle);ShowMessage('Fail to setup MicroLan!');Halt;end;endelsebeginif (SHandle < 0 ) thenBeginShowMessage('The Default Port Type does not have a driver !');Halt;end;end;{Release control back to window}Application.ProcessMessages;until (Done);label18.Caption :=keke1;label19.caption :=keke2;table1.Active :=true;if table1.CanModify thenbegintable1.Append;table1.Fields[0].AsDateTime :=now;table1.Fields[1].AsString :=floattostr(diwei1);table1.Fields[2].AsFloat :=shangxian1;table1.Fields[3].AsFloat :=xiaxian1;table1.Fields[4].AsString :=floattostr(diwei2);table1.Fields[5].AsFloat :=shangxian2;table1.Fields[6].AsFloat:=xiaxian2;table1.Post;end;end;end;procedure TForm1.FindFirstFamily(family : smallint;vari , flag : smallint;romstr : string;rom : array[0..8] of smallint;begin{Set up to find the first device with the family 'family'}ifbeginif (TMNext(SHandle, @stateBuf)= 1) then{Read the rom number by setting rom[0] to 0 for reading and using TMRom}rom[0] := 0;TMRom(SHandle,@stateBuf,@rom);{Check if correct type}romstr := '';if ((family and $7F )= (rom[0] and $7F)) thenbeginfor i := 7 downto 0 doromstr := romstr + IntToHex(ROM[i],2);Label3.caption := 'Serial ROM ID1 : ' + romstr;ReadTemperature1(SHandle);endelsebeginShowMessage('There is no Temperature Device on the port');halt;endelsebeginTMEndSession(SHandle);ShowMessage('There is no Temperature Device on the port');halt;end;endelsebeginTMEndSession(SHandle);ShowMessage('There is no Temperature Device on the port');halt;end;end;procedureTForm1.ReadTemperature1(session_handle : longint);tsht, i, tmp1 : smallint;cr,cpc, tmpf,tmp : Extended;rbuf : array[0..9] of smallint ;st : longint;CRCByte,xiaxianbyte : Byte;begintmp := 0.00;{access the device}if (TMAccess(session_handle,@StateBuf)= 1) thenbegin{Send the recall E2 command (by setting $B8 to outbyte in TMTouchByte)make sure Scratch is correct}TMTouchByte(session_handle, $B8);{Send the start T command }if (TMAccess(session_handle,@StateBuf) = 1) thenbegin{Prepare the strong pullup after next TMTouchByte}TMOneWireLevel(session_handle,LEVEL_SET, LEVEL_STRONG_PULL_UP,PRIMED_BYTE);{Send the conversion command (by setting $44 to outbyte in TMTouchByte)}TMTouchByte(session_handle, $44);{Sleep for a second}st := GetTickCount + 1000;While (GetTickCount < st) doTMValidSession(Session_handle);{Disable the strong pullup}TMOneWireLevel(session_handle,{verify conversion is complete by setting $01 to outbit in TMTouchBit andcheck the return value with 1}if (TMTouchBit(session_handle,$01) = $01) thenbegin{Access device}If (TMAccess(session_handle,@StateBuf) = 1 ) thenbegin{Send read scratch command by setting $BE to outbyte in TMTouchByte}TMTouchByte(session_handle,$BE);CRC8 := 0;{Read scratch (setting $FF to outbyte in TMTouchByte) and check crc foreach byte}for i := 0 to 7 dobeginrbuf[i]:=TMTouchByte(session_handle, $FF);CRCByte := Byte(rbuf[i]); { the byte to run through CRC8 routine }CRC8 := TMCRC(1, @CRCByte, CRC8, 0);end;{Check crc}CRCByte := Byte(TMTouchByte(session_handle, $FF)); { the byte to run through CRC8 routine }CRC8 := TMCRC(1, @CRCByte, CRC8, 0);if ( CRC8 = 0 ) thenbegin{Calculate the temperaruretsht := rbuf[0];if ((rbuf[1] and $01)= 1) thentsht := tsht or (-256);tmp1 := Round((tsht)/2);tmp := tmp1;cr := rbuf[6];cpc := rbuf [7];if (rbuf[7] <> 0) thentmp := tmp - (0.25) + (cpc-cr)/cpc;}if ((rbuf[1] and $F8)= $F8) thenBEGINENDELSEBEGINcase (rbuf[4] and $60) of$00:beginfenbianlv1 :=9;tmp:=(rbuf[1] and $07)*16+(rbuf[0] and $f8)/16;diwei1 :=(rbuf[0] and $f8)/16;end;$20:beginfenbianlv1 :=10;tmp:=(rbuf[1] and $07)*16+(rbuf[0] and $fc)/16;diwei1 :=(rbuf[0] and $fc)/16;end;$40:beginfenbianlv1 :=11;tmp:=(rbuf[1] and $07)*16+(rbuf[0] and $fe)/16;diwei1 :=(rbuf[0] and $fe)/16;end;$60:beginfenbianlv1 :=12;tmp:=(rbuf[1] and $07)*16+rbuf[0]/16;diwei1 :=rbuf[0]/16;end;end;END;tmpf := (tmp * 9 )/5 + 32;label4.caption := 'Currenttemp1 : ' + FormatFloat('0.0000',tmp) +' C or ' + FormatFloat('0.0000', tmpf) + ' F';keke1 :=FormatFloat('0.0000',tmp);yuanshi1 :=rbuf[4];shangxian1 :=rbuf[2] and $7f;xiaxianbyte :=rbuf[3] and $80;if xiaxianbyte = 1 thenxiaxian1 := (rbuf[3] and $7f) * (-1)elsexiaxian1 := rbuf[3] and $7f;MessageBeep(0);TMEndSession(session_handle);Done := True;end;end;end;end;end;end;procedure TForm1.FindSecondFamily(family :smallint; SHandle: longint); vari , flag : smallint;romstr : string;rom : array[0..8] of smallint;begin{Set up to find the first device with the family 'family'}if(TMFamilySearchSetup(SHandle,@stateBuf,fam ily ) = 1 ) thenbegin{Get first device}if (TMNext(SHandle, @stateBuf)= 1) thenif (TMNext(SHandle, @stateBuf)= 1) thenbegin{Read the rom number by setting rom[0] to 0 for reading and using TMRom}rom[0] := 0;TMRom(SHandle,@stateBuf,@rom);{Check if correct type}romstr := '';if ((family and $7F )= (rom[0] and $7F)) thenbeginfor i := 7 downto 0 doromstr := romstr + IntToHex(ROM[i],2);Label10.caption := 'Serial ROM ID2 : ' + romstr;ReadTemperature2(SHandle);endelsebeginShowMessage('There is no Temperature Device on the port');halt;end;endelsebeginTMEndSession(SHandle);ShowMessage('There is no TemperatureDevice on the port');halt;endelsebeginTMEndSession(SHandle);ShowMessage('There is no Temperature Device on the port');halt;end;endelsebeginTMEndSession(SHandle);ShowMessage('There is no Temperature Device on the port');halt;end;end;procedureTForm1.ReadTemperature2(session_handle :longint);vartsht, i, tmp1 : smallint;cr,cpc, tmpf,tmp : Extended;rbuf : array[0..9] of smallint ;st : longint;CRCByte ,xiaxianbyte: Byte;begintmp := 0.00;{access the device}if (TMAccess(session_handle,@StateBuf)= 1) thenbegin{Send the recall E2 command (by setting $B8 to outbyte in TMTouchByte)make sure Scratch is correct}TMTouchByte(session_handle, $B8);{Send the start T command }if (TMAccess(session_handle,@StateBuf) = 1) thenbegin{Prepare the strong pullup after nextTMTouchByte}TMOneWireLevel(session_handle,LEVEL_SET, LEVEL_STRONG_PULL_UP,PRIMED_BYTE);{Send the conversion command (by setting $44 to outbyte in TMTouchByte)}TMTouchByte(session_handle, $44);{Sleep for a second}st := GetTickCount + 1000;While (GetTickCount < st) doTMValidSession(Session_handle);{Disable the strong pullup}TMOneWireLevel(session_handle, LEVEL_SET,LEVEL_NORMAL,PRIMED_NO NE);{verify conversion is complete by setting $01 to outbit in TMTouchBit andcheck the return value with 1}if (TMTouchBit(session_handle,$01) = $01) thenbegin{Access device}If (TMAccess(session_handle,@StateBuf) = 1 ) thenbegin{Send read scratch command by setting $BE to outbyte in TMTouchByte}TMTouchByte(session_handle,$BE);CRC8 := 0;{Read scratch (setting $FF to outbyte in TMTouchByte) and check crc foreach byte}for i := 0 to 7 dobeginrbuf[i]:=TMTouchByte(session_handle, $FF);CRCByte := Byte(rbuf[i]); { the byte to run through CRC8 routine }CRC8 := TMCRC(1, @CRCByte, CRC8, 0);end;{Check crc}CRCByte :=Byte(TMTouchByte(session_handle, $FF)); { the byte to run through CRC8 routine }CRC8 := TMCRC(1, @CRCByte, CRC8, 0);if ( CRC8 = 0 ) thenbegin{Calculate the temperaruretsht := rbuf[0];if ((rbuf[1] and $01)= 1) thentsht := tsht or (-256);tmp1 := Round((tsht)/2);tmp := tmp1;cr := rbuf[6];cpc := rbuf [7];if (rbuf[7] <> 0) thentmp := tmp - (0.25) + (cpc-cr)/cpc;}if ((rbuf[1] and $F8)= $F8) thenBEGINENDELSEBEGINcase (rbuf[4] and $60) of$00:begintmp:=(rbuf[1] and $07)*16+(rbuf[0] and $f8)/16;fenbianlv2 :=9;diwei2 :=(rbuf[0] and $f8)/16;end;$20:beginfenbianlv2 :=10;tmp:=(rbuf[1] and $07)*16+(rbuf[0] and $fc)/16;diwei2 :=(rbuf[0] and $fc)/16;end;$40:beginfenbianlv2 :=11;tmp:=(rbuf[1] and $07)*16+(rbuf[0] and $fe)/16;//11位分辨率diwei2 :=(rbuf[0] and $fe)/16;end;beginfenbianlv2 :=12;tmp:=(rbuf[1] and $07)*16+rbuf[0]/16;//12位分辨率diwei2 :=rbuf[0]/16;end;end;END;tmpf := (tmp * 9 )/5 + 32;label11.caption := 'Current temp2 : ' + FormatFloat('0.0000',tmp) +' C or ' + FormatFloat('0.0000', tmpf) + ' F';keke2 :=FormatFloat('0.0000',tmp);yuanshi2 := rbuf[4];shangxian2 :=rbuf[2] and $7f;xiaxianbyte :=rbuf[3] and $80;if xiaxianbyte = 1 thenxiaxian2 := (rbuf[3] and $7f) * (-1)xiaxian2 := rbuf[3] and $7f;MessageBeep(0);TMEndSession(session_handle);Done := True;end;end;end;end;end;end;procedure TForm1.Image1Click(Sender: TObject);begindieer :=true; //全局变量用来动态显示温度柱状图end;procedure TForm1.Button2Click(Sender:TObject);varRetValue,i : smallint;PortNum, PortType : smallint;beginif (radiobutton3.Checked) thenbeginedit9.Text :='';edit4.Text :='';edit5.Text :='';edit6.Text :='';edit7.Text :='';edit8.Text :='';RetValue := TMReadDefaultPort(@PortNum, @PortType);SHandle := TMExtendedStartSession(PortNum,PortType,NI L);FindFirstFamily($28,SHandle);edit9.Text :=inttostr(fenbianlv1);edit4.Text :=floattostr(gaowei1);edit5.Text :=floattostr(diwei1);edit6.Text :=floattostr(shangxian1);edit7.Text :=floattostr(xiaxian1);edit8.Text :=floattostr(yuanshi1);end;if (radiobutton4.Checked) thenbeginedit9.Text :='';edit4.Text :='';edit5.Text :='';edit6.Text :='';edit7.Text :='';edit8.Text :='';RetValue := TMReadDefaultPort(@PortNum,@PortType);SHandle := TMExtendedStartSession(PortNum,PortType,NI L);FindSecondFamily($28,SHandle);edit4.Text :=floattostr(gaowei2);edit9.Text :=floattostr(fenbianlv2);edit5.Text :=floattostr(diwei2);edit6.Text :=floattostr(shangxian2);edit7.Text :=floattostr(xiaxian2);edit8.Text :=floattostr(yuanshi2);end;end;procedure TForm1.Button3Click(Sender: TObject);varn,m,h : integer;o,p : single;a,b : string ;beginh :=0;label24.Caption :='50';label25.Caption :='25';label23.Caption :='0';label22.Caption :='50';label26.Caption :='25';label6.Caption :='0';paintbox1.Canvas.Pixels[0,128] := clBlack; paintbox1.Canvas.Pixels[1,127] := clBlack; paintbox1.Canvas.Pixels[1,129] := clBlack; paintbox1.Canvas.Pixels[2,127] := clBlack; paintbox1.Canvas.Pixels[2,129] := clBlack; paintbox1.Canvas.Pixels[2,128] := clBlack; paintbox1.Canvas.MoveTo(0,45); paintbox1.Canvas.LineTo(0,230); paintbox1.Canvas.MoveTo(0,128); paintbox1.Canvas.LineTo(425,128); paintbox1.Canvas.MoveTo(0,230); paintbox1.Canvas.LineTo(425,230); paintbox1.Canvas.MoveTo(0,45); paintbox1.Canvas.LineTo(5,57); paintbox1.Canvas.MoveTo(0,135);paintbox1.Canvas.LineTo(5,147); paintbox1.Canvas.MoveTo(0,200); paintbox1.Canvas.LineTo(7,200); paintbox1.Canvas.MoveTo(0,98); paintbox1.Canvas.LineTo(7,98); paintbox1.Canvas.MoveTo(0,128); table1.Active :=true;table1.First;if radiobutton5.Checked then beginwhile not table1.Eof dobegina :=table1.FieldValues['TempC1'];b :=table1.FieldValues['TempC2']; o :=strtofloat(a);p :=strtofloat(b);a :=FormatFloat('00',o);b :=FormatFloat('00',p);n :=128-strtoint(a);h :=h +5;Paintbox1.Canvas.LineTo(h,n); table1.Next;end;end;if radiobutton6.Checked then beginpaintbox1.Canvas.MoveTo(0,230); while not table1.Eof dobegina :=table1.FieldValues['TempC1'];b :=table1.FieldValues['TempC2']; o :=strtofloat(a);p :=strtofloat(b);a :=FormatFloat('00',o);b :=FormatFloat('00',p);m :=230-strtoint(b);h :=h +5;Paintbox1.Canvas.LineTo(h,m); table1.Next;end;end;end;procedure TForm1.Button1Click(Sender: TObject);varrbuf1 : array[0..4] of byte;l,m,n :integer;o,p,q ,z: smallint;RetValue,i : smallint;PortNum, PortType : smallint;rbuf : array[0..9] of smallint ;CRCByte : Byte;st : longint;rom : array[0..8] of smallint;beginl :=strtoint(edit1.Text);m :=strtoint(edit2.Text);n :=strtoint(edit3.Text);if n=9 then n :=31else if n=10 then n :=63else if n=11 then n :=95else if n=12 then n :=127elsebeginshowmessage('error number,please input the right number(9~12)');halt;end;RetValue := TMReadDefaultPort(@PortNum,SHandle :=TMExtendedStartSession(PortNum,PortType,NI L);If (SHandle > 0) Thenbeginif (TMSetup(SHandle) = 1) thenif radiobutton1.Checked =true then //写入第一个温度传感器if (TMFirst(SHandle, @stateBuf)= 1) thenbeginif (TMAccess(SHandle,@StateBuf)= 1) thenbegin//i :=TMBlockStream(SHandle,@rbuf1,4);//if i=4 then//beginif (TMTouchByte(SHandle,$4E) > 0) then ///$4E是写命令且判断是否传递成功beginif (TMTouchByte(SHandle,l) < 0)。

相关文档
最新文档