




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、買賣合同頁腳內(nèi)容11/現(xiàn)象是循環(huán)顯示溫度和濕度各顯示三秒(小數(shù)位顯示0)/若需將dhtll.c和其他的硬件結(jié)合使用,只需在需用到溫濕度值的文件加下面聲明/extern int wendu, shidu;(wendu是溫度值,shidu是濕度值,比實際的溫濕度值擴大了十倍)/文件名保存為main.c*/除了 dht11的接口外,其他的電路原理圖與天祥的 C51板對應(yīng)/現(xiàn)象是循環(huán)顯示溫度和濕度各顯示三秒#in clude dhtll.h#in elude sbit DULA = P2A6;/數(shù)碼管位定義sbit WELA = P2A7;static un sig ned char flag;/中斷
2、計數(shù)標志static un sig ned char code array= /數(shù)碼管編碼0x3f,0x06,0x5b,0x4f,0x6,0x6d,0x7d,0x07,0x7f,0x6f;exter n int wen du, shidu;static void In itTime(void);void Delay_1ms(u nsig ned int ms);static void SMG_Display(unsigned int value);int main(v oid)un sig ned char mark = 0;/先等上電穩(wěn)定Delay_1ms(1000);/因為讀一次數(shù)據(jù)dht
3、11才會觸發(fā)一次采集數(shù)據(jù)./即在先使用數(shù)據(jù)時采集一次數(shù)據(jù)ReadTempA ndHumi();Delay_1ms(3000);/因為在兩次采集數(shù)據(jù)需一定的時間間隔,這里還可減少/設(shè)定定時器In itTime();while(1)/三秒讀一次溫濕度if(flag = 60)flag = 0;mark+;/*/讀溫濕度,可檢測函數(shù)調(diào)用是否失敗,/函數(shù)返回OK(1表示成功,返回EROR(表示失敗/OK和ERO是在dhtll.H中定義的宏*/ReadTempA ndHumi();if(mark % 2 = 0)/顯示溫度SMG_Display(we ndu);else/顯示濕度SMG_Display(
4、shidu);return 0;/設(shè)定定時器static void Ini tTime(void)TH0 = (unsigned char)(65535 - 50000) 8);TL0 = (un sig ned char)(65535 - 50000);TMOD = 0X01;TR0 = 1;ET0 = 1;EA = 1;/數(shù)碼管顯示函數(shù)static void SMG_Display (un sig ned int value)un sig ned char ge, bai, shi;ge = value % 10;shi = value % 100 / 10;bai = value % 1
5、000 / 100;WELA = 1;P0 = 0XFE;WELA = 0;P0 = OXFF;DULA = 1;P0 = arraybai;DULA = 0;Delay_1ms(2);WELA = 1;P0 = OXFD;WELA = 0;PO = OXFF;DULA = 1;PO = arrayshi;PO |= 0x80; /*顯示小數(shù)點*/DULA = 0;Delay_1ms(2);WELA = 1;PO = OXFB;WELA = 0;PO = OXFF;DULA = 1;PO = arrayge;DULA = 0;Delay_1ms(2);/中斷函數(shù)void timer(void)
6、 interrupt 1THO = (unsigned char)(65535 - 50000) 8);TL0 = (un sig ned char)(65535 - 50000);flag+;/*/保存文件名dht11.h(保存時必須命名為dht11.h*/*/#ifndef _dht11_H_#defi ne _HDT11_H_/ 設(shè)定標志(static unsigned char state的宏值#defi ne OK 1#defi ne EROR 0exter n void Delay_1ms(u nsig ned int ms);/函數(shù)的返回值表示讀取數(shù)據(jù)是否成功OK表示成功EROR
7、6示失敗exter n un sig ned char ReadTempA ndHumi(void);#en dif/*/*/保存的文件名是dht11.c*/*/*/單片機時鐘為11.0592M#in elude dhtll.h#in elude /請根據(jù)自己的dht11接的IO 口來改動位定義sbit dht11 = P2A0;/防止在與硬件通信時發(fā)生死循環(huán)的計數(shù)范圍#defi ne NUMBEF20#defi ne SIZE 5 static un sig ned char status;/存放五字節(jié)數(shù)據(jù)的數(shù)組static unsigned char value_arraySIZE;/*可
8、在其他的文件引用溫濕度值,實際是溫度的整數(shù)的10倍如dht11讀回的溫度是26,則wendu = 260,濕度同理*/ int wen du, shidu;買賣合同static un sig ned char ReadValue(void); exter n void Delay_1ms(u nsig ned int ms) un sig ned int x, y;for(x = ms; x 0; x-)for(y = 124; y 0; y-);static void Delay_10us(void)un sig ned char i;i-;i-;i-;i-;I-;/*讀一個字節(jié)的數(shù)據(jù)*/s
9、tatic un sig ned char ReadValue(void)un sig ned char count, value = 0, i;status = OK; /設(shè)定標志為正常狀態(tài)for(i = 8; i 0; i-)/高位在先value = 1;count = 0;/每一位數(shù)據(jù)前會有一個50us的低電平時間.等待50us(氐電平結(jié)束while(dht11 = 0 & cou nt+ = NUMBER)status = EROR; /設(shè)定錯誤標志return 0;/函數(shù)執(zhí)行過程發(fā)生錯誤就退出函數(shù)26-28us的高電平表示該位是 0,為70us高電平表該位1Delay_10us();
10、Delay_10us();Delay_10us();/延時30us后檢測數(shù)據(jù)線是否還是咼電平if(dht11 != 0) /進入這里表示該位是1value+;/等待剩余(約40us的高電平結(jié)束while(dht11 != 0 & coun t+ = NUMBER)status = EROR; /設(shè)定錯誤標志return 0;return (value);/讀一次的數(shù)據(jù),共五字節(jié)extern un sig ned char ReadTempA ndHumi(void)un sig ned char i = 0, check_value = 0,co unt = 0;EA = 0;dht11 =
11、0;/拉低數(shù)據(jù)線大于18ms發(fā)送開始信號Delay_1ms(20); / 需大于 18毫秒dht11 = 1;/釋放數(shù)據(jù)線,用于檢測低電平的應(yīng)答信號80us/延時20-40us等待一段時間后檢測應(yīng)答信號,應(yīng)答信號是從機拉低數(shù)據(jù)線Delay_10us();Delay_10us();Delay_10us();Delay_10us();if(dht11 != 0)/檢測應(yīng)答信號,應(yīng)答信號是低電平/沒應(yīng)答信號EA = 1;return EROR;else/有應(yīng)答信號while(dht11 = 0 & count+ = NUMBER) /檢測計數(shù)器是否超過了設(shè)定的范圍dht11 = 1;EA = 1;
12、return EROR; /讀數(shù)據(jù)出錯,退出函數(shù)count = 0;dhtll = 1;/釋放數(shù)據(jù)線/應(yīng)答信號后會有一個80us的高電平,等待高電平結(jié)束while(dht11 != 0 & count+ = NUMBER)dht11 = 1;EA = 1;return EROR; /退出函數(shù)/讀出濕溫度值for(i = 0; i SIZE; i+)value_arayi = ReadValue();if(status = EROR)/調(diào)用 ReadValue讀數(shù)據(jù)出錯會設(shè)定 status為 ERORdhtll = 1;EA = 1;return EROR;/讀出的最后一個值是校驗值不需加上去if(i != SIZE - 1)/讀出的五字節(jié)數(shù)據(jù)中的前四字節(jié)數(shù)據(jù)和等于第五字節(jié)數(shù)據(jù)表示成功check_value += value_arayi;/end for/在沒用發(fā)生函數(shù)調(diào)用失敗時進行校
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)生讀書筆記讀后感
- 水資源開發(fā)與保護聯(lián)合協(xié)議
- 裝修大包合同
- 國內(nèi)外企業(yè)辦公差異對比分析表
- 商務(wù)往來文書格式與寫作技巧說明
- 家政服務(wù)合同小時工合同
- 酒店餐廳菜譜策劃與實施指南
- 環(huán)境科學(xué)與工程水處理技術(shù)知識點詳解
- 醫(yī)療保健領(lǐng)域新藥研發(fā)動態(tài)表
- 健身行業(yè)線上線下會員卡管理與營銷策略制定方案
- 挖掘機司機技能理論考試題庫大全(600題版)
- 我的寒假生活課件模板
- 貝多芬與《月光奏鳴曲》
- 2011年比亞迪l3使用手冊
- 《汽車理論》復(fù)習(xí)提綱
- 利用勾股定理作圖計算(課堂PPT)
- 金合極思軟件快捷鍵
- 園林綠化監(jiān)理月報001
- 淺議如何當好稅務(wù)分局長
- 交通建設(shè)工程工程量清單計價規(guī)范(第1部分公路工程)-解析
- 山西曲沃(或經(jīng)洪洞縣大槐樹)遷徙蘇北魯南曹氏宗系分支
評論
0/150
提交評論