基于單片機的螺絲計數器的設計_第1頁
基于單片機的螺絲計數器的設計_第2頁
基于單片機的螺絲計數器的設計_第3頁
基于單片機的螺絲計數器的設計_第4頁
基于單片機的螺絲計數器的設計_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、*畢業(yè)設計題 目: 基于單片機的螺絲計數器的設計 院 系: 信息工程系 專 業(yè): 測控技術與儀器 班級學號: 11* 學生姓名: * 指導教師: 成 績: 年 月 日目 錄1 方案設計11.1 設計方案要求11.2 硬件方案設計11.2.1 MCU模塊的選擇11.2.2 濕度傳感器的選擇11.2.3 顯示模塊方案21.2.4 電源模塊方案21.2.5 電源模塊方案系統(tǒng)總體設計思路31.3 編程語言與調試環(huán)境選擇32 螺絲計數器的硬件設計52.1 最小系統(tǒng)設計52.1.1 系統(tǒng)復位電路52.1.2 系統(tǒng)時鐘電路52.1.3 單片機最小系統(tǒng)電路圖62.2 金屬探測電路62.2.1 霍爾傳感器NJK

2、 簡介62.2.2 金屬檢測電路設計72.2.3 計數器的顯示82.3 濕度檢測電路82.3.1 DHT11濕度傳感器簡介82.3.2 傳感器的接口說明92.3.3 傳感器的外圍硬件電路102.4 LCD1602顯示模塊102.4.1 LCD1602引腳功能介紹102.4.2 LCD1602驅動電路設計112.5 聲光報警電路112.6 電源電路123 螺絲計數器系統(tǒng)的軟件設計133.1 軟件系統(tǒng)總體工作流程133.2 DHT11數據讀取方式及程序流程143.3 數字濾波程序設計153.4 液晶顯示程序流程16附錄A 硬件原理圖18附錄B 程序代碼19附錄C 實物圖片311 方案設計1.1 設

3、計方案要求(1)寫成利用螺絲靠近到霍爾傳感器可以檢測到的距離進行金屬檢測,并且通過單片機進行計數;(2)利用濕度傳感器檢測螺絲所處環(huán)境的濕度值;(3)在達到單片機內部設計的濕度上限時,進行聲光報警;(4)利用protel99se繪制系統(tǒng)電路的原理圖;(5)利用Microsoft Office Visio軟件繪制系統(tǒng)框圖和程序流程圖。1.2 硬件方案設計1.2.1 MCU模塊的選擇方案一:采用AVR 內核的ATmega16單片機,ATmega16單片機為8位單片機,其功能更加強大,內部集成A/D、PWM,串行通信等,但ATmega16單片機價格較高,編程較復雜。方案二:采用AT89S52單片機為

4、控制核心和數據處理中心, AT89S52單片機成本較低,編程較容易,更容易控制好。綜上比較,本設計不需要進行A/D轉換等,AT89S52單片機完全可以實現,并且從AT89S52單片機成本較低、編程的較容易,所以本設計應該選擇AT89S52單片機作為系統(tǒng)的控制核心。1.2.2 濕度傳感器的選擇方案一:測量濕度選用HS1101是電容式濕度傳感器,輸出是模擬量,需要配以復雜的外圍電路將模擬量轉化為數字量,利用單片機計數脈沖總數再根據相應的公式轉換成真實的濕度值,這種測量方法誤差較大精度較低,在要求不嚴格的環(huán)境下可以使用。方案二: 選用DHT11作為設計的溫濕度檢測模塊。DHT11是一款集成型的數字溫

5、濕度一體傳感器。它應用溫濕度傳感的基本原理和專用的數字模塊采集技術,確保產品對濕度采集具有高的穩(wěn)定性與可靠性。DHT11是由一個NTC測溫元件和一個電阻式感濕元件組成的,輸出數字信號,可直接于單片機相連接,進行讀取濕度數據。因此該產品具有性能穩(wěn)定、響應迅速、并具有較強的抗干擾能力和性價比極高等優(yōu)點。傳感器的測量范圍是相對濕度在20%90%的范圍內,溫度在050之間。測溫精度為±2,測濕精度為±5%相對濕度。綜上所述,從檢測的精度考慮,方案二可以利用單片機直接讀取濕度值不需要經過轉換,精度較方案一高,故本設計選擇方案二。1.2.3 顯示模塊方案方案一:采用帶有中文字庫的LCD

6、12864液晶模塊來顯示接收到的數據。LCD12864是一款比較實用的液晶顯示屏,能夠顯示較多常用的簡體漢字或繁體漢字及ASCII碼,而且能夠通過取模軟件,進行編程繪制圖片,描點畫線等,但成本太高,使用時該模塊的讀寫時序不好控制。方案二:采用帶有字符液晶LCD1602模塊來顯示接收到的數據信息,LCD1602也是一種經常被人們使用的字符液晶模塊,可以顯示各種符號或者數字等信息,并且價格較為適中,在編寫顯示程序時,它的讀寫時序也不太容易控制。方案三:采用LED 8段共陽數碼顯示管顯示數據,其價格較便宜,外圍驅動電路較簡單,并且容易編寫顯示程序,但它的缺點是不能顯示符號或者漢字等,只能顯示數字。綜

7、合經濟和顯示的效果兩方面考慮,本設計選擇方案二,即利用LCD1602來顯示環(huán)境的濕度值和螺絲的數量。1.2.4 電源模塊方案方案一:采用12V電源適配器提供12V電壓,并通過穩(wěn)壓芯片LM7805,給系統(tǒng)的各個模塊電路供電。該電源適配器必須接220V交流電,才能正常工作,在使用時,受到場地的限制,不方便。方案二:采用9V電池,然后經穩(wěn)壓芯片LM7805進行穩(wěn)壓,濾波后給系統(tǒng)的各個模塊供電,其價格較便宜,使用簡單方便,缺點是輸出電流較小,并且電量有限。方案三:采用22:1的變壓器將220V降壓到10V,然后經整流橋整流,電容濾波,穩(wěn)壓芯片穩(wěn)壓,給系統(tǒng)的各個模塊供電。其價格較為便宜,但是外圍電路比較

8、復雜。綜合所述,從便攜和經濟兩個方面考慮,電池具有明顯優(yōu)勢,故本設計選擇方案二。1.2.5 電源模塊方案系統(tǒng)總體設計思路系統(tǒng)電路主要由AT89S52單片機最小系統(tǒng)電路,金屬檢測電路,PC817光電隔離電路,濕度檢測電路,LCD顯示電路,聲光報警電路以及電源電路組成。具體框圖如圖1.1所示。金屬檢測電路LCD顯示電路AT89S52單片機最小系統(tǒng) PC817光電隔離電路聲光報警電路濕度檢測電路電源電路圖1.1 系統(tǒng)的總體設計框圖系統(tǒng)以AT89S52單片機作為系統(tǒng)的主控核心,通過單片機計數器讀取和記錄金屬傳感器的電路輸出的信號。并利用單片機對濕度傳感器返回的數據進行讀取,來檢測螺絲周圍環(huán)境的濕度,并

9、與設定的濕度進行比較,如果濕度不在設定的濕度值范圍之內,單片機控制蜂鳴器和發(fā)光二極管進行聲光報警。最后通過單片機控制LCD液晶顯示屏顯示出濕度值和螺絲的數量。1.3 編程語言與調試環(huán)境選擇本設計編程語言選擇c語言。C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它具有良好的可讀性、易維護性、可移植性和硬件操作能力,并且簡單易懂,容易學習及理解。本設計調試環(huán)境選擇keil軟件。Keil C51軟件提供豐富的庫函數和功能強大的集成開發(fā)調試工具,它生產代碼的效率極高,多數語句生成的匯編代碼很緊湊,容易理解。2 螺絲計數器的硬件設計2.1 最小系統(tǒng)設計2.1.1 系統(tǒng)復位

10、電路當MCS-5l系列單片機的RST復位引腳,持續(xù)2個或者2個以上的機器周期高電平時,MCS-5l單片機完成穩(wěn)定的系統(tǒng)復位。根據系統(tǒng)應用時的不同要求,復位電路又分為上電復位和手動復位兩種形式,圖2.1即為本系統(tǒng)的復位電路。圖2.1 復位電路圖圖2.1中,既能實現上電復位又可以實現手動復位,當系統(tǒng)上電一瞬間,電容相當于短路,即REST復位端口,直接加到+5V的高電平上,所有可以實現上電復位。當系統(tǒng)正常運行后,在需要復位的時候,按下開關,即將電容短路,同樣可以實現手動復位。2.1.2 系統(tǒng)時鐘電路MCS-51單片機應用時,我們常用石英晶體接電容組成系統(tǒng)時鐘電路,如果系統(tǒng)需要使用串口通訊,為了滿足波

11、特率沒有誤差,我們經常使用11.0592MHZ的石英晶體。如果系統(tǒng)需要使用定時器,為了滿足定時器定時沒有誤差,我們通常會選擇12MHZ的石英晶體。不管石英晶體選擇是11.0592MHZ,還是12MHZ,通常使用的匹配電容都是30pf的。本次設計選用的是12M的石英晶體,具體時鐘電路如圖2.2所示。圖2.2 時鐘電路圖2.1.3 單片機最小系統(tǒng)電路圖單片機最小系統(tǒng)電路圖如圖2.3所示,由時鐘電路,復位電路和AT89S52控制芯片組成。圖2.3 最小系統(tǒng)電路圖2.2 金屬探測電路2.2.1 霍爾傳感器NJK 簡介NJK系列霍爾傳感器是由電壓調整器,霍爾電壓發(fā)生器,差分放大器,施密特觸發(fā)器和集電極開

12、路的輸出極組成的磁敏傳感器,實物圖如圖2.4所示。其輸入為磁感應強度、輸出是一個數字電壓訊號。它有以下幾個特點:(1) 電源電壓范圍寬(DC6V-DC36V);(2) 頻率高;(3) 壽命長,體積小,安裝方便;(4) 能直接和晶體管及TTL,CMOS等邏輯電路連接。圖2.4 金屬傳感器實物圖該傳感器分為兩類,分別是NPN類和PNP類。NPN是指當有信號觸發(fā)時,信號輸出線OUT和GND連接,相當于OUT輸出低電平。PNP是指當有信號觸發(fā)時,信號輸出線OUT和VCC連接,相當于OUT輸出高電平的電源線。本次設計選擇的是PNP類型。2.2.2 金屬檢測電路設計

13、金屬檢測電路如圖2.5所示,主要由金屬傳感器LJ18A和光電耦合器PC817組成。由于金屬傳感器供電電壓范圍的限制,設計選擇直接將9V的電池電壓加到傳感器的VCC上。這樣傳感器的輸出電壓也就是9V,如果直接將此電壓接到單片機的I/O上,而單片機I/O能承受的最大電壓為5V,這樣就很容易燒壞單片機。所以在電路設計中,選擇光電耦合器PC817來實現電平的轉換。具體原理如下:當有金屬靠近傳感器的測量端時,傳感器的輸出引腳就會輸出9V的高電平,該引腳與光耦的二極管陽極間加了一個1K的限流電阻,其目的是保護發(fā)光二極管以免被燒壞。在光電三極管的集電極上接了一個4.7K的上拉電阻接到5V電源上。這時光耦的光

14、電三極管接收到光信號后導通,單片機的P3.5口就會檢測到低電平。反之當沒有金屬靠近時,金屬傳感器輸出低電平,發(fā)光二極管截止,光電三極管也截止,P3.5口檢測到高電平。最后單片機通過計數器來讀取下跳延的數量,也就是檢測到金屬的總數量。圖2.5 金屬檢測電路圖 計數器的顯示 本設計設計了一個功能按鍵,當功能按鍵按下一次的時候液晶顯示屏上只顯示螺絲計數器計數的螺絲個數和螺絲所處環(huán)境濕度值。當再次按下功能鍵的時候顯示的是螺絲打包的次數,本設計用繼電器動作一次和小燈閃爍一次來表示螺絲打包一次。本次設計是每十個螺絲打包一次繼電器動作一次,小燈閃爍一次當打包400個螺絲的時候蜂鳴器響20秒,表示一箱已經裝滿

15、。再按下一次多功能按鍵的時候顯示的就是計數的螺絲個數和濕度。(當螺絲所處環(huán)境的濕度達到50相對濕度,就會報警)2.3 濕度檢測電路2.3.1 DHT11濕度傳感器簡介DHT11是數字溫濕度傳感器系列中插針型的傳感器。此類型傳感器把傳感元件和信號處理集成起來,輸出全標定的數字信號。傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上與 14 位的模/數轉換器以及串行接口電路實現無縫連接。傳感器采用專利的CMOS技術,確保產品具有極高的長期穩(wěn)定性與可靠性。因此,該產品具有品質卓越、響應超快、抗干擾能力強、性價比極高等優(yōu)點。傳感器采用的是原裝進口數字溫濕度傳感器芯片,

16、引腳插針為標準2.54插針,使用時無需重新校準。傳感器直接與單片機相連,無需其他外部元件。總之,極低的功耗、極高的性價比、卓越的品質等優(yōu)點使本次設計在選擇溫濕度傳感器時的首選。DHT11的基本特性如下:(1)測濕范圍:0100%相對濕度;(2)測溫范圍:-40123.8;(3)響應時間:溫度:< 30s,濕度:<8s;(4)分辨率:溫度:0.01,濕度:0.03%相對濕度;(5)重復性:溫度:0.1  濕度:0.1%相對濕度;(6)測量精度:溫度:±0.5 濕度:±4.5%相對濕度;DHT11電氣參數如下表2.1所示:表2.1 DHT11電氣

17、參數參數條件mintypmax單位供電DC355.5V測量0.52.5mA平均0.21mA待機100150uA采樣周期秒1次2.3.2 傳感器的接口說明DHT11引腳結構如圖2.6所示。圖2.6 DHT11引腳圖DHT11的供電電壓為2.4-5.5V,建議供電電壓為3.3V。本次設計采用的是5V供電方式。引腳2為DATA,即數據輸出端口。DATA三態(tài)門用于數據的讀取。DATA在數據傳輸期間,在必須保持穩(wěn)定。為避免信號沖突,微處理器應驅動 DATA在低電平。需要一個外部的上拉電阻 (例如:4.7k)將信號提拉至高電平。引腳3為空腳。引腳4為接地引腳。2.3.3 傳感器的外圍硬件電路DHT11傳感

18、器的外圍連接電路如圖2.7所示,將電源VDD端口直接接到5V電源上,GND端口接地,數據端口DATA通過一個4.7K的上拉電阻接到5V電源上,然后接到單片機的P3.0口,單片機通過讀寫DATA端口的數據,測出實際的濕度值。圖2.7 DHT11電路連接圖2.4 LCD1602顯示模塊本設計顯示屏選用LCD1602。工業(yè)字符型液晶,1602是指顯示的內容為16*2,能同時顯示兩行,每行16個字符。它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊;該模塊具有體積小、功耗低、顯示內容豐富、超薄輕巧、價格低、控制簡單等優(yōu)點,在袖珍式儀表和低功耗系統(tǒng)中得到廣泛應用。常見的1602字符液晶有兩種,一種

19、顯示綠色背光黑色字體,另一種顯示藍色背光白色字體,目前市面上絕大多數基于HD44780液晶芯片控制,原理是完全相同的。2.4.1 LCD1602引腳功能介紹1腳:VSS為地電源。2腳:VDD接5V正電源。3腳:VL為液晶1602的對比度調整端,接正電源時對比度最弱,接地時對比度最強,在使用時可以通過一個10K的電位器與該引腳相連,通過調節(jié)電位器分壓來調整液晶的對比度。4腳:RS為數據和指令選擇,高電平時選擇為數據寄存器、低電平時則為指令寄存器。5腳:R/W為讀寫控制,高電平時選擇為讀控制,低電平時選擇為寫控制。6腳:EN端為使能控制端,當EN端在下降沿到來時,液晶模塊執(zhí)行相應的操作命令。714

20、腳:D0D7為8位雙向數據線。15腳:背光源正極。16腳:背光源負極2.4.2 LCD1602驅動電路設計LCD1602是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊,本設計利用它來顯示螺絲的數量和螺絲周圍環(huán)境的濕度值。電路如圖2.8所示,圖中通過調節(jié)電位器R1來調節(jié)液晶背光效果。圖2.8 LCD1602驅動電路2.5 聲光報警電路本設計是利用有源蜂鳴器和發(fā)光二極管組成聲光報警電路,由于51單片機驅動能力很小輸出電流不足以讓蜂鳴器發(fā)聲,所以我們加入了驅動電路,選擇NPN型三極管8050來作為驅動。具體電路如圖2.9所示,三極管的基級接了一個560R的限流電阻接到單片機的P3.6口上,集電

21、極與蜂鳴器負端連接,蜂鳴器的正端直接接到5V上,三極管的發(fā)射極直接接地。單片機控制P3.6輸出高電平時,蜂鳴器發(fā)聲。發(fā)光二極管經過一個1K的限流電阻與單片機的P3.7相連。當檢測到的環(huán)境濕度值不在設定的范圍內時,單片機會控制P3.6和P3.7同時輸出高電平,蜂鳴器和發(fā)光二極管就會工作,產生聲光報警作為提醒。圖2.9 聲光報警電路2.6 電源電路系統(tǒng)電源電路主要由9V的電池供電,經過穩(wěn)壓芯片LM7805穩(wěn)壓到5V給單片機和濕度傳感器等供電,在穩(wěn)壓芯片的輸入端加入了100uF的電解電容穩(wěn)壓,在輸出端加入了10uF的電解電容和0.1uF的陶瓷電容穩(wěn)壓濾波。而金屬傳感器直接由9V的電源供電。具體電路如

22、圖2.10所示。圖2.10 電源電路LED顯示3 螺絲計數器系統(tǒng)的軟件設計3.1 軟件系統(tǒng)總體工作流程開始LED顯示螺絲個數K和打包次數是否切換功能按鍵液晶顯示報警讀取DHT11獲取濕度數據開啟計數器系統(tǒng)總程序框圖如下圖3.1所示: 系統(tǒng)初始化 是否達到螺絲生銹濕度K=400? 結束圖3.1 系統(tǒng)總程序框圖系統(tǒng)開始之后,首先對系統(tǒng)進行初始化,初始化完成,開啟單片機計數器,記錄螺絲數;然后利用單片機對DHT11的返回的濕度數據進行讀取儲存,對功能按鍵是否按下進行判斷,按下液晶屏上將會顯示螺絲個數和打包個數,若螺絲個數達到四百則進行報警,反之則液晶屏顯示。若不切換功能按鍵則對濕度進行判斷,若濕度值

23、達到螺絲生銹上限,則單價控制蜂鳴器和發(fā)光二極管進行報警操作,最后單片機控制液晶對螺絲數進行顯示,依此循環(huán)。3.2 DHT11數據讀取方式及程序流程總線空閑狀態(tài)為高電平的時候主機把總線拉低等待DHT11響應, DHT11能檢測到起始信號,主機必須把總線拉低,至少大于18ms。DHT11一旦接收到主機的開始信號,接著就等待開始信號的結束,然后發(fā)送80us的低電平響應信號,要讀取DHT11的響應信號,必須等待開始信號的結束,并延時等待20-40us后才能夠接受,主機發(fā)送開始信號后,這時候就可輸出高電平或切換到輸入模式,接著總線由上拉電阻拉高。DHT11發(fā)送響應信號的時候總線為低電平,DHT11把總線

24、拉高80us之前,必須等到響應信號發(fā)送,準備發(fā)送數據時,每一bit數據都以50us低電平時隙開始,數據位是0或1是由高電平的長或短來決定。假如響應信號的讀取為高電平,但是DHT11無響應響應,這時候說明路線可能連接不正常,當最后一bit數據傳送結束后,DHT11把總線拉低50us,接著總線由上拉電阻拉高進入空閑狀態(tài)。程序流程如圖3.2所示。開始主機拉低延時18ms 總線上拉電阻拉低主機40usN從機是否響應信號 Y 從機發(fā)出80us低電平 從機發(fā)出80us高電平S 數據讀取數據校驗結束圖3.2 DHT11數據讀取程序流程圖3.3 數字濾波程序設計系統(tǒng)利用單片機采集DHT11返回的濕度數據,為提

25、高抗干擾能力,并是采用更加準確,我們需要使用單片機對采集的信號進行濾波處理;一般常見的濾波方式有倆種:均值濾波,中值濾波。均值濾波:均值濾波是將一組數據進行平均計算作為選用數據,這種方式適合數組極大的系統(tǒng),若數組較小,并且在數組中出現了一個偏差較大的數據,會造成數據不準確,但在我們得設計中,數組大會影響我們的采樣周期,所以該濾波方式是存在缺欠的。中值濾波:中值濾波是將一組數據按大小進行順序排列,將數據的中間值作為采集數據,這種方式可以有效的濾除數據中偏差較大的數據,但是對于系統(tǒng)數據小的波動是無法濾除的。這里我們選用的方法是將中值法和均值法想結合的方式來進行濾波,設計采集11組濕度數據,對這11

26、組濕度數據進行排列大小,然后取中間的7組,并對這7組濕度數據取平均值作為此次采樣的濕度數據。這種方式既能有效的將偏差較大的數據濾除,不進行均值,又可將數據中小的波動通過均值濾掉,所以,這種濾波方式較為理想。濾波程序流程圖如圖3.3所示:開始采集11組濕度數據對數據進行從大到小排列去中間7組數據進行平均值濾波結束圖3.3 濾波程序流程圖3.4 液晶顯示程序流程本次設計中,液晶LCD1602用來顯示系統(tǒng)的濕度和螺絲個數數據,LCD1602程序流程如圖3.4所示,單片機首先要初始化液晶,然后對液晶寫相應的地址,再寫想要顯示的數據在這個位置上。開始液晶初始化寫地址寫數據結束圖3.4 液晶顯示程序流程圖

27、參考文獻1 張鑫.單片機原理及應用(第2版)M. 電子工業(yè)出版社,2010年 .2 趙負圖.傳感器原理設計與應用M.化工工業(yè)出版社,2002.4.3 張毅剛. 單片機原理與應用設計M. 電子工業(yè)出版社,2008年.4閻石.數字電子技術基礎M.高等教育出版社,2008. 5高國琴. 微型計算機控制技術M. 機械工業(yè)出版社,2008.6譚浩強.C程序設計 M.清華大學出版社,2007.7金發(fā)慶.傳感器技術與應用M.北京:機械工業(yè)出版社,2006.8張培仁等. 基于C語言編程AT89C51單片機原理與應用M.清華大學出版社,200.9楊吉祥等編著.電子測量技術基礎 M.南京:東南大學出版社,2004

28、.附錄A 硬件原理圖圖A1 硬件原理圖附錄B 程序代碼#include <reg52.h>#define NUMBER 20 /防止在與硬件通信時發(fā)生死循環(huán)的計數范圍#define SIZE 5 #define OK 1 /設定標志(static unsigned char status)的宏值#define ERROR 0sbit dht11=P00; /請根據自己的dht11 接的IO 口來改動位定義#define uchar unsigned char#define uint unsigned intstatic uchar status;sbit lcden=P06;sbi

29、t lcdrs=P04;sbit rw=P05;sbit FMQ = P37;sbit LED = P17;sbit FMQ1 = P30;/sbit LED1 = P31;sbit key1 = P31;sbit jdq = P32;uchar ii=0,x=0,xx=0,xxx=0;static uchar value_arraySIZE;/存放五字節(jié)數據的數組/*可在其他的文件引用溫濕度 值,實際是溫度的整數的10 倍如dht11 讀回的溫度是26,則temp_value = 260, 濕度同理*/int temp_value, humi_value;int ls_sm=0,count;

30、static uchar ReadValue(void);void xian();void Delay_1ms(uint ms)uint x, y;for(x=ms;x>0;x-)for(y=124;y>0;y-);static void DHT11_Delay_10us(void)uchar i;i-;i-;i-;i-;i-;i-;static uchar DHT11_ReadValue(void) /*讀一個字節(jié)的數據*/uchar count, value=0, i;status=OK; /設定標志為正常狀態(tài)for(i=8;i>0;i-)/高位在先value<&l

31、t;=1;count=0;/每一位數據前會有一個50us 的低電平時間.等待50us 低電平結束while(dht11=0&&count+<NUMBER);if(count>=NUMBER)status=ERROR; /設定錯誤標志return 0; /函數執(zhí)行過程發(fā)生錯誤就退出函數/26-28us 的高電平表示該位是0,為70us 高電平表該位1DHT11_Delay_10us();DHT11_Delay_10us();DHT11_Delay_10us();/延時30us 后檢測數據線是否還是高電平if(dht11!=0)value+; /進入這里表示該位是1/等

32、待剩余(約40us)的高電平結束while(dht11!=0&&count+<NUMBER)dht11=1;if(count>=NUMBER)status=ERROR; /設定錯誤標志return 0;return (value);extern uchar DHT11_ReadTempAndHumi(void) /讀溫度和濕度函數,讀一次的數據,共五字節(jié),讀出成功函數返回OK, 錯誤返回ERRORuchar i=0,check_value=0,count=0;EA=0;dht11=0; /拉低數據線大于18ms 發(fā)送開始信號Delay_1ms(20); /需大于18

33、 毫秒dht11=1; /釋放數據線,用于檢測低電平的應答信號/延時20-40us,等待一段時間后檢測應答信號,應答信號是從機拉低數據線80usDHT11_Delay_10us();DHT11_Delay_10us();DHT11_Delay_10us();DHT11_Delay_10us();if(dht11!=0) /檢測應答信號,應答信號是低電平/沒應答信號EA=1; return ERROR;else /有應答信號while(dht11=0&&count+<NUMBER); /等待應答信號結束if(count>=NUMBER) /檢測計數器是否超過了設定的范

34、圍dht11=1;EA=1;return ERROR; /讀數據出錯,退出函數count=0;dht11=1;/釋放數據線/應答信號后會有一個80us 的高電平,等待高電平結束while(dht11!=0&&count+<NUMBER);if(count>=NUMBER)dht11=1;EA=1;return ERROR; /退出函數/讀出濕.溫度值for(i=0;i<SIZE;i+)value_arrayi=DHT11_ReadValue();if(status=ERROR) /調用ReadValue()讀數據出錯會設定status 為ERRORdht11=

35、1;EA=1;return ERROR;/讀出的最后一個值是校驗值不需加上去if(i!=SIZE-1)/讀出的五字節(jié)數據中的前四字節(jié)數據和等于第五字節(jié)數據表示成功check_value+=value_arrayi;/end for/在沒用發(fā)生函數調用失敗時進行校驗if(check_value=value_arraySIZE-1)/將溫濕度擴大10 倍方便分離出每一位humi_value=value_array0*10;temp_value=value_array2*10;dht11=1;EA=1;return OK; /正確的讀出dht11 輸出的數據else/校驗數據出錯EA=1;retur

36、n ERROR;void write_com(uchar com)lcdrs=0;P2=com;Delay_1ms(2);lcden=1;Delay_1ms(2);lcden=0;void write_data(uchar date)lcdrs=1;P2=date;Delay_1ms(2);lcden=1;Delay_1ms(2);lcden=0;void init()rw=0;write_com(0x38);write_com(0x0c);write_com(0x06); write_com(0x01);void xianshi()write_com(0x80+0x40+3);write_d

37、ata('X');write_data('D');write_data('S');write_data('D');write_data(':');write_data(0x30+humi_value/1000);write_data(0x30+humi_value%1000/100);write_data(0x30+humi_value%100/10);write_data('%');void xianmiao()write_com(0x80+0x40+3);write_data('m

38、9;);write_data('i');write_data('a');write_data('o');write_data(':');write_data(0x30+(count/20+1)/10);write_data(0x30+(count/20+1)%10);write_data('s');void xian()write_com(0x80+0x40+3);write_data('D');write_data('B');write_data('S');write_data('L');write_data(':');write_dat

溫馨提示

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

評論

0/150

提交評論