粮仓温湿度检测系统的设计--物联网原理及应用课程设计.doc_第1页
粮仓温湿度检测系统的设计--物联网原理及应用课程设计.doc_第2页
粮仓温湿度检测系统的设计--物联网原理及应用课程设计.doc_第3页
粮仓温湿度检测系统的设计--物联网原理及应用课程设计.doc_第4页
粮仓温湿度检测系统的设计--物联网原理及应用课程设计.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 石家庄铁道大学 物联网原理及应用 课程作业 2016 年 春 季学期 学 院 电气与电子工程学院 专 业 电子信息工程 课 程 名 称 物联网原理及应用 学 生 姓 名 刘世超 学 号 20132582 指 导 教 师 王伟明 完 成 日 期 2016 05 20 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 摘 要 温湿度控制已成为当今社会研究的热门项目 是工农业生产过程中必须考虑的 因素 作为最常见的被控参数 温度和湿度已经不再是相互独立的物理量 而应在 系统中综合考虑 广泛应用于实验室 大棚 花圃 粮仓乃至土壤等各个领域 而 传统的温湿度控制则利用湿度表 毛发湿度表 双金属式测量计和湿度试纸等测试 器材 通过人工进行检测 对不符合温度和湿度要求的库房进行通风 降温 去湿 等操作 这种人工测试方法费时费力 效率低 切随机性较大 误差大 因此就需 要一种造价低廉 使用方便且计算精确的温湿度控制仪器 利用单片机对温 湿度 控制 具有控温 湿精度高 功能强 体积小 价格低 简单灵活等优点 很好的 满足了工艺要求 本文通过使用 STC89C52 单片机 DHT11 传感器模块 1602 液晶显示屏模块以及 报警模块 简单明了的实现的可提要求 DHT11 数字温湿度传感器把采集到的温湿 度数据传给单片机 经过单片机的处理 准确的显示到液晶屏上 并对温湿度设置 上下限 越限报警 关键词 单片机 DHT11 传感器 1602 液晶显示屏 STC89C52 报警 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 目 录 第 1 章 绪 论 1 1 1 课题研究的背景 1 1 2 课题研究的意义 1 1 3 课题研究的主要内容 1 1 4 课题研究的工作原理 2 第 2 章 系统总体方案设计 3 2 1 功能要求 3 2 2 设计思路 3 2 3 总体设计框图 3 第 3 章 系统硬件设计 5 3 1 概述 5 3 2 主控模块设计 5 3 2 1 STC89C52 芯片的简介 5 3 2 2 主控模块电路原理图 8 3 3 DHT11 传感器模块设计 8 3 3 1 DHT11 传感器简介 8 3 3 2 DHT11 传感器模块电路设计 12 3 4 1602 液晶显示模块设计 13 3 4 1 1602 液晶显示屏简介 13 3 4 2 1602 液晶显示模块电路原理图 16 3 5 报警模块 17 3 5 1 蜂鸣器介绍 17 3 5 2 蜂鸣器工作原理 17 第 4 章 系统软件设计 18 4 1 1602 液晶显示模块设计 19 4 2 传感器模块设计 21 第 5 章 系统分析与调试 23 第 6 章 结论与展望 25 附 录 30 附录 A 硬件原理图 27 附录 B 程序清单 28 附录 C 实物演示图 44 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 第 1 章 绪 论 1 1 课题研究的背景 由古至今 粮仓粮食的存储是否得当对国家的经济能否正常合理的运行有 很大的影响 但是在以前的经济和科技水平有限 所以我国粮食的存储的环境 很差 管理落后 粮库管理的重点之一就是要合理布置测温点 经常检查温度 变化 以便及时发现粮食的发热点 减少粮食的损失 然而 粮堆的热传递又 是那样的缓慢 使人感知极差 需要管理人员经常进入闷热 呛人的仓房内观 察温 湿度 不断进行翻仓 通风 这种繁重的体力劳动 不仅对人体有极大 地伤害 而且不科学 不及时 所以 粮食虫蛀 霉变的情况时有发生 1 2 课题研究的意义 8051 单片机是常用于控制的芯片 在智能仪器仪表 工业检测控制 机电一体 化等方面取得了令人瞩目的成果 用其作为温湿度控制系统的实力也很多 使用 8051 单片机能够实现温湿度全程的自动控制 而且 8051 单片机易于学习掌握 性 价比高 使用 8051 型单片机设计温湿度控制系统 可以即时精确的反应温室内的温度以 及适度的变化 完成诸如升温到特定的温度 降温到特定的温度 在温度上下限范 围内保持恒温等多种控制方式 在湿度控制方面也是如此 将此系统应用到温室当 中无疑为植被生长提供了更加适宜的环境 对于粮仓粮食 必须在某些特定环境安 装温湿度装置对其进行监控 本系统可以及时 精确的反映室内的温度以及湿度的 变化 能够满足温湿度的控制要求 1 3 课题研究的主要内容 本系统所要完成的任务是 1 3 1 人性化的设计 界限温度值及湿度值能够由用户根据不同植被的各种生 长需求由键盘输入并通过显示器显示 1 3 2 能够实时 准确的显示采样温度值与湿度值 1 3 3 通过采集温度及湿度值 准确的判断标准值与当前值之间的差异 及时 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 的启动报警装置 警报提示音提示音 进行报警 并采取相应的方案 1 3 4 能够根据环境在不同时间段内对温湿度的不同要求 用户可随机人为的 更改温度及湿度值 以满足用户不同的需求 1 4 课题研究的工作原理 该电路的最关键部分是关于温度和湿度的采集以及检测 显示 主控电路芯片 采用学校统一制作的 STC89C52 单片机学习板 STC 单片机执行指令的速度很快 对 工作环境的要求比较低 传感器模块我选择了 DHT11 数字温湿度传感器 告别了以 前的单独测量温度以及湿度的方式 更简洁 更方便 连接好外围电路 通过 DHT11 准确的检测出当前环境下的温湿度 并且将所测数据交给 STC 单片机进行分 析和处理 再将所得数据有单片机发送给 HJ1602A 液晶屏 成功完成显示 控制模 块采用蜂鸣器报警方式 预先设置好所需温度和湿度的限值 一个上限一个下限 将蜂鸣器接入电路 通过温度和湿度的上下限值控制蜂鸣器的报警 若逾越限值 实现蜂鸣器鸣响 提醒工作人员此时温度湿度数据出现异常 需及时调整 及时启 用升温器 加湿器 降温风扇以及喷雾器来有效的调整实验室内温湿度 从而简单 实现了控制 总体来说 本次设计主要涉及了温湿度的测量以及实现简单控制 硬 件方面有四个模块 即传感器模块 STC80C52 单片机主控模块 LCD1602 液晶显示 模块以及报警模块 从硬件制作方面 也相对简便 原理清晰 连线方便 不需要 额外的焊接等技术 给硬件的制作带来了极大的便捷 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 第 2 章 系统总体方案设计 2 1 功能要求 1 通过数字温湿度传感器 DHT11 采集温湿度数据 即时传输给单片机 2 单片机将收到的信号进行分析和处理 将采集到时温湿度实时数据送给 1602 液晶显示屏 3 通过 1602LCD 液晶屏完成温湿度的数据显示 4 给定温度湿度上下限数值 设置不同的温湿度 接入蜂鸣器 实现越限报警 5 当温度达到上限值时继电器工作模拟降温 风扇转动 当湿度达到上限值时 继电器工作模拟去湿 2 2 设计思路 电路总体上分为温湿度采集部分 中央处理器 显示模块以及报警模块部分 以 STC89C52 单片机最小系统作为核心控制电路 控制 DHT11 传感器采集的温湿度的 转换 控制 1602 液晶屏的显示 以及蜂鸣器的报警 具体显示内容及方式由软件来 完成 采集温湿度方面由 DHT11 传感器来完成 它是一个数字温湿度传感器 内置 模数转换 可以直接与单片机相连接 而 1602 液晶屏是插针式 也可以直接与单片 机相连接 因此不需要手动焊接等复杂的过程 具体步骤是 按照原理图将传感器 1602 液晶显示屏分别接入单片机 通过 DHT11 传感器采集当前的温湿度值 再经单 片机 将处理后的数据传送到液晶屏上显示出来 并且接入蜂鸣器 设置温度的上 限值 实现越限报警并控制风扇启动 2 3 总体设计框图 按照系统功能的具体要求 在保证实现其功能的然础上 尽可能降低系统成本 总体设计方案围绕上述思想 初步确定系统的方案如图 2 1 所示 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 图 2 1 从图中可以看出 系统有微处理器模块 1602 字符液晶显示模块 DHT11 传感 器模块和报警模块组成 在方案设计中 遵循简洁至上的原则 因此所有的外围模 块采用串行方式与微处理器模块接口 该设计以 STC89C51 系列单片机为控制核心 实现温湿度采集及显示的基本功能 在设计系统时 为了更好地采用模块化设计法 分步的设计各个单元功能模块 系统的硬件部分可以分为传感器的使用 单片机控 制 1602 液晶显示和实现报警四大部分 P2 0 STC89C52 主 控模块 P2 2 P2 4 P0 7 DHT11 传感器模 块 1602 字符液晶模 块 报警模块 传感器与之相 连 1602 字符液 晶与之相连 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 第 3 章 系统硬件设计 3 1 概述 此次的毕业设计主要由 4 个大的模块构成 分别是主控模块 传感器模块 LCD 液晶显示模块及报警模块 其中主控模块是此次毕业设计的核心模块 主要是指 STC89C52 芯片 它控制整个系统的运行 利用其各个口分别控制其他模块 使其他 模块能够成为一个整体 实现功能的需要 报警模块主要指将蜂鸣器接入单片机电 路 通过对时时温度的检测 并给定所需要的温度区间 即给定上下限值 实现越 限报警 传感器模块用于实验室实时温湿度的检测 由于 DHT11 的数字一体性 集 成了模数转换等模块 直接接单片机即可 LCD 液晶显示模块同样接入单片机 完 成对单片机处理后的数据进行显示 3 2 主控模块设计 3 2 1 STC89C52 芯片的简介 功能特性 STC89C52 是一种低功耗 高性能 CMOS8 位微控制器 具有 8K 在系 统可编程 Flash 存储器 与工业 80C51 产品指令和引脚完全兼容 片上 Flash 允许 程序存储器在系统可编程 亦适于常规编程器 在单芯片上 拥有灵巧的 8 位 CPU 和在系统可编程 Flash 使得 STC89C52 为众多嵌入式控制应用系统提供高灵活 超 有效的解决方案 如图 3 1 所示 STC89C52 具有以下标准功能 8k 字节 Flash 256 字节 RAM 32 位 I O 口线 看门狗定时器 2 个数据指针 三个 16 位 定时器 计数器 一个 6 向量 2 级中断结构 全双工串行口 片内晶振及时钟电路 另外 AT89S52 可降至 0Hz 静态逻辑操作 支持 2 种软件可选择节电模式 空闲模 式下 CPU 停止工作 允许 RAM 定时器 计数器 串口 中断继续工作 掉电保护 方式下 RAM 内容被保存 振荡器被冻结 单片机一切工作停止 直到下一个中断 或硬件复位为止 主要性能 与 MCS51 单片机产品兼容 8K 字节在系统可编程 Flash 存储器 1000 次擦写周期 全静态操作 0Hz 33Hz 三级加密程序存储器 32 个可编程 I O 口线 三个 16 位定时器 计数器八个中断源 全双工 UART 串行通道 低功耗 空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 图 3 1 STC89C52 芯片 管脚说明 VCC 供电电压 GND 接地 P0 口 P0 口为一个 8 位漏级开路双向 I O 口 每脚可吸收 8TTL 门电流 当 P1 口的管脚第一次写 1 时 被定义为高阻输入 P0 能够用于外部程序数据存储器 它 可以被定义为数据 地址的第八位 在 FIASH 编程时 P0 口作为原码输入口 当 FIASH 进行校验时 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 口的管脚被外部拉低 将输出电流 这是由于内部上拉 的缘故 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时 P2 口输出地址的高八位 在给出地址 1 时 它利用内部上拉优势 当对外部八位地 址数据存储器进行读写时 P2 口输出其特殊功能寄存器的内容 P2 口在 FLASH 编程 和校验时接收高八位地址信号和控制信号 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 P3 口 P3 口管脚是 8 个带内部上拉电阻的双向 I O 口 可接收输出 4 个 TTL 门 电流 当 P3 口写入 1 后 它们被内部上拉为高电平 并用作输入 作为输由于 外部下拉为低电平 P3 口将输出电流 ILL 这是由于上拉的缘故 P3 口也可作为 STC89C52 的一些特殊功能口 如下表所示 管脚备选功能 表 3 1 P3 口的第二功能 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 外部数据存储器读选通 P3 口同时为闪烁编程和编程校验接收一些控制信号 RST 复位输入 当振荡器复位器件时 要保持 RST 脚两个机器周期的高电平时 间 ALE PROG 当访问外部存储器时 地址锁存允许的输出电平用于锁存地址的地 位字节 在 FLASH 编程期间 此引脚用于输入编程脉冲 在平时 ALE 端以不变的 频率周期输出正脉冲信号 此频率为振荡器频率的 1 6 因此它可用作对外部输出 的脉冲或用于定时目的 然而要注意的是 每当用作外部数据存储器时 将跳过一 个 ALE 脉冲 如想禁止 ALE 的输出可在 SFR8EH 地址上置 0 此时 ALE 只有在执行 MOVX MOVC 指令是 ALE 才起作用 另外 该引脚被略微拉高 如果微处理器在外部 执行状态 ALE 禁止 置位无效 PSEN 外部程序存储器的选通信号 在由外部程序存储器取指期间 每个机器 周期两次 PSEN 有效 但在访问外部数据存储器时 这两次有效的 PSEN 信号将不出 现 EA VPP 当 EA 保持低电平时 则在此期间外部程序存储器 0000H FFFFH 不管是否有内部程序存储器 注意加密方式 1 时 EA 将内部锁定为 RESET 当 EA 端保持高电平时 此间内部程序存储器 在 FLASH 编程期间 此引脚也用于施加 12V 编程电源 VPP XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2 来自反向振荡器的输出 XTAL1 和 XTAL2 分别为反向放大器的输入和输出 该反向放大器可以配置为片 内振荡器 石晶振荡和陶瓷振荡均可采用 如采用外部时钟源驱动器件 XTAL2 应 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 不接 有余输入至内部时钟信号要通过一个二分频触发器 因此对外部时钟信号的 脉宽无任何要求 但必须保证脉冲的高低电平要求的宽度 3 2 2 主控模块电路原理图 单片机主程序模块通过对 DHT11 传感器采集到信号的读取 将得到的数据信号 进行分析和处理 再将处理后的信号发送给 1602 液晶显示模块 完成信息的接收与 发送 并且连接蜂鸣器 控制报警系统 如图 3 2 所示 图 3 2 STC89C52 模块电路原理图 3 3 DHT11 传感器模块设计 3 3 1 DHT11 传感器简介 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器 它应用专用的数字模块采集技术和温湿度传感技术 确保产品具有极高的可靠性与 卓越的长期稳定性 传感器包括一个电阻式感湿元件和一个 NTC 测温元件 并与一 个高性能 8 位单片机相连接 因此该产品具有品质卓越 超快响应 抗干扰能力强 性价比极高等优点 每个 DHT11 传感器都在极为精确的湿度校验室中进行校准 校 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 准系数以程序的形式储存在 OTP 内存中 传感器内部在检测信号的处理过程中要调 用这些校准系数 单线制串行接口 使系统集成变得简易快捷 超小的体积 极低 的功耗 信号传输距离可达 20 米以上 使其成为各类应用甚至最为苛刻的应用场合 的最佳选则 产品为 4 针单排引脚封装 连接方便 特殊封装形式可根据用户需求 而提供 DHT11 传感器实物图如下 3 3 所示 图 3 3 DHT11 传感器实物图 1 引脚介绍 Pin1 VDD 电源引脚 供电电压为 3 5 5V Pin2 DATA 串行数据 单总线 Pin3 NC 空脚 请悬浮 Pin4 VDD 接地端 电源负极 2 接口说明 建议连接线长度短于 20 米时用 5K 上拉电阻 大于 20 米时根据实际情况使用合适的 上拉电阻 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 图 3 4 DHT11 典型应用电路 3 数据帧的描述 DATA 用于微处理器与 DHT11 之间的通讯和同步 采用单总线数据格式 一次通 讯时间 4ms 左右 数据分小数部分和整数部分 具体格式在下面说明 当前小数部分用 于以后扩展 现读出为零 操作流程如下 一次完整的数据传输为 40bit 高位先出 数据格式 8bit 湿度整数数据 8bit 湿度小数数据 8bi 温度整数数据 8bit 温度小数数据 数据传送正确时校验和数据等于 8bit 湿度整数数据 8bit 湿度小数数据 8bi 温度 整数数据 8bit 温度小数数据 所得结果的末 8 位 4 电气特性 VDD 5V T 25 除非特殊标注 表 3 2 DHT11 的电气特性 参数条件Mintypmax单位 供电DC355 5V 测量0 52 5mA 平均0 21mA 供电电流 待机100150uA 采样周期秒1次 注 采样周期间隔不得低于 1 秒钟 5 时序描述 用户 MCU 发送一次开始信号后 DHT11 从低功耗模式转换到高速模式 等待主机 开始信号结束后 DHT11 发送响应信号 送出 40bit 的数据 并触发一次信号采集 用 户可选择读取部分数据 从模式下 DHT11 接收到开始信号触发一次温湿度采集 如果 没有接收到主机发送开始信号 DHT11 不会主动进行温湿度采集 采集数据后转换到 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 低速模式 通讯过程如下图 3 5 所示 图 3 5 总线空闲状态为高电平 主机把总线拉低等待 DHT11 响应 主机把总线拉低必须 大于 18 毫秒 保证 DHT11 能检测到起始信号 DHT11 接收到主机的开始信号后 等待 主机开始信号结束 然后发送 80us 低电平响应信号 主机发送开始信号结束后 延时 等待 20 40us 后 读取 DHT11 的响应信号 主机发送开始信号后 可以切换到输入模 式 或者输出高电平均可 总线由上拉电阻拉高 图 3 6 总线为低电平 说明 DHT11 发送响应信号 DHT11 发送响应信号后 再把总线拉高 80us 准备发送数据 每一 bit 数据都以 50us 低电平时隙开始 高电平的长短定了数 据位是 0 还是 1 格式见下面图示 如果读取响应信号为高电平 则 DHT11 没有响应 请检查线路是否连接正常 当最后一 bit 数据传送完毕后 DHT11 拉低总线 50us 随 后总线由上拉电阻拉高进入空闲状态 数字 0 信号表示方法如下图 3 7 所示 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 图 3 7 数字 1 信号表示方法如下图 3 8 所示 图 3 8 3 3 2 DHT11 传感器模块电路设计 DHT11 传感器连接 STC89C51 系列单片机相对比较简单 单片机的 P2 0 口用来 发收串行数据 即数据口 连接传感器的 Pin2 单总线 串行数据 由于测量范 围电路小于 20 米 建议加一个 5K 的上拉电阻 因此在传感器的 Pin2 口与电源之间 连接一个 5K 电阻 而传感器的电源端口 Pin1 和 Pin4 分别接单片机的 VDD 和 GND 端 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 传感器的第三脚悬浮放置 DHT11 传感器原件的电路原理图如下 3 9 所示 图 3 9 DHT11 电路原理图 3 4 1602 液晶显示模块设计 3 4 1 1602 液晶显示屏简介 HJ1602A 是一种工业字符型液晶 能够同时显示 16x02 即 32 个字符 16 列 2 行 在日常生活中 我们对液晶显示器并不陌生 液晶显示模块已作为很多电子产 品的通过器件 如在计算器 万用表 电子表及很多家用电子产品中都可以看到 显示的主要是数字 专用符号和图形 在单片机的人机交流界面中 一般的输出方 式有以下几种 发光管 LED 数码管 液晶显示器 发光管和 LED 数码管比较常用 软硬件都比较简单 在单片机系统中应用晶液显示器作为输出器件有以下几个优点 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度 恒定发光 而不像阴极射线管显示器 CRT 那样需要不断刷新新亮点 因此 液晶显示器画质 高且不会闪烁 液晶显示器都是数字式的 和单片机系统的接口更加简单可靠 操作更加方便 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的 在重量 上比相同显示面积的传统显示器要轻得多 相对而言 液晶显示器的功耗主要消耗在其内部的电极和驱动 IC 上 因而耗电 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 量比其它显示器要少得多 字符型液晶显示模块是一种专门用于显示字母 数字 符号等点阵式 LCD 目 前常用 16 1 16 2 20 2 和 40 2 行等的模块 下面以长沙太阳人电子有限公司的 1602 字符型液晶显示器为例 介绍其用法 一般 1602 字符型液晶显示器实物如图 3 10 和 3 11 所示 图 3 10 液晶屏正面 图 3 11 液晶屏背面 1 引脚说明 第 1 脚 VSS 为地电源 第 2 脚 VDD 接 5V 正电源 第 3 脚 VL 为液晶显示器对比度调整端 接正电源时对比度最弱 接地时对比 度最高 对比度过高时会产生 鬼影 使用时可以通过一个 10K 的电位器调整对比 度 第 4 脚 RS 为寄存器选择 高电平时选择数据寄存器 低电平时选择指令寄存 器 第 5 脚 R W 为读写信号线 高电平时进行读操作 低电平时进行写操作 当 RS 和 R W 共同为低电平时可以写入指令或者显示地址 当 RS 为低电平 R W 为高电平时可以读忙信号 当 RS 为高电平 R W 为低电平时可以写入数据 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 第 6 脚 E 端为使能端 当 E 端由高电平跳变成低电平时 液晶模块执行命令 第 7 14 脚 D0 D7 为 8 位双向数据线 第 15 脚 背光源正极 第 16 脚 背光源负极 2 1602LCD 的 RAM 地址映射以及标准字库表 LCD1602 液晶模块内部的字符发生存储器已经存储了 160 个不同的点阵字符图 形 这些字符图有 阿拉伯数字 英文字母的大小写 常用的符号 和日文假名等 每一个字符都有一个固定的代码 比如大写的英文字母 A 的代码是 01000001B 41H 显示时模块把地址 41H 中的点阵字符图形显示出来 我们就能看 到字母 它的读写操作 屏幕和光标的操作都是通过指令编程来实现的 说明 1 为高 电平 0 为低电平 指令 1 清显示 指令码 01H 光标复位到地址 00H 位置 指令 2 光标复位 光标返回到地址 00H 指令 3 光标和显示模式设置 I D 光标移动方向 高电平右移 低电平左移 S 屏幕上所有文字是否左移或者右移 高电平表示有效 低电平则无效 指令 4 显示开关控制 D 控制整体显示的开与关 高电平表示开显示 低 电平表示关显示 C 控制光标的开与关 高电平表示有光标 低电平表示无光标 B 控制光标是否闪烁 高电平闪烁 低电平不闪烁 指令 5 光标或显示移位 S C 高电平时移动显示的文字 低电平时移动光标 指令 6 功能设置命令 DL 高电平时为 4 位总线 低电平时为 8 位总线 N 低电平时为单行显示 高电平时双行显示 F 低电平时显示 5X7 的点阵字符 高电平时显示 5x10 的点阵字符 有些模块是 DL 高电平时为 8 位总线 低电平时 为 4 位总线 指令 7 字符发生器 RAM 地址设置 指令 8 DDRAM 地址设置 指令 9 读出忙信号和光标地址 BF 为忙标志位 高电平表示忙 此时模块不 能接收命令或者数据 如果为低电平表示不忙 模块就能接收相应的命令或者数据 指令 10 写数据 指令 11 读数据 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 液晶显示模块是一个慢显示器件 所以在执行每条指令之前一定要确认模块的 忙标志为低电平 表示不忙 否则此指令失效 要显示字符时要先输入显示字符地 址 也就是告诉模块在哪里显示字符 1602 内部显示地址如图 3 12 所示 图 3 12 1602 内部显示地址 例如第二行第一个字符的地址是 40H 那么是否直接写入 40H 就可以将光标定 位在第二行第 一个字符的位置呢 这样不行 因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应该是 01000000B 40H 10000000B 80H 11000000B C0H 在对液晶模块的初始化中要先设置其显示模式 在液晶模块显 示字符时光标是自动右移的 无需人工干预 每次输入指令前都要判断液晶模块是 否处于忙的状态 1602 液晶模块内部的字符发生存储器 CGROM 已经存储了 160 个不同的点阵字符图形 如下图所示 这些字符有 阿拉伯数字 英文字母的大小 写 常用的符号 和日文假名等 每一个字符都有一个固定的代码 比如大写的英 文字母 A 的代码是 01000001B 41H 显示时模块把地址 41H 中的点阵字符图形 显示出来 我们就能看到字母 A 3 4 2 1602 液晶显示模块电路原理图 液晶显示的原理是利用液晶的物理特性 通过电压对其显示区域进行控制 有 电就有显示 这样即可以显示出图形 液晶显示器具有厚度薄 适用于大规模集成 电路直接驱动 易于实现全彩色显示的特点 目前已经被广泛应用在便携式电脑 数字摄像机 PDA 移动通信工具等众多领域 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 图 3 13 1602 显示模块 3 5 报警模块 3 5 1 蜂鸣器介绍 蜂鸣器是一种一体化结构的电子讯响器 采用直流电压供电 广泛应用于计算机 打印机 复印机 报警器 电子玩具 汽车电子设备 电话机 定时器等电子产品 中作发声器件 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型 蜂鸣器在 电路中用字母 H 或 HA 旧标准用 FM LB JD 等 表示 3 5 2 蜂鸣器工作原理 图 3 14 蜂鸣器工作原理图 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 第 4 章 系统软件设计 在对我们所要设计的课题有了整体的了解之后 需要先建立程序框架的流程图 对整个设计划分模块 逐个模块实现其功能 最终把各个子模块合理的连接起来 构成总的程序 主程序首先要对整个系统进行初始化 然后将采集到的温湿度指令 传给系统的主流程图如图 4 1 所示 开始 初始化 延时 温湿度测量 1602 显示数据 判断温度 温度 低于 26 高于 30 蜂鸣器铃响蜂鸣器铃响 结束 图 4 1 主程序流程图 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 4 1 1602 液晶显示模块设计 液晶显示模块是一个慢显示器件 在执行每条指令之前要确认模块的忙标志为 低电平 表示不忙 则此指令失效 要显示字符时要先输入显示字符地址 告诉模 块在哪里现实了字符 1602 液晶显示模块可与 STC89C52 直接接口的 软件流程图 如图 4 2 所示 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 开始 LCD 初始化 延时 设第一行显示位 置 显示第一行内容 设第二行显示位置 显示第二行内容 图 4 2 1602 液晶显示模块程序流程图 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 4 2 传感器模块设计 温湿度模块 DH11 数字温湿传感器加湿器温湿度传感器随着科技的不断发展 汽 车 空调 除湿器 烘干机等种类繁多的电器都已进入人们的日常生活 而这些电 器设备很多都离不开对温度 湿度等环境因素的要求 因此 温度 湿度传感器用 途越来越广泛 新一代的数字传感器不再需要外置的 A D 转换模块 并具有标准接 口 使用方便 得到了越来越多的应用 DHT11 作为一种新型的单总线温湿度数字 传感器 具有更多的优点 它使系统设计更加简单 控制方便 易于实现 1 单总 线通信简介 目前常用的微机与外设之间进行数据传输的串行总线主要有 I2C 总线 SPI 总线和 SCI 总线 其中 I2C 总线以同步串行两线方式进行通信 1 条时钟线 1 条数据线 SPI 总线则以同步串行三线方式进行通信 1 条时钟线 1 条数据输入线 1 条数据输出线 而 SCI 总线是以异步方式进行通信的 1 条数据输入线 1 条数据 输出线 这些总线至少需要两条或两条以上的信号线 DHT11 传感器模块的软件流程图如下图所示 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 给 DHT11 上电 延时 1S 保持高电平 检测记录信号 输出低电平 延时 输出低电平 数据输出 结束信号 图 4 3 DHT11 传感器模块程序流程图 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 第 5 章 系统分析与调试 本设计是在 Keil C 环境下开发的 Keil C 软件支持 C 语言的编程及调试 运 用方便 是做 C 语言毕业设计者的首选 设计的首要任务是安装和学习使用这个软 件 在简单的学习和了解 Keil C 后 我们便可在此环境下开始了对带录音功能的电 子琴的设计工作 在编译完 Keil C 后 再运用 STC ISP V480 软件烧录到开发板上 实现实物与程序的连接 在烧录前要对 STC ISP V480 进行一些必要的设置 第一步 设置 MCU Type 为 STC89C52RC 第二步 打开编写好并编译的程序文件 它是以 hex 为后缀的文件 第三步 选择对应的 COM 端口 可在我的电脑的设备管理处查 看 COM 选项 第四步 点击 Download 下载 等提示 请给 MCU 上电时 打开开发板上的开关 它就自行烧录了 Keil C 程序运行如图 5 1 所示 图 5 1 keil C 运行图 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 图 5 2 程序烧录运行图 在完成对程序的调试及烧录之后 还需要对其进行演示 把开发板与电脑连上 设置好对应的接口 完成供电及下载 开始供电后 稍带几秒等 1602 液晶屏能正常 显示当前温湿度了之后 观察当前温湿度的变化 并且针对与自己设定的限值相比 较 若当前温度没有超标 即没有超过限值 可以用手捂住 DHT11 传感器 令其温 度的显示超标 测试能否达到报警 经过测试 完全可行 因而简单的实现了对温 度的控制 湿度控制原理跟温度一样 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 第 6 章 结论与展望 本系统以单片机为核心部件的控制系统 利用软件编程 最终基本上实现了各 项要求 虽然系统还存在一些不足 比如温湿度测量不够精确 特别是湿度 波动 较大 尝试了各种改进方法 仍然不太理想 不过大体能反映出设计的目的和要求 与预期的结果相差不多 经过近两个月的奋斗 从确定题目 到后来查找资料 理论学习 实验编程调 试 这一切都使我的理论知识和动手能力有了很大的提高 了解了单片机的硬件结 构和软件编程方法 对单片机的工作方式有了很大的认知 同时 对一些外围设备 比如传感器 液晶屏 键盘 蜂鸣器等有了一定的了解 学会了对一项工程如何设 计 首先 要分析需要设计的系统要实现什么功能 需要什么器件 然后 针对设 计购买相应的硬件 选用硬件时不仅要选用经济的 更重要的是如何能更精确更方 便的完成系统的要求 再次 对各个硬件的软件实现要弄清楚 如何更好的实现各 个硬件的协调 更好的通过主控制器件实现硬件的功能 最后 通过各种测试与调 试 让设计更好的完成系统要求 但因为我们的水平有限 此设计中也存在一定的不足 就比如说对湿度的控制 方面 由于温度时刻都在发生着变化 而湿度的变化又大体上取决于温度 因而对 于湿度的控制有点困难 同时由于湿度变化波动比较大 造成报警频繁 为湿度限 值的设定也带来了不小的麻烦 温湿度控制已经成为了 21 世纪热门研究话题之一 无论是从生产还是生活 与 我们人类都是息息相关的 而智能化的控制温湿度已经发展成为一种必然 随着世 界经济的发展 人们生活水平的提高以及社会的进步 我们不可能一直墨守陈规 不能在恪守以前利用人力资源来控制温湿度的方法 不仅浪费大量的人力资源 财 力资源 并且控制系统也更加单一化 而采用自动控制的办法 既节省了人力资源 更体现了与时俱进的思想 世界在进步 而这种进步就该体现在各个方面 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 参考文献 1 陈明荧 8051 单片机课程设计实训教材 M 北京 清华大学出版社 2003 2 徐新艳 单片机原理 应用与实践 M 北京 高等教育出版社 2005 3 吴金戌 沈庆阳 郭庭吉 8051 单片机实践与应用 M 北京 清华大学出版社 2002 4 王千 实用电子电路大全 M 电子工业出版社 2001 5 冯博琴 微型计算机原理与接口技术 M 北京 清华大学出版社 2004 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 附录 A 硬件原理图 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 附录 B 程序清单 include 调用单片机头文件 define uchar unsigned char 无符号字符型 宏定义 变量范围 0 255 define uint unsigned int 无符号整型 宏定义 变量范围 0 65535 include sbit beep P1 4 蜂鸣器 IO 口定义 sbit relay1 P1 3 温度报警继电器 IO 口定义 sbit relay2 P1 6 湿度报警继电器 IO 口定义 uchar a a uchar flag en 1 bit flag 300ms 按键的 IO 变量的定义 uchar key can 按键值的变量 uchar menu shudu 20 用来控制连加的速度 uchar menu 1 菜单设计的变量 uint t high 30 温度报警参数 uint s high 30 湿度报警参数 uchar key time flag value 用做连加的中间变量 bit key 500ms 名称 delay 1ms 功能 延时 1ms 函数 输入 q 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 输出 无 void delay 1ms uint q uint i j for i 0 i q i for j 0 j 8 地址赋值 ISP ADDRL unsigned char byte addr ISP CMD ISP CMD 清除低 3 位 ISP CMD ISP CMD RdCommand 写入读命令 ISPgoon 触发执行 ISP IAP disable 关闭 ISP IAP 功能 EA 1 return ISP DATA 返回读到的数据 扇区擦除 void SectorErase unsigned int sector addr unsigned int iSectorAddr iSectorAddr sector addr 取扇区地址 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 ISP ADDRH unsigned char iSectorAddr 8 ISP ADDRL 0 x00 ISP CMD ISP CMD 清空低 3 位 ISP CMD ISP CMD EraseCommand 擦除命令 3 ISPgoon 触发执行 ISP IAP disable 关闭 ISP IAP 功能 字节写 void byte write unsigned int byte addr unsigned char original data EA 0 SectorErase byte addr ISP ADDRH unsigned char byte addr 8 取地址 ISP ADDRL unsigned char byte addr ISP CMD ISP CMD 清低 3 位 ISP CMD ISP CMD PrgCommand 写命令 2 ISP DATA original data 写入数据准备 ISPgoon 触发执行 ISP IAP disable 关闭 IAP 功能 EA 1 把数据保存到单片机内部 eeprom 中 void write eeprom 保存数据 SectorErase 0 x2000 byte write 0 x2000 t high byte write 0 x2002 s high byte write 0 x2055 a a 把数据从单片机内部 eeprom 中读出来 void read eeprom 读出保存数据 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 t high byte read 0 x2000 s high byte read 0 x2002 a a byte read 0 x2055 开机自检 eeprom 初始化 void init eeprom 开始初始化保存的数据 read eeprom 读出保存数据 if a a 84 新的单片机初始单片机内问 eeprom t high 40 s high 78 a a 84 write eeprom 保存数据 uchar code table num 0123456789abcdefg sbit rs P1 0 寄存器选择信号 H 数据寄存器 L 指令寄存器 sbit rw P1 1 寄存器选择信号 H 数据寄存器 L 指令寄存器 sbit e P1 2 片选信号 下降沿触发 名称 delay uint 功能 小延时 输入 无 输出 无 void delay uint uint q 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 while q 名称 write com uchar com 功能 1602 命令函数 输入 输入的命令值 输出 无 void write com uchar com e 0 rs 0 rw 0 P0 com delay uint 25 e 1 delay uint 100 e 0 名称 write data uchar dat 功能 1602 写数据函数 输入 需要写入 1602 的数据 输出 无 void write data uchar dat e 0 rs 1 rw 0 P0 dat 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 delay uint 25 e 1 delay uint 100 e 0 lcd1602 上显示特定的字符 0XDF 度 void write zifu uchar hang uchar add uchar date if hang 1 write com 0 x80 add else write com 0 x80 0 x40 add write data date lcd1602 上显示两位十进制数 void write sfm2 uchar hang uchar add uint date if hang 1 write com 0 x80 add else write com 0 x80 0 x40 add write data 0 x30 date 10 10 write data 0 x30 date 10 lcd1602 上显示这字符函数 void write string uchar hang uchar add uchar p if hang 1 此文档收集于网络 如有侵权 请联系网站删除 此文档仅供学习与交流 write com 0 x80 add else write com 0 x80 0 x40 add while 1 if p 0 break write data p p lcd1602 初始化设置 void init 1602 lcd1602 初始化 write com 0 x38 write com 0 x0c write com 0 x06 delay uint 1000 write string 1 0 Wendu 00 WH 00 write string 2 0 Shidu 00 SH 00 write zifu 1 8 0 x

温馨提示

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

评论

0/150

提交评论