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

下載本文檔

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

文檔簡介

Ⅰ****畢業設計題目:基于單片機的螺絲計數器的設計院系:信息工程系專業:測控技術與儀器班級學號:11*****學生姓名:***指導教師:成績:年月日I目錄1方案設計 11.1設計方案要求 11.2硬件方案設計 11.2.1MCU模塊的選擇 11.2.2濕度傳感器的選擇 11.2.3顯示模塊方案 21.2.4電源模塊方案 21.2.5電源模塊方案系統總體設計思路 31.3編程語言與調試環境選擇 32螺絲計數器的硬件設計 52.1最小系統設計 52.1.1系統復位電路 52.1.2系統時鐘電路 52.1.3單片機最小系統電路圖 62.2金屬探測電路 62.2.1霍爾傳感器NJK簡介 62.2.2金屬檢測電路設計 72.2.3計數器的顯示 82.3濕度檢測電路 82.3.1DHT11濕度傳感器簡介 82.3.2傳感器的接口說明 92.3.3傳感器的外圍硬件電路 102.4LCD1602顯示模塊 102.4.1LCD1602引腳功能介紹 102.4.2LCD1602驅動電路設計 112.5聲光報警電路 112.6電源電路 123螺絲計數器系統的軟件設計 133.1軟件系統總體工作流程 133.2DHT11數據讀取方式及程序流程 143.3數字濾波程序設計 153.4液晶顯示程序流程 16附錄A硬件原理圖 18附錄B程序代碼 19附錄C實物圖片 31****畢業設計PAGE27****畢業設計PAGE01方案設計1.1設計方案要求(1)寫成利用螺絲靠近到霍爾傳感器可以檢測到的距離進行金屬檢測,并且通過單片機進行計數;(2)利用濕度傳感器檢測螺絲所處環境的濕度值;(3)在達到單片機內部設計的濕度上限時,進行聲光報警;(4)利用protel99se繪制系統電路的原理圖;(5)利用MicrosoftOfficeVisio軟件繪制系統框圖和程序流程圖。1.2硬件方案設計1.2.1MCU模塊的選擇方案一:采用AVR內核的ATmega16單片機,ATmega16單片機為8位單片機,其功能更加強大,內部集成A/D、PWM,串行通信等,但ATmega16單片機價格較高,編程較復雜。方案二:采用AT89S52單片機為控制核心和數據處理中心,AT89S52單片機成本較低,編程較容易,更容易控制好。綜上比較,本設計不需要進行A/D轉換等,AT89S52單片機完全可以實現,并且從AT89S52單片機成本較低、編程的較容易,所以本設計應該選擇AT89S52單片機作為系統的控制核心。1.2.2濕度傳感器的選擇方案一:測量濕度選用HS1101是電容式濕度傳感器,輸出是模擬量,需要配以復雜的外圍電路將模擬量轉化為數字量,利用單片機計數脈沖總數再根據相應的公式轉換成真實的濕度值,這種測量方法誤差較大精度較低,在要求不嚴格的環境下可以使用。方案二:選用DHT11作為設計的溫濕度檢測模塊。DHT11是一款集成型的數字溫濕度一體傳感器。它應用溫濕度傳感的基本原理和專用的數字模塊采集技術,確保產品對濕度采集具有高的穩定性與可靠性。DHT11是由一個NTC測溫元件和一個電阻式感濕元件組成的,輸出數字信號,可直接于單片機相連接,進行讀取濕度數據。因此該產品具有性能穩定、響應迅速、并具有較強的抗干擾能力和性價比極高等優點。傳感器的測量范圍是相對濕度在20%~90%的范圍內,溫度在0℃~50℃之間。測溫精度為±2℃,測濕精度為±5%相對濕度。綜上所述,從檢測的精度考慮,方案二可以利用單片機直接讀取濕度值不需要經過轉換,精度較方案一高,故本設計選擇方案二。1.2.3顯示模塊方案方案一:采用帶有中文字庫的LCD12864液晶模塊來顯示接收到的數據。LCD12864是一款比較實用的液晶顯示屏,能夠顯示較多常用的簡體漢字或繁體漢字及ASCII碼,而且能夠通過取模軟件,進行編程繪制圖片,描點畫線等,但成本太高,使用時該模塊的讀寫時序不好控制。方案二:采用帶有字符液晶LCD1602模塊來顯示接收到的數據信息,LCD1602也是一種經常被人們使用的字符液晶模塊,可以顯示各種符號或者數字等信息,并且價格較為適中,在編寫顯示程序時,它的讀寫時序也不太容易控制。方案三:采用LED8段共陽數碼顯示管顯示數據,其價格較便宜,外圍驅動電路較簡單,并且容易編寫顯示程序,但它的缺點是不能顯示符號或者漢字等,只能顯示數字。綜合經濟和顯示的效果兩方面考慮,本設計選擇方案二,即利用LCD1602來顯示環境的濕度值和螺絲的數量。1.2.4電源模塊方案方案一:采用12V電源適配器提供12V電壓,并通過穩壓芯片LM7805,給系統的各個模塊電路供電。該電源適配器必須接220V交流電,才能正常工作,在使用時,受到場地的限制,不方便。方案二:采用9V電池,然后經穩壓芯片LM7805進行穩壓,濾波后給系統的各個模塊供電,其價格較便宜,使用簡單方便,缺點是輸出電流較小,并且電量有限。方案三:采用22:1的變壓器將220V降壓到10V,然后經整流橋整流,電容濾波,穩壓芯片穩壓,給系統的各個模塊供電。其價格較為便宜,但是外圍電路比較復雜。綜合所述,從便攜和經濟兩個方面考慮,電池具有明顯優勢,故本設計選擇方案二。1.2.5電源模塊方案系統總體設計思路系統電路主要由AT89S52單片機最小系統電路,金屬檢測電路,PC817光電隔離電路,濕度檢測電路,LCD顯示電路,聲光報警電路以及電源電路組成。具體框圖如圖1.1所示。金屬檢測電路LCD顯示電路AT89S52單片機最小系統金屬檢測電路LCD顯示電路AT89S52單片機最小系統PC817光電隔離電路PC817光電隔離電路聲光報警電路聲光報警電路濕度檢測電路濕度檢測電路電源電路電源電路圖1.1系統的總體設計框圖系統以AT89S52單片機作為系統的主控核心,通過單片機計數器讀取和記錄金屬傳感器的電路輸出的信號。并利用單片機對濕度傳感器返回的數據進行讀取,來檢測螺絲周圍環境的濕度,并與設定的濕度進行比較,如果濕度不在設定的濕度值范圍之內,單片機控制蜂鳴器和發光二極管進行聲光報警。最后通過單片機控制LCD液晶顯示屏顯示出濕度值和螺絲的數量。1.3編程語言與調試環境選擇本設計編程語言選擇c語言。C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它具有良好的可讀性、易維護性、可移植性和硬件操作能力,并且簡單易懂,容易學習及理解。本設計調試環境選擇keil軟件。KeilC51軟件提供豐富的庫函數和功能強大的集成開發調試工具,它生產代碼的效率極高,多數語句生成的匯編代碼很緊湊,容易理解。2螺絲計數器的硬件設計2.1最小系統設計2.1.1系統復位電路當MCS-5l系列單片機的RST復位引腳,持續2個或者2個以上的機器周期高電平時,MCS-5l單片機完成穩定的系統復位。根據系統應用時的不同要求,復位電路又分為上電復位和手動復位兩種形式,圖2.1即為本系統的復位電路。圖2.1復位電路圖圖2.1中,既能實現上電復位又可以實現手動復位,當系統上電一瞬間,電容相當于短路,即REST復位端口,直接加到+5V的高電平上,所有可以實現上電復位。當系統正常運行后,在需要復位的時候,按下開關,即將電容短路,同樣可以實現手動復位。2.1.2系統時鐘電路MCS-51單片機應用時,我們常用石英晶體接電容組成系統時鐘電路,如果系統需要使用串口通訊,為了滿足波特率沒有誤差,我們經常使用11.0592MHZ的石英晶體。如果系統需要使用定時器,為了滿足定時器定時沒有誤差,我們通常會選擇12MHZ的石英晶體。不管石英晶體選擇是11.0592MHZ,還是12MHZ,通常使用的匹配電容都是30pf的。本次設計選用的是12M的石英晶體,具體時鐘電路如圖2.2所示。圖2.2時鐘電路圖2.1.3單片機最小系統電路圖單片機最小系統電路圖如圖2.3所示,由時鐘電路,復位電路和AT89S52控制芯片組成。圖2.3最小系統電路圖2.2金屬探測電路2.2.1霍爾傳感器NJK簡介NJK系列霍爾傳感器是由電壓調整器,霍爾電壓發生器,差分放大器,施密特觸發器和集電極開路的輸出極組成的磁敏傳感器,實物圖如圖2.4所示。其輸入為磁感應強度、輸出是一個數字電壓訊號。它有以下幾個特點:(1)

電源電壓范圍寬(DC6V-DC36V);(2)

頻率高;(3)

壽命長,體積小,安裝方便;(4)

能直接和晶體管及TTL,CMOS等邏輯電路連接。圖2.4金屬傳感器實物圖該傳感器分為兩類,分別是NPN類和PNP類。NPN是指當有信號觸發時,信號輸出線OUT和GND連接,相當于OUT輸出低電平。PNP是指當有信號觸發時,信號輸出線OUT和VCC連接,相當于OUT輸出高電平的電源線。本次設計選擇的是PNP類型。2.2.2金屬檢測電路設計金屬檢測電路如圖2.5所示,主要由金屬傳感器LJ18A和光電耦合器PC817組成。由于金屬傳感器供電電壓范圍的限制,設計選擇直接將9V的電池電壓加到傳感器的VCC上。這樣傳感器的輸出電壓也就是9V,如果直接將此電壓接到單片機的I/O上,而單片機I/O能承受的最大電壓為5V,這樣就很容易燒壞單片機。所以在電路設計中,選擇光電耦合器PC817來實現電平的轉換。具體原理如下:當有金屬靠近傳感器的測量端時,傳感器的輸出引腳就會輸出9V的高電平,該引腳與光耦的二極管陽極間加了一個1K的限流電阻,其目的是保護發光二極管以免被燒壞。在光電三極管的集電極上接了一個4.7K的上拉電阻接到5V電源上。這時光耦的光電三極管接收到光信號后導通,單片機的P3.5口就會檢測到低電平。反之當沒有金屬靠近時,金屬傳感器輸出低電平,發光二極管截止,光電三極管也截止,P3.5口檢測到高電平。最后單片機通過計數器來讀取下跳延的數量,也就是檢測到金屬的總數量。圖2.5金屬檢測電路圖2.2.3計數器的顯示本設計設計了一個功能按鍵,當功能按鍵按下一次的時候液晶顯示屏上只顯示螺絲計數器計數的螺絲個數和螺絲所處環境濕度值。當再次按下功能鍵的時候顯示的是螺絲打包的次數,本設計用繼電器動作一次和小燈閃爍一次來表示螺絲打包一次。本次設計是每十個螺絲打包一次繼電器動作一次,小燈閃爍一次當打包400個螺絲的時候蜂鳴器響20秒,表示一箱已經裝滿。再按下一次多功能按鍵的時候顯示的就是計數的螺絲個數和濕度。(當螺絲所處環境的濕度達到50相對濕度,就會報警)2.3濕度檢測電路2.3.1DHT11濕度傳感器簡介DHT11是數字溫濕度傳感器系列中插針型的傳感器。此類型傳感器把傳感元件和信號處理集成起來,輸出全標定的數字信號。傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上與14位的模/數轉換器以及串行接口電路實現無縫連接。傳感器采用專利的CMOS技術,確保產品具有極高的長期穩定性與可靠性。因此,該產品具有品質卓越、響應超快、抗干擾能力強、性價比極高等優點。傳感器采用的是原裝進口數字溫濕度傳感器芯片,引腳插針為標準2.54插針,使用時無需重新校準。傳感器直接與單片機相連,無需其他外部元件。總之,極低的功耗、極高的性價比、卓越的品質等優點使本次設計在選擇溫濕度傳感器時的首選。DHT11的基本特性如下:(1)測濕范圍:0~100%相對濕度;(2)測溫范圍:-40~123.8℃;(3)響應時間:溫度:<

30s,濕度:<8s;(4)分辨率:溫度:0.01℃,濕度:0.03%相對濕度;(5)重復性:溫度:0.1℃

濕度:0.1%相對濕度;(6)測量精度:溫度:±0.5℃濕度:±4.5%相對濕度;DHT11電氣參數如下表2.1所示:表2.1DHT11電氣參數參數條件mintypmax單位供電DC355.5V測量0.52.5mA平均0.21mA待機100150uA采樣周期秒1次2.3.2傳感器的接口說明DHT11引腳結構如圖2.6所示。圖2.6DHT11引腳圖DHT11的供電電壓為2.4-5.5V,建議供電電壓為3.3V。本次設計采用的是5V供電方式。引腳2為DATA,即數據輸出端口。DATA三態門用于數據的讀取。DATA在數據傳輸期間,在必須保持穩定。為避免信號沖突,微處理器應驅動DATA在低電平。需要一個外部的上拉電阻(例如:4.7kΩ)將信號提拉至高電平。引腳3為空腳。引腳4為接地引腳。2.3.3傳感器的外圍硬件電路DHT11傳感器的外圍連接電路如圖2.7所示,將電源VDD端口直接接到5V電源上,GND端口接地,數據端口DATA通過一個4.7K的上拉電阻接到5V電源上,然后接到單片機的P3.0口,單片機通過讀寫DATA端口的數據,測出實際的濕度值。圖2.7DHT11電路連接圖2.4LCD1602顯示模塊本設計顯示屏選用LCD1602。工業字符型液晶,1602是指顯示的內容為16*2,能同時顯示兩行,每行16個字符。它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊;該模塊具有體積小、功耗低、顯示內容豐富、超薄輕巧、價格低、控制簡單等優點,在袖珍式儀表和低功耗系統中得到廣泛應用。常見的1602字符液晶有兩種,一種顯示綠色背光黑色字體,另一種顯示藍色背光白色字體,目前市面上絕大多數基于HD44780液晶芯片控制,原理是完全相同的。2.4.1LCD1602引腳功能介紹1腳:VSS為地電源。2腳:VDD接5V正電源。3腳:VL為液晶1602的對比度調整端,接正電源時對比度最弱,接地時對比度最強,在使用時可以通過一個10K的電位器與該引腳相連,通過調節電位器分壓來調整液晶的對比度。4腳:RS為數據和指令選擇,高電平時選擇為數據寄存器、低電平時則為指令寄存器。5腳:R/W為讀寫控制,高電平時選擇為讀控制,低電平時選擇為寫控制。6腳:EN端為使能控制端,當EN端在下降沿到來時,液晶模塊執行相應的操作命令。7~14腳:D0~D7為8位雙向數據線。15腳:背光源正極。16腳:背光源負極2.4.2LCD1602驅動電路設計LCD1602是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊,本設計利用它來顯示螺絲的數量和螺絲周圍環境的濕度值。電路如圖2.8所示,圖中通過調節電位器R1來調節液晶背光效果。圖2.8LCD1602驅動電路2.5聲光報警電路本設計是利用有源蜂鳴器和發光二極管組成聲光報警電路,由于51單片機驅動能力很小輸出電流不足以讓蜂鳴器發聲,所以我們加入了驅動電路,選擇NPN型三極管8050來作為驅動。具體電路如圖2.9所示,三極管的基級接了一個560R的限流電阻接到單片機的P3.6口上,集電極與蜂鳴器負端連接,蜂鳴器的正端直接接到5V上,三極管的發射極直接接地。單片機控制P3.6輸出高電平時,蜂鳴器發聲。發光二極管經過一個1K的限流電阻與單片機的P3.7相連。當檢測到的環境濕度值不在設定的范圍內時,單片機會控制P3.6和P3.7同時輸出高電平,蜂鳴器和發光二極管就會工作,產生聲光報警作為提醒。圖2.9聲光報警電路2.6電源電路系統電源電路主要由9V的電池供電,經過穩壓芯片LM7805穩壓到5V給單片機和濕度傳感器等供電,在穩壓芯片的輸入端加入了100uF的電解電容穩壓,在輸出端加入了10uF的電解電容和0.1uF的陶瓷電容穩壓濾波。而金屬傳感器直接由9V的電源供電。具體電路如圖2.10所示。圖2.10電源電路LED顯示3螺絲計數器系統的軟件設計LED顯示3.1軟件系統總體工作流程開始LED顯示螺絲個數K和打包次數是否切換功能按鍵液晶顯示報警讀取DHT11獲取濕度數據開啟計數器系統總程序框圖如下圖3.1所示:開始LED顯示螺絲個數K和打包次數是否切換功能按鍵液晶顯示報警讀取DHT11獲取濕度數據開啟計數器系統初始化系統初始化是否達到螺絲生銹濕度K==400???是否達到螺絲生銹濕度K==400???結束結束圖3.1系統總程序框圖系統開始之后,首先對系統進行初始化,初始化完成,開啟單片機計數器,記錄螺絲數;然后利用單片機對DHT11的返回的濕度數據進行讀取儲存,對功能按鍵是否按下進行判斷,按下液晶屏上將會顯示螺絲個數和打包個數,若螺絲個數達到四百則進行報警,反之則液晶屏顯示。若不切換功能按鍵則對濕度進行判斷,若濕度值達到螺絲生銹上限,則單價控制蜂鳴器和發光二極管進行報警操作,最后單片機控制液晶對螺絲數進行顯示,依此循環。3.2DHT11數據讀取方式及程序流程總線空閑狀態為高電平的時候主機把總線拉低等待DHT11響應,DHT11能檢測到起始信號,主機必須把總線拉低,至少大于18ms。DHT11一旦接收到主機的開始信號,接著就等待開始信號的結束,然后發送80us的低電平響應信號,要讀取DHT11的響應信號,必須等待開始信號的結束,并延時等待20-40us后才能夠接受,主機發送開始信號后,這時候就可輸出高電平或切換到輸入模式,接著總線由上拉電阻拉高。DHT11發送響應信號的時候總線為低電平,DHT11把總線拉高80us之前,必須等到響應信號發送,準備發送數據時,每一bit數據都以50us低電平時隙開始,數據位是0或1是由高電平的長或短來決定。假如響應信號的讀取為高電平,但是DHT11無響應響應,這時候說明路線可能連接不正常,當最后一bit數據傳送結束后,DHT11把總線拉低50us,接著總線由上拉電阻拉高進入空閑狀態。程序流程如圖3.2所示。開始開始主機拉低延時18ms主機拉低延時18ms總線上拉電阻拉低主機總線上拉電阻拉低主機40usN從機是否響應信號從機是否響應信號Y從機發出80us低電平 從機發出80us低電平從機發出80us高電平S從機發出80us高電平數據讀取數據讀取數據校驗數據校驗結束結束圖3.2DHT11數據讀取程序流程圖3.3數字濾波程序設計系統利用單片機采集DHT11返回的濕度數據,為提高抗干擾能力,并是采用更加準確,我們需要使用單片機對采集的信號進行濾波處理;一般常見的濾波方式有倆種:均值濾波,中值濾波。均值濾波:均值濾波是將一組數據進行平均計算作為選用數據,這種方式適合數組極大的系統,若數組較小,并且在數組中出現了一個偏差較大的數據,會造成數據不準確,但在我們得設計中,數組大會影響我們的采樣周期,所以該濾波方式是存在缺欠的。中值濾波:中值濾波是將一組數據按大小進行順序排列,將數據的中間值作為采集數據,這種方式可以有效的濾除數據中偏差較大的數據,但是對于系統數據小的波動是無法濾除的。這里我們選用的方法是將中值法和均值法想結合的方式來進行濾波,設計采集11組濕度數據,對這11組濕度數據進行排列大小,然后取中間的7組,并對這7組濕度數據取平均值作為此次采樣的濕度數據。這種方式既能有效的將偏差較大的數據濾除,不進行均值,又可將數據中小的波動通過均值濾掉,所以,這種濾波方式較為理想。濾波程序流程圖如圖3.3所示:開始開始采集11組濕度數據采集11組濕度數據對數據進行從大到小排列對數據進行從大到小排列去中間7組數據進行平均值濾波去中間7組數據進行平均值濾波結束結束圖3.3濾波程序流程圖3.4液晶顯示程序流程本次設計中,液晶LCD1602用來顯示系統的濕度和螺絲個數數據,LCD1602程序流程如圖3.4所示,單片機首先要初始化液晶,然后對液晶寫相應的地址,再寫想要顯示的數據在這個位置上。開始開始液晶初始化液晶初始化寫地址寫地址寫數據寫數據結束結束圖3.4液晶顯示程序流程圖參考文獻[1]張鑫.單片機原理及應用(第2版)[M].電子工業出版社,2010年.[2]趙負圖.傳感器原理設計與應用[M].化工工業出版社,2002.4.[3]張毅剛.單片機原理與應用設計[M].電子工業出版社,2008年.[4]閻石.數字電子技術基礎[M].高等教育出版社,2008.[5]高國琴.微型計算機控制技術[M].機械工業出版社,2008.[6]譚浩強.C程序設計[M].清華大學出版社,2007.[7]金發慶.傳感器技術與應用[M].北京:機械工業出版社,2006.[8]張培仁等.基于C語言編程AT89C51單片機原理與應用[M].清華大學出版社,200.[9]楊吉祥等編著.電子測量技術基礎[M].南京:東南大學出版社,2004.附錄A硬件原理圖圖A1硬件原理圖附錄B程序代碼#include<reg52.h>#defineNUMBER20//防止在與硬件通信時發生死循環的計數范圍#defineSIZE5#defineOK1//設定標志(staticunsignedcharstatus)的宏值#defineERROR0sbitdht11=P0^0;//請根據自己的dht11接的IO口來改動位定義#defineucharunsignedchar#defineuintunsignedintstaticucharstatus;sbitlcden=P0^6;sbitlcdrs=P0^4;sbitrw=P0^5;sbitFMQ=P3^7;sbitLED=P1^7;sbitFMQ1=P3^0;//sbitLED1=P3^1;sbitkey1=P3^1;sbitjdq=P3^2;ucharii=0,x=0,xx=0,xxx=0;staticucharvalue_array[SIZE];//存放五字節數據的數組/*可在其他的文件引用溫濕度值,實際是溫度的整數的10倍如dht11讀回的溫度是26,則temp_value=260,濕度同理*/inttemp_value,humi_value;intls_sm=0,count;staticucharReadValue(void);voidxian();voidDelay_1ms(uintms){ uintx,y; for(x=ms;x>0;x--) { for(y=124;y>0;y--); }}staticvoidDHT11_Delay_10us(void){ uchari; i--; i--; i--; i--; i--; i--;}staticucharDHT11_ReadValue(void)/*讀一個字節的數據*/{ ucharcount,value=0,i; status=OK;//設定標志為正常狀態 for(i=8;i>0;i--) { //高位在先 value<<=1; count=0; //每一位數據前會有一個50us的低電平時間.等待50us低電平結束 while(dht11==0&&count++<NUMBER); if(count>=NUMBER) { status=ERROR;//設定錯誤標志 return0;//函數執行過程發生錯誤就退出函數 }//26-28us的高電平表示該位是0,為70us高電平表該位1 DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us(); //延時30us后檢測數據線是否還是高電平 if(dht11!=0) { value++; //進入這里表示該位是1 //等待剩余(約40us)的高電平結束 while(dht11!=0&&count++<NUMBER) { dht11=1; } if(count>=NUMBER) { status=ERROR;//設定錯誤標志 return0; } } } return(value);}externucharDHT11_ReadTempAndHumi(void)//讀溫度和濕度函數,讀一次的數據,共五字節,讀出成功函數返回OK,錯誤返回ERROR{ uchari=0,check_value=0,count=0; EA=0; dht11=0;//拉低數據線大于18ms發送開始信號 Delay_1ms(20);//需大于18毫秒 dht11=1;//釋放數據線,用于檢測低電平的應答信號 //延時20-40us,等待一段時間后檢測應答信號,應答信號是從機拉低數據線80us DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us(); DHT11_Delay_10us(); if(dht11!=0)//檢測應答信號,應答信號是低電平 { //沒應答信號 EA=1; returnERROR; } else { //有應答信號 while(dht11==0&&count++<NUMBER);//等待應答信號結束 if(count>=NUMBER)//檢測計數器是否超過了設定的范圍 { dht11=1; EA=1; returnERROR;//讀數據出錯,退出函數 } count=0; dht11=1;//釋放數據線 //應答信號后會有一個80us的高電平,等待高電平結束 while(dht11!=0&&count++<NUMBER); if(count>=NUMBER) { dht11=1; EA=1; returnERROR;//退出函數 } //讀出濕.溫度值 for(i=0;i<SIZE;i++) { value_array[i]=DHT11_ReadValue(); if(status==ERROR)//調用ReadValue()讀數據出錯會設定status為ERROR { dht11=1; EA=1; returnERROR; } //讀出的最后一個值是校驗值不需加上去 if(i!=SIZE-1) { //讀出的五字節數據中的前四字節數據和等于第五字節數據表示成功 check_value+=value_array[i]; } }//endfor //在沒用發生函數調用失敗時進行校驗 if(check_value==value_array[SIZE-1])//將溫濕度擴大10倍方便分離出每一位 { humi_value=value_array[0]*10; temp_value=value_array[2]*10; dht11=1; EA=1; returnOK;//正確的讀出dht11輸出的數據 } else { //校驗數據出錯 EA=1; returnERROR; } }}voidwrite_com(ucharcom){ lcdrs=0; P2=com; Delay_1ms(2); lcden=1; Delay_1ms(2); lcden=0;}voidwrite_data(uchardate){ lcdrs=1; P2=date; Delay_1ms(2); lcden=1; Delay_1ms(2); lcden=0;}voidinit(){ rw=0; write_com(0x38); write_com(0x0c); write_com(0x06);write_com(0x01);}voidxianshi(){ write_com(0x80+0x40+3); write_data('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('%'); }voidxianmiao(){ write_com(0x80+0x40+3); write_data('m'); 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'); }voidxian(){ write_com(0x80+0x40+3); write_data('D'); write_data('B'); write_data('S'); write_data('L'); write_data(':'); write_data(0x30+ls_sm/1000); write_data(0x30+ls_sm%1000/100); write_data(0x30+ls_sm%100/10); write_com(0x

溫馨提示

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

評論

0/150

提交評論