李明明,代紹慶,朱海鋒,吳榮森
(嘉興職業技術學院,浙江 嘉興 314000)
基于AT89C51單片機的溫濕度測試系統設計與仿真
李明明,代紹慶,朱海鋒,吳榮森
(嘉興職業技術學院,浙江 嘉興 314000)
基于AT89C51單片機和SHT11芯片為溫濕度傳感器的溫濕度測試系統,以實時存儲相關溫濕度數據。測試系統的硬件設計包括基礎電路、按鍵電路、顯示電路和溫濕度控制電路;測試系統的軟件設計包括按鍵控制、溫濕度讀取、溫濕度計算、數據存儲等。
AT89C51單片機;SHT11;顯示電路
單片機的使用變得更加便捷,具有低電壓、低功耗、控制功能強、環境適應能力強等特點。隨著單片機技術在智能產品中的廣泛應用,航空事業、醫藥方面、家居產品的智能化管理及過程控制等領域均涉及單片機應用產品[1]。溫度檢測與控制是微機測控的重要學科也是測控技術中的研究重點[2-5]。大多數電子設備對溫度濕度尤為敏感,不良溫濕度環境會導致設備出錯甚至損壞。因此,溫濕度測試是實現工業生產提供安全保障的基礎[6-7]。
AT89C51含有4K字節FLASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory),是一種具有高性能CMOS、低電壓的8位微處理器的單片機。在嵌入式控制系統中提供了靈活性高且價廉的多種方案[8]。
為了有效利用AT89C51單片機完成溫濕度測試系統設計,引入SHT11芯片。SHT11芯片是一種具有數字校準功能的復合型溫濕度傳感器[7-8],它采用傳統工業COMS微加工技術,因而產品應用性上具有極高的可靠性和卓越的長期穩定性,但是SHT11芯片在實際應用中對環境有著極高的要求。當前SHT11主要應用于工業生產、過程控制、環境監測、家用電器、氣象領域[9]。
如何設計一款成本低廉、測量準確、操作簡單的溫濕度測試系統成為一個重要問題。整個系統以AT89C52為核心,溫濕度傳感器SHT11完成環境溫濕度轉換功能,其輸出為數字形式,可以直接對單片機進行處理;利用簡單的三鍵測試鍵盤聯合中斷方式處理測試過程,一定程度上減少了占用CPU的時間。綜合而言,其成本小、操作方便、結構簡單,滿足工業生產需要。
分析溫濕度監測系統在實驗室環境與現實應用中的區別,系統設計側重于實驗室環境下溫濕度測試系統的設計。通過單片機與外部設備之間的命令發出與回收,以SHT11溫濕度傳感器采集溫濕度信息,利用軟件對溫濕度信號進行分析處理、解決相應問題。具體電路結構如圖1所示,常用的晶振電路、復位電路和AT89C51單片機中,增加了溫濕度傳感器、按鍵電路、顯示電路、工作狀態指示系統等。
圖2為硬件電路原理圖,通過P0端口增加上拉電阻以防止短路,并與LM016L相接,用于顯示溫濕度狀況;溫濕度傳感器通過與P2端口的P2.1、P2.2引腳相連,實現了溫濕度測試結果的輸入和輸出;按鍵電路與P1端口的P1.4-P1.7相連,用以修改溫濕度。
1.1 SHT11芯片與接口
SHT11的內部結構如圖3所示,其中包括一個高分子電阻型濕敏元件和一個 NTC測溫元件、一個14位的A/D轉換器,并與一個高性能8位單片機相連接并能夠CRC傳輸校驗。其具有品質好、超快響應、抗干擾能力強、性價比高、精確校準等優點。

圖2 基本電路設計

圖3 SHT11內部結構
1.2 其它硬件系統說明
LM016L液晶顯示芯片作為LCD液晶顯示系統中使用率最高的顯示芯片,其特點主要集中在低功耗、體積小、數字式顯示等方面。其中,最為常用的1602LCD選擇2行*16字的顯示格式。LM016L液晶顯示器的電路結構如圖4所示。引腳接口包括8個數據位、RS、RW、E信號引腳。

圖4 LM016L元件電路原理
按鍵模塊主要用于修改溫濕度初始值或者出現溫濕度數據有誤時作修改用。按鍵電路無法避免去抖工作,一般采用軟件去抖,即按鍵按下時對應低電平,執行延時程序若干毫秒后,確認該按鍵是否還是低電平,如果仍為低電平,可以確定按鍵被按下。當按鍵松開時,行線的低電平為高電平,執行一段延時程序后,仍為高電平時,說明按鍵已經松開。
2.1 應用程序模塊整體設計
針對51單片機應用C語言程序設計方法以實現系統各項功能。系統程序流程如圖5所示。
2.2 溫濕度讀取子程序
讀取溫濕度子程序的主要功能包括SHT11的初始化,判斷SHT11是否存在。如果SHT11存在,執行ROM操作命令、存儲操作命令、讀取溫濕度。否則返回,其程序流程如圖6所示。
2.3 溫濕度處理
溫濕度讀取轉換過程中,存在溫濕度計算方法的處理,其中ROM操作命令主要為存儲操作,RAM操作命令為溫濕度轉換中數據的存儲。RAM中的BCD碼需轉換運算才能被讀取,而溫濕度計算子程序正是顯示此功能,并進行溫濕度值正負判定,其程序流程如圖7所示。

圖5 系統程序流程

圖6 讀溫濕度流程

圖7 計算溫濕度子程序
系統設計基于Keil5.0、Proteus7.8軟件分別完成軟件、硬件設計。其中關鍵的一步是系統調試,在硬件電路設計和程序設計過程中存在多次調試,最終的溫濕度測試系統也需要經過多次調試。
3.1 硬件電路調試
硬件電路設計中往往存在很多失誤點,導致硬件電路無法仿真成功。以下幾點為系統調試易錯點:①檢測焊接板是否存在復位引腳虛焊,如果存在虛焊,在引腳非復位狀態時其電壓仍然為高電平,解決方法是重新焊接焊點再仔細檢測是否還有錯誤;②溫濕度測試電路調試,在調試溫濕度測試電路時,由于測試比較復雜,所以采用先用面板上進行插接,通過給一個高電平到測試電路輸入,看它是否能夠驅動狀態顯示電路。在面板上調試成功后再焊接到電路板上。
3.2 系統軟件調試
系統設計過程包括需求分析設計、系統源程序編寫、系統仿真程序燒錄等。重復測試、操作過程必不可少。具體軟件調試步驟如下:
(1)溫濕度傳感器不能正常測量溫濕度。原因:使用SHT11數字式溫濕度傳感器時,需要嚴格遵守時序方法。解決方法:重新分析時序關系。
(2)模塊化程序設計,分布式調試程序結果。包括溫濕度采集、讀取、轉換、計算等功能,繼而完成總體調試。
(3)設置程序斷點,給予模塊中變量賦值,檢查運算結果,核對輸出結果的正確性。系統核心代碼如下:
void calcHumi(void)
{ float aa=0, bb=0, humi_zi;
aa=(float)temp_H*256+(float)temp_L;
bb=aa*aa*2.8/1000000;
aa=0.0405*aa;
aa=aa-8-bb;
humi_zi=aa;
humi_zi=humi_zi*10;
Humi=(int)humi_zi;
// 濕度分段補償
if(Humi >= 150 && Humi <= 700)
Humi = Humi +10;
else if(Humi > 700 && Humi <= 840)
Humi = Humi + 20;
else if(Humi >= 840 && Humi <= 930)
Humi = Humi + 30;
else if(Humi > 930)
Humi = Humi + 40
;}
基于AT89C51單片機和SHT11溫濕度傳感器設計溫濕度測試系統,硬件結構主要通過LM016L顯示芯片、按鍵電路、SHT11芯片和基礎電路完成,軟件部分主要包括溫濕度控制程序、溫濕度讀取、計算程序實現溫濕度測試系統的主要框架。系統仿真效果明顯,下一步工作將圍繞實體產品完成測試系統的進一步設計。
[1] 聞人達.帶有溫濕度控制程序的設計[J].電子技術與軟件工程,2015(16):140-141.
[2] 蔣之玨.基于AT89C51單片機的溫濕度控制設計[J].科技傳播,2013(14):120-121.
[3] 李揚.基于AT89C51單片機溫濕度的研究[J].機電產品開發與創新,2013(5):55-57.
[4] 陳佳明,馬杰思.基于單片機的溫濕度模塊設計[J].中國新通信,2012(6):45.
[5] 田娜,楊冰清,楊超越.基于單片機的溫濕度控制與應用[J].河北北方學院學報:自然科學版,2013(6):25-28.
[6] 貢駕哲.基于51單片機的溫濕度的設計與制作[J].中國科技信息,2011(18): 67-70.
[7] 于熙然.基于AT89C51單片機的溫濕度系統設計[J].實驗科學與技術,2012(2):35-36.
[8] 李慶華.多功能溫濕度測試系統的設計[J].電腦與電信,2012(4):74-75.
[9] 郭琳.利用單片機如何制作溫濕度系統[J].數字化用戶,2014(6):126.
[10] 陳皓, 周航. 一種基于AT89S52單片機的LED顯示器設計[J]. 電子制作, 2014(2):61-62.
(責任編輯:孫 娟)
李明明(1988-),女,湖北黃岡人,碩士,嘉興職業技術學院助教,研究方向為分布式計算、物聯網應用開發;代紹慶(1972-),男,湖北仙桃人,碩士,嘉興職業技術學院副教授,研究方向為分布式計算、物聯網應用開發。
10.11907/rjdk.162414
TP319
A
1672-7800(2017)003-0100-03