1、沈阳航空航天大学课程设计论文 基于单片机的湿度计设计目 录0 前言 11 总体方案设计 22 硬件电路设计 32.1 单片机系统 32.2 DHT11 湿度传感器系统 53 软件设计 73.1 晶振电路 83.2 复位电路 83.3 数字显示电路 93.4 报警电路 93.5 湿度采集电路 104 调试分析 105 结论及进一步设想 11参考文献 11课设体会 12附录 1 电路原理图 13附录 2 程序清单 14沈阳航空航天大学课程设计论文 基于单片机的湿度计设计0基于单片机的湿度计设计杨少书 沈阳航空航天大学自动化学院摘要:本文设计了一种基于单片机控制的数字式湿度计,主要由湿度检测部分、单
2、片机数据采集处理部分、显示部分和报警电路组成。硬件以 STC89C52 单片机为核心,外接晶振、复位电路、电源、DHT11 湿度传感器、LED 显示电路组成。本设计利用 DHT11 湿度传感器能耗低、响应速度快、稳定性强、可靠性高、抗干扰能力强、信号传输距离长、可随时掌握周围环境温度等优点,可以检测周围环境湿度,并且与人体适宜湿度相比较,若超出人体适宜湿度范围则会发出警报。关键词:单片机 ;DHT11 湿度传感器;湿度检测0 前言1.设计背景:湿度是基本的环境参数,人们生活与湿度息息相关。在日常生活、工业、医学、环境保护、化工、石油等领域,经常需要对环境湿度进行测量和控制。准确测量湿度在生物制
3、药、食品加工、造纸等行业更是至关重要。因此,研究湿度的测量方法和装置具有重要的意义。随着科技的不断发展,单片机技术已经普及到我们的工作、生活、科研等各个领域。已经成为一种比较成熟的技术。由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便等优点,目前已经渗透到我们工作和生活的方方面面。本设计介绍了一种以 STC89C51 为主要控制器件,以DHT11 为数字湿度传感器的新型数字湿度计。2.设计意义:最近几年来,随着科技的飞速发展,单片机领域正在不断的走向社会各个角落,还带动传统控制检测日新月异更新。在实时运作和自动控制的单片机应用到系统中,单片机如今是作为一个核心部件来使用,仅掌握单
4、片机方面知识是不够的,还应根据其具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。现代社会越来越多的场所会涉及到温度与湿度并将其显示。由于温度与湿度不管是从物理量本身还是在实际人们的生活中都有着密切的关系,例如:冬天温度为18 至 25,湿度为 30%至 80%;夏天温度为 23 至 28,湿度为 30%至 60%。在此范围内感到舒适的人占 95%以上。在装有空调的室内,室温为 19 至 24,湿度为 40%至 50%时,人会感到最舒适。如果考虑到温、湿度对人思维活动的影响,最适宜的室温度应是工作效率高。18,湿度应是 40%至 60%,此时,人的精神状态好,思维最敏捷。所以,本课程
5、设计就是通过单片机驱动 LED 数码管,数码管显示湿度,通过此设计,可以发现本设计有一定的扩展性,而且可以作为其他有关设计的基础。3.设计内容:本设计要求设计的湿度计以单片机为核心,通过湿度传感器对环境湿度进行采样处理,单片机对检测到的湿度与人体的适宜湿度值(38%65%)进行比较,若不在此范围内,则报警。4.设计要求:沈阳航空航天大学课程设计论文 基于单片机的湿度计设计1(1)按设计内容制定设计方案,并绘制出系统工作框图;(2)按设计内容设计湿度计的电路,并与单片机仿真器、单片机实验箱、电源等硬件正确可靠地连接,给出电路原理图;(3)用仿真器及单片机实验箱进行程序设计与调试;5.设计特点:本
6、设计采用 DHT11 湿度传感器,它应用专用的数字模块采集技术和温湿度传感技术, 确 保产品具有极高 的可靠性与长期的稳定性。传感器包括一个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。 单线制串行接口, 使 系统集 成变得简易快捷。 同 时 还 具 有 体积小、 功耗低, 信号传输距离长等优点。1 总体方案设计针对本课题的设计任务,进行分析得到
7、:本次设计用湿度传感器进行湿度的测量,转化了的湿度信号由传感器得到数字信号。本次设计采用 STC89C52 单片机作为主机,DHT11 湿度传感器作为从机,当要开始测量时,从主机发出信号给从机,此时从机 DHT11 湿度传感器开始测量周围环境的湿度,并将湿度信号转换为数字信号发送给主机,再由主机发送信号给数码管显示测量湿度。该湿度计的设计,在总体上大致可分为以下几个部分组成:1 湿度检测部分;2晶振部分;3 复位电路部分;4 LED 显示电路部分。系统原理框图如图 1 所示。图 1 系统原理框图整个电路的工作原理是:整个湿度检测系统以 STC89C52 单片机为核心,对整个测试系统进行控制,包
8、括湿度的测量、数据的处理、湿度的显示、声音报警等。单片机STC89C52电源晶振 复位电路湿度显示湿度传感器 DHT11声音报警沈阳航空航天大学课程设计论文 基于单片机的湿度计设计2湿度传感器 DHT11 将测量到的湿度进行数据处理经由单片机发送给 LED 显示输出。当湿度计开始工作时,单片机对所检测到的湿度与人体的适宜湿度值(38% 65%)进行比较,若低于 38%或高于 65%,则报警。单片机由外接 12MHz标准晶振提供时钟电路。湿度传感器的非电量(湿度)到电量(电压) 是非线性的关系,故考虑先将湿度传感器输出的电压信号用 A/D 转换采样到 CPU, CPU 再对采样所得的数字信号进行
9、查表计算处理,得到相应的数字量,再将数字量由 D/A 转换成电压信号输出,最后只要根据输出的电压值即可得出湿度。因 DHT11 湿度传感器的校准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的过程中直接调用这些校准系数,所以不用经过 A/D 转换,更加简易快捷。根据设计要求,设计前分别采用了电容式相对湿度传感器 HS1101 的方案一和采用湿度传感器 DHT11 的方案二,其中方案一的优点是 HS1101 传感器具有适应电压范围广、支持多点组网功能、测温范围广等特点。方案二的优点是 DHT11 传感器具有稳定性高、能耗低、传输距离长、抗干扰能力强、相应速度快、性价比高等特点。综合
10、各方面的因素,DHT11 传感器可靠性更高,连接更加方便,调用数据更加简洁,所以本次设计采用了方案二。2 硬件电路设计2.1 单片机系统本次设计采用 STC89C52单片机作为核心,对整个测试系统进行控制。STC89C52是 STC 公司生产的一种低功耗、高性能 CMOS8位微控制器,具有 8K 在系统可编程 Flash 存储器。STC89C52使用经典的 MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位 CPU 和在系统可编程 Flash,使得 STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8
11、k 字节 Flash,512字节 RAM, 32 位 I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3 个16 位定时器/ 计数器,4个外部中断,一个7 向量4级中断结构(兼容传统51的5向量2 级中断结构) ,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T 可选。STC89C52参数如下:1. 增强型8
12、051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.2 2. 工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机)沈阳航空航天大学课程设计论文 基于单片机的湿度计设计33.工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz4. 用户应用程序空间为8K 字节5. 片上集成512 字节 RAM6. 通用 I/O 口(32 个) ,复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。7. I
13、SP(在系统可编程)/IAP(在应用可编程) ,无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片8. 具有 EEPROM 功能9. 共3 个16 位定时器/计数器。即定时器 T0、T1、T210.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒11. 通用异步串行口(UART) ,还可用定时器软件实现多个 UART12. 工作温度范围:-40+85(工业级)/075(商业级)13. PDIP 封装STC89C52引脚图如图2所示。沈阳航空航天大学课程设计论文 基于单片
14、机的湿度计设计4图 2 STC89C52 引脚图2.2 DHT11湿度传感器系统DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超
15、小的体积、极低的功耗,信号传输距离可达 20 米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。DHT11 有四个引脚,3 号引脚一般悬空,如图 3 所示。DHT11 的供电电压为 35.5V。 传 感器上电后, 要等待 1s 以越过 不稳定 状态 在 此期间 无需发送任何指令。 电源引脚 ( VDD, GND) 之间可增加一个 100nF 的 电 容 , 用 以 去 耦 滤 波 。 建议连接线长度短于 20 米时用 5K 上拉电阻,大于 20 米时根据实际情况使用合适的上拉电阻。沈阳航空航天大学课程设计论文 基于
16、单片机的湿度计设计5图 3 DHT11 引脚图DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次 通讯时间 4ms 左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数 部分用于以后扩展,现读出为零.操作流程如下:用户 MCU 发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,并触发一次信号采集, 用户可选择读取部分数据.从模式下,DHT11 接收到开始信号触发一次温湿度采集, 如果没有接收到主机发送开始信号,DHT11 不会主动进行温湿度采集.采集数据后 转换到低速模式
17、。通讯过程如图 4 所示。图 4 通讯过程图总线空闲状态为高电平,主机把总线拉低等待 DHT11 响应,主机把总线拉低必 须大于 18 毫秒,保证 DHT11 能检测到起始信号。DHT11 接收到主机的开始信号后,等待主机开始信号结束,然后发送 80us 低电平响应信号.主机发送开始信号结束后,延时等待 20-40us 后, 读取 DHT11 的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。工作过程图如图 5 所示。图 5 工作过程图沈阳航空航天大学课程设计论文 基于单片机的湿度计设计6总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号
18、后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1。格式如图6所示。如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常。当最后一bit数据传送完毕后,DHT11拉低总线 50us,随后总线由上拉电阻拉高进入空闲状态。 数字0信号表示方法如图7所示。图 6 数字 1 信号表示方式图 7 数字 0 信号表示方式3 软件设计本课题的软件设计采用了模块化设计的思想。主程序流程如图 8 所示。沈阳航空航天大学课程设计论文 基于单片机的湿度计设计7图 8 主程序流程图3.1 晶振电路单片机工作的时间基准是由时钟电路所控制的
19、。在单片机的两个管脚 XTAL1 和XTAL2 接一只晶振以及两只电容就构成了单片机的时钟电路。电路中的两个电容对震荡频率有微调作用,都选用 30pF。晶振电路如图 9 所示。图 9 晶振电路图3.2 复位电路复位电路是保证单片机正常运行的关键因素,所以可靠的复位电路设计是必要的。将 RST 引脚连续输入 2 个机器周期(即 24 个时钟震荡期间)以上高电平,即可沈阳航空航天大学课程设计论文 基于单片机的湿度计设计8以完成单片机的初始化操作。本设计采用按钮复位方式。复位电路图如图 10 所示。图 10 复位电路图3.3 数字显示电路数字显示电路由 2 个 74LS373 以及 LED 数码管组
20、成。其中 U2 对数码管断选,U4 对数码管位选。数字显示电路如图 11 所示。图 11 数字显示电路图3.4 报警电路蜂鸣器是一种一体化的电子通讯响应器。在本系统中,当显示数值超出设定值3865 范围时报警。报警电路如图 12 所示。沈阳航空航天大学课程设计论文 基于单片机的湿度计设计9图 12 报警电路图3.5 湿度采集电路DHT11 的供电电压为 35.5V。 传 感器上电后, 要等待 1s 以越过 不稳定 状态在此期间 无需发送任何指令。 电路如图 13 所示:图 13 湿度采集电路图4 调试分析在硬件与软件的调试过程中,由 keil uVision4 软件生成的.hex 文件下载不到
21、89C52 单片机中,STC-ISP 烧录软件提示 MCU 不正确,发现 MCU Type 选择错误,本该选择 89C52 单片机而错选成了 89C51 单片机,改正后终于将.hex 文件下载至89C52 单片机中。将.hex 文件下载至单片机后,打开电源,数码管不显示数字,经过检查,发现软件程序中编写的输入口为 P10 口,而在实物连接中错将输入口接到 P11 口上,导致数码管不显示。数码管显示出采集的湿度值之后,警报器一直警报,经过检查发现软件程序中设定的下线和上线范围为 3865,由于软件中设定的最高位为百位,所以导致蜂鸣器一直警报,将范围改为 380650 后警报正常。沈阳航空航天大学
22、课程设计论文 基于单片机的湿度计设计105 结论及进一步设想微型计算机在智能化电器发展中起着至关重要的作用,而单片机经济实用、开发简便,因而在工业控制、家电智能化等领域占据了广泛的市场。本次设计是基于单片机的湿度计设计,当超出人体适宜湿度 3865 时蜂鸣器发出警报,基本实现了设计要求。但是在硬件软件方面仍然存在着不足。在硬件选择方面,由于采用湿度传感器 DHT11,使电路链接更加方便,并且容易读数,简化了设计。但是由于湿度传感器 DHT11 的精度不够,只能显示个位而不能精确到小数位,从而存在精确度较差的缺陷。由于只买到了 LED 数码管,所以显示电路运用 LED 显示,比较了 LED 和
23、LCD 之后,发现 LED 显示的信息量较少,外接电路复杂且耗电量大,如果能将 LED 改成 LCD,将会进一步得到完善,使得数据显示信息量增多,同时简化外接电路并且降低能耗。在软件编程方面,初次完成的程序十分复杂,在很多方面联系不上,我在网上查找了很多的资料,也看了一些教学视频,来不断的完善程序。而且通过和同学、老师的交流讨论,我学到了很多编程方面的技巧和思想,同时也精简了部分程序。虽然已经精简了部分程序,但仍然觉的程序比较复杂,还应该多多学习 C 语言的编程技巧。参考文献1 刘复华.单片机及其应用系统.北京:清华大学出版社,19922 李斌,董慧颖.可重组机器人研究和发展现状.沈阳工业学院
24、学报,2000,19(4):23-273 何立民.单片机高级教程-应用与设计M.北京:北京航空航天大学出版社,2002.4 徐爱钧.单片机高级语言 C51 Windows 环境编程与应用M.北京:电子工业出版社,2001.5 白雪冰,张延林等.单片机原理及应用M.哈尔滨:哈尔滨东北林业大学出版社,2006.6 张佳薇,孙丽萍等.传感器原理与应用M.哈尔滨:哈尔滨东北林业大学出版社,2003.7 何宏.单片机原理与接口技术. 北京:国防工业出版社,2006.8 刘畅生.新型集成电路使用手册及应用实例具有串行接口的外围器件和模拟信号调理器件.西安:西安电子科技大学出版社,2003.9 刘守义.单片
25、机应用技术.西安:西安电子科技大学出版社,2006.10 张毅坤,陈善久,裘雪红,单片微型计算机原理及应用【M】.西安:西安电子科技大学出版社,1998.9.11 张凯等.单片机综合系统及其设计开发【M】.北京科学出版社,1996.沈阳航空航天大学课程设计论文 基于单片机的湿度计设计11课设体会本次设计湿度计的制作基本是达到了题目的技术指标,可以检测周围环境的湿度,如果超出人体适宜湿度范围 3865 则会发出警报。单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在。因此作为 21 世纪的大学生来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计是苦多于甜,但是可以
26、学到很多很多的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计的过程中遇到问题,可以说的是困难重重,难免会遇到各种各样的问题,同时在设计的过程中,发现了自己的不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固,比如说不懂一些元器件的使用方法等等。通过这次课程设计之后,一定把以前所学的知识重新温故。2014 年 7 月 7 日完成沈阳航空航天大学课程设计论文 基于单片机的湿度计设计12附录 1 电路原理图 XTAL218XTAL
27、119ALE301PSN29 RST9P0./AD039.1/18P0.2/AD237.3/36P0.4/AD435.5/54P0.6/AD63.7/72P1.0/T21./EX2P1.23.34P1.45.56P1.67.78P3.0/RXD10.1/TP3.2/IN012./IT13P3.4/014P3.7/RD17.6/W6.5/T15 P2.7/A1528 P2.0/A821.1/9P2./A023.3/14P2.4/A225.5/136.6/47U1AT89C51A1B2C3E1624E35 Y01514Y21332Y4150Y6977U374LS138456U4:B74LS0827
28、9CE15RD5C/4VS1D2VO3W6D07FS11918D29310D4512D6374RST6MD28HALT20VE17LCD1LM3287RA44RB01RA4 8RA49RA42RA43RA40RA4 5RA4FRA4CRA46RA4BRA4ERA4ARA4DRA4*0*1*2*3RL0RL1RL2RL3Q22N3906R1470BUZ1BUZER+5VRL32RL10 SL01SL2CLKREST OUTB12OUTB34OUTA12OUTA34IRQCSRDWA027.0DQ2VC3GN1U6DS18B205vDRA4 VCR210K C110uFA0A1U2NAD_2U7N
29、AD_2RDWRADCSVCRSTVCC28uC38uw112MHZ沈阳航空航天大学课程设计论文 基于单片机的湿度计设计13附录 2 程序清单/头文件:#include “reg51.h“/typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号 8 位整型变量 */typedef signed char S8; /* defined for signed 8-bits integer variable 有符号 8 位整型变量 */typedef unsigned int U16; /* defi
30、ned for unsigned 16-bits integer variable 无符号 16 位整型变量 */typedef signed int S16; /* defined for signed 16-bits integer variable 有符号 16 位整型变量 */typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号 32 位整型变量 */typedef signed long S32; /* defined for signed 32-bits integer var
31、iable 有符号 32 位整型变量 */typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32 位长度) */typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64 位长度) */#define uchar unsigned char#define uint unsigned intuchar adval, temp,temp1, key, m=0;uint shang13 =
32、 4, 9, 9;uint shang3=10,10,10;uint SS;/引脚定义:sbit DIn = P10; /定义状态输入sbit dula=P26;sbit wela=P27;sbit key1=P34; /JIA沈阳航空航天大学课程设计论文 基于单片机的湿度计设计14sbit key2=P35;sbit J1=P25;/sbit J2=P22;uchar bai, shi, ge, flag=0;/数据定义:unsigned char ly_dis4;/定义显示缓冲区code unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0
33、x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/表:共阴数码管 0-9 C/code unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77;unsigned char l_posit=0;/显示位置/-以下变量均为全局变量-/-温度高 8 位= U8T_data_H-/-温度低 8 位= U8T_d
34、ata_L-/-湿度高 8 位= U8RH_data_H-/-湿度低 8 位= U8RH_data_L-/-校验 8 位 = U8checkdata-U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;void Delay(U16 j)沈阳航空航天大学课程设计论文 基于单片机的湿度计设计15 U8 i;for(;j0;j-) for(i=0;i650)|(ly_dis0*100+ly_dis1*10+ly_dis2)380)J1=0;elseJ1=1;