基于Web的远程温湿度监测系统的设计 (2)_第1页
基于Web的远程温湿度监测系统的设计 (2)_第2页
基于Web的远程温湿度监测系统的设计 (2)_第3页
基于Web的远程温湿度监测系统的设计 (2)_第4页
基于Web的远程温湿度监测系统的设计 (2)_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1 基于 Web 的远程温湿度监测系统的设计 摘要 首先本论文针对基于 WEB 远程温湿度采集及监测系统的设计加以研究和介 绍 并讨论系统软硬件的选择及具体开发调试环境 然后 详细介绍了系统设计方 案及其实现 并着重介绍了上位机部分的设计 通过界面的形式完成远程人机互动 更高效快捷的完成对复杂环境因素的把握 系统监测参数包括现场多点温湿度值 主控单片机通过将设定阈值与测定值进 行比较进而驱动蜂鸣器报警同时触发继电器进行相应电气控制 实现现场温湿度调 控 同时上位机通过串行通信与下位机进行数据通信 将下位机检测到的数据在上 位机上进行实时显示和相应控制 后台运行的数据库通过将下位机采集数据进行录 入存档 同时数据库支持上位机和 WEB 调用 关键词 温湿度采集 stc 单片机 上位机 远程控制 数据库 WEB 访问 The design of the system which Based on Web remote temperature and humidity monitoring Abstract This paper firstly based on WEB remote temperature and humidity acquisition and monitoring system design to research and introduce and discuss the selection and specific system hardware and software development of commissioning environment Then detailed introduces system design scheme and realization and introduces emphatically the design of computer parts through the form complete remote human machine interface the more highly effective quick interactive environment factors of complex complete assurance System monitoring parameters including the scene multipoint control temperature and humidity value set threshold microcontroller through comparison with determination value and buzzer alarm and trigger relay driver corresponding electric control and realizing scene temperature and humidity control Meanwhile PC through serial communication and lower level computer data communication will lower place machine detected on the data real time display in the upper and the corresponding control The background database by will lower level computer acquisition data input file and database support PC and WEB calls Keywords Temperature and humidity collecting STC microcontroller Principal computer Remote control Database WEB access 1 绪论 1 1 基于 Web 的远程温湿度监测系统概述 1 1 1 基于基于 Web 的远程温湿度监测系统组成的远程温湿度监测系统组成 2 本系统主要由主控制器 串行通信模块 继电控制模块 显示模块 上位机 控制模块 WEB 界面等六部分组成 其基本框架见图 1 Web 1 主控制器模块 主控制器模块是整个下位机系统的核心 主要完成对系统中各种测定信号的 输入 分析及输出控制 也是实现数据交换 软硬件接口的中心控制模块 本系统 中以单片机为控制核心 2 串行通信模块 这是系统中又一重要模块 其主要功能是实现对数据进行上位机和下位机之 间的交换 是实现远程控制的关键 系统中串行通信模块通过 MAX232 芯片进行电 平转换实现上位机与下位机的通信 3 继电控制模块 此模块是控制的关键模块 当系统采集到的现场温湿度数据超出测试点阈值 时 单片机发出控制信号触发继电器 进而启动或关闭相应电气设备 实现对现场 环境的控制 采用继电控制有益于提高工作效率和控制精度 提高了系统稳定性和 可用性 4 显示模块 此部分功能主要包括设定阈值和测定量的显示 系统中采用 1602 液晶实现显 示功能 采用 1602 液晶可以节约单片机接口 同时可以显示较多的内容特别适合 多点监测系统数据的显示 5 上位机控制模块 上位机模块由两部分组成 包括 VB 上位机界面和 Access 后台数据库 VB 界面用于实现人机交互 可以显示各测定点阈值和各监测点的实时数据 并通过控 图图 1 1 基本框架图基本框架图 3 件与数据库连接实现数据库存储 查询等功能 Access 数据库部分可用于存储测定 数据并支持本地和远程网络调用 6 WEB 界面模块 采用 ASP 网页语言编写 用于远程计算机通过网络实现对本地数据库的访问 WEB 功能可以实现异地用户对于现场数据的监测和简单控制 1 1 2 基于基于 WEB 的远程温湿度监测系统的特点的远程温湿度监测系统的特点 要通过 Intemet 实现温湿度的远程监测 一般是采用在现场计算机系统中构建 Web 服务器的方法 采用这种方法在本地构建的服务器运行后可以支持 WEB 访问 本地数据 同时由于本地服务器的特殊性管理者可以通过设置较高的安全等级提高 系统的安全性 随着科技的发展网络几乎无处不在 这为基于 WEB 的远程监测提 供了强大的硬件支持 只要有网络的地方就可以实现 远程监测 3 4 1 2 课题研究的背景及意义 1 2 1 课题研究的背景课题研究的背景 对于温湿度的检测系统的研究有很多 归纳起来有两个大的走向 一是趋于小 型化的手持式或现场式的检测设备 数据的记录需要人工干预 工作效率和精度都不 高 二是采用检测元件集中管理的数据采集模式 但是管理范围大都只局限在本地 计算机上 通过网络对现场数据访问的技术目前的研究发展还是不够的主要体现在 检测系统功能的完备性上 所以本设计集中检测技术 上位机控制 数据库存储 Web 服务器架构和访问技术于一体 最大限度的满足实际工作需要 提高工作效率 5 1 2 2 课题研究的意义课题研究的意义 本项目采用价格低廉的单片机对现场数据进行采集 通过串行通信方式完成 前置单片机与计算机间的通信 采用 VB 进行上位机的编程并结合数据库对采集数 据进行存储 方便数据分析和网络上其他主机对现场检测数据的访问和调用 是一 套造价低廉 方便实用的现场监控平台 同时 该平台具具有良好的兼容性 6 和稳 定性 此次设计的突出优势是 1 突破了检测系统高成本 移植性差的通病 以单片机作为控制中心实现了 成本最小化 通过采用DS18B20温度传感器元件通过单总线技术既节约控制端口同 时增加了系统的可扩展性 同时该元件的温度适用范围比较大从而实现了可移植性 的突破 2 远程多点实时监控 并对现场设备进行了冗余备份 解决了现场监控和故 障检修的不便 实现远程对现场生产条件的掌控和现场设备的故障检测和判断 3 系统硬件部分采用模块化的设计方法 将功能模块与主控模块分离 便于 系统扩展和故障检修 提高系统可用性 1 3 论文研究的内容和目标 4 1 3 1 论文研究的内容论文研究的内容 1 分析温湿度传感器的工作原理 由于此次论文是对于温湿度的监控 因而对于传感器的选择很重要 不同的传 感器对环境的适应能力不同 可移植性也存在较大差异 选择一个适合的传感器 在系统设计成本和系统可移植性的方面具有重要意义 2 分析继电控制原理和应用 在进行现场监控的过程中控制相关电气设备对现场进行调控是本系统中一个重 要的环节 由于系统控制核心采用单片机架构 而单片机属于弱点控制范畴 要 驱动中大型现场设备运行即必须实现小电压对大电压的控制 采用继电器可以很 好的解决这一问题 实现远程控制 3 分析串行通信方法 在系统实现过程中上位机和下位机的通信是重要组成环节 上位机下位机通过 串行口进行串行通信 串行通信速度快 误码率低 通信高效可靠 7 4 了解 VB 界面开发和相关控件使用 VB 是一款面向对象的软件界面开发工具 简单易用 利用 VB 开发串口通信程 序既可以使用 MSComm 控件也可以调用 Windows API 函数实现 本系统采用 MSComm 控件实现 因为 MSComm 控件的功能和 API 调用一样强 甚至比它还好 且使用起来更加简单 8 9 5 采用 WEB 通信实现系统的远程监测 互联网技术的发展为这一方案提供了可能性 远程监控脱离传统意义上的 远 通过网络访问本地数据库实现更远距离的实时监测 1 3 2 论文研究的目标论文研究的目标 1 能过对现场进行多点温湿度数据采集和传输 2 通过程序控制 实现设定阈值 报警和继电控制功能等 3 下位机能够显示多点测试数据和其他数据量 4 能通过串行通信的方法实现上位机和下位机的实时通信 并且可以通过上 位机实现对下位机的控制功能 5 能够在上位机界面实现对各监测数据的实时显示和报警 并可以对数据库 进行相应操作 比如实现查询和报表打印等功能 6 能够通过网络访问本地数据库 读取相关数据 1 4 论文的结构 本论文的结构如下 第一部分介绍基于 Web 的远程温湿度采集及控制系统的设计的基本框架 以 及课题的背景及意义 并论述了研究内容和目标 最后说明了本论文的组织结构 第二部分介绍了下位机硬件电路设计 以及对选用器件的性能要求所作的简 5 要分析 第三部分是对软件设计部分的介绍 第四部分是对 WEB 网络访问的技术介绍以及本次设计的前景和展望分析 2 硬件设计 本节介绍下位机的硬件电路设计 其流程如图 2 性能分析选择器件接口设计硬件测试结束 图图 2 2 硬件设计流程图硬件设计流程图 2 1 STC 单片机简介 STC89 系列单片机是 MCS 51 系列单片机的派生产品 它们在指令系统 硬 件结构和片内资源上与标准 8052 单片机完全兼容 DIP40 封装系列与 8051 为 pin to pin 兼容 STC89 系列单片机高速 最高时钟频率 90MHz 低功耗 在系统 在应 用可编程 ISP IAP 不占用户资源 2 1 2 STC 单片机接口性能分析单片机接口性能分析 3V 5V 工作电压 操作频率 0 33MHz STC89LE516AD 最高可达 90MHz 5V 工作电压 操作频率 0 40MHz 大容量内部数据 RAM 1K 字节 RAM 64 32 16 8kB 片内 Flash 程序存储器 具有在应用可编程 IAP 在系统可编程 ISP 可实现远程软件升级 无需编程器 支持 12 时钟 默认 或 6 时钟模式 双 DPTR 数据指针 SPI 串行外围接口 和增强型 UART PCA 可编程计数器阵列 具有 PWM 的捕获 比较功能 4 个 8 位 I O 口 含 3 个高电流 P1 口 可直接驱动 LED 3 个 16 位定时器 计数器 可编程看门狗定时器 WDT 低 EMI 方式 ALE 禁止 兼容 TTL 和 COMS 逻辑电平 掉电检测和低功耗模式等 10 2 2 基于 WEB 的远程温湿度监测系统的硬件接口设计 2 2 1 STC89C52 引脚介绍引脚介绍 进行单片机的接口设计首先需要分析一下 STC89C52 单片机的引脚 10 STC89c52 单片机拥有四个并行口其中 P1 口为准双向口 P2 口为可作为地址总线 6 输出口的准双向口 P0 口可作为地址 数据总线口的三态双向口 当 P3 口作为 8 为 双向 I O 端口时 其内部具有上拉电阻 输出缓冲器具有对称的驱动特性 可以输 出和吸收 20mA 大电流 此外 它还可以作为 AD 转换引脚 当 P0 P1 P2 端口 全作为普通 I O 口时 和 P3 口功能基本相同 另外 P3 0 和 P3 1 作为串行通信口 实现上位机和下位机间的串口通信连接 单片机结构见图 3 图图 3 STC89c52 单片机引脚图单片机引脚图 2 3 下位机硬件电路介绍与设计 首先 介绍一下时钟和复位电路的设计 1 时钟电路的设计 本设计采用石英晶体振荡器 石英晶体频率较稳定 抗 干扰能力较强 具体电气连接电路见图 4 图图 4 时钟电路时钟电路 图图 5 复位电路复位电路 2 复位电路的设计 51 单片机使用的是高电平复位 其连接方法比较固定 其常见接法见图 5 刚上电时 电容 C7 促使 REST 引脚保持一段时间的高电平使电路复位 这属 于上电复位 当按键按下时 REST 与电源正极通变高电平 电路发生复位 程序 终止运行后从新开始运行 程序运行的起点是 main 函数 这是手动复位 采用上 电复位和手动复位相结合的硬件电路设计提高了系统的可靠性 7 3 键盘接口电路采用独立键盘的方法 利用三个按键完成系统参数的设定 三个按键分别定义为功能选择键 加一键和减一键 具体实现过程为系统初始化后 后 系统以轮询的方式进行键盘操作扫描 当检测到功能定义键第一次输入低电平 即第一次按下时 启动设置下限功能 功能定义脚第二次按下启动设置上限功能 功能键第三次按下则退出阈值设置功能 采用功能键控制的方式可以在节约接口的 同时使系统功能集约化 键盘电路见图 6 图中硬件电路采用上拉电阻的作用是保 证按键没有被按下时各引脚输入为高电平 提高系统稳定性 图图 6 键盘接口电路键盘接口电路 4 显示电路部分采用了 LCD1602 液晶 具体的电路如图 7 图图 7 LCD 液晶显示电路液晶显示电路 5 串行接口及其电路的设计 串行通信的发送方向和接收方向共用一个缓冲 器 只是缓冲器的地址不同 工作方式分为单工 半双工和全双工三种 本系统采 用全双工方式进行通信 即在下位机上传数据时上位机可以同时接收数据和发送数 据 51 单片机的串行口是一个全双工的异步串行通信端口 特殊功能寄存器 SCON 对串行通信起控制作用可设置工作波特率等 11 8 图图 8 MAX232 芯片引脚及连接图芯片引脚及连接图 图图 9 MAX232 硬件连接方法硬件连接方法 MAX232 芯片介绍 电平 0 5v max232 就是用来进行电平转换的 该器件包含 2 驱动器 2 接收器和一个电压发生器电路提供 TIA EIA 232 F 电平 MAX232 芯 片引脚及内部逻辑见图 8 该器件符合 TIA EIA 232 F 标准 每一个接收器将 TIA EIA 232 F 电平转换成 5 V TTL CMOS 电平 每一个发送器将 TTL CMOS 电平 转换成 TIA EIA 232 F 电平 12 13 6 传感器的选择和使用 温度传感器采用 DS18B20 温度传感器 DS18B20 单线数字温度传感器 即 一线器件 其具有独特的优点 采用单线制数据传输 支持单线元件扩展 测温范围大适应范围广 因而具有较好的环境适应能力 14 16 湿度传感器采用 DHT11 传感器 该传感器具有体积小测定范围大的特点同样也为 单总线原件 便于系统功能扩展 硬件连接图分别见图 10 图 11 图图 10 DS18B20 管脚及内部结构图图管脚及内部结构图图 图图 11 DHT11 连接方法连接方法 9 7 继电控制模块和报警模块 继电控制是系统控制核心环节 采用 5V 继电 器实现控制过程小电压对大电压的控制 继电器采用三极管驱动 继电器驱动电气 设备在图中以 LED 指示灯代替 本设计采用的继电器型号为 SRD 05VDC SL C 可 由 5v 电压驱动 最大控制变量达到 10A 250V 可以满足大部分电气设备的运行要求 电气连接电路如图 12 所示 图图 12 继电器连接电路图继电器连接电路图 图图 13 实物图实物图 报警模块主要功能是在现场温湿度超出设定阈值时对外界发出警报 此部分采 用蜂鸣器作为报警设备 同时考虑到系统的稳定性对硬件进行了冗余备份 具体做 法是在蜂鸣器上并联 led 指示灯 这样在其中一个报警设备出现故障时另一个冗余 设备可以继续工作而不会影响系统稳定性 17 8 硬件整体实物图和电路图如图 13 14 图图 14 下位机硬件电气连接图下位机硬件电气连接图 3 软件设计 3 1 软件设计流程 本节将根据相应的硬件自下而上的设计相应程序或软件 首先对键盘 显示 报警 串行通信部分设计对应的程序 并对这些程序加以排列 组合以获得最佳控 制状态 最后设计高层人机接口程序 上位机 下位机软件总体程序流程见图 15 10 图图 15 下位机软件总体程序流程下位机软件总体程序流程 3 2 键盘及显示部分程序设计 键盘部分 设计中使用三个独立键盘 分为一个功能键和两个设置键 将单 片机接口设为高电平输出 键盘引脚接低电平 检测到输入引脚有低电平时 使用 软件延时 10ms 防止干扰 再次检测 若仍然为低电平 则说明有键按下 执行相 应程序 显示部分 设计采用的是 LCD1602 液晶显示器 其工作指令如表 1 LCD1602 液晶显示器的初始化过程如下 1 延时 15ms 2 写指令 38H 不检测忙标志 3 延时 5ms 4 写指令 38H 不检测忙标志 5 延时 5ms 6 写指令 38H 以后每次写指令 读 写数据 操作之前均需检测忙信号 7 写指令 38H 显示模式设置 8 写指令 08H 关闭 显示 9 写指令 01H 显示清屏 10 写指令 06H 显示光标移动设置 11 写指令 0CH 显示开及光标设置 18 表表 1 LCD1602 指令表指令表 11 3 3 报警和继电控制程序设计 控制中心将检测元件测得的数据与预先设定的阈值相对比 得到相应的返回 值从而触发报警和电气运行 具体分为三个信号输出 当现场任一检测点温湿度超 出设定阈值时蜂鸣器控制引脚均输出脉冲信号触发蜂鸣器和 led 告警 继电器的控 制则在进行数据比对之后分别触发不同的继电器达到控制目的 19 继电器控制流程 见图 16 图图 16 继电控制流程图继电控制流程图 继电控制部分具体代码为 if tempsheding2 temp1sheding2 temp2 sheding2 P3 6 1 else P3 6 0 if temp sheding1 temp1 sheding1 temp2sheding2 temp1 sheding2 temp2 sheding2 P3 3 1 else P3 3 0 3 4 数据采集程序设计 温度量采集使用 DS18B20 温度传感器 温度数据关系如表 2 所示 表表 2 DS18b20 温度数据关系图温度数据关系图 根据 DS18B20 的通讯协议 主机控制 DS18B20 完成温度转换必须经过三个步 骤 每一次读写之前都要对 DS18B20 进行复位 复位成功后发送一条 ROM 指令 最后发送 RAM 指令 这样才能对 DS18B20 进行预定的操作 复位要求主 CPU 将 数据线下拉 500 微秒 然后释放 DS18B20 收到信号后等待 16 60 微秒左右 后 发出 60 240 微秒的存在低脉冲 主 CPU 收到此信号表示复位成功 20 22 DHT11 湿度传感器的工作流程为 通过单总线访问 DHTxx 顺序归纳如下 1 主机发开始信号 2 主机等待接收 DHT11 响应信号 3 主机连续接收 40Bit 的数据和校验和 4 数据处理 读 DHT11 数据流程如图 17 所示 图图 17 读读 DHT11 数据流程图数据流程图 13 3 5 串行通信接口程序设计 本设计用到的硬件和软件清单如表 3 所示 表表 3 设计用软 硬件设计用软 硬件 序 号名 称数 量 1PC 或 IPC2 2串口通信线 三线制 1 3Visual Basic 6 01 4Access 2003 数据库1 设计目的是实现下位机与上位机的实时通信包括下位机实时上传数据和上位机 对下位机发送控制命令 以及完成上位机对数据库的调用和查询功能 3 5 1 下位机部分程序设计下位机部分程序设计 下位机部分串行发送数据系统框图如图 18 所示 图图 18 下位机数据发送系统框图下位机数据发送系统框图 下位机部分采用单片机作为主控中心 单片机控制信号为 TTL 电平高电平为 5v 低电平为 0v 而计算机串行通信采用 RS232 电平高电平为 12v 低电平为 12v 要进行通信必须进行相应的电平转换本设计中采用 RS232 芯片进行电平转换 单片机串行通信端口 P3 0 P3 1 连接到 MAX232 芯片进行电平转换 然后通过 9Pin 串行接口连接到计算机 数据发送采用轮询方式进行 程序每运行一次发送一 次数据 数据在发送时采用按位发送的方法 因为下位机需要上传的数据换算成十 进制数是一个三位数 而串行通信每次发送的数据为八位不能一次发送完 同时由 于有多路数据需要上传因而必须在所发送数据前添加相应的标志位以便对各发送数 据进行区分 上位机接收数据后再进行组装 23 具体数据发送格式如图 19 所示 各数据位的分离方法具体为取余法和取模法 初始化 起始位 FA 第一个数 据百位 第一个数据 十位 第一个数据 个位 第二个数 据 结束位 FB 下一次 发送 图图 19 下位机发送数据格式下位机发送数据格式 14 数据发送部分程序如下 void init ser void SCON 0 x50 串口工作模式 1 8 位数据 TMOD 0 x20 定时器 1 模式 2 8 位自动重装 PCON 0 x80 TH1 0 xFD 波特率为 19200 晶振为 11 0592 IE 0 x90 允许串口中断 TR1 1 启动定时器 1 TI 1 void serial interrupt 4 using 3 中断程序 用于数据发送 下位机数据发送处理 3 5 2 上位机部分程序设计上位机部分程序设计 上位机采用 VB 语言编写交互界面 同时后台运行 Microsoft Office Access 2003 数据库对现场数据进行存储 并通过上位机对数据库的调用在界面实时显示现场温 湿度数值及其相应曲线 上位机设计的重难点在于串口从下位机接收到数据和将数 据存储到数据库里并实时显示在界面上 上位机串行通信的实现借助于 VB 自带的 Mscomm 控件等 相应控件从 VB 部件选项卡中进行调用 上位机总体流程图如图 20 所示 图图 20 上位机总体设计图上位机总体设计图 从串口采集数据主要采用的控件有 Mscomm32 ocx 控件 在 Microsoft Visual Basic 6 0 中添加该控件 需要设置 com 口 可修改 波特率 9600 数据位 8 停止位 1 校验位 0 等 通过 OnComm 事件驱动方式接收数据 24 25 由 15 于 VB 的串行通信组件并不会主动出现在工具箱里中 当我们需要 MSComm 控件 时 首先要把它加入到工具箱中 让 MSComm 控件出现在工具箱中的步骤如下 选择 工程 菜单下的 部件 子菜单 在弹出的 部件 对话框中 在 控件 选 项卡属性中选中 Microsoft Comm Control 6 0 复选框 单击 确定 按钮后 在工具 箱中就出现了一个形似 电话 的图标 它就是 MSComm 控件 工具箱中有了 MSComm 控件 就可以选择 MSComm 控件的图标后将其添加到 程序窗体上 利用该控件编程 PC 就可以通过 VB 实现与串口设备的串口通信了 其他需要的 控件调用方法与 MSComm 的调用方法一致 调用界面见图 21 图图 21 VB 下调用相应控件下调用相应控件 完成控件的添加之后开始上位机界面的设计 1 首先向新建界面添加串口通信控件 MSComm 2 为了实现连续的自动接收 将工具箱中的 Timer 控件添加到程序窗体上 3 按需求添加文本框控件 用于输入要发送的字符和显示要接收的字符 4 添加两个标签控件 Label1 和 Label2 作为发送和接收字符区的标签 5 添加一些按钮控件 Command 用于执行执行发送或接收字符命令 6 添加 ADO 控件 用于上位机和数据库表的连接 便于上位机对数据库 表的调用 7 添加 DATA Grid 控件即网格控件 用于将上位机调用的数据库表中的 内容进行显示 便于对数据库工作情况的监控 8 添加 picture 控件 用于对温湿度走势变化情况进行实时曲线显示 便于 对温湿度值的直观了解和对比 9 添加 Shape 控件 用于对温湿度值的报警 阈值范围内为绿色 超阈值 为红色 10 添加 DTPicker 控件用于选择数据库查询的时间范围 由于本设计涉及多个界面间的相互调用和连接故应建立多个界面拖放相应的 控件并进行相应的编程操作 具体页面包括登录页面 监控主页面 数据库查询页 16 面 程序说明页面 各页面设计图分别如图 22 23 24 图图 22 上位机登陆界面设计上位机登陆界面设计 图图 23 上位机数据库查询系统设计上位机数据库查询系统设计 图图 24 上位机监控系统总界面设计上位机监控系统总界面设计 本设计中上位机可以实现的功能如下 1 实时采集三路温度信息和一路湿度信息并在上位机界面分别以数字和曲 线的形式进行显示 曲线显示时三路温度分别以不同的颜色表示便于 对比 区分 2 上位机可以对每一路数据单独设立阈值并分别进行报警操作 增强系统 稳定性 精确度 3 上位机可以通过串行通信的方式控制下位机继电器运行进而控制进而控 制相应电气运行 并可以通过上位机对下位机进行阈值进行设置 提 高工作效率 减少现场巡查人员工作量 4 上位机可以调用数据库并在上位机界面实时显示数据库内容 同时可以 通过上位机设置数据库存储频率 增加数据可用性 5 通过上位机可以对数据库进行查询和修改 同时可以调用打印功能进行 报表打印 上位机接收数据部分程序如下 Select Case MSComm1 CommEvent Case comEvReceive 收到 RThreshold ofchars xv Dim hk As Variant hk MSComm1 Input 17 第 0 通道数据接受与处理 If hk 0 DS18B20 接入口 sbit DATA1 P2 4 DS18B20 接入口 sbit DATA2 P2 5 DS18B20 接入口 unsigned char ADC 20 unsigned code table 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f unsigned int data0 data1 data2 temp0 temp1 temp2 ch flag1 flag2 flag3 temp sheding1 200 sheding2 312 shezhi 0 第 0 个 DS18B20 延时 void delay uint num while num void delay1ms unsigned int ms 延时 1 毫秒 unsigned int i j for i 0 i ms i for j 0 j0 i DATA 0 给脉冲信号 dat 1 DATA 1 给脉冲信号 if DATA dat 0 x80 delay 8 return dat 写一个字节 WriteOneChar unsigned char dat uchar i 0 for i 8 i 0 i DATA 0 DATA dat delay 10 DATA 1 dat 1 delay 8 读取温度 int ReadTemperature void uchar a 0 uchar b 0 int t 0 float tt 0 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 x44 启动温度转换 Init DS18B20 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 xBE 读取温度寄存器等 共可读 9 个寄存器 前两个就是温度 26 a ReadOneChar 低位 b ReadOneChar 高位 t b t 0 i DATA1 0 给脉冲信号 dat 1 DATA1 1 给脉冲信号 if DATA1 dat 0 x80 delay 8 return dat 写一个字节 27 WriteOneChar1 unsigned char dat uchar i 0 for i 8 i 0 i DATA1 0 DATA1 dat delay 10 DATA1 1 dat 1 delay 8 读取温度 int ReadTemperature1 void uchar a 0 uchar b 0 int t 0 float tt 0 WriteOneChar1 0 xCC 跳过读序号列号的操作 WriteOneChar1 0 x44 启动温度转换 Init DS18B201 WriteOneChar1 0 xCC 跳过读序号列号的操作 WriteOneChar1 0 xBE 读取温度寄存器等 共可读 9 个寄存器 前两个就是温度 a ReadOneChar1 低位 b ReadOneChar1 高位 t b t 0 i DATA2 0 给脉冲信号 dat 1 DATA2 1 给脉冲信号 if DATA2 dat 0 x80 delay 8 return dat 写一个字节 WriteOneChar2 unsigned char dat uchar i 0 for i 8 i 0 i DATA2 0 DATA2 dat delay 10 DATA2 1 dat 1 delay 8 读取温度 29 int ReadTemperature2 void uchar a 0 uchar b 0 int t 0 float tt 0 WriteOneChar2 0 xCC 跳过读序号列号的操作 WriteOneChar2 0 x44 启动温度转换 Init DS18B202 WriteOneChar2 0 xCC 跳过读序号列号的操作 WriteOneChar2 0 xBE 读取温度寄存器等 共可读 9 个寄存器 前两个就是温度 a ReadOneChar2 低位 b ReadOneChar2 高位 t b t 0 flag1 0 temp temp 30 if temp 0 flag2 1 temp1 temp1 if temp1 0 flag3 1 temp2 temp2 if temp2 0 flag3 2 temp2 temp2 counter 15 报警 设定温度上限下限值 if P2 2 0 delay 2 while P2 2 0 shezhi if P2 1 0 if P2 0 0 显示上限 温度 1 显示 write com 0 x80 0 x00 放第一行字符的位置 write data L change sheding1 100 0 x80 0 x02 change sheding1 100 10 0 x80 0 x03 write com 0 x80 0 x04 放第一行字符的位置 write data change sheding1 10 0 x80 0 x05 结束 设定温度上限下限值 if P2 2 0 delay 2 while P2 2 0 shezhi if P2 1 0 if P2 0 0 if P2 2 0 delay 2 while P2 2 0 shezhi 0 设定下限 write com 0 x80 0 x09 放第一行字符的位置 write data U change sheding2 100 0 x80 0 x0b change sheding2 100 10 0 x80 0 x0c write com 0 x80 0 x0d 放第一行字符的位置 write data 32 change sheding2 10 0 x80 0 x0e 结束 报警 if tempsheding2 temp1sheding2 temp2s heding2 P1 4 0 delay 20000 P1 4 1 delay 20000 else P1 4 1 if temp sheding1 temp1 sheding1 temp2sheding2 temp1 sheding2 temp2 sheding2 P1 3 0 else P1 3 1 ADC 0 flag1 ADC 1 temp 100 ADC 2 temp 100 10 ADC 3 temp 100 10 ADC 4 flag2 ADC 5 temp1 100 ADC 6 temp1 100 10 ADC 7 temp1 100 10 ADC 8 flag3 33 ADC 9 temp2 100 ADC 10 temp2 100 10 ADC 11 temp2 100 10 ADC 12 sheding1 100 ADC 13 sheding1 100 10 ADC 14 sheding1 10 ADC 15 sheding2 100 ADC 16 sheding2 100 10 ADC 17 sheding2 10 write com 0 x80 0 x00 放第一行字符的位置 write data 1 write com 0 x80 0 x01 放第一行字符的位置 write data 2 温度 1 显示 change ADC 1 0 x80 0 x40 change ADC 2 0 x80 0 x41 write com 0 x80 0 x42 放第一行字符的位置 write data change ADC 3 0 x80 0 x43 结束 温度 2 显示 change ADC 5 0 x80 0 x45 change ADC 6 0 x80 0 x46 write com 0 x80 0 x47 放第一行字符的位置 write data change ADC 7 0 x80 0 x48 温度 3 显示 change ADC 9 0 x80 0 x4a change ADC 10 0 x80 0 x4b write com 0 x80 0 x4c 放第一行字符的位置 write data change ADC 11 0 x80 0 x4d void init ser void SCON 0 x50 串口工作模式 1 8 位数据 TMOD 0 x20 定时器 1 模式 2 8 位自动重装 PCON 0 x00 TH1 0 xFD 波特率为 19200 晶振为 11 0592 34 IE 0 x90 允许串口中断 TR1 1 启动定时器 1 TI 1 void serial interrupt 4 using 3 void ser void SBUF 0 xFA 开始标志位 while TI 0 TI 0 第 0 通道 if SBUF ADC 0 while TI 0 TI 0 SBUF ADC 1 while TI 0 TI 0 SBUF ADC 2 while TI 0 TI 0 SBUF ADC 3 while TI 0 TI 0 SBUF ADC 4 标志位 while TI 0 TI 0 SBUF ADC 5 while TI 0 TI 0 第 2 通道 SBUF ADC 6 while TI 0 TI 0 SBUF ADC 7 while TI 0 TI 0 SBUF ADC 8 35 while TI 0 TI 0 温度处理函数 SBUF ADC 9 while TI 0 TI 0 SBUF ADC 10 while TI 0 TI 0 SBUF ADC 11 while TI 0 TI 0 SBUF ADC 12 while TI 0 TI 0 SBUF ADC 13 while TI 0 TI 0 SBUF ADC 14 while TI 0 TI 0 SBUF ADC 15 while TI 0 TI 0 SBUF ADC 16 while TI 0 TI 0 SBUF ADC 17 while TI 0 TI 0 SBUF 0 xFB 结束标志位 while TI 0 TI 0 if RI 上位机发送测试命令 RI 0 ch SBUF sheding1 150 if ch 0 x01 36 P1 2 0 delay1ms 5000 P1 2 1 ch 0 if ch 0 x02 P1 3 0 delay1ms 5000 P1 3 1 ch 0 if ch 0 x03 P1 4 0 delay1ms 5000 P1 4 1 ch 0 if ch 0 x03 sheding1 ch ch 0 main init Init DS18B20 温度传感器初始化 Init DS18B201 Init DS18B202 init ser while 1 Init DS18B20 温度传感器初始化 Init DS18B201 Init DS18B202 ser AD display ser 37 1602 液晶显示部分供调用程序 液晶显示部分供调用程序 define uchar unsigned char define uint unsigned int sbit LCD RS P1 0 sbit LCD EN P1 1 void init 初始化 LCD void write com uchar com 写 LCD 命令 void write data uchar date 写 LCD 数据 void delay 1602 uint z 约 1ms void init LCD EN 0 write com 0 x38 write com 0 x0c write com 0 x06 write com 0 x01 void write com uchar com LCD RS 0 P0 com delay 1602 1 LCD EN 1 delay 1602 1 LCD EN 0 void write data uchar date uchar n for n 0 n 0 x40 n if date n break 检测 如果字符输入 就终止 LCD RS 1 P0 date n delay 1602 5 LCD EN 1 38 delay 1602 5 LCD EN 0 delay 30 输入每个字符延时时间 写数据 void wdata unsigned char dat uchar n for n 0 n0 x for y 110 y 0 y void change int k uchar com if k 1 write com com write data 1 if k 2 write com com write data 2 if k 3 39 write com com write data 3 if k 4 write com com write data 4 if k 5 write com com write data 5 if k 6 write com com write data 6 if k 7 write com com write data 7 if k 8 write com com write data 8 if k 9 write com com write data 9 if k 0 write com com write data 0 DHT11 程序部分程序部分 include include 40 define DHT11 DATA PORTC 0 define DHT11 DATA SET DHT11 DATA 1 define DHT11 DATA CLI DHT11 DATA 0 define DHT11 DATA OUT DDRC 0 1 define DHT11 DATA IN DDRC 0 0 define DHT11 DATA READ PINC 0 unsigned int dht11 data 3 bit dht11 flag 0 unsigned char humidity 湿度 8 位数据值 unsigned char humidity1 unsigned char temp 温度 8 位数据值 unsigned char u8flag unsigned int time counter 函数声明 void timer0 init void void init devices void void init devices void 系统初始化 asm cli DDRD 0 xff PORTD 0 x00 DDRB 0 xff PORTB 0 xff timer0 init TIMSK 0 x01 asm sei void timer0 init void TCCR0 0 x00 TCNT0 0 xE1 TCCR0 0 x04 定时器 TIMER0 溢出中断 interrupt TIM0 OVF void timer0 ovf isr void TCNT0 0 xE1 time counter 数据采集模块 41 unsigned char dht11 start void dht11 开始标志 unsigned char count 0 DHT11 DATA OUT DHT11 DATA CLI 将数据线拉低 18ms 以上 delay ms 25 延迟 18ms 以上即可 DHT11 DATA IN DHT11 DATA SET 释放数据线 while DHT11 DATA READ delay us 5 count if count 10 return 0 延迟等待 50us 超过则失败 while DHT11 DATA READ 等待低电平结束 return 1 返回 1 表示 dht11 响应 void dht11 getdata0 void 读取湿度函数 unsigned char i 0 j 0 while DHT11 DATA READ 等待数据线高

温馨提示

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

最新文档

评论

0/150

提交评论