




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上AM2301溫濕度傳感器模塊AM2301數字溫濕度傳感器是一各包括有數字校準輸出的溫濕度傳感器。它采用獨特的數字采集模塊和高新溫濕度采集傳感技術,可以確保產品可靠性高以及穩定性好。該款傳感器具有響應快、抗干擾力強、性價比高、品質卓越等優點。以及超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應用的最佳選則。9AM2301 引腳圖圖3-10 AM2301引腳圖AM2301各引腳說明表3-7 AM2301引腳引腳顏色名稱注釋1紅色VDD供電 3.3-5.5VDC2黃色SDA串行數據,單總線3黑色GND接地,電源負極4NC空腳,請懸空(不要接Vcc或Gnd)
2、AM2301 技術參數表3-8 AM2301技術參數參數條件MinTypMax單位濕度分辨率0.1%RH16Bit重復性±1%RH精度25±3%RH050±5%RH互換性可完全互換采樣周期12S響應時間1/e(63%)25,1m/s 空氣2S遲滯±0.3%RH長期穩定性典型值±1%RH/yr溫度分辨率0.116Bit重復性±0.5精度±1量程范圍-4080響應時間1/e(63%)620SAM2301 驅動電路圖3-11 AM2301驅動電路圖溫濕度傳感器模塊流程設計用戶主機(MCU)發送一次開始信號后,AM2301自動從休眠
3、模式轉換到高速模式。等待主機開始,信號發送后,AM2301發送響應信號,送出40比特的數據,發送數據結束之后觸發一次信號采集,對外部環境進行數據采集,采集結束傳感器自動轉入休眠模式,直到下一次通信信號的來臨。此時AM2301的SDA數據線由上拉電阻拉高,一直保持高電平,且AM2301的SDA引腳處于輸入狀態,時刻檢測外部信號。一旦接收到主機發送的信號,再次進入采集狀態,對外部數據進行一次采集。整個過程流程圖如下:圖4-10溫濕度傳感器流程圖1602 LCD顯示屏測試根據第三章說明的LCD硬件連線要求,將屏幕的14個接口按要求分別連接至單片機的各端口,確認無誤后,個單片機上電,并將編完的程序通過
4、STC-ISP軟件燒入到單片機中,連線圖如下:圖5-3 LCD1602連線圖 給單片機上電之后,屏幕顯示如下:圖5-4 LCD1602顯示效果 該LCD顯示屏能正常顯示預期設置字幕。AM2301溫濕度傳感器測試根據溫濕度傳感器驅動電路,實物連接圖如下:圖5-7 AM2301連線圖給單片機上電,則可在LCD屏幕上得到如下數據:圖5-8 AM2301采集數據LCD屏幕第一行顯示當前室內濕度情況,第二行顯示當前室內溫度情況,若用吹風機對其吹風,則溫濕度會相應變化。附錄主要程序源代碼:1. REG52.H/*-REG52.HHeader file for generic 80C52 and 80C32
5、 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 = 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 =
6、0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr 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 */* PS
7、W */sbit CY = PSW7;sbit AC = PSW6;sbit F0 = PSW5;sbit RS1 = 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 =
8、IE5; /8052 onlysbit ES = IE4;sbit ET1 = IE3;sbit EX1 = 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;sbi
9、t RXD = P30;/* 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 = T2
10、CON4;sbit 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.-*/#ifndef _INTRINS_H_#define _INTRINS_H_extern void _nop_ (void);exter
11、n 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);extern unsigned char _crol_ (unsigned char, unsigned char);extern unsigned int _irol_ (unsigned int, un
12、signed 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. STDIO.H/*-STDIO.HPrototypes for standard I/O functions.Copyright (c) 1988-2002 Keil Elektronik GmbH a
13、nd 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_T typedef unsigned int size_t;#endif#pragma SAVE#pragma REGPARMSextern char _getkey (void);extern char getchar (void
14、);extern char ungetchar (char);extern char putchar (char);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 *, .)
15、;extern int sscanf (char *, const char *, .);extern int puts (const char *);#pragma RESTORE#endif4. LCD1602.H#include <intrins.h>#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(ucha
16、r dat);void init_LCD();/-函數聲明結束-/1602端口定義sbit RS = P24 ; /數據命令選擇端(H/L)sbit 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;/月u
17、char code tab4=0x00,0x1F,0x11,0x1F,0x11,0x11,0x1F,0x00;/日uchar code tab5=0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00;/C(溫度符號)*/*void lcd_pos(uchar pos)/設定顯示位置 lcd_wcmd(pos | 0x80) ;*/void delayms(uchar z)/延時函數uint i,j;for(i=z;i>0;i-) for(j=100;j>0;j-); void writecmd(uchar com) /寫指令 RS=0; RW=0;E=0;
18、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; /* 寫漢字編碼到CGRAM函數 *void writetab() unsigned char i ; lcd_wcmd(0x40) ; /寫CGRAM for (i = 0 ; i< 8 ; i+) lcd_wdat(mytab1 i ) ; */void init_LCD() /初始化1602delay
19、ms(15); writecmd(0x38); /不檢測忙信號delayms(5);writecmd(0x38); /不檢測忙信號delayms(5);writecmd(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) ;
20、 lcd_wdat(0x00) ; /顯示自定義字符*/#endif5. 主程序#include <reg52.h>#include <intrins.h>#include <stdio.h> #include "lcd1602.h"typedef unsigned char U8; /* 無符號8位整型變量 */typedef signed char S8; /* 有符號8位整型變量 */typedef unsigned int U16; /* 無符號16位整型變量 */typedef signed int S16; /* 有符號16位
21、整型變量 */typedef unsigned long U32; /* 無符號32位整型變量 */typedef signed long S32; /* 有符號32位整型變量 */typedef float F32; /* 單精度浮點數(32位長度) */typedef double F64; /* 雙精度浮點數(64位長度) */#define uchar unsigned char#define uint unsigned int/-IO口定義-/sbit DHT = P20 ; /AM2301端口定義/-全局變量-/bit flagtemp;/溫度正負標志位,k U8count, bi
22、t flagsendtemp;/發送溫度的標志位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_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
23、=0x00,0x00,0x00,0x00,0x00,0x00;/存儲溫濕度數據U8 code dis1="Humdity: % " ;U8 code dis2="Temper: c " ;/*函數名稱 : 延時子程序*/void Delay(U16 j) U8 i; for(;j>0;j-) for(i=0;i<27;i+); void Delay_10us(void)/延時10uS U8 i; i-; i-; i-; i-; i-; i-; /*函數名稱 : 讀溫濕度字節函數 功 能 : 讀取溫濕度每個字節說 明 : 無*/ void CO
24、M(void)/讀字節 U8 i; for(i=0;i<8;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
25、 /-/-/-濕度讀取子程序 -/-/-以下變量均為全局變量-/-溫度高8位= U8T_data_H-/-溫度低8位= U8T_data_L-/-濕度高8位= U8RH_data_H-/-濕度低8位= U8RH_data_L-/-校驗 8位 = U8checkdata-/-調用相關子程序如下-/- Delay();, Delay_10us();,COM(); /-/*函數名稱 : 溫濕度讀取函數功 能 : 讀取溫濕度數據說 明 : 無*/ void RH(void)/讀取溫濕度 /主機拉低 1-5ms DHT=0; Delay(5); DHT=1; /總線由上拉電阻拉高 主機延時40us De
26、lay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); /主機設為輸入 判斷從機響應信號 DHT=1; /判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行 if(!DHT) /T ! U8FLAG=2; /判斷從機是否發出 80us 的低電平響應信號是否結束 while(!DHT)&&U8FLAG+); U8FLAG=2; /判斷從機是否發出 80us 的高電平,如發出則進入數據接收狀態 while(DHT)&&U8FLAG+); /數據接收狀態 COM(); U8RH_data_H_temp=U8
27、comdata; 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=(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/10+0x30;/濕度十位 tab2=DHTData1%10+0x30; /濕度個位 U8T_data_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國溫泉特色酒店行業市場深度調研及發展趨勢與投資前景預測研究報告
- 2025-2030中國混凝土攪拌車行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國海岸監視雷達行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國汽車用軸和傳動軸行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國氯甲酸乙酯行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國橡皮行業市場發展分析與發展趨勢及投資風險研究報告
- 2025-2030中國植物纖維素纖維行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國標簽管理解決方案行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國機械測力儀行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國早教行業市場深度調研及競爭格局與發展趨勢研究報告
- 2024能源互聯網智慧電力云服務平臺建設規范及標準
- 靜電噴涂培訓
- 各專業文件準備目錄-急診內科藥物臨床試驗機構GCP SOP
- 心肺復蘇術課件2024新版
- 湖北開放大學2024年《漢語基礎#》形考作業1-4試題
- 四年級下冊道德與法治(教學設計+素材)第8課《這些東西哪里來》(第二課時)
- 高職旅游專業《旅行社經營管理》說課稿
- DB65-T 4785-2024 耕地質量等級調查評價技術規范
- 財務機器人開發與應用實戰 課件 任務5 E-mail人機交互自動化-2
- 2024年個人廉潔自律述職報告(三篇)
- 【華為】通信行業:華為下一代鐵路移動通信系統白皮書2023
評論
0/150
提交評論