AM2301溫濕度傳感器模塊_第1頁
AM2301溫濕度傳感器模塊_第2頁
AM2301溫濕度傳感器模塊_第3頁
AM2301溫濕度傳感器模塊_第4頁
AM2301溫濕度傳感器模塊_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、AM2301溫濕度傳感器模塊AM2301數(shù)字溫濕度傳感器是一各包括有數(shù)字校準輸出的溫濕度傳感器。它采用獨特的數(shù)字采集模塊和高新溫濕度采集傳感技術,可以確保產(chǎn)品可靠性高以及穩(wěn)定性好。該款傳感器具有響應快、抗干擾力強、性價比高、品質(zhì)卓越等優(yōu)點。以及超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應用的最佳選則。9AM2301 引腳圖圖3-10 AM2301引腳圖AM2301各引腳說明表3-7 AM2301引腳引腳顏色名稱注釋1紅色VDD供電 3.3-5.5VDC2黃色SDA串行數(shù)據(jù),單總線3黑色GND接地,電源負極4NC空腳,請懸空(不要接Vcc或Gnd)AM2301 技術參數(shù)表3

2、-8 AM2301技術參數(shù)參數(shù)條件MinTypMax單位濕度分辨率0.1%RH16Bit重復性1%RH精度253%RH0505%RH互換性可完全互換采樣周期12S響應時間1/e(63%)25,1m/s 空氣2S遲滯0.3%RH長期穩(wěn)定性典型值1%RH/yr溫度分辨率0.116Bit重復性0.5精度1量程范圍-4080響應時間1/e(63%)620SAM2301 驅(qū)動電路圖3-11 AM2301驅(qū)動電路圖溫濕度傳感器模塊流程設計用戶主機(MCU)發(fā)送一次開始信號后,AM2301自動從休眠模式轉(zhuǎn)換到高速模式。等待主機開始,信號發(fā)送后,AM2301發(fā)送響應信號,送出40比特的數(shù)據(jù),發(fā)送數(shù)據(jù)結(jié)束之后觸

3、發(fā)一次信號采集,對外部環(huán)境進行數(shù)據(jù)采集,采集結(jié)束傳感器自動轉(zhuǎn)入休眠模式,直到下一次通信信號的來臨。此時AM2301的SDA數(shù)據(jù)線由上拉電阻拉高,一直保持高電平,且AM2301的SDA引腳處于輸入狀態(tài),時刻檢測外部信號。一旦接收到主機發(fā)送的信號,再次進入采集狀態(tài),對外部數(shù)據(jù)進行一次采集。整個過程流程圖如下:圖4-10溫濕度傳感器流程圖1602 LCD顯示屏測試根據(jù)第三章說明的LCD硬件連線要求,將屏幕的14個接口按要求分別連接至單片機的各端口,確認無誤后,個單片機上電,并將編完的程序通過STC-ISP軟件燒入到單片機中,連線圖如下:圖5-3 LCD1602連線圖 給單片機上電之后,屏幕顯示如下:

4、圖5-4 LCD1602顯示效果 該LCD顯示屏能正常顯示預期設置字幕。AM2301溫濕度傳感器測試根據(jù)溫濕度傳感器驅(qū)動電路,實物連接圖如下:圖5-7 AM2301連線圖給單片機上電,則可在LCD屏幕上得到如下數(shù)據(jù):圖5-8 AM2301采集數(shù)據(jù)LCD屏幕第一行顯示當前室內(nèi)濕度情況,第二行顯示當前室內(nèi)溫度情況,若用吹風機對其吹風,則溫濕度會相應變化。附錄主要程序源代碼:1. REG52.H/*-REG52.HHeader file for generic 80C52 and 80C32 microcontroller.Copyright (c) 1988-2002 Keil Elektroni

5、k GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _REG52_H_#define _REG52_H_/* BYTE Registers */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sf

6、r TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;/* 8052 Extensions */sfr T2CON = 0xC8;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;/* BIT Registers */* PSW */sbit CY = PSW7;sbit AC = PSW6;sbit F0 = PSW5;sbit R

7、S1 = PSW4;sbit RS0 = PSW3;sbit OV = PSW2;sbit P = PSW0; /8052 only/* 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 =

8、IE2;sbit ET0 = IE1;sbit EX0 = IE0;/* IP */sbit PT2 = IP5;sbit PS = IP4;sbit PT1 = IP3;sbit PX1 = IP2;sbit PT0 = IP1;sbit PX0 = IP0;/* P3 */sbit RD = P37;sbit WR = P36;sbit T1 = P35;sbit T0 = P34;sbit INT1 = P33;sbit INT0 = P32;sbit TXD = P31;sbit RXD = P30;/* SCON */sbit SM0 = SCON7;sbit SM1 = SCON6

9、;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 EXEN2 = T2CON3;sbit TR2 = T2CON2;sbit C_T2 =

10、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.-*/#ifndef _INTRINS_H_#define _INTRINS_H_extern void _nop_ (void);extern bit _testbit_ (bit);extern unsigned char _cror_ (unsi

11、gned char, unsigned char);extern unsigned int _iror_ (unsigned int, unsigned char);extern unsigned long _lror_ (unsigned long, unsigned char);extern unsigned char _crol_ (unsigned char, unsigned char);extern unsigned int _irol_ (unsigned int, unsigned char);extern unsigned long _lrol_ (unsigned long

12、, unsigned char);extern unsigned char _chkfloat_(float);extern void _push_ (unsigned char _sfr);extern void _pop_ (unsigned char _sfr);#endif3. STDIO.H/*-STDIO.HPrototypes for standard I/O functions.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _S

13、TDIO_H_#define _STDIO_H_#ifndef EOF #define EOF -1#endif#ifndef NULL #define NULL (void *) 0)#endif#ifndef _SIZE_T #define _SIZE_T typedef unsigned int size_t;#endif#pragma SAVE#pragma REGPARMSextern char _getkey (void);extern char getchar (void);extern char ungetchar (char);extern char putchar (cha

14、r);extern int printf (const char *, .);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

15、 puts (const char *);#pragma RESTORE#endif4. LCD1602.H#include #ifndef _LCD1602_H_H#define _LCD1602_H_H#define uchar unsigned char#define uint unsigned int/-函數(shù)聲明-void delayms(uchar z);void writecmd(uchar com);void writedata(uchar dat);void init_LCD();/-函數(shù)聲明結(jié)束-/1602端口定義sbit RS = P24 ; /數(shù)據(jù)命令選擇端(H/L)sb

16、it RW = P25 ;/讀寫選擇端(H/L)sbit E=P26;/* /自定義的字符(5X8)uchar code tab1=0x03,0x05,0x19,0x19,0x19,0x05,0x03,0x00;/小喇叭uchar code tab2=0x08,0x0f,0x12,0x0f,0x0a,0x1F,0x02,0x02,;/年uchar code tab3=0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00;/月uchar code tab4=0x00,0x1F,0x11,0x1F,0x11,0x11,0x1F,0x00;/日uchar code tab5

17、=0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00;/C(溫度符號)*/*void lcd_pos(uchar pos)/設定顯示位置 lcd_wcmd(pos | 0x80) ;*/void delayms(uchar z)/延時函數(shù)uint i,j;for(i=z;i0;i-) for(j=100;j0;j-); 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) /寫數(shù)據(jù)

18、RS=1;RW=0;E=0;delayms(1);P0=dat;delayms(1);E=1;delayms(1);E=0; /* 寫漢字編碼到CGRAM函數(shù) *void writetab() unsigned char i ; lcd_wcmd(0x40) ; /寫CGRAM for (i = 0 ; i 8 ; i+) lcd_wdat(mytab1 i ) ; */void init_LCD() /初始化1602delayms(15); writecmd(0x38); /不檢測忙信號delayms(5);writecmd(0x38); /不檢測忙信號delayms(5);writecmd

19、(0x38); /不檢測忙信號delayms(5);writecmd(0x38); /顯示模式設置delayms(5);writecmd(0x01);/顯示清屏delayms(5);writecmd(0x06);/顯示光標移動設置delayms(5);writecmd(0x0c);/顯示開及光標設置delayms(5);/*writetab() ; /自定義字符寫入CGRAM delay(5) ; lcd_pos(0x4d) ; lcd_wdat(0x00) ; /顯示自定義字符*/#endif5. 主程序#include #include #include #include lcd1602.

20、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位整型變量 */typedef float F32; /* 單精度浮點數(shù)(32位長度) */typedef double

21、F64; /* 雙精度浮點數(shù)(64位長度) */#define uchar unsigned char#define uint unsigned int/-IO口定義-/sbit DHT = P20 ; /AM2301端口定義/-全局變量-/bit flagtemp;/溫度正負標志位,k U8count, bit flagsendtemp;/發(fā)送溫度的標志位U8 U8FLAG;U8 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

22、_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U16 DHTData1,DHTData2;U8 outdata5; /定義發(fā)送的字節(jié)數(shù) U8 indata5;U8 count, count_r=0;U8 str5;U8 data tab6=0x00,0x00,0x00,0x00,0x00,0x00;/存儲溫濕度數(shù)據(jù)U8 code dis1=Humdity: % ;U8 code dis2=Temper: c ;/*函數(shù)名稱 : 延時子程序*/void Delay(U16 j) U8 i; for(;j0;j-) for(

23、i=0;i27;i+); void Delay_10us(void)/延時10uS U8 i; i-; i-; i-; i-; i-; i-; /*函數(shù)名稱 : 讀溫濕度字節(jié)函數(shù) 功 能 : 讀取溫濕度每個字節(jié)說 明 : 無*/ void COM(void)/讀字節(jié) U8 i; for(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循環(huán) if(U

24、8FLAG=1)break; /判斷數(shù)據(jù)位是0還是1 / 如果高電平高過預定0高電平值則數(shù)據(jù)位為 1 U8comdata=1; U8comdata|=U8temp; /0 /end i /-/-/-濕度讀取子程序 -/-/-以下變量均為全局變量-/-溫度高8位= U8T_data_H-/-溫度低8位= U8T_data_L-/-濕度高8位= U8RH_data_H-/-濕度低8位= U8RH_data_L-/-校驗 8位 = U8checkdata-/-調(diào)用相關子程序如下-/- Delay();, Delay_10us();,COM(); /-/*函數(shù)名稱 : 溫濕度讀取函數(shù)功 能 : 讀取溫

25、濕度數(shù)據(jù)說 明 : 無*/ void RH(void)/讀取溫濕度 /主機拉低 1-5ms DHT=0; Delay(5); DHT=1; /總線由上拉電阻拉高 主機延時40us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); /主機設為輸入 判斷從機響應信號 DHT=1; /判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行 if(!DHT) /T ! U8FLAG=2; /判斷從機是否發(fā)出 80us 的低電平響應信號是否結(jié)束 while(!DHT)&U8FLAG+); U8FLAG=2; /判斷從機是否發(fā)出 80us

26、 的高電平,如發(fā)出則進入數(shù)據(jù)接收狀態(tài) while(DHT)&U8FLAG+); /數(shù)據(jù)接收狀態(tài) COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; DHT=1; /數(shù)據(jù)校驗 U8temp=(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+0x30; /濕度百位 tab1=DHTData1%100

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論