首页 基于单片机的温湿度测量系统的研究与设计

基于单片机的温湿度测量系统的研究与设计

举报
开通vip

基于单片机的温湿度测量系统的研究与设计基于单片机的温湿度测量系统的研究与设计 基于单片机的温湿度测量系统的研究与设计 摘 要 温湿度的测量应用范围是很广的对温湿度测量系统的研究也具有深远意义 本课题针对国内外对温湿度测量系统的研究与发展状况分析了目前温湿度测量 系统存在的主要问题设计了一种基于单片机的温湿度测量系统对某些有着特殊 要求温度和湿度的场合实现长期稳定实时自动的监测本设计主要由硬件电路和 软件电路两部分组成系统通过温湿度检测电路把采集到的信号传给单片机通过 单片机来处理采集到的信号并通过LCD显示出来如果温湿度过高或过低报警电 路会自...

基于单片机的温湿度测量系统的研究与设计
基于单片机的温湿度测量系统的研究与设计 基于单片机的温湿度测量系统的研究与设计 摘 要 温湿度的测量应用范围是很广的对温湿度测量系统的研究也具有深远意义 本课题针对国内外对温湿度测量系统的研究与发展状况 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 了目前温湿度测量 系统存在的主要问题设计了一种基于单片机的温湿度测量系统对某些有着特殊 要求温度和湿度的场合实现长期稳定实时自动的监测本设计主要由硬件电路和 软件电路两部分组成系统通过温湿度检测电路把采集到的信号传给单片机通过 单片机来处理采集到的信号并通过LCD显示出来如果温湿度过高或过低报警电 路会自动报警它以AT89C52单片机为核心采用SHT11集成温湿度传感器实现一种 智能快捷方便的温湿度测量系统整个系统由温湿度检测电路时钟电路LCD显示 电路键盘电路报警电路和单片机等组成设计的系统结构简单紧凑功耗较低抗干 扰能力强总体性能比较好符合了智能仪器仪表小型化的潮流为今后开发高性能 和商品化的温湿度测量仪器奠定了良好的基础 关键词单片机温湿度SHT11传感器 ABSTRACT The temperature and humidity measurement range is very wide application the temperature and humidity measurement system research also has far-reaching significance the subject of temperature and humidity measurement system at home and abroad for the research and development condition temperature and humidity measurement system are analyzed the main problems of the design based on single-chip processor of the temperature and humidity measurement system and for some has special requirements of temperature and humidity achieve long-term stable occasion real-time automatic monitoring This design mainly by the hardware circuit and software circuit two parts the system through the temperature and humidity detection circuit gathering the signal to the microcontroller through the single chip microcomputer to handle the collected signals and through the LCD display if the temperature and humidity too high or low the alarming circuit will automatically alarm AT89C52 single chip microcomputer to it as the core and adopting the integrated SHT11 temperature and humidity sensor implement an intelligent fast and convenient temperature and humidity measurement system the whole system consists of temperature and humidity detection circuit clocking circuit LCD display circuit keyboard circuit alarm circuit and single-chip microcomputer etc The design of the system simple and compact structure low power consumption the anti-interference ability strong overall performance is better in line with the intelligent instruments miniaturization trend in future for the development and commercialization of high performance of temperature and humidity measurement instrument has laid a good foundation Keywords SCM The temperature and humidity SHT11 sensor 目 录 摘 要 I ABSTRACT II 目 录 III 第一章 绪论 1 11概述 1 12 国内外研究现状 1 com 国外研究现状 1 com 国内研究现状 1 13 温湿度检测的发展状况以及存在的问题 2 14 课题研究的主要内容 3 第二章 系统硬件部分设计 4 21 AT89C52单片机介绍 4 22 温湿度测量电路的设计 9 22 1 SHT11简介 9 com SHT11主要性能特点 9 com SHT11工作原理 11 com SHT11输出特性 12 com件 13 com 安装注意事项 13 com SHT11与单片机连接 13 23 LCD显示电路设计 14 com LCD1602简介 14 com LCD1602的特性 14 com LCD1602引脚功能 14 com 指令集 15 com LCD1602与单片机连接 16 24 时钟电路设计 16 com DS1302简介 16 com DS1302工作原理 17 com DS1302 结构及引脚功能 17 com DS1302与单片机连接 18 25 键盘电路设计 18 com 键盘工作原理 18 com 独立式键盘与单片机的连接 19 26 报警电路设计 20 27 抗干扰措施 21 第三章 系统软件设计 22 31 系统总体流程图 22 温湿度采集模块软件设计 23 32 33 LCD显示模块软件设计 25 时钟模块软件设计 29 34 35 报警电路软件设计 30 第四章 仿真与调试 31 41电气原理图 31 42部分参考程序 31 43 仿真结果 47 结束语 51 致谢 52 参考文献 53 第一章 绪论 11概述 温湿度测量是现代检测技术的重要组成部分在保证产品质量提高产品产量节约资源和安全生产方面起着非常重要的作用因此能够确保快速准确的测量温湿度的技术及其装置受到各国的重视随着信息产业的发展及其工业化的进步温度和湿度不仅仅表现在以上几个方面直接或间接影响人类基本生活条件还表现在对生物用品医药卫生科学研究国防建设等方面的影响针对以上情况实现对温湿度的准确可靠测量显的尤其重要近年来利用智能化数字式温湿度传感器以及实现温湿度信息的在线检测已成为温湿度检测技术的一种发展趋势本文介绍的温湿度检测系统以智能化数字式温湿度传感器与52单片机有机结合构成一种温湿度检测系统该系统具有性能可靠测温准确结构简单价格低廉抗干扰能力强等优点可在工程实际中得到广泛应用 12 国内外研究现状 com 国外研究现状 国外对温度控制技术研究较早始于20世纪70年代先是采用模拟式的组合仪表采集现场信息并进行指示记录和控制80年代末出现了分布式控制系统目前正开发和研制计算机数据采集控制系统的多因子综合控制系统现在世界各国的温度测控技术发展很快一些国家在实现自动化的基础上正向着完全自动化无人化的方向发展 我国对于温度测控技术的研究较晚始于20世纪80年代我国工程技术人员在吸收发达国家温度测控技术的基础上才掌握了温度室内微机控制技术该技术仅限于对温度的单项环境因子的控制我国温度测控设施计算机应用在总体上正从消化吸收简单应用阶段向实用化综合性应用阶段过渡和发展在技术上以单片机控制的单参数单回路系统居多尚无真正意义上的多参数综合控制系统与发达国家相比存在较大差距我国温度测量控制现状还远远没有达到工厂化的程度生产 实际中仍然有许多问题困扰着我们存在着装备配套能力差产业化程度低环境控制水平落后软硬件资源不能共享和可靠性差等缺点 传统的温度和湿度检测系统主要有以下几种 1水汽压e是水汽在大气总压力中的分压力它表示了空气中水汽的绝对含量的大小以毫巴为单位 2相对湿度rh湿空气中实际水汽压e与同温度下饱和水汽压E的百分比相对湿度的大小能直接表示空气距离饱和的相对程度空气完全干燥时相对湿度为零相对湿度越小表示当时空气越干燥当相对湿度接近于100时表示空气很潮湿越接近于饱和 3露点或霜点温度指空气在水汽含量和气压都不改变的条件下冷却到饱和时的温度 干湿球温度表用一对并列装置的形状完全相同的温度表一支测气温称干球温度表另一支包有保持浸透蒸馏水的脱脂纱布称湿球温度表 发湿度表计利用脱脂人发或牛的肠衣具有空气潮湿时伸长干燥时缩短的特性制成毛发湿度表或湿度自记仪器它的测湿精度较差毛发湿度表通常在气温低于-10时使用 电阻式湿度片利用吸湿膜片随湿度变化改变其电阻值的原理常用的有碳膜湿敏电阻和氯化锂湿度片两种前者用高分子聚合物和导电材料碳黑加上粘合剂配成一定比例的胶状液体涂覆到基片上组成的电阻片后者是在基片上涂上一层氯化锂酒精溶液当空气湿度变化时氯化锂溶液浓度随之改变从而也改变了测湿膜片的电阻 薄膜湿敏电容是以高分子聚合物为介质的电容器因吸收或释放水汽而改变电容值它制作精巧性能优良常用在探空仪和遥测中 露点仪能直接测出露点温度的仪器使一个镜面处在样品湿空气中降温直到镜面上隐现露滴或冰晶的瞬间测出镜面平均温度即为露霜点温度它测湿精度高 但需光洁度很高的镜面精度很高的温控系统以及灵敏度很高的露滴冰晶的光学探测系统使用时必须使吸入样本空气的管道保持清洁否则管道内的杂质将吸收或放出水分造成测量误差 14 课题研究的主要内容 本设计主要作了如下几个方面的工作一是确定系统的总体功能设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 二是进行自能传感器的硬件电路和软件系统的设计三是单片机及通信接口的硬件电路及软件系统设计 本课题针对这些弱点利用52单片机为核心连接电源模块USB接口温湿度采集与转换模块LCD显示模块键盘控制模块时钟模块报警模块及其附属电路以实现对温湿度的精确稳定的测量本系统具有温湿度测量精度高功能强体积小价格低简单灵活等优点能很好的满足工农业工艺要求 第二章 系统硬件部分设计 本系统硬件部分包括AT89C52单片机温湿度测量电路键盘电路时钟电路LCD显示电路报警电路以及其它附属电路的设计系统设计的整体框图如图21所示17 图21 系统设计的整体框图 21 AT89C52单片机介绍[1]-[6] [19]-[21] AT89C52是一个低电压高性能CMOS 8位单片机片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器RAM器件采用ATMEL公司的高密度非易失性存储技术生产兼容 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 MCS-51指令系统片内置通用8位中央处理器和Flash存储单元AT89C52单片机在电子行业中有着广泛的应用 主要特性 ?与MCS-52 兼容 ?K字节可FLASH闪速存储器 ?1000写擦循环 ?全静态工作0Hz-24MHz ?三级程序存储器锁定 ?×8位内部RAM ?32可编程IO线 ?个16位定时器计数器 ?个中断源 ?可编程串行通道 ?低功耗的闲置和掉电模式 管脚说明 VCC供电电压 GND接地 P0 口 P0 口是一组8 位漏极开路型双向IO 口 也即地址数据总线复用口作为输出口用时每位能吸收电流的 方式驱动8 个TTL逻辑门电路对端口P0 写1时可作为高阻抗输入端用 在访问外部数据存储器或程序存储器时这组口线分时转换地址低8 位和数据总线复用在访问期间激活内部上拉电阻 在Flash 编程时P0 口接收指令字节而在程序校验时输出指令字节校验时要求外接上拉电阻 P1 口 P1 是一个带内部上拉电阻的8 位双向IO 口 P1 的输出缓冲级可驱动吸收或输出电流4 个TTL 逻辑 门电路对端口写1通过内部的上拉电阻把端口拉到高电平此时可作输入口作输入口使用时因为内部存在上拉 电阻某个引脚被外部信号拉低时会输出一个电流 IIL 与AT89C51 不同之处是P10 和P11 还可分别作为定时计数器2 的外部计数输入P10T2和输入P11T2EX 参见表1 Flash 编程和程序校验期间P1 接收低8 位地址 com1的第二功能 引脚号 功能特性 P10 T2时钟输出 P11 T2EX定时计数器2 P2 口 P2 是一个带有内部上拉电阻的8 位双向IO 口P2 的输出缓冲级可驱动吸 个TTL 逻辑 收或输出电流4 门电路对端口P2 写1通过内部的上拉电阻把端口拉到高电平此时可作输入口作输入口使用时因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流 IIL 在访问外部程序存储器或16 位地址的外部数据存储器例如执行MOVX DPTR 指令时P2 口送出高8 位地址数据在访问8 位地址的外部数据存储器如执行MOVX RI 指令时P2 口输出P2 锁存器的内容 Flash 编程或校验时P2亦接收高位地址和一些控制信号 P3 口 P3 口是一组带有内部上拉电阻的8 位双向IO 口P3 口输出缓冲级可驱动吸收或输出电流4 个TTL 逻辑门电路对P3 口写入1时它们被内部上拉电阻拉高并可作为输入端口此时被外部拉低的P3 口将用上拉电阻输出电流IIL P3 口除了作为一般的IO 口线外更重要的用途是它的第二功能 P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号RST 复位输入当振荡器工作时RST引脚出现两个机器周期以上高电平将使单片机复位 ALEPROG 当访问外部程序存储器或数据存储器时ALE地址锁存允许输出脉冲用于锁存地址的低8 位字 节一般情况下ALE 仍以时钟振荡频率的16 输出固定的脉冲信号因此它可对外输出时钟或用于定时目的要注意的是每当访问外部数据存储器时将跳过一个ALE 脉冲 对Flash 存储器编程期间该引脚还用于输入编程脉冲PROG 如有必要可通过对特殊功能寄存器SFR区中的8EH 单元的D0 位置位可禁止ALE 操作该位置位后只有一条 和MOVC指令才能将ALE 激活此外该引脚会被微弱拉高单片机执行外MOVX 部程序时应设置ALE 禁止位无效 PSEN 程序储存允许PSEN输出是外部程序存储器的读选通信号当AT89C52 由外部程序存储器取指令或数 据时每个机器周期两次PSEN 有效即输出两个脉冲在此期间当访问外部数据存储器将跳过两次PSEN信号 EAVPP 外部访问允许欲使CPU 仅访问外部程序存储器地址为0000HFFFFHEA 端必须保持低电平接 地需注意的是如果加密位LB1 被编程复位时内部会锁存EA端状态 如EA端为高电平接Vcc端CPU 则执行内部程序存储器中的指令 Flash 存储器编程时该引脚加上12V 的编程允许电源Vpp当然这必须是该器件是使用12V 编程电压Vpp XTAL1 振荡器反相放大器的及内部时钟发生器的输入端 XTAL2 振荡器反相放大器的输出端 XTAL1XTAL2当使用单片机内部振荡电路时这两个引脚用来外接石英晶体和微调电容 如图23a所示在单片机内部它是一个反相放大器的输入端这个放大器构成了片内振荡器当采用外部时钟时对于HMOS单片机XTAL1引脚接地XTAL2接片外振荡脉冲输入带上拉电阻对于CHMOS单片机XTAL2引脚接地XTAL1接片外振荡脉冲输入带上拉电阻如图23b和c所示 a 内部时钟方式 bHMOS工艺外接时钟 cCHMOS工艺外接时钟 图23 外接晶体电路 复位方式 -52单片机有一个复位引脚RST高电平有效在时钟电路工作以后当外部MCS 电路使得RST端出现2个机器周期24个时钟周期以上的高电平系统内部复位复位有两种方式上电复位和按钮复位如图24所示 a 上电复位 b按钮复位 图24 MCS-52复位电路 22 温湿度测量电路的设计 22 1 SHT11简介 SHT11时瑞士Sensirion公司推出的基于COMSEnsTM技术的新型温湿度传感器该传感器将CMOS芯片技术与传感器技术结合起来从而发挥出它们强大的优势互补作用 com SHT11主要性能特点[17] ?将温湿度传感器信号放大调理AD转换I2C总线接口全部集成于一芯片COMSEnsTM技术 ?可给出全校准相对湿度和温度值输出 ?带有工业标准的I2C总线数字输出接口 ?具有露点值计算输出功能 ?具有卓越的长期稳定性 ?湿度值输出分辨率为14位温度值输出分辨率为12位并可编程为12位和8位 ?小体积765×508×235mm可表面贴装 ?具有可靠的CRC数据传输校验功能 ?片内装载的校准系数可保证100互换性 ?电源电压范围24,55V ?电流消耗测量时550uA平均为28uA休眠时为3uA SHT11温湿度传感器采用SMD LCC 表面贴片封装形式管脚排列如图25所示其引脚说明如下由于将传感器与电路部分结合在一起该传感器具有比其它的温湿度传感器优越得多的性能首先是传感器信号强度的增加增强了传感器的抗干扰性能保证了传戚器的长期稳定性而AD转换的同时完成则降低了传感器对干扰噪声的敏感程度其次在传感器芯片内装载的校准数据保证了每一只温湿度传感器都具有相同的功能即具有100的互换性最后传感器可直接通过I2C总线与任何类型的微处理器微控制器系统连接 图25 节省了单片机的IO接口线降低了成本[16] GND接地端 DATA双向串行数据线 SCK 串行时钟输入 VDD 04,55V电源端 NC 空管脚 com SHT11工作原理[18] SHT11的湿度检测运用电容式结构并采用具有不同保护的微型结构检测电极系统与聚合物覆盖层来组成传感器芯片的电容除保持电容式湿敏器件的原有 特性外还可抵御来自外界的影响由于它将温度传感器与湿 度传感器结合在一起而构成了一个单一的个体因而测量精度较高且可精确得出露点同时不会产生由于温度与湿 度传感器之间随温度梯度变化引起的误差CMOSensTM技术不仅将温湿度传感器结合在一起而且还将信 号放大器模数转换器校准数据存储器标准I2C总线等电路全部集成在一个芯片内SHT11传感器的内部结构框图如图26所示 SHT11的每一个传感器都是在极为精确的湿度室中校准的SHT11传感器的校准系数预先存在OTP内存中经校准的相对湿度和温度传感器与一个14位的AD转换器相连可将转换后的数字温湿度值送给二线 I2C总线器件从而将数字信号转换为符合I2C总线 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 的串行数字信号 图26 SHT11传感器的内部结构框图 com SHT11输出特性 1湿度值输出 SHT11可通过I2C总线直接输出数字量湿度值其相对湿度数字输出特性曲线如图3所示由图3可看出SHT11的输出特性呈一定的非线性为了补偿湿度传感器的非线性可按如下公式修正湿度值 RHlinear c1c2SORHC3SORH 式中SORH为传感器相对湿度测量值系数取值如下 12位SORHc1 -4c2 00405c3 -28×10-6 8位SORHc1 -4c2 0648c3 -72×10-4 2 温度值输出 由于SHT11温度传感器的线性非常好故可用下列公式将温度数字输出转换成实际温度值T d1d2SOT 当电源电压为5V且温度传感器的分辨率为14位时d1 -40d2 001当温度传感器的分辨率为12位时d1 -40d2 004 3 露点计算 空气的露点值可根据相对湿度和温度值来得出具体的计算公式如下 LogEW 06607775T 2373T [log10 RH -2] Dp [ 066077-logEW ×2373] logEW-816077 com件 测量量程以外的温度会使湿度信号暂时地偏移3然后传感器会慢慢返回到校准条件若将芯片在湿度小于5环境下加热24小时到90?芯片就会迅速恢复高相对湿度高温度坏境的影响但是延长强度条件会加速芯片的老化 com 安装注意事项 由于大气的相对湿度与温度的关系比较密切因此测量大气温度时的要点是将传感器与大气保持同一温度 如果传感器线路板上有发热元件SHT11应与热源保持良好的通风为减少SHT11和PCB之间的热传导应使铜导线最细并在其中加上窄缝同时应避免使传感器在强光或UV下曝晒 传感器在布线时SCK和DATA信号平行且相互接近或信号线长于10cm时均会产生干扰信息此时应在两组信号之间放罝VDD或GND com SHT11与单片机连接 图27 SHT11与单片机连接电路图 23 LCD显示电路设计 com LCD1602简介 1602液晶也叫1602字符型液晶它是一种专门用来显示字母数字符号等的点阵型液晶模块它有若干个57或者511等点阵字符位组成每个点阵字符位都可以显示一个字符每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用正因为如此所以他不能显示图形 com LCD1602的特性 ?1602液晶显示器为若干5×8或5×11的点阵显示字符每个点阵块为一个 字符位字符间距和行距都为一个点的宽度 ?1602液晶主控制驱动电路为HD44780或其他全兼容电路 ?提供各种控制命令如清屏字符闪烁光标闪烁显示移位等多种功能 ?有80字节显示数据存储器DDRAM 内建有192个57点阵的字型的字符发生器CGROM 8个可由用户自定义的57的字符发生器CGRAM com 指令集 1602通过D0,D7的8位数据端传输数据和指令 初始化 显示模式设置 0011 0000 [0x38] 设置16×2显示5×7点阵8位数据接口 初始化 显示开关及光标设置 0000 1DCB D显示 1有效 C光标显示 1有效 B光标闪烁 1有效 0000 01NS N 1 读或写一个字符后地址指针加1 光标加1 N 0 读或写一个字符后地址指针减1 光标减1 S 1 且 N 1 当写一个字符后整屏显示左移 s 0 当写一个字符后整屏显示不移动 数据指针设置 数据首地址为80H所以数据地址为80H地址码 0-27H40-67H 其他设置 01H 显示清屏数据指针 0所有显示 0 02H 显示回车数据指针 0 图 28 LCD1602与单片机连接 24 时钟电路设计 com DS1302简介 DS1302 是美国DALLAS公司推出的一种高性能低功耗带RAM的实时时钟电路 它可以对年月日周日时分秒进行计时具有闰年补偿功能工作电压为25V,55V采 用三线接口与CPU进行同步通信并可采用突发方式一次传送多个字节的时钟信号或RAM数据DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器DS1302是DS1202的升级产品与DS1202兼容但增加了主电源后备电源双电源引脚同时提供了对后备电源进行涓细电流充电的能力 com DS1302工作原理 DS1302工作时为了对任何数据传送进疗初始化需要将复位脚RST 置为髙电平且 将8位地址和命令信息装入移位寄存器数据在时钟SCLK的上升沿串行输入前8位指定访问地址命令字装入移位寄存器后在之后的时钟周期读操作时输出数据写操作时输出数据时钟脉冲的个数在单字节方式下为888位地址8位数据在多字节方式下为8加最多可达248的数据 结构及引脚功能 com DS1302 图29a为DS1302引脚排列图29b为其内部结构图 图29a 图29b ?Vcc1为后备电源VCC2为主电源在主电源关闭的情况下也能保持时钟的连续运行DS1302由Vcc1或Vcc2两者中的较大者供电当Vcc2大于Vcc102V时Vcc2给DS1302供电当Vcc2小于Vcc1时DS1302由Vcc1供电 X1和X2是振荡源外接32768kHz晶振 RST是复位片选线通过把RST输入驱动置高电平来启动所有的数据传送RST输入有两种功能首先RST接通控制逻辑允许地址命令序列送入移位寄存器其次RST提供终止单字节或多字节数据的传送手段当RST为高电平时所有的数据传送被初始化允许对DS1302进行操作如果在传送过程中RST置为低电平则会终止此次数据传送IO引脚变为高阻态上电运行时在Vcc 20V之前RST必须保持低电平只有在SCLK为低电平时才能将RST置为高电平 ?IO三线接口时的双向数据线 ?CE输入信号在读写数据期间必须为高该引脚有两个功能第一CE开始控制 字访问移位寄存器的控制逻辑第二CE提供结束单字节或多字节数据传输的方法[7][9] com DS1302与单片机连接 DS1302与CPU的连接需要三条线即SCLK 7 IO 6 RST 5 一个32768kHz 的晶振 图210 DS1302与52单片机的连接 25 键盘电路设计 com 键盘工作原理[6] 键盘实际上是一组按键开关的集合平时按键开关总是处于断开状态 当按下键时它才闭合它的结构和产生的波形如图211所示 a b 图211 键盘开关及波形 图211a中当按键开关未按下时开关处于断开状态P11输出为高电平当按键开关按下时开关处于闭合状态P11输出为低电平 com 独立式键盘与单片机的连接 独立式键盘就是个按键相互独立每个按键各接一根IO接口线每根IO接口线都不会影响其它IO接口线因此通过检测IO接口线的电平状态就可以容易的判断出哪个按键被按下了[4][15] 本次设计只需用到五个键所以采用独立式键盘在程序设计中采用查询方式来判别是否有键按下SH为湿度限设置键ST为温度限设置键V为加一键V-为减一键RE为返回键如图212 图212 独立式键盘 26 报警电路设计 在微型计算机控制系统中为了生产的安全在紧急情况或参数指标超限时要进行及时的报警以便操作人员及时修改一些重要的参数或系统部位采取紧急措 施确保生产的安全性其方法是将检测值与设定值进行比较如果高于上限值或低于下限值则进行报警否则就正常显示[14] 本报警系统的设计由发光二极管和蜂鸣器组成如图213所示当P31输出高电平则蜂鸣器鸣叫当P31输出低电平则蜂鸣器停止TH为温度上限提示灯当温度超过设定的上限值P33输出高电平TH发光同时P31输出高电平蜂鸣器鸣叫TL为温度下限提示灯当温度超过设定的下限值P34输出高电平TL发光同时P31输出高电平蜂鸣器鸣叫HH为湿度上限提示灯当湿度超过设定的上限值P35输出高电平HH发光同时P31输出高电平蜂鸣器鸣叫HL为湿度下限提示灯当湿度超过设定的下限值P36输出高电平HL发光同时P31输出高电平蜂鸣器鸣叫 图213 报警电路与单片机接口 抗干扰措施[1][3] 27 单片机应用系统的工作环境往往都是具有多种干扰源的场所为提高系统的可靠性和精确性抗干扰措施在硬件系统设计中显得的尤为重要 根据干扰源引入的途径抗干扰措施可以从以下几方面考虑 1电源供电系统 为了克服电网及系统自身的干扰可采用隔离变压器交流稳压线滤波器稳压电路各级滤波等抗干扰措施 2电路上的考虑 为进一步提高系统的可靠性在硬件电路设计时应采取一系列的抗干扰措施 a大规模IC芯片电源供电端都应加高频滤波电容根据负载电流的情况在各级供电节点还应加足够容量的退耦电容 b开关量IO通道与外界的隔离可采用光电耦合器件特别是与继电器可控硅等连接的通道一定要采取隔离措施 c可采用CMOS器件提高工作电压如15V这样干扰门限也相应提高 d传感器后缀的变送器尽量采用电流式传输方式因电流型比电压型抗干扰 能力强 e 电路应有合理的布线及接地方法 f与环境干扰的隔离可采用屏蔽措施 本章中确定了系统的设计总体方案温湿度测量所用到的方法单片机应用系统的研制方案还具体介绍了各模块设计方案初步明确了系统的研制方法此外还考虑到了系统设计中所遇到的干扰和消除干扰的方式为系统进一步的设计做好了准备 第三章 系统软件设计 在单片机系统中软件系统与硬件系统紧密结合为提高设计的通用性必须根据具体的硬件电路来设计与之相对应的软件硬件设计的优劣直接关系到软件设计的难易软件设计的优劣又直接影响到硬件的发挥本课题软件部分设计方法与硬件部分设计相对应同样采用模块化的思路将该部分设计分成不同的程序模块分别进行编译调试最后通过主程序将各模块连接起来这样有利于程序的修改和调试增强了程序的可移植性本系统软件设计主要包括温湿度采集转换模块时钟模块LCD显示模块键盘模块等 31 系统总体流程图 图31 系统总体流程图 当单片机上电复位后LCD会显示当前的时间和温度湿度按下相应的功能按键可以调整时间和温湿度的设定值系统的总体流程图[7][8][17] 31所示 32 温湿度采集模块软件设计[18] SHT11传感器共有5条用户命令具体命令格式见表1所列下面介绍一下具体的命令顺序及命令时序 1 传输开始 初始化传输时应首先发出传输开始"命令该命令可在SCK为高时使DATA由高电平变为低电平并在 下一个SCK为高时将DATA升高 接下来的命令顺序包含三个地址位目前只支持0 0 0和5个命令位当DATA脚的SCK位处于低电位时表示SHT11正确收到命令 2 连接复位顺序 如果与SHT11传感器的通讯中断下列信号顺序会使串口复位即当DATA线处于高电平时触发SCK 9次以上含9次此后应接看发一个传输开始命令 3温湿度测量时序 当发出了温湿度测量命令后控制器就要等到测量完成使用81214位的分辨率测量分别需要大 约1 15 5210ms的时间为表明测量完成SHT11会使数据线为低此时控制器必须重新启动SCK然后传送两字节的测量数据与1字节的CRC校验和控制器必须通过使DATA为低来确认每一个字节所有的量均从右算MSB列于第 -8 校验和则控制器就会在测一位通讯在确认CRC数据位后停止如果没有用CRC 量数据LSB后保持ack为高来停止通讯SHT11在测量和通讯完成后会自动返回睡眠模式需要注 意的是为使SHT11的温升低于01?此时的工作频率不能大于标定值的1 5如1 2位精确度时每秒最多进行3次测量 温湿度采集模块程序流程图如图32所示 图32 温湿度采集模块程序流程图 33 LCD显示模块软件设计 LCD控制器总共有11条指令它们的格式和功能如下[6] 1 清屏命令 格式 功能清除屏幕将显示缓冲区DDRAM的内容全部写入空格ASCII20H 光标复位回到显示器的左上角 地址计数器AC清零 2光标复位命令 格式 功能光标复位回到显示器的左上角 地址计数器AC清零 显示缓冲区DDRAM的内容不变 3输入方式设置命令 格式 功能设定当写入一个字节后光标的移动方向以及后面的内容是否移动 当ID 1时光标从左向右移动当ID 0时光标从右向左移动 当S 1内容移动当S 0内容不移动 4显示开关控制命令 格式 功能控制显示的开关当D 1时显示D 0时不显示控制光标开关当C 1时光标显示C 0时光标不显示 控制字符是否闪烁当B 1时字符闪烁B 0时字符不闪烁 5光标移位置命令 格式 功能移动光标或整个显示字幕移位 当SC 1时整个显示字幕移位SC 0时只光标移位 当RL 1时光标右移RL 0时光标左移 6功能设置命令 格式 功能设置数据位数当DL 1时数据位为8位DL 0时数据位为4位 设置显示行数当N 1时双行显示N 0时单行显示 设置字形大小当F 1时5x10点阵F 0时5x7点阵7设置字库CGRAM地址命令 格式 功能设置用户自定义CGRAM的地址对用户自定义CGRAN访问时要先设定CGRAM的地址地址范畴为0,63 8显示缓冲区DDRAM地址设置命令 格式 功能设置当前显示缓冲区DDRAM的地址对DDRAM访问时要先设定DDRAM的地址地址范畴为0,127 9读忙 标志 禁止坐卧标志下载饮用水保护区标志下载桥隧标志图下载上坡路安全标志下载地理标志专用标志下载 及地址计数器AC命令 格式 功能读忙标志及地址计数器AC命令 当BF 1时表示忙这时不能接收命令和数据BF 0时表示不忙 ,127 低7位为读出的AC的地址值为0 10写DDRAM或CGRAM命令 格式 功能向DDRAM或CGRAM当前位置中写入数据对DDRAM或CGRAM写入数据之前必须设定DDRAM或CGRAM的地址 11读DDRAM或CGRAM命令 格式 功能从DDRAM或CGRAM当前位置中读出数据当DDRAM或CGRAM读出数据时必须设定DDRAM或CGRAM的地址 图33为LCD显示流程图 图33 LCD显示流程图 34 时钟模块软件设计 本次设计时钟模块采用DS1302时钟芯片将当前时间显示于LCD上方便人们观察和记录当前的温度和湿度程序流程图如图34所示 图34 时钟模块程序流程图 35 报警电路软件设计 本次设计采用4个发光二极管和蜂鸣器组成的报警电路通过查询的方式判 断温度湿度是否超限执行相应的报警程序程序流程图如图35所示 图35 报警电路程序流程图 第四章 仿真与调试 41电气原理图 图41 电气原理图 42部分参考程序[4][7][8][10][11][12][13] ifndef __TOU_H__ define __TOU_H__ include include include include define uint unsigned int define uchar unsigned char enum TEMPHUMI sbit DATA P25 sbit SCK P24 sbit RS P20 sbit RW P21 sbit E P22 sbit beep P31 sbit THW P33 sbit TLW P34 sbit HHW P35 sbit HLW P36 sfr DBPort 0x80 LCD1602函数声明 void LCD_Initial void GotoXY unsigned char x unsigned char y void Print unsigned char str void LCD_Write bit style unsigned char input void delay int z SHT11函数声明 void s_connectionreset void char s_measure unsigned char p_value unsigned char p_checksum unsigned char mode void calc_sth10 float p_humidity float p_temperature float calc_dewpoint float hfloat t endif DS1302 sbit IO P10 1302数据线 sbit SCLK P11 1302时钟线 sbit RST P12 复位 uint num 0 uchar week[] "SUN""""MON""TUS""WEN""THU""FRI""SAT" uchar idata Date[] "Date 2000-00-00 " uchar idata Time[] "Time 00-00-00 " uchar idata date_time[7] 从ds1302读取的当前日期时间 向1302写数据 void write_ds1302 uchar dat uchar i for i 0i 8i IO dat 0x01 保持最后一位为1读状态 SCLK 1 delay 1 SCLK 0 dat 1 从1302读数据 uchar read_ds1302 uchar ib 0x00 for i 0i 8i b _crol_ uchar IOi SCLK 1 delay 1 SCLK 0 return b1610b16 与BCD码转换 从指定位置读数据 uchar read_data uchar addr uchar dat RST 0 SCLK 0 RST 1 write_ds1302 addr dat read_ds1302 SCLK 1 RST 0 return dat 读取当前日期时间 void read_date_time uchar iaddr 0x81 for i 0i 7i date_time[i] read_data addr addr 2 ----------LCD写指令---------- void lcd_write_com uchar com RS 0 RS为0时写指令RS为1时写数据 P0 com delay 5 E 1 delay 5 E 0 ----------日期时间转换----------- void format_datetime uchar duchar p p[0] d100 p[1] d100 SHT11程序SHT11c include define noACK 0 继续传输数据用于判断是否结束通讯 define ACK 1 结束数据传输 地址 命令 读写 define STATUS_REG_W 0x06 000 0011 0 define STATUS_REG_R 0x07 000 0011 1 define MEASURE_TEMP 0x03 000 0001 1 define MEASURE_HUMI 0x05 000 0010 1 define RESET 0x1e 000 1111 0 写字节程序 char s_write_byte unsigned char value unsigned char ierror 0 for i 0x80i 0i 1 高位为1循环右移 if ivalue DATA 1 和要发送的数相与结果为发送的位 else DATA 0 SCK 1 _nop_ _nop_ _nop_ 延时3us SCK 0 DATA 1 释放数据线 SCK 1 error DATA 检查应答信号确认通讯正常 _nop_ _nop_ _nop_ SCK 0 DATA 1 return error error 1 通讯错误 读字节程序 char s_read_byte unsigned char ack unsigned char ival 0 DATA 1 释放数据线 for i 0x80i 0i 1 高位为1循环右移 SCK 1 if DATA val vali 读一位数据线的值 SCK 0 DATA ack 如果是校验读取完后结束通讯 SCK 1 _nop_ _nop_ _nop_ 延时3us SCK 0 _nop_ _nop_ _nop_ DATA 1 释放数据线 return val 启动传输 void s_transstart void DATA 1 SCK 0 _nop_ SCK 1 _nop_ DATA 0 _nop_ SCK 0 _nop_ _nop_ _nop_ SCK 1 _nop_ DATA 1 _nop_ SCK 0 void s_connectionreset void unsigned char i DATA 1 SCK 0 准备 for i 0i 9i DATA保持高SCK时钟触发9次发送启动 传输通迅即复位 SCK 1 SCK 0 s_transstart 启动传输 温湿度测量 char s_measure unsigned char p_value unsigned char p_checksum unsigned char mode 进行温度或者湿度转换由参数mode决定转换内容 unsigned error 0 unsigned int i s_transstart 启动传输 switch mode 选择发送命令 case TEMP error s_write_byte MEASURE_TEMP break 测量温 度 case HUMI error s_write_byte MEASURE_HUMI break 测量湿 度 default break for i 0i 65535i if DATA 0 break 等待测量结束 if DATA error 1 如果长时间数据线没有拉低说明测量 错误 p_value s_read_byte ACK 读第一个字节高字节 MSB p_value1 s_read_byte ACK 读第二个字节低字节 LSB p_checksum s_read_byte noACK read CRC校验码 return error error 1 通讯错误 温湿度值标度变换及温度补偿 void calc_sth10 float p_humidity float p_temperature const float C1 -40 12位湿度精度 修正公式 const float C2 00405 12位湿度精度 修正公式 const float C3 -00000028 12位湿度精度 修正公式 const float T1 046 14位温度精度 5V条件 修正公式 const float T2 000008 14位温度精度 5V条件 修正公式 float rh p_humidity rh 12位 湿度 float t p_temperature t 14位 温度 float rh_lin rh_lin 湿度 linear值 float rh_true rh_true 湿度 ture值 float t_C t_C 温度 ? t_C t001 - 40 补偿温度 rh_lin C3rhrh C2rh C1 相对湿度非线性补偿 rh_true t_C-25 T1T2rh rh_lin 相对湿度对于温度依赖性补偿 if rh_true 100 rh_true 100 湿度最大修正 if rh_true 01 rh_true 01 湿度最小修正 p_temperature t_C 返回温度结果 p_humidity rh_true 返回湿度结果 从相对温度和湿度计算露点 float calc_dewpoint float hfloat t float logExdew_point logEx 06607775t 2373t log10 h -2 dew_point 066077-logEx 2373 logEx-816077 return dew_point unsigned char LCD_Wait void RS 0 RW 1 _nop_ E 1 _nop_ E 0 return DBPort 向LCD写入命令或数据 define LCD_COMMAND 0 Command define LCD_DATA 1 Data define LCD_CLEAR_SCREEN 0x01 清屏 define LCD_HOMING 0x02 光标返回原点void LCD_Write bit style unsigned char input E 0 RS style RW 0 _nop_ DBPort input _nop_ 注意顺序 E 1 _nop_ 注意顺序 E 0 _nop_ LCD_Wait 设置显示模式 define LCD_SHOW 0x04 显示开 define LCD_HIDE 0x00 显示关 define LCD_CURSOR 0x02 显示光标 define LCD_NO_CURSOR 0x00 无光标 define LCD_FLASH 0x01 光标闪动 define LCD_NO_FLASH 0x00 光标不闪动 void LCD_SetDisplay unsigned char DisplayMode LCD_Write LCD_COMMAND 0x08DisplayMode 设置输入模式 define LCD_AC_UP 0x02 define LCD_AC_DOWN 0x00 default define LCD_MOVE 0x01 画面可平移 define LCD_NO_MOVE 0x00 default void LCD_SetInput unsigned char InputMode LCD_Write LCD_COMMAND 0x04InputMode 初始化LCD void LCD_Initial E 0 LCD_Write LCD_COMMAND0x38 8位数据端口2行显示57点阵 LCD_Write LCD_COMMAND0x38 LCD_SetDisplay LCD_SHOWLCD_NO_CURSOR 开启显示 无光标 LCD_Write LCD_COMMANDLCD_CLEAR_SCREEN 清屏 LCD_SetInput LCD_AC_UPLCD_NO_MOVE AC递增 画面不动 液晶字符输入的位置 void GotoXY unsigned char x unsigned char y if y 0 LCD_Write LCD_COMMAND0x80x if y 1 LCD_Write LCD_COMMAND0x80 x-0x40 将字符输出到液晶显示 void Print unsigned char str \0 while str LCD_Write LCD_DATAstr str typedef union 定义共用同类型 unsigned int i float f value 延时函数 void delay int z z为毫秒数 int xy for x zx 0x-- for y 125y 0y-- void sound interrupt 1 beep beep void warn TR0 1 void main uchar txt[5]hg unsigned int temphumi value humi_valtemp_val 定义两个共同体一个用于湿度一个用于温 度 float dew_point 用于记录露点值 unsigned char error 用于检验是否出现错误 unsigned char checksum CRC uchar idata wendu[6] 用于记录温度 uchar idata shidu[6] 用于记录湿度 beep 0THW 0TLW 0HHW 0HLW 0 TMOD 0x02 TH0 0x01 TL0 0x01 ET0 1 EA 1 LCD_Initial 初始化液晶 GotoXY 91 选择温度显示位置 Print "T" 5格空格 GotoXY 01 选择湿度显示位置 Print "RH" 5格空格 s_connectionreset 启动连接复位 while 1 error 0 初始化error 0即没有错误 error s_measure unsigned char temp_valichecksumTEMP 温度测量 error s_measure unsigned char humi_valichecksumHUMI 湿度测量 if error 0 s_connectionreset 如果发生错误系统复 位 else read_date_time format_datetime date_time[6]Date8 年月日 format_datetime date_time[4]Date11 format_datetime date_time[3]Date14 for hg 0hg 5hg txt[hg] Date[hg11] strncpy Timetxt5 format_datetime date_time[2]Time7 时间转换 format_datetime date_time[1]Time10 format_datetime date_time[0]Time13 GotoXY 00 Print Time humi_valf float humi_vali 转换为浮点数 temp_valf float temp_vali 转换为浮点数 calc_sth10 humi_valftemp_valf 修正相对湿度及温度 dew_point calc_dewpoint humi_valftemp_valf 计算e dew_point temp temp_valf10 humi humi_valf10 GotoXY 111 设置温度显示位置 wendu[0] temp10000 温度百位 wendu[1] temp10001000 温度十位 wendu[2] temp100100 温度个位 wendu[3] 0x2E 小数点 wendu[4] temp100 温度小数点后第一位 Print wendu 输出温度 GotoXY 31 设置湿度显示位置 shidu[0] humi10000 湿度百位 shidu[1] humi10001000 湿度十位 shidu[2] humi100100 湿度个位 shidu[3] 0x2E 小数点 shidu[4] humi100 湿度小数点后第一位 Print shidu 输出湿度 if temp 400 THW 1 else TR0 0beep 0THW 0 if temp 200 TLW 1 else TR0 0beep 0TLW 0 if humi 700 HHW 1 else TR0 0beep 0HHW 0 if humi 500 HLW 1 else TR0 0beep 0HLW 0 if temp 400 temp 200 humi 700 humi 500 warn delay 800 等待足够长的时间以现行下一 次转换 43 仿真结果 正常工作情况 图42 图42 是系统工作在正常状态下的仿真图LCD显示的是当前的时间温度和湿 度软件设计的温度的上限值是40?下限值是20?湿度的上限值是70rh下限值是 50rh当前的温度和湿度均在设定的范围内工作正常 湿度高于上限情况 图43 图43 是系统工作在湿度超过设定上限值状态下的仿真图LCD显示的是当前的时间温度和湿度软件设计的湿度的上限值是70rh下限值是50rh由于此时的湿度值为709rh超过了设定的70rhHH湿度超上限指示灯亮同时蜂鸣器鸣叫 温度低于下限情况 图44 图46 是系统工作在温度低于设定下限值状态下的仿真图LCD显示的是当前 ?下限值是20?由于此时的温的时间温度和湿度软件设计的温度的上限值是40 度值为191?低于了设定的20?TL温度超下限指示灯亮同时蜂鸣器鸣叫 湿度低于下限值温度高于上限值情况 图45 图45 是系统工作在湿度低于下限值温度高于上限值状态下的仿真图LCD显示的是当前的时间温度和湿度软件设计的温度的上限值是40?下限值是20?湿度的上限值是70rh下限值是50rh当前的湿度是469rh低于了设定的50rhHL湿度超下限指示灯亮当前的温度是421?高于了设定的40?TH温度超上限指示灯亮同时蜂鸣器鸣叫 结束语 单片机在各行各业中正得到越来越广泛的应用尤其是5152系列单片机在自动化领域迅速占领着重要地位并取得了许多令人瞩目的成就展现了广阔的应用前景 本次毕业设计基于单片机的温湿度测量系统的研究与设计已经基本完成通过这次毕业设计我掌握了一些实践性质的设计的基本步骤首先对市场上温湿度测量系统要有初步了解并了解其研究现状及存在的不足本设计方案的可利用程度等等明确设计的任务及要达到的目标其次要确立设计方案进行原器件的选型 与硬件设计并用protues软件画出设计电路图并仿真最后进行系统软件设计时要弄清楚各个模块实现的功能对整个系统进行软件编程实现 由于个人的能力有限系统还存在不完善的地方还值得改进和优化比如本设计中只对键盘模块进行了硬件部分的设计而未能完成对软件的设计在调试过程中有些部分程序运行的结果总是达不到预期的效果温湿度的修正还存在着一些问题导致检测出来的温湿度与实际的存在着误差这些方面的问题会在以后的学习和工作中逐步加强与完善 致谢 经过将近两个月的努力毕业设计已经基本完成这和老师的悉心指导和同学们的热心帮助是分不开的通过大学四年对专业知识的学习和大量的课余阅读使我对理论知识有了较好的掌握通过本论文的设计使我的实践能力也得到了飞速的提高从论文的选题到设计一路上都得到了xxx教授悉心的指导他以渊博的知识严谨的治学态度和崇高的责任心指导着我顺利的完成了本次毕业设计xxx教授对工作的执着和奉献精神将是我终生学习的楷模在此向xxx教授致以深深的谢意 衷心的感谢在学业上给予我指导和帮助的各位任课老师他们对工作的勤恳和对学生的关怀使我们受益匪浅帮助我顺利完成了学业同时感谢在学习过程中帮助过我的各位同学们 参考文献 陆子明 徐长根单片机设计与应用基础教程国防工业出版社 200501 朱勇单片机原理与应用技术清华大学出版社 200601 杨将新 李华军 刘东骏单片机程序设计及应用从基础到实践电子工业出版社 2006 李法春单片机原理及接口技术案例教程北京机械工业出版社2006李朝青单片机原理及接口技术北京航空航天大学出版社2005杨加国谢维成 清华大学出 版社 200 夏路易 单片机出版社 200求是科技单片机典型模块设计实例导航人民邮电出版社 2004 蒋辉平 周国雄 基于Protues的单片机系统设计与仿真实例[M] 机械工业出版社 200祁伟 杨亭单片机C51程序设计教程与实验北京航空航天大学出版社2006 刘文涛单片机语言C51典型应用设计人民邮电出版社 2005 谭浩强 C程序设计第三版[M] 清华大学出版社 2005 -51系列单片机接口电路与应用程序实例 北京航空航天大学出沈德金MCS 版社19904 赖麒文8051单片机C语言彻底应用科学出版社2002 余永权单片机在控制系统中的应用 电子工业出版社 2003 张艳丽 杨仁弟 数字温湿度传感器SHT11及其应用[J] 工矿自动化20076第 3期 赵健 吴顺伟 基于单片机的温湿度测量系统的研究与设计[M] 电子技术 httpgo-gddqcomhtmls7302011-05639835htm com der WALApplication of fuzzy logic contro in industry Fuzzy Sets andSystems[J]19957433_41 Dallas Semiconductor Data BookDallas Semiconductor Corp[M]2000 ATMEL8-bit Microcontroller with 8k Bites in-system programmable Flash ST89C52[M] 2001 II 温湿度测量电路 AT89C52 单片机 LCD显示电路 键盘电路 报警电路 复位电路 时钟电路 系统初始化 温湿度采集 LCD显示 按键处理 时钟温湿度显示 上电复位 启动 数据端口定义 写入测湿命令 写入测温命令 计算温度值 计算湿度值 读出数据温度并显示 读出数据湿度并显示 LCD初始化 判断LCD忙 允许写数据 显示 结束 初始化 按键扫描 有键按下 按键处理子程序 DS1302子程序 显示处理子程序 初始化 程序扫描 温度湿度超限 报警子程序
本文档为【基于单片机的温湿度测量系统的研究与设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_589748
暂无简介~
格式:doc
大小:77KB
软件:Word
页数:40
分类:工学
上传时间:2018-01-10
浏览量:39