DHT11_LCD1602溫濕度檢測與顯示程序_第1頁
DHT11_LCD1602溫濕度檢測與顯示程序_第2頁
DHT11_LCD1602溫濕度檢測與顯示程序_第3頁
DHT11_LCD1602溫濕度檢測與顯示程序_第4頁
DHT11_LCD1602溫濕度檢測與顯示程序_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、/DHT11.C文件#include<reg52.h>#include<Time.Delay.h>/themainonlyneedstocallgelDHTIl()jhenthetemperatureandhuminitywasgotinF16T.F16RHasfloatsbitbitll=P2A0;unsignedcharU8T_data_H,U8T_dala_U8RH_dala_H,U8RH_dala_L.U8checkdala:floatFI6T,F16RH:川丁最終讀取的溫濕度數(shù)據(jù)/read8bitsonicecharCOM(void)chari.U8lemp.

2、U8comdata;for(i=0;i<8;i+)while(!bitll);表小讀取的高電位延時大于20多us則讀取的是I否則讀取的是0Delay_us(35);通過U8FLAG可判斷billl顯小數(shù)據(jù)的脈長U8temp=();if(bitlI)U8temp=l;while(bitl1);U8comdata«=l;U8comdatal=U8temp;/()/rofreturnU8comdata;/-/一一溫濕度讀取子程序.一以下變量均為全局變量-溫度高8位=U8T_data_H-小-溫度低8位=U8T_data_L-濕度高8位=U8RH_data_H-一濕度低8位=U8RH_

3、data_L-一校驗8位=U8checkdata一一一調用相關子程序如下/-Delay。;.Delay_l()us();tCOM();voidgetDHTII(void)主機拉低18msGOI:bit11=0;Delay_ms(20);bill1=1;總線由上拉電阻拉高上機延時20usDelay_us(60);主機設為輸入判斷從機響應信號/bitll=l;判斷從機是否有低電平響應信號如不響應則跳出,響應則向下運行if(!bitll)/T!while(!bitlI);/waitDHTgotohighwhile(bitl1);數(shù)據(jù)接收狀態(tài)U8RH_dala_H=COM();U8RH_daUi_L=

4、COM();U8T_data_H=COM();U8T_data_L=COM();U8checkdata=COM();bill1=1;數(shù)據(jù)校驗if(U8T_dala_H+U8T_da【a_L+U8RH_dala_H+U8RH_dala_L)!=l18checkdata)/ifcheckwrong.readagaingotoGOI;/fiF16T=U8T_data.H+(float)U8T_data_L/256;/changeintegertofloatF16RH=U8RH_data_H+(float)U8RH_data_L/256:/LCD1602文件#include<reg52.h>

5、;#include<stdio.h>include<INTRINS.H>#include<Lcd_1602.h>#include<Time_Delay.h>#defineLCD_DATAPO/LCD1602datatransferdefine#detmeuintunsignedint#detmeucharunsignedchar/*只由主函數(shù)倜用的白Init_Lcd()LCD_write_str(ucharX,ucharY.uchar*s)LCD_vaIue(unsigncdcharx,unsignedchary,floalf)*/sbitLCD

6、.RS=P2A5;/16()2controldefinesbitRW=P2A6;sbitLCD_E=P2A7;OxOC顯示開0x08顯示關OxOA顯示光標0x0c無光標OxOf有光標,光標閃動OxOe有光標,光標不閃動新數(shù)據(jù)后光標右移新數(shù)據(jù)后光標左移畫面可平移畫而不可平移/*木*李*豐*4:*字*±*#detlneLCD_SCREEN_ON#defineLCD_SCREEN_OFF#defincLCD_CURSOR_ON#defineLCD_CURSOR_OFF#defineLCD_C_FLASH_ON#defineLCD_C_FLASH_OFF進入模式設置指令#defineLCD_

7、AC_UP0x06#defineLCD_AC_DOWN0x04#detlneLCD_S_MOVE_ON0x05#defineLCD_S_MOVE_OFF0x04設定顯小圻或光標移動方向指令#defineLCD.C_LEFT0x10光標左移1格,且AC值減I#defineLCD_C_RIGHT0x11光標右移1格,且AC值加I#detlneLCD_CHAR_L,EFT0x18顯示器上字符全部左移格,但光標不動#defineLCD.CHAR.RIGHTOxIC顯示器上字符全部右移一格,但光標不動*察*左*米*卡*本*本*x*木*/注仃上函數(shù)調用的函數(shù)都己作說明其他函數(shù)一般不由上函數(shù)調用/*本*4:

8、* 名稱:IniLLcdO上函數(shù)調用* 功能:Led初始化* 入口參數(shù):無* 出口參數(shù):無* 范例:在上函數(shù)中直接調用*京*木*木*本*率><*東*/voidInit_Lcd()LCD初始化LCD_write_char(0x38,。);Delay_ms(1);I-CD_writjchar(Ox3X,0);Delay_ms(I);LCD_write_char(Ox38.O);Delay_ms(I);LCD_wri(e_char()x()c,();Delay_ms(I);LCD_wite_char(0x06,0);Delay_ms(1);LCD_write_char()x()c,();

9、Delay_ms(I);/* 名稱:LCD_wnte_str(ucharX.ucharY.uchar*s)上函數(shù)調用* 功能:在指定地址寫一個字符申eg:Y=0,1,2,3.4.5.6.7.8.9.10.15=X=()J0* 入口參數(shù):X:橫坐標Y:縱坐標*s:字符串首地址* 出口參數(shù):無* 范例:LCD_write_str(1,Lucliar*s)*屯*拿*/voidLCD_write_str(unsignedcharX.unsignedcharY.unsignedchar*s)(LCD_wrile_char(O,'LCD_set_xy(X,Y);寫地址while(*s)/寫顯示字符

10、LCD_write_char(0,*s);s+;/*本*theopticsignflash?* 名稱:LCD_sel_xy(ucharx,uchary)* 功能:指定一個地址* 入I參數(shù):X:橫坐林Y:縱坐標* 出I參數(shù):無*x*cdsetxy* 范例:LCD_set_xy(5.l)*:1:*"*:*:*voidLCD_set_xy(ucharx,uchary)寫地址函數(shù)(unsignedcharaddress;if(y=0)address=0x8()+x;elseaddress=OxcO+x;LCD_write_char(address.0);/*宇* 名稱:LCD_en_writ

11、e(void)* 功能:液晶使能* 入口參數(shù):無* 出口參數(shù):無* 范例:宜接調用* *«木木木*本木本木本*C)sexy*本木東京東木木本木木木東東東木*本木木*本東東東*木x*木木木本*本木東木京木木東水木東東本東木木*孝木木木本*/voidLCD_en_write(void)液晶使能_nop_();LCD_E=1:/EN=1op_();LCD_E=0;/EN=0)/*#* 名稱:LCD_write_char(ucharcd,ucharab)功能:寫指令或數(shù)據(jù)當寫ab時應使cd=()當cd不為0則寫cd且ab的賦值無效*入I參數(shù):cd:指令內容ab:數(shù)據(jù)內容指令常量已在上面定義但

12、一般不用*出口參數(shù):無* 范例:LCD_wilc_char(0,嚇)*去*w*號*)k/CDsetxy*:«:*小*/voidLCD.write_char(ucharcd.ucharab)/寫數(shù)據(jù)Delay_us(20):if(cd=O)(LCD_RS=1;/RS=I,寫顯示內容LCD_byte(ab);)elseILCD_RS=0:/RS=0.寫命令LCD_byte(cd);/*:|:*木*:|:*左*4:*:1:*:|;*東*字* 名稱:LCD_byte(abc);中功能:寫個字符到oicall"onebytetoLCD中* 入口參數(shù):* 出I參數(shù):無* *ij:*.C

13、Dsetxy*率*率*岸*率*率*/voidLCD.byte(unsignedcharabc)(RW=0;LCD_E=0;LCD.DATA=abc;LCD_en_wile();在液晶中顯示浮點數(shù)函數(shù)LCD_vaIue(unsignedcharx,unsignedchary,floatf)unsignedcharstr|15;不能定義為char*str,數(shù)組長度一定要大于浮點數(shù)的總位數(shù)sprintf(str,"%.lff);/I表示小數(shù)位數(shù)小數(shù)太多自動四舍五.入LCD_write_str(x,y,str);return0;主函數(shù)文件#include<reg52.h>#inc

14、lude<intrins.li>include<Lcd_16O2.h>#include<Time_DeIay.h>#includeltDHTli.ht,externfloatF16T,FI6RH;全局變量聲明voidmain()(InicLcdO;LCD_write_str(OJ,"abc");液晶預顯小測試LCD_value(0,0,34.345);Delay_ms(2000);Init_Lcd();whilc(l)(getDHTl1();LCD_write_str(0,0,"T=");LCD_value(3,0.FI6T):LCD_write-str(8.0.',',C");字符"應用轉義格式LCD_write_str(0,1,"RH=");LCD.vaIue(4J,FI6RH);LCD_wriie_str(9,1);Delay_ms(500);/延時函數(shù)文件以下為延時函數(shù)thisisfittooldC5112MHz,12devidefreqencyvoidDelay_ms(unsignedintn)/

溫馨提示

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

評論

0/150

提交評論