版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、石家庄铁道大学物联网原理及应用课程作业 2016 年 春 季学期学 院: 电气与电子工程学院 专 业: 电子信息工程 课 程 名 称: 物联网原理及应用 学 生 姓 名: 刘世超 学 号: 20132582 指 导 教 师: 王伟明 完 成 日 期: 2016.05.20 摘要温湿度控制已成为当今社会研究的热门项目。是工农业生产过程中必须考虑的因素。作为最常见的被控参数。温度和湿度已经不再是相互独立的物理量,而应在系统中综合考虑。广泛应用于实验室、大棚、花圃、粮仓乃至土壤等各个领域。而传统的温湿度控制则利用湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材。通过人工进行检测。对不符合温度和
2、湿度要求的库房进行通风、降温、去湿等操作。这种人工测试方法费时费力,效率低。切随机性较大。误差大。因此就需要一种造价低廉、使用方便且计算精确的温湿度控制仪器。利用单片机对温、湿度控制,具有控温、湿精度高、功能强、体积小、价格低,简单灵活等优点,很好的满足了工艺要求。本文通过使用 STC89C52 单片机、DHT11 传感器模块、1602 液晶显示屏模块以及报警模块。简单明了的实现的可提要求。DHT11 数字温湿度传感器把采集到的温湿度数据传给单片机。经过单片机的处理。准确的显示到液晶屏上。并对温湿度设置上下限。越限报警。关键词:单片机DHT11 传感器1602 液晶显示屏STC89C52报警
3、目录第 1 章绪论11.1课题研究的背景11.2课题研究的意义11.3课题研究的主要内容11.4课题研究的工作原理2第 2 章系统总体方案设计32.1功能要求32.2设计思路32.3 总体设计框图 3第 3 章系统硬件设计53.1概述53.2主控模块设计53.2.1STC89C52 芯片的简介53.2.2主控模块电路原理图83.3DHT11 传感器模块设计83.3.1DHT11 传感器简介83.3.2DHT11 传感器模块电路设计123.41602 液晶显示模块设计133.4.11602 液晶显示屏简介133.4.21602 液晶显示模块电路原理图163.5报警模块173.5.1蜂鸣器介绍17
4、3.5.2蜂鸣器工作原理17第 4 章系统软件设计184.11602 液晶显示模块设计194.2传感器模块设计21第 5 章系统分析与调试23第 6 章结论与展望25附录30附录 A硬件原理图27附录 B程序清单28 附录 C 实物演示图 44- 0 - 0 -第 1 章绪论1.1课题研究的背景由古至今,粮仓粮食的存储是否得当对国家的经济能否正常合理的运行有很大的影响。但是在以前的经济和科技水平有限,所以我国粮食的存储的环境很差,管理落后。粮库管理的重点之一就是要合理布置测温点,经常检查温度变化,以便及时发现粮食的发热点,减少粮食的损失。然而,粮堆的热传递又是那样的缓慢,使人感知极差,需要管理
5、人员经常进入闷热、呛人的仓房内观察温、湿度,不断进行翻仓、通风,这种繁重的体力劳动,不仅对人体有极大地伤害,而且不科学、不及时。所以,粮食虫蛀、霉变的情况时有发生。1.2课题研究的意义8051 单片机是常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,用其作为温湿度控制系统的实力也很多。使用8051 单片机能够实现温湿度全程的自动控制,而且 8051 单片机易于学习掌握,性价比高。使用 8051 型单片机设计温湿度控制系统,可以即时精确的反应温室内的温度以及适度的变化。完成诸如升温到特定的温度、降温到特定的温度。在温度上下限范围内保持恒温等多种控制方式,在湿
6、度控制方面也是如此。将此系统应用到温室当中无疑为植被生长提供了更加适宜的环境。对于粮仓粮食,必须在某些特定环境安装温湿度装置对其进行监控。本系统可以及时、精确的反映室内的温度以及湿度的变化,能够满足温湿度的控制要求。1.3课题研究的主要内容本系统所要完成的任务是:1.3.1 人性化的设计。界限温度值及湿度值能够由用户根据不同植被的各种生长需求由键盘输入并通过显示器显示。1.3.2 能够实时、准确的显示采样温度值与湿度值。1.3.3 通过采集温度及湿度值,准确的判断标准值与当前值之间的差异,及时- 1 - 1 -的启动报警装置(警报提示音提示音)进行报警,并采取相应的方案。1.3.4 能够根据环
7、境在不同时间段内对温湿度的不同要求,用户可随机人为的更改温度及湿度值,以满足用户不同的需求。1.4课题研究的工作原理该电路的最关键部分是关于温度和湿度的采集以及检测、显示。主控电路芯片采用学校统一制作的 STC89C52 单片机学习板。STC 单片机执行指令的速度很快,对工作环境的要求比较低;传感器模块我选择了 DHT11 数字温湿度传感器。告别了以前的单独测量温度以及湿度的方式,更简洁,更方便。连接好外围电路。通过DHT11 准确的检测出当前环境下的温湿度,并且将所测数据交给 STC 单片机进行分析和处理。再将所得数据有单片机发送给 HJ1602A 液晶屏。成功完成显示。控制模块采用蜂鸣器报
8、警方式。预先设置好所需温度和湿度的限值(一个上限一个下限) ,将蜂鸣器接入电路。通过温度和湿度的上下限值控制蜂鸣器的报警。若逾越限值,实现蜂鸣器鸣响。提醒工作人员此时温度湿度数据出现异常、需及时调整,及时启用升温器、加湿器、降温风扇以及喷雾器来有效的调整实验室内温湿度。从而简单实现了控制。总体来说,本次设计主要涉及了温湿度的测量以及实现简单控制。硬件方面有四个模块,即传感器模块、STC80C52 单片机主控模块、LCD1602 液晶显示模块以及报警模块,从硬件制作方面。也相对简便。原理清晰、连线方便,不需要额外的焊接等技术。给硬件的制作带来了极大的便捷。- 2 - 2 -第 2 章系统总体方案
9、设计2.1功能要求1、通过数字温湿度传感器 DHT11 采集温湿度数据,即时传输给单片机;2、单片机将收到的信号进行分析和处理,将采集到时温湿度实时数据送给1602 液晶显示屏;3、通过 1602LCD 液晶屏完成温湿度的数据显示;4、给定温度湿度上下限数值,设置不同的温湿度,接入蜂鸣器,实现越限报警;5.当温度达到上限值时继电器工作模拟降温(风扇转动) ,当湿度达到上限值时继电器工作模拟去湿。2.2设计思路电路总体上分为温湿度采集部分、中央处理器、显示模块以及报警模块部分。以 STC89C52 单片机最小系统作为核心控制电路,控制 DHT11 传感器采集的温湿度的转换,控制 1602 液晶屏
10、的显示,以及蜂鸣器的报警。具体显示内容及方式由软件来完成。采集温湿度方面由 DHT11 传感器来完成,它是一个数字温湿度传感器、内置模数转换,可以直接与单片机相连接。而 1602 液晶屏是插针式,也可以直接与单片机相连接。因此不需要手动焊接等复杂的过程。具体步骤是:按照原理图将传感器、1602 液晶显示屏分别接入单片机。通过 DHT11 传感器采集当前的温湿度值、再经单片机,将处理后的数据传送到液晶屏上显示出来。并且接入蜂鸣器。设置温度的上限值。实现越限报警并控制风扇启动。2.3 总体设计框图按照系统功能的具体要求,在保证实现其功能的然础上,尽可能降低系统成本。总体设计方案围绕上述思想,初步确
11、定系统的方案如图 2-1 所示。- 3 - 3 -图 2-1从图中可以看出,系统有微处理器模块、1602 字符液晶显示模块、DHT11 传感器模块和报警模块组成。在方案设计中,遵循简洁至上的原则,因此所有的外围模块采用串行方式与微处理器模块接口。该设计以 STC89C51 系列单片机为控制核心,实现温湿度采集及显示的基本功能。在设计系统时,为了更好地采用模块化设计法,分步的设计各个单元功能模块,系统的硬件部分可以分为传感器的使用、单片机控制、1602 液晶显示和实现报警四大部分。P2.0 STC89C52 主控模块P2.2P2.4 P0.7DHT11 传感器模块1602 字符液晶模块报警模块传
12、感器与之相连1602 字符液晶与之相连- 4 - 4 -第 3 章系统硬件设计3.1概述此次的毕业设计主要由 4 个大的模块构成,分别是主控模块、传感器模块、LCD液晶显示模块及报警模块,其中主控模块是此次毕业设计的核心模块,主要是指STC89C52 芯片,它控制整个系统的运行,利用其各个口分别控制其他模块,使其他模块能够成为一个整体,实现功能的需要;报警模块主要指将蜂鸣器接入单片机电路。通过对时时温度的检测,并给定所需要的温度区间,即给定上下限值,实现越限报警;传感器模块用于实验室实时温湿度的检测、由于 DHT11 的数字一体性,集成了模数转换等模块。直接接单片机即可。LCD 液晶显示模块同
13、样接入单片机,完成对单片机处理后的数据进行显示。3.2主控模块设计3.2.1STC89C52 芯片的简介功能特性:STC89C52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU和在系统可编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案,如图 3-1 所示。STC89C52 具有以下标准功能: 8k 字节Flash,256 字节 RAM,32 位 I/O 口线
14、,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。主要性能:与 MCS51 单片机产品兼容、8K 字节在系统可编程 Flash 存储器、1000 次擦写周期、全静态操作:0Hz33Hz 、三级加密程序存储器 、32 个可编程I/O 口线 、三个 16 位定时
15、器/计数器八个中断源、全双工 UART 串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。- 5 - 5 -图 3-1STC89C52 芯片管脚说明:VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向
16、 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址
17、“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。- 6 - 6 -P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为 STC89C52 的一些特殊功能口,如下表所示:管脚备选功能:表 3-1P3 口的第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2
18、/INT0(外部中断 0)P3.3/INT1(外部中断 1)P3.4T0(记时器 0 外部输入)P3.5T1(记时器 1 外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然
19、而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为
20、RESET;当/EA端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP) 。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应- 7 - 7 -不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.2.2主控模块电路原理图单片机主程序模块通过对 DHT11 传感器采集到信
21、号的读取,将得到的数据信号进行分析和处理,再将处理后的信号发送给 1602 液晶显示模块。完成信息的接收与发送。并且连接蜂鸣器。控制报警系统。如图 3-2 所示。图 3-2STC89C52 模块电路原理图3.3DHT11 传感器模块设计3.3.1DHT11 传感器简介DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 DH
22、T11 传感器都在极为精确的湿度校验室中进行校准。校- 8 - 8 -准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达 20 米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。 DHT11 传感器实物图如下 3-3 所示:图 3-3DHT11 传感器实物图(1)引脚介绍:Pin1:(VDD),电源引脚,供电电压为 35.5V。Pin2:(DATA) ,串行数据,单总线。Pin3:(NC) ,
23、空脚,请悬浮。Pin4(VDD) ,接地端,电源负极。(2)接口说明 :建议连接线长度短于 20 米时用 5K 上拉电阻,大于 20 米时根据实际情况使用合适的上拉电阻。- 9 - 9 -图 3-4DHT11 典型应用电路(3)数据帧的描述:DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次通讯时间 4ms 左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为 40bit,高位先出。数据格式:8bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据数据传送正
24、确时校验和数据等于“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 的数据,并触发一次信号采集,用户可选择读取部分数据.
25、从模式下,DHT11 接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11 不会主动进行温湿度采集.采集数据后转换到- 10 - 10 -低速模式。通讯过程如下图 3-5 所示:图 3-5总线空闲状态为高电平,主机把总线拉低等待 DHT11 响应,主机把总线拉低必须大于 18 毫秒,保证 DHT11 能检测到起始信号。DHT11 接收到主机的开始信号后,等待主机开始信号结束,然后发送 80us 低电平响应信号.主机发送开始信号结束后,延时等待 20-40us 后, 读取 DHT11 的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻
26、拉高。图 3-6 总线为低电平,说明 DHT11 发送响应信号,DHT11 发送响应信号后,再把总线拉高80us,准备发送数据,每一 bit 数据都以 50us 低电平时隙开始,高电平的长短定了数据位是 0 还是 1.格式见下面图示.如果读取响应信号为高电平,则 DHT11 没有响应,请检查线路是否连接正常.当最后一 bit 数据传送完毕后,DHT11 拉低总线 50us,随后总线由上拉电阻拉高进入空闲状态。数字 0 信号表示方法如下图 3-7 所示:- 11 - 11 - 图 3-7数字 1 信号表示方法如下图 3-8 所示图 3-83.3.2DHT11 传感器模块电路设计 DHT11 传感
27、器连接 STC89C51 系列单片机相对比较简单。单片机的 P2.0 口用来发收串行数据,即数据口。连接传感器的 Pin2(单总线,串行数据) 。由于测量范围电路小于 20 米,建议加一个 5K 的上拉电阻,因此在传感器的 Pin2 口与电源之间连接一个 5K 电阻。而传感器的电源端口 Pin1 和 Pin4 分别接单片机的 VDD 和 GND 端。- 12 - 12 -传感器的第三脚悬浮放置。DHT11 传感器原件的电路原理图如下 3-9 所示: 图 3-9 DHT11 电路原理图3.41602 液晶显示模块设计3.4.11602 液晶显示屏简介HJ1602A 是一种工业字符型液晶,能够同时
28、显示 16x02 即 32 个字符。 (16 列 2行) 。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED 数码管、液晶显示器。发光管和 LED 数码管比较常用,软硬件都比较简单。在单片机系统中应用晶液显示器作为输出器件有以下几个优点:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。 液晶显示
29、器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动 IC 上,因而耗电- 13 - 13 -量比其它显示器要少得多。 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式 LCD,目前常用 16*1,16*2,20*2 和 40*2 行等的模块。下面以长沙太阳人电子有限公司的1602 字符型液晶显示器为例,介绍其用法。一般 1602 字符型液晶显示器实物如图 3-10 和 3-11 所示:图 3-10 液晶屏正面
30、 图 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 为低电平时可以写入数据。 -
31、 14 - 14 -第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 714 脚:D0D7 为 8 位双向数据线。 第 15 脚:背光源正极。 第 16 脚:背光源负极。(2)1602LCD 的 RAM 地址映射以及标准字库表LCD1602 液晶模块内部的字符发生存储器已经存储了 160 个不同的点阵字符图形,这些字符图有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H) ,显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母。它的读写操作、屏幕
32、和光标的操作都是通过指令编程来实现的(说明:1 为高电平,0 为低电平) 。指令 1:清显示,指令码 01H,光标复位到地址 00H 位置。指令 2:光标复位,光标返回到地址 00H 。指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 。指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。 C:控制光标的开与关,高电平表示有光标,低电平表示无光标。 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 。指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移
33、动光标 。指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线。 N:低电平时为单行显示,高电平时双行显示。 F:低电平时显示 5X7 的点阵字符,高电平时显示 5x10 的点阵字符 (有些模块是 DL:高电平时为 8 位总线,低电平时为 4 位总线) 。指令 7:字符发生器 RAM 地址设置 。指令 8:DDRAM 地址设置 。指令 9:读出忙信号和光标地址。 BF 为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。指令 10:写数据 。指令 11:读数据 。- 15 - 15 -液晶显示模块是一个慢显示器件
34、,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。1602 内部显示地址如图 3-12 所示: 图 3-12 1602 内部显示地址例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第 一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7恒定为高电平 1,所以实际写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H) 。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无
35、需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B(41H) ,显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“A” 。3.4.21602 液晶显示模块电路原理图液晶显示的原理是利用液晶的物理特性, 通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱
36、动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA 移动通信工具等众多领域。- 16 - 16 -图 3-131602 显示模块3.5报警模块3.5.1蜂鸣器介绍蜂鸣器是一种一体化结构的电子讯响器。采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA” (旧标准用“FM” 、 “LB” 、 “JD”等)表示。3.5.2蜂鸣器工作原理图 3-14蜂鸣器工作原理图- 17 - 17 -第 4 章系统软件设计在对我们
37、所要设计的课题有了整体的了解之后,需要先建立程序框架的流程图,对整个设计划分模块,逐个模块实现其功能,最终把各个子模块合理的连接起来,构成总的程序。主程序首先要对整个系统进行初始化,然后将采集到的温湿度指令传给系统的主流程图如图 4-1 所示: 开始初始化延时温湿度测量1602 显示数据判断温度温度低于 26高于 30蜂鸣器铃响蜂鸣器铃响结束图 4-1主程序流程图- 18 - 18 -4.11602 液晶显示模块设计液晶显示模块是一个慢显示器件,在执行每条指令之前要确认模块的忙标志为低电平,表示不忙,则此指令失效,要显示字符时要先输入显示字符地址,告诉模块在哪里现实了字符。1602 液晶显示模
38、块可与 STC89C52 直接接口的。软件流程图如图 4-2 所示:- 19 - 19 -开始LCD 初始化延时设第一行显示位置显示第一行内容设第二行显示位置显示第二行内容图 4-21602 液晶显示模块程序流程图- 20 - 20 -4.2传感器模块设计温湿度模块 DH11 数字温湿传感器加湿器温湿度传感器随着科技的不断发展,汽车、空调、除湿器、烘干机等种类繁多的电器都已进入人们的日常生活,而这些电器设备很多都离不开对温度、湿度等环境因素的要求。因此,温度、湿度传感器用途越来越广泛。新一代的数字传感器不再需要外置的 A D 转换模块,并具有标准接口,使用方便,得到了越来越多的应用。DHT11
39、 作为一种新型的单总线温湿度数字传感器,具有更多的优点,它使系统设计更加简单,控制方便,易于实现。1 单总线通信简介 目前常用的微机与外设之间进行数据传输的串行总线主要有 I2C 总线、SPI 总线和 SCI 总线。其中 I2C 总线以同步串行两线方式进行通信(1 条时钟线,1条数据线),SPI 总线则以同步串行三线方式进行通信(1 条时钟线,1 条数据输入线,1 条数据输出线),而 SCI 总线是以异步方式进行通信的(1 条数据输入线,1 条数据输出线)。这些总线至少需要两条或两条以上的信号线。DHT11 传感器模块的软件流程图如下图所示- 21 - 21 -给 DHT11 上电延时 1S保
40、持高电平检测记录信号输出低电平延时输出低电平数据输出结束信号图 4-3DHT11 传感器模块程序流程图- 22 - 22 -第 5 章系统分析与调试本设计是在 Keil C 环境下开发的,Keil C 软件支持 C 语言的编程及调试,运用方便,是做 C 语言毕业设计者的首选。设计的首要任务是安装和学习使用这个软件,在简单的学习和了解 Keil C 后,我们便可在此环境下开始了对带录音功能的电子琴的设计工作。在编译完 Keil C 后,再运用 STC_ISP_V480 软件烧录到开发板上,实现实物与程序的连接。在烧录前要对 STC_ISP_V480 进行一些必要的设置。第一步:设置 MCU Ty
41、pe 为 STC89C52RC;第二步:打开编写好并编译的程序文件,它是以.hex 为后缀的文件;第三步:选择对应的 COM 端口, (可在我的电脑的设备管理处查看 COM 选项) ;第四步:点击 Download/下载,等提示请给 MCU 上电时,打开开发板上的开关,它就自行烧录了。Keil C 程序运行如图 5-1 所示图 5-1keil C 运行图- 23 - 23 -图 5-2程序烧录运行图在完成对程序的调试及烧录之后,还需要对其进行演示,把开发板与电脑连上,设置好对应的接口,完成供电及下载。开始供电后、稍带几秒等 1602 液晶屏能正常显示当前温湿度了之后。观察当前温湿度的变化。并且
42、针对与自己设定的限值相比较。若当前温度没有超标,即没有超过限值。可以用手捂住 DHT11 传感器,令其温度的显示超标。测试能否达到报警。经过测试。完全可行。因而简单的实现了对温度的控制。湿度控制原理跟温度一样。- 24 - 24 -第 6 章结论与展望本系统以单片机为核心部件的控制系统,利用软件编程,最终基本上实现了各项要求。虽然系统还存在一些不足,比如温湿度测量不够精确,特别是湿度,波动较大。尝试了各种改进方法。仍然不太理想。不过大体能反映出设计的目的和要求。与预期的结果相差不多。经过近两个月的奋斗,从确定题目,到后来查找资料,理论学习,实验编程调试,这一切都使我的理论知识和动手能力有了很大
43、的提高。了解了单片机的硬件结构和软件编程方法,对单片机的工作方式有了很大的认知。同时,对一些外围设备比如传感器、液晶屏、键盘、蜂鸣器等有了一定的了解!学会了对一项工程如何设计:首先,要分析需要设计的系统要实现什么功能,需要什么器件;然后,针对设计购买相应的硬件,选用硬件时不仅要选用经济的,更重要的是如何能更精确更方便的完成系统的要求;再次,对各个硬件的软件实现要弄清楚,如何更好的实现各个硬件的协调,更好的通过主控制器件实现硬件的功能。最后,通过各种测试与调试,让设计更好的完成系统要求。 但因为我们的水平有限,此设计中也存在一定的不足。就比如说对湿度的控制方面,由于温度时刻都在发生着变化。而湿度
44、的变化又大体上取决于温度。因而对于湿度的控制有点困难。同时由于湿度变化波动比较大。造成报警频繁,为湿度限值的设定也带来了不小的麻烦。温湿度控制已经成为了 21 世纪热门研究话题之一。无论是从生产还是生活,与我们人类都是息息相关的。而智能化的控制温湿度已经发展成为一种必然。随着世界经济的发展,人们生活水平的提高以及社会的进步。我们不可能一直墨守陈规,不能在恪守以前利用人力资源来控制温湿度的方法。不仅浪费大量的人力资源、财力资源,并且控制系统也更加单一化。而采用自动控制的办法、既节省了人力资源,更体现了与时俱进的思想、世界在进步、而这种进步就该体现在各个方面。- 25 - 25 -参考文献1 陈明
45、荧.8051 单片机课程设计实训教材M. 北京:清华大学出版社,20032 徐新艳.单片机原理、应用与实践M. 北京:高等教育出版社,20053 吴金戌,沈庆阳,郭庭吉.8051 单片机实践与应用M. 北京:清华大学出版社,2002.4 王千.实用电子电路大全M. 电子工业出版社,2001.5 冯博琴.微型计算机原理与接口技术M. 北京:清华大学出版社,2004.- 26 - 26 -附录 A硬件原理图- 27 - 27 -附录 B程序清单#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义 变量范围 0255#define uin
46、t unsigned int /无符号整型 宏定义 变量范围 065535#includesbit beep = P14; /蜂鸣器 IO 口定义sbit relay1 = P13; /温度报警继电器 IO 口定义sbit relay2 = P16; /湿度报警继电器 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; /温度报警参
47、数uint s_high = 30;/湿度报警参数uchar key_time,flag_value; /用做连加的中间变量bit key_500ms ;/* 名称 : delay_1ms()* 功能 : 延时 1ms 函数* 输入 : q- 28 - 28 -* 输出 : 无*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j 8);/* 地址赋值 */ ISP_ADDRL = (unsigned char)(byte_addr & 0 x00ff); ISP_CMD = ISP_CMD & 0 xf8; /* 清除
48、低 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 & 0 xfe00); /* 取扇区地址 */- 30 - 30 -
49、 ISP_ADDRH = (unsigned char)(iSectorAddr 8); ISP_ADDRL = 0 x00; ISP_CMD = ISP_CMD & 0 xf8; /* 清空低 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
50、= 0; SectorErase(byte_addr); ISP_ADDRH = (unsigned char)(byte_addr 8); /* 取地址 */ ISP_ADDRL = (unsigned char)(byte_addr & 0 x00ff); ISP_CMD = ISP_CMD & 0 xf8; /* 清低 3 位 */ ISP_CMD = ISP_CMD | PrgCommand; /* 写命令 2 */ ISP_DATA = original_data; /* 写入数据准备 */ ISPgoon(); /* 触发执行 */ ISP_IAP_disable(
51、); /* 关闭 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() /读出保存数据- 31 - 31 -t_high = byte_read(0 x2000);s_high = byte_read(0 x2002);a_a =
52、 byte_read(0 x2055);/*开机自检 eeprom 初始化*/void init_eeprom() /开始初始化保存的数据read_eeprom(); /读出保存数据if(a_a != 84)/新的单片机初始单片机内问 eepromt_high = 40;s_high = 78;a_a = 84;write_eeprom(); /保存数据uchar code table_num=0123456789abcdefg;sbit rs=P10; /寄存器选择信号 H:数据寄存器 L:指令寄存器sbit rw=P11; /寄存器选择信号 H:数据寄存器 L:指令寄存器sbit e =P
53、12; /片选信号 下降沿触发/* 名称 : delay_uint()* 功能 : 小延时。* 输入 : 无* 输出 : 无*/void delay_uint(uint q)- 32 - 32 -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
54、 写数据函数* 输入 : 需要写入 1602 的数据* 输出 : 无*/void write_data(uchar dat)e=0;rs=1;rw=0;P0=dat;- 33 - 33 -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);elsewrite_com(0 x80+0 x40+add);write_data(date);/*lcd1602 上显
55、示两位十进制数*/void write_sfm2(uchar hang,uchar add,uint date)if(hang=1) write_com(0 x80+add);elsewrite_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) - 34 - 34 -write_com(0 x80+add);elsewrite_com(0
56、 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 xdf); /显示度write_sfm2(2,6,table_dht110); /显示湿度write_sfm2(1,6,table_dht112); /显示温度write_sfm2(1,13,t_high); /显示温度write_sfm2(2,13,s_high); /显示湿度/*定时器 0 初始化程序*/void time_init() EA = 1; /开总中断TMOD = 0X01; /定时器 0、定时器 1 工作方式 1ET0 = 1; /开定时器 0 中断 - 35 - 35 -TR0 = 1; /允许定时器 0 定时/*独立按键程序*/uchar key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广州龙狮新材料科技有限公司招聘笔试参考题库及答案详解
- 2026年哈尔滨市香坊区政务服务中心(窗口人员)招聘笔试模拟试题及答案详解
- 灌溉渠工程施工(劳务)承包合同
- 2026年江门市蓬江区政务服务中心(窗口人员)招聘考试参考试题及答案详解
- 2026年丽江地区古城区政务服务中心(窗口人员)招聘考试参考题库及答案详解
- 2026年淄博市淄川区政务服务中心(窗口人员)招聘考试参考题库及答案详解
- 2026年桂林市叠彩区政务服务中心(窗口人员)招聘笔试模拟试题及答案详解
- 2026年涪陵区长寿区政务服务中心(窗口人员)招聘考试参考题库及答案详解
- 2026年山西省晋中市医疗系统事业编人员招聘笔试备考试题及答案详解
- 2026年涪陵区长寿区工会人员招聘考试备考试题及答案详解
- 2026年浙江省金华市辅警人员招聘考试试题及答案
- 2026年中国水利水电科学研究院结构化面试万能答题模板
- 记账实操-陵园(公墓)全套账务处理
- 煤矿机械液压系统故障分析及维护技术
- 2025年钢筋工(高级)实操试题(附答案)
- 2025年四川省遂宁市检察官、法官入员额考试真题(附答案)
- 初中八年级历史第四单元《新民主主义革命的兴起》大单元教学设计
- 高考历史世界近代史小论文必背范文梳理
- 江苏省2026年中职职教高考文化统考语文试卷答案
- 脑梗死护理查房课件
- Unit8Lesson8ReadingPlus课件人教版英语八年级下册
评论
0/150
提交评论