ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:1.71MB ,
资源ID:16591127      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16591127.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的温湿度测量系统Word格式文档下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的温湿度测量系统Word格式文档下载.docx

1、传感器模块是用DHT11温湿度传感器,通过DHT11测出当前温湿度值,并且将采集到的数据传输给单片机。通过单片机STC89C52的处理让LCD1602液晶显示温湿度的值。我把LCD1602显示设置成分两行显示,第一行显示湿度,第二行显示温度。1. 4.3 总体构成1. 4.3.1总体设计框图 按照本设计功能的要求,在保证实现的功能下,尽量减少本设计成本。总体设计方案围绕上述思想,初步确定设计的方案如图1.1所示。图1.1系统总体设计如图1.1所示,系统由微处理器模块、DHT11传感器模块、LCD1602液晶显示模块组成。1. 4.3.2总体设计工作进程 本次设计用到LCD1602和DHT11。

2、LCD1602液晶经常用到,而DHT11传感器没怎么使用过,因此先解决LCD1602液晶显示问题然后再解决DHT11传感器部分。整个流程图如图1.2所示用Proteus仿真分析题目查找资料进行液晶显示调试进行传器 调试完 成图1.2整体设计流程图2系统的硬件设计2.1硬件原理图2.2主控模块设计使用的时候将P0.0P0.7口与LCD1602液晶显示的数据传输口相连,P3.3口作为与传感器DHT11的数据采集口相连。2.2.1基本特性Atmel公司的STC89C52系列单片机是我国近10年来使用较多的单片机,特别是高校实验室开发实验装置多数都采用它。因为在21世纪初,在我国电子市场上,STC89

3、C52技术资料丰富,货源充足,价格相对便宜,专营教学仪器单片机总和开发实验装置的科技公司也都青睐它。STC89C52是一种内带4KB闪存的ROM、低电压、高性能CMOS制造工艺的8位单片机。它具有MCS-51的所有特性。STC89C52单片机的软件编程既可以用汇编语言,也可以用C51高级语言。2.2.2 STC89C52组成部分AT89C51内部的基本组成主要包括:中央处理器CPU;内部4KB Flash ROM,这是用来存放程序、数据等一些东西;内部256个RAM单元,通常用户使用低128位单元,主要用来存放和读写数据,而高128位单元系统则是用来分配21个特殊功能寄存器的;两个16位的定时

4、器/计数器,即T0、T1;4个8位的I/0口,即P0、P1、P2、P3;一个全双工串行口,即RXD、TXD;5个中断系统,包括2个外部中断、2个定时器/计数器中断以及1个串行通信中断;2.2.3 STC89C52参数. 属于增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意选择. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V 单片机).工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz. 用户应用程序空间为8K字节. 片上集成512 字节RAM. 具有EEPROM 功能. 有3 个16 位定时器/计数器。即定时器

5、T0、T1、T2. 工作温度范围:-40+85(工业级)/075(商业级). PDIP封装 2.2.4 引脚说明 、电源及时钟引脚电源引脚:Vcc是运行和程序校验时接电源+5V,Vss是电源接地端GND时钟引脚:XTAL1是片内振荡器反相放大器的输入端和内部时钟工作的输入端,采用内部振荡器时,接外部石英晶体和微调电容的一个引脚。XTAL2是片内振荡器反相放大器的输出端,接外部石英晶体和微调电容的另一端,当采用外部振荡器时,该引脚是空。、控制引脚1 ALE/PROG:地址锁存允许/编程线。2 PSEN:外部程序存储器ROM的读选通线。3 EA/VPP:片外ROM允许访问端/编程电源端。4 RST

6、:复位输入端,大于2个机器周期的高电平脉冲信号有效。2.2.5 复位电路设计 下图是按键手动复位,只要将键按下,RST为高电平,复位有效。2.2.6 外部晶振室之中电路设计STC89C52振荡电路端可由内部软件编程来控制启停,使系统进入低功耗状态。外部谐振电路并行连接石英晶体或陶瓷谐振器XTAL和负载电容C11、C12。对外接电容的值虽然没有严格的要求,但电容的大小多少会影响振荡器频率的高低、振荡器的稳定性、起振的快速性。外接晶体时。C11、C12的值常选33pF左右;在外陶瓷谐振器时,C11、C12的典型值约为47pF。在设计印刷电路板时,晶体或陶瓷振荡器和电容应尽可能靠近单片机安装,以减少

7、寄生电容,更好地保证振荡器稳定可靠地工作。为了提高温度稳定性,应采用温度稳定性好的电容。晶体振荡器可在1.212MHz之间选择,电容可在560pF之间选择,电容C11、C12的大小对振荡器的频率有微小影响。2.3 DHT11传感器模块设计2.3.1 DHT11传感器简介本次设计采用DHT11数字温湿度传感器,这个产品有4个引脚封装,1脚用来接电源,2脚接单总线,3脚悬空或不使用,4脚接地。它的内部还包含着一个电阻式感应湿度的元件和一个测量温度的元件,并且可以与一个性能高的8位单片机相连接。DHT11具有功耗低、体积小的优点,使其可以适应各种应用场合。2.3.2 DHT11引脚说明Pin名称类型

8、注释1VCC电源供电3V-5.5VDC2Dout输出单总线、串行数据3NC空空脚4GND地电源地2.3.3 DHT11传感器指标特性DHT11性能指标和特性如下:工作电压范围:3.5V5.5V。工作电流:平均0.5mA。湿度测量范围:2090%RH。温度测量范围:050。湿度分辨率:1%RH 8位。温度分辨率:1 8位。采样周期:1S。单总线结构。与TTL兼容(5V)。2.3.4 DHT11数据结构DHT11数字温湿度传感器采用单总线数据格式。即单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,具体格式在下面说明。一次完整的数据传输为40b

9、it,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和传感器数据输出的是位编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。2.3.5DHT11传输时序 、DHT11开始发送数据流程主机发送开始信号后,延时等待20us-40us后读取DHT11的回应信号,读取总线为低电平,说明DHT11发送相应信号,DHT11发送相应信号后,再把总线拉高,准备发送数据,每一bit数据都以低电平开始,格式见上图所示。如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常。、主机复位信号和DHT11响应信号、

10、数字0信号表示方法、数字1信号表示方法2.3.6DHT11典型电路连接DHT11典型应用电路如下图所示,它的连接电路比较容易,只需要用一个MCU的I/O口就能完成连接。推荐其连接线的长度在20米以内时使用5K左右的上拉电阻,而大于20米时就要根据实际情况选择合适的电阻。使用3.5V电压供电时连接线长度不得大于20cm。否则线路压降会导致传感器供电不足,造成测量偏差。每次读出的温湿度数值是上一次测量的结果,欲获取实时数据,需连续读取两次,但不建议连续多次读取传感器,每次读取传感器间隔大于5秒即可获得准确的数据。2.3.7 DHT11传感器模块电路设计DHT11传感器连接单片机比较简单,将DHT1

11、1的Pin2(2脚)接单片机P3.3口。由于测量范围电路小于20米,则在传感器的Pin2接一个5K的上拉电阻到电源正极。DHT11传感器的电源端口Pin1和Pin4分别接电源的正负极,第三脚悬空放置。DHT11传感器元件的电路原理图如下所示。2.4 LCD1602液晶显示模块设计2.4.1 LCD1602液晶显示屏简介LCD1602是一种支持字母、数字、符号等显示的点阵型液晶模块,由32个5*7点阵字符位组成,每一个点阵字符位都可以显示一个字符。LCD1602主要技术参数2.4.2 LCD1602液晶引脚说明管脚号管脚名称状态管脚功能描述VSSVDD电源正极VO液晶显示偏压信号RS输入寄存器选

12、择5R/W读、写操作6E使能信号7DB0三态数据总线0(LSB)8DB1数据总线19DB2数据总线210DB3数据总线311DB4数据总线412DB5数据总线513DB6数据总线614DB7数据总线7(MSB)15LEDA背光+5V16LEDK背光地2.4.3 LCD1602液晶显示模块液晶模块如下图所示,第3脚加了一个10K的电位器,该电位器是用来调节LCD1602液晶显示的对比度,通过电位器调节Vo的电压值,使人们可以清楚看见LCD1602液晶上所显示的数值。3仿真软件简介3.1 Proteus软件Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。

13、他主要就是用来仿真电路,以及仿真单片机及其外围器件,它是目前最好的仿真单片机及外围器件的工具。其特点是:实现了单片机仿真和通用模拟电路仿真器相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成系统的仿真功能。有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。如68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。提供软件调试功能,在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时还可以观察各个变量、寄存器等的当前状态,支持第三方的软件编译和调试环境,如Keil 4等软件。支

14、持大量的外围芯片和存储器,具有强大的原理图绘制功能。总而言之,该软件是一款集单片机和通用模拟电路仿真器分析于一身的仿真软件,功能极其强大。在Proteus中绘制好原理图连接号线路后,调入已经编译好的.HEX文件,就可以在Proteus的原理图中看到模拟的实物运行状态和过程。3.2 Keil软件keil uvision4软件是KEIL公司的产品。在使用的时候打开Keil 4界面,首先要新建一个工程,保存一个名字,然后选择芯片,本设计所用的单片机是Atmel AT89S52,在编写完程序后点击编译,没有错误的话选择“Options for Target Target 1”,在该窗口下,将晶振的频率

15、(Xtel (MHz)设置为12MHz,然后选择“Output”在“Create HEX File”前面打钩,OK。在继续编译后出现“create hex file from”,编译完成,此时文件就可以被单片机识别应用,导入即可。4系统的软件设计4.1总体程序框架流程图对于本次设计我先建立程序框架流程图,然后对整个设计划分模块,逐个实现各个模块功能,然后把各个模块连接起来并构成总程序。开始初始化温湿度检测传送回单片机LCD1602液晶显示数据延时4.2软件程序代码#includestdio.h#define uchar unsigned char#define uint unsigned in

16、t#define uint8 unsigned int#includelcd1602.hDTH11.hconfig.hvoid main() uchar buff16; lcd_init(); while(1) DTH11(); sprintf(buff,SHIDU:%c%c.%c RH,buf0,buf1,buf2); DisText(0x80,buff);WENDU:%c%c.%c C,buf3,buf4,buf5); DisText(0xc0,buff); delay1ms(20); #ifndef _DTH11_H_#define _DTH11_H_extern uchar buf6;

17、/*延时1ms的延时函数*/extern void delay1ms(uchar i);DHT11操作总时序时序函数void DTH11(void);#endifsbit P3_3=P33;uchar u8flag;uchar comdata;uchar RHdata_H_temp,RHdata_L_temp,Tdata_H_temp,Tdata_L_temp,checkdata_temp;uchar RHdata_H,RHdata_L,Tdata_H,Tdata_L,checkdata;uchar buf6;void delay1ms(uchar i) uchar j; for(;i0;i-

18、) for(j=0;j27;j+);延时10us的延时函数void delay10us(void) uchar i; for(i=6;i-);DHT11读取一字节数据时序函数void comread(void) uchar i,tem; for(i=0;i8;i+) u8flag=2; while(!P3_3)&(u8flag+);/等待50us时间过去 delay10us(); /延时差不多30us tem=0; if(P3_3) /如果是高地平则tem=1; tem=1; u8flag=2; while(P3_3)& /等待70us时间过去 if(u8flag=1)break; comda

19、ta=1; /左移一位 comdata|=tem; /与tem相与 else comdata comdata|=tem; void DTH11(void) uchar temp; P3_3=0; /拉低总线为低电平 delay1ms(180); /拉低时间为至少18ms P3_3=1; /拉高总线为高地平 delay10us(); /拉高时间为20us40us if(!P3_3)/等待80us的低电平时间过去 while(P3_3)& /等待80us的高地平时间过去 comread(); /读取数据的函数 RHdata_H_temp=comdata; /读取数据的RH的高位 RHdata_L_

20、temp=comdata; /读取数据的RH的低位 Tdata_H_temp=comdata; /读取数据温度的高位 Tdata_L_temp=comdata; /读取数据温度的地位 checkdata_temp=comdata; /读取数据最后一位是校验位 P3_3=1; temp=(RHdata_H_temp+RHdata_L_temp+Tdata_H_temp+Tdata_L_temp); if(temp=checkdata_temp); RHdata_H=RHdata_H_temp; RHdata_L=RHdata_L_temp; Tdata_H =Tdata_H_temp; Tdat

21、a_L =Tdata_L_temp; checkdata=checkdata_temp; buf0=(uchar)(0x30+RHdata_H/10); /把十六进制数值转换成十进制 buf1=(uchar)(0x30+RHdata_H%10); buf2=(uchar)(0x30+RHdata_L/10); buf3=(uchar)(0x30+Tdata_H/10); buf4=(uchar)(0x30+Tdata_H%10); buf5=(uchar)(0x30+Tdata_L/10);#ifndef _LCD1602_H_#define _LCD1602_H_/* 名称:lcd_init()* 功能:lcd初始化函数*/void lcd_init(void);DisText()显示文本函数extern void DisT

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1