《2022年AM温湿度传感器模块 2.pdf》由会员分享,可在线阅读,更多相关《2022年AM温湿度传感器模块 2.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、AM2301 温湿度传感器模块AM2301 数字温湿度传感器是一各包括有数字校准输出的温湿度传感器。它采用独特的数字采集模块和高新温湿度采集传感技术,可以确保产品可靠性高以及稳定性好。该款传感器具有响应快、抗干扰力强、性价比高、品质卓越等优点。以及超小的体积、 极低的功耗, 信号传输距离可达 20米以上,使其成为各类应用的最佳选则。9AM2301 引脚图图3-10 AM2301引脚图AM2301 各引脚说明表 3-7 AM2301 引脚引脚颜色名称注释1 红色VDD 供电 3.3-5.5VDC 2 黄色SDA 串行数据,单总线3 黑色GND 接地,电源负极4 NC 空脚,请悬空(不要接 Vcc
2、或Gnd )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - AM2301 技术参数表 3-8 AM2301 技术参数参数条件Min Typ Max 单位湿度分辨率0.1 %RH 16 Bit 重复性1 %RH 精度253 %RH 0505 %RH 互换性可完全互换采样周期1 2 S 响应时间1/e(63%)25 ,1m/s 空气2 S 迟滞0.3 %RH 长期稳定性典型值1 %RH/yr 温度分辨率0.1 16 Bit 重复性
3、0.5 精度1 量程范围-40 80 响应时间1/e(63%) 6 20 S AM2301 驱动电路图 3-11 AM2301 驱动电路图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 温湿度传感器模块流程设计用户主机(MCU )发送一次开始信号后 ,AM2301 自动从休眠模式转换到高速模式。等待主机开始 , 信号发送后, AM2301 发送响应信号 , 送出40比特的数据 , 发送数据结束之后触发一次信号采集,对外部环境进
4、行数据采集, 采集结束传感器自动转入休眠模式,直到下一次通信信号的来临。此时AM2301 的SDA 数据线由上拉电阻拉高,一直保持高电平,且AM2301 的SDA 引脚处于输入状态,时刻检测外部信号。一旦接收到主机发送的信号,再次进入采集状态, 对外部数据进行一次采集。整个过程流程图如下:开始传感器上电初始化读取设备发送起始信号是否收到传感器响应信号?读取设备并开始采集数据更新温湿度值等待下一次信号来临采集时间到?结束NYYN图 4-10 温湿度传感器流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
5、 - - - - 第 3 页,共 18 页 - - - - - - - - - 1602 LCD显示屏测试根据第三章说明的LCD硬件连线要求,将屏幕的14 个接口按要求分别连接至单片机的各端口,确认无误后,个单片机上电,并将编完的程序通过STC -ISP软件烧入到单片机中,连线图如下:图 5-3 LCD1602 连线图给单片机上电之后,屏幕显示如下:图 5-4 LCD1602 显示效果该 LCD显示屏能正常显示预期设置字幕。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共
6、18 页 - - - - - - - - - AM2301 温湿度传感器测试根据温湿度传感器驱动电路,实物连接图如下:图 5-7 AM2301 连线图给单片机上电,则可在LCD屏幕上得到如下数据:图 5-8 AM2301 采集数据LCD屏幕第一行显示当前室内湿度情况,第二行显示当前室内温度情况,若用吹风机对其吹风,则温湿度会相应变化。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 附录主要程序源代码:1.REG52.H/*-
7、REG52.HHeader file for generic 80C52 and 80C32 microcontroller.Copyright (c) 1988 -2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _REG52_H_#define _REG52_H_/* BYTE Registers */sfr P0 = 0 x80;sfr P1 = 0 x90;sfr P2 = 0 xA0;sfr P3 = 0 xB0;sfr PSW = 0 xD0;sfr ACC = 0 xE0
8、;sfr B = 0 xF0;sfr SP = 0 x81;sfr DPL = 0 x82;sfr DPH = 0 x83;sfr PCON = 0 x87;sfr TCON = 0 x88;sfr TMOD = 0 x89;sfr TL0 = 0 x8A;sfr TL1 = 0 x8B;sfr TH0 = 0 x8C;sfr TH1 = 0 x8D;sfr IE = 0 xA8;sfr IP = 0 xB8;sfr SCON = 0 x98;sfr SBUF = 0 x99;/* 8052 Extensions */sfr T2CON = 0 xC8;sfr RCAP2L = 0 xCA;名
9、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - sfr RCAP2H = 0 xCB;sfr TL2 = 0 xCC;sfr TH2 = 0 xCD;/* BIT Registers */* PSW */sbit CY = PSW7;sbit AC = PSW6;sbit F0 = PSW5;sbit RS1 = PSW4;sbit RS0 = PSW3;sbit OV = PSW2;sbit P = PSW0; /8052 o
10、nly/* TCON */sbit TF1 = TCON7;sbit TR1 = TCON6;sbit TF0 = TCON5;sbit TR0 = TCON4;sbit IE1 = TCON3;sbit IT1 = TCON2;sbit IE0 = TCON1;sbit IT0 = TCON0;/* IE */sbit EA = IE7;sbit ET2 = IE5; /8052 onlysbit ES = IE4;sbit ET1 = IE3;sbit EX1 = IE2;sbit ET0 = IE1;sbit EX0 = IE0;/* IP */sbit PT2 = IP5;sbit P
11、S = IP4;sbit PT1 = IP3;sbit PX1 = IP2;sbit PT0 = IP1;sbit PX0 = IP0;/* P3 */sbit RD = P37;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - sbit WR = P36;sbit T1 = P35;sbit T0 = P34;sbit INT1 = P33;sbit INT0 = P32;sbit TXD = P31;sbit RXD = P
12、30;/* SCON */sbit SM0 = SCON7;sbit SM1 = SCON6;sbit SM2 = SCON5;sbit REN = SCON4;sbit TB8 = SCON3;sbit RB8 = SCON2;sbit TI = SCON1;sbit RI = SCON0;/* P1 */sbit T2EX = P11; / 8052 onlysbit T2 = P10; / 8052 only/* T2CON */sbit TF2 = T2CON7;sbit EXF2 = T2CON6;sbit RCLK = T2CON5;sbit TCLK = T2CON4;sbit
13、EXEN2 = T2CON3;sbit TR2 = T2CON2;sbit C_T2 = T2CON1;sbit CP_RL2 = T2CON0;#endif2.INTRINS.H/*- INTRINS.HIntrinsic functions for C51.Copyright (c) 1988 -2004 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
14、 第 8 页,共 18 页 - - - - - - - - - #ifndef _INTRINS_H_#define _INTRINS_H_extern void _nop_ (void);extern bit _testbit_ (bit);extern unsigned char _cror_ (unsigned char, unsigned char);extern unsigned int _iror_ (unsigned int, unsigned char);extern unsigned long _lror_ (unsigned long, unsigned char);ext
15、ern unsigned char _crol_ (unsigned char, unsigned char);extern unsigned int _irol_ (unsigned int, unsigned char);extern unsigned long _lrol_ (unsigned long, unsigned char);extern unsigned char _chkfloat_(float);extern void _push_ (unsigned char _sfr);extern void _pop_ (unsigned char _sfr);#endif3.ST
16、DIO.H/*- STDIO.HPrototypes for standard I/O functions.Copyright (c) 1988 -2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _STDIO_H_#define _STDIO_H_#ifndef EOF#define EOF -1#endif#ifndef NULL#define NULL (void *) 0)#endif#ifndef _SIZE_T#define _SIZE_Ttypedef unsigned
17、int size_t;#endif名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - #pragma SAVE#pragma REGPARMSextern char _getkey (void);extern char getchar (void);extern char ungetchar (char);extern char putchar (char);extern int printf (const char *, .);
18、extern int sprintf (char *, const char *, .);extern int vprintf (const char *, char *);extern int vsprintf (char *, const char *, char *);extern char *gets (char *, int n);extern int scanf (const char *, .);extern int sscanf (char *, const char *, .);extern int puts (const char *);#pragma RESTORE#en
19、dif4.LCD1602.H#include #ifndef _LCD1602_H_H#define _LCD1602_H_H#define uchar unsigned char#define uint unsigned int/- 函数声明 - void delayms(uchar z);void writecmd(uchar com);void writedata(uchar dat);void init_LCD();/- 函数声明结束 - /1602 端口定义sbit RS = P24 ; / 数据命令选择端(H/L )sbit RW = P25 ;/ 读写选择端( H/L )sbit
20、 E=P26;/*/自定义的字符 (5X8)uchar code tab1=0 x03,0 x05,0 x19,0 x19,0 x19,0 x05,0 x03,0 x00;/小喇叭名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - uchar code tab2=0 x08,0 x0f,0 x12,0 x0f,0 x0a,0 x1F,0 x02,0 x02,;/年uchar code tab3=0 x0f,0 x09,0 x0f
21、,0 x09,0 x0f,0 x09,0 x11,0 x00;/月uchar code tab4=0 x00,0 x1F,0 x11,0 x1F,0 x11,0 x11,0 x1F,0 x00;/日uchar code tab5=0 x18,0 x18,0 x07,0 x08,0 x08,0 x08,0 x07,0 x00;/C(温度符号 )*/*void lcd_pos(uchar pos)/ 设定显示位置 lcd_wcmd(pos | 0 x80) ;*/void delayms(uchar z)/延时函数uint i,j;for(i=z;i0;i -)for(j=100;j0;j -);
22、void writecmd(uchar com) /写指令RS=0;RW=0;E=0;delayms(1);P0=com;delayms(1);E=1;delayms(1);E=0;void writedata(uchar dat) /写数据RS=1;RW=0;E=0;delayms(1);P0=dat;delayms(1);E=1;delayms(1);E=0;/*名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - * 写汉字
23、编码到CGRAM 函数*void writetab() unsigned char i ;lcd_wcmd(0 x40) ; /写 CGRAMfor (i = 0 ; i 8 ; i+) lcd_wdat(mytab1 i ) ; */void init_LCD()/初始化 1602delayms(15);writecmd(0 x38);/不检测忙信号delayms(5);writecmd(0 x38);/不检测忙信号delayms(5);writecmd(0 x38);/不检测忙信号delayms(5);writecmd(0 x38);/显示模式设置delayms(5);writecmd(0
24、 x01);/显示清屏delayms(5);writecmd(0 x06);/显示光标移动设置delayms(5);writecmd(0 x0c);/显示开及光标设置delayms(5);/*writetab() ; /自定义字符写入CGRAMdelay(5) ;lcd_pos(0 x4d) ;lcd_wdat(0 x00) ; /显示自定义字符*/#endif5.主程序#include #include #include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共
25、 18 页 - - - - - - - - - #include lcd1602.htypedef unsigned char U8; /* 无符号 8 位整型变量*/typedef signed char S8; /* 有符号 8 位整型变量*/typedef unsigned int U16; /* 无符号 16 位整型变量*/typedef signed int S16; /* 有符号 16 位整型变量*/typedef unsigned long U32; /* 无符号 32 位整型变量*/typedef signed long S32; /* 有符号 32 位整型变量*/typede
26、f float F32; /* 单精度浮点数(32 位长度)*/typedef double F64; /* 双精度浮点数(64 位长度)*/#define uchar unsigned char#define uint unsigned int/ - IO 口定义 -/sbit DHT = P20 ; /AM2301 端口定义/- 全局变量 -/bit flagtemp;/ 温度正负标志位,k U8count, bit flagsendtemp;/ 发送温度的标志位U8 U8FLAG;U8 U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_da
27、ta_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U16 DHTData1,DHTData2;U8 outdata5; /定义发送的字节数U8 indata5;U8 count, count_r=0;U8 str5;U8 data tab6=0 x00,0 x00,0 x00,0 x00,0 x00,0 x00;/存储温湿度数据U8 code dis1=Humdity: % ;U8 code dis2=Temper
28、: c ;/*函数名称: 延时子程序*/void Delay(U16 j) U8 i;for(;j0;j -) for(i=0;i27;i+);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - void Delay_10us(void)/ 延时 10uSU8 i;i-;i-;i-;i-;i-;i-;/*函数名称: 读温湿度字节函数功能 : 读取温湿度每个字节说明 : 无*/void COM(void)/ 读字节U8 i;for
29、(i=0;i8;i+)U8FLAG=2;while(!DHT)&U8FLAG+);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(DHT)U8temp=1;U8FLAG=2;while(DHT)&U8FLAG+);/超时则跳出for 循环if(U8FLAG=1)break;/判断数据位是0 还是 1/ 如果高电平高过预定0 高电平值则数据位为1 U8comdata=1;U8comdata|=U8temp; /0/end i名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
30、心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - /- /- /- 湿度读取子程序- /- /- 以下变量均为全局变量- /- 温度高 8 位= U8T_data_H - /- 温度低 8 位= U8T_data_L - /- 湿度高 8 位= U8RH_data_H - /- 湿度低 8 位= U8RH_data_L - /- 校验 8 位 = U8checkdata- /- 调用相关子程序如下- /- Delay();, Delay_10us();,COM(); /- /*函数名称: 温湿度读取函数功能 : 读取温湿度数据说明 : 无*/v
31、oid RH(void)/ 读取温湿度/主机拉低1-5ms DHT=0;Delay(5);DHT=1;/总线由上拉电阻拉高主机延时 40usDelay_10us();Delay_10us();Delay_10us();Delay_10us();/主机设为输入判断从机响应信号DHT=1;/判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!DHT)/T !U8FLAG=2;/判断从机是否发出80us 的低电平响应信号是否结束while(!DHT)&U8FLAG+);U8FLAG=2;/判断从机是否发出80us 的高电平,如发出则进入数据接收状态while(DHT)&U8FLAG+)
32、;/数据接收状态COM();U8RH_data_H_temp=U8comdata;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;DHT=1;/数据校验U8temp=(
33、U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp=U8checkdata_temp)if(1)U8RH_data_H = U8RH_data_H_temp;/ 湿度U8RH_data_L = U8RH_data_L_temp;DHTData1 = U8RH_data_H;DHTData1 = 8;DHTData1 |= U8RH_data_L;/ 获得完整的湿度tab0=DHTData1/100+0 x30; /湿度百位tab1=DHTData1%100/10+0 x30;/湿度十位tab2
34、=DHTData1%10+0 x30;/湿度个位U8T_data_H = U8T_data_H_temp;/ 温度U8T_data_L = U8T_data_L_temp;DHTData2 = U8T_data_H;DHTData2=8;DHTData2 |= U8T_data_L;/ 获得完整的温度if(DHTData2&0 x8000)/如果温度为负值flagtemp=1;DHTData2&=0 x7FFF;tab3=DHTData2/100+0 x30;tab4=DHTData2%100/10+0 x30;tab5=DHTData2%10+0 x30;/U8checkdata=U8che
35、ckdata_temp;/fi/fi名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - /*函数名称: 显示温湿度函数功能 : 显示温湿度数据说明 : 无*/void display()U8 m;/= 显示湿度 =m = 0 ;writecmd(0 x80); while(dis1m != 0)/显示字符 writedata(dis1m) ;m+ ;writecmd(0 x89);writedata(tab0);writedat
36、a(tab1);writedata(.);writedata(tab2);/= 显示温度 =m = 0 ;writecmd(0 xc0); while(dis1m != 0)/显示字符 writedata(dis2m) ;m+ ;writecmd(0 xC8);if(flagtemp)writedata( -);else writedata(+);writecmd(0 xC9);writedata(tab3);writedata(tab4);writedata(.);writedata(tab5);void main()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - /U8 buff4;/U8 timecount;init_LCD();while(1) RH();/ 调用温湿度读取子程序display(); /1602 显示数据Delay(2000);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -