1 前言 生產生活中,許多情況需要對環境的溫度進行限定.例如人的生活工作環境、儀器設備的工作環境以及動植物的生長環境等。該裝置利用AT89S52單片機以及DSl8820溫度傳感器的特點,對環境溫度進行實時監控并實現越限報警。系統抗干擾性強、設計靈活方便,適合在惡劣的環境F進行溫度測量。 2 系統硬件電路設計 系統硬件電路包括傳感器數據采集、溫度顯示、模式選擇、上下限報警主電路和無線報警電路等。整個裝置的控制核心足AT89S52單片機。溫度傳感器DSl8820采用外部電源供電.傳感器輸出引腳直接和單片機相連。電路支持模式選擇功能.可以選擇設定報警極限值或顯示當前溫度值。當被測溫度越限時,報警主電路產生聲光報警.同時引發無線接受模塊產生報警信號。撥動開關可以對設定報警極限值進行寫保護。按健復位電路可實現手動復位。系統結構框圖如圖l所示。 圖1測溫報警系統結構框圖 2.1溫度采集電路設計 溫度數據采集電路如圖2所示。電路采用單總線接口方式,溫度傳感器DSl8820采集被控對象的實時溫度并從單片機的P3.5口輸入。R13為上拉電阻。電路采用數字信號輸出可提高信號抗干擾能力和溫度測量精度。電路上作電壓使用范圍為3.0~5.5V,采用外部供電方式。 圖2溫度采集電路 2.2溫度顯示電路設計 電路采用共陰極叫位一體LED數碼管顯示。P1.0~PI.7的輸出信號和排阻接到數碼管上進行顯示。P3.0、P3.1和P3.2作為四個數碼管的位選信號控制引腳直接接到741.5138譯碼器上。兩個LED為上下限設定\報警指示燈。 圖3顯示模式選擇電路 系統可實現顯示模式選擇功能.如網3所示。兩個獨立式按鍵可以分別進行模式選擇和溫度上下限值設定。按鍵l按動一下上限指示燈亮,進行上限溫度設定.接著按動一下下限指示燈亮,進行下限溫度沒定,再按動一下進行當前溫度顯示。按鍵2為溫度值設定鍵,溫度值調整范圍-40℃至+85℃。ATMEL24C16寫保護端與一個撥動開關和指示燈相連.可以對設定的上下限數據值進行寫保護。 2.3報警電路設計時間 系統的主報警電路由一個自我震蕩型蜂鳴器和兩個發光二極管(即顯示電路中的上下限指示燈)組成,當前溫度越限時,報警電路開始丁作,p3.7 口輸出低電平,蜂鳴器蜂嗚,報警指示燈指示是上限報警還是下限報警。PNP晶體管的基極加上一只限流電阻,防止晶體管因輸入電流過大而損壞。主報警電路如圖4所示。 圖4主報警電路 系統報警電路中采用PT2262和FF2272可實現遠程無線報警。當有報警信號產生時,無線接收模塊接收后驅動蜂嗚器蜂鳴。無線報警距離可達到100米。 3 系統軟件設計 程序啟動后,首先調用DSl8820模塊初始化程序,然后調用溫度采集模塊。借用DSl8820內部模數轉換的時間,調用溫度值轉換模塊,將溫度值轉換成BCD碼。送入AT89S52單片機處理,通過模式選擇,完成溫度的實時顯示和越限報警。主程序流程圖如圖5所示。 圖5系統主程序流程圖 3.1DSl8820的相關處理子程序 3.1.1 DSl8820初始化子程序 DSl8820的使用必須遵循初始化到ROM操作命令到存儲器操作命令的規定協議。每完成一次測溫.要重新進行初始化。單片機先發一個復位脈沖.保持低電平時問最少480μs.最多不能超過960μs。然后。單片機釋放總線,等待DSl8820的應答。DSl8820在接收到復位脈沖后等待15~60μs發出應答脈沖,應答脈沖持續60。240μs。 3.1.2 DSl8820寫控制字子程序 當主機把數據線從邏輯高電平拉到邏輯低電平的時候,寫時間開始。寫一位數據最少需要60μs,曲個數據位之問最少有1μs的間隔。I/O總線拉低后,DSl8820在15μs后開始采樣,如果線上是高電平,就寫1,如果線上是低電平,就寫0,寫時間需要15—75μs,且在2次獨立的寫時問之間至少需要1μs的恢復時間。 3.1.3 DSl8820讀出溫度子程序 當主機把數據線從高電平拉到低電平時.讀時間開始。讀出溫度子程序的主要功能是讀出RAM中的9字節.在讀出時需進行CRC校驗。校驗有錯時不進行溫度數據的改寫。讀時間需15—60μs,且在2次獨立的讀時間之間至少需要1μs的恢復時間。DSl8820在讀時間開始15μs后開始采樣總線電平。 3.1.4 DSl8820溫度轉換子程序 溫度轉換命令子程序主要是發溫度轉換開始命令。DSl8820用12位存貯溫度值.最高位為符號位.低四位為小數.最高精度可達0.0625度。溫度數據轉換完成的任務是把用二進制表示的溫度轉換成1個字節的兩位壓縮BCD碼。轉換的方法有兩種.一種是通過計算.另一種是通過查表,該裝置設計方案采用前者。計算溫度子程序溫度讀取值進行BCD碼的轉換運算,并進行溫度值正負的判斷。 3.2顯示子程序 該裝置采用動態掃描顯示方式。系統定時器0的定時時間為50ms.每過250ms(5次中斷)測一次溫度,延時子程序主要供數碼濕示程序調用,延時時間為0.5ms。字形碼的輸出采用P1口的P1.0-P1.7。單片機的P3口提供位選信息,P3.2、P3.1和P3.0分別與3-8譯碼器的CBA端相連.譯碼器輸出Yl,Y2,Y3.Y4分別控制顯示器的百位、十位、各位和百分位。當P3.2=1時,右起第一個數碼管顯示十分位數:當P3.1:1、P3.0=1時,右起第二個數碼管顯示個位數:P3.1=l時右起第三個數碼管顯示十位數:當P3.0=1時,右起第四個數碼管顯示百位數,如果溫度值為負.則百位數顯示負號.這樣顯示器循環點亮即可顯示當前溫度值. 3.3模式選擇子程序 當按鍵按下時。P3.3或P3.4口為低電平.此時單片機進入模式選擇和溫度值設定程序。溫度值設定范圍為-40度至+85度。 當撥動開關撥動到使ATMEL24C16的WP口為高電平時。單片機將設定信息進行存儲。 3.4報警子程序 程序將轉換后的溫度值自動存人存儲器中.并與設定值TH或TL進行比較,當測量溫度超出給定范同時,輸出報警信號,并自動識別是高溫超限還是低溫超限。 4 結論 該裝置以AT89S52單片機為核心.采用DS18B20為測溫傳感器.通過C語言開發了完整的軟件程序.可在惡劣條件下實現單片機控制的溫度采集、溫度顯示、越限報警等功能,無線報警距離可達100米。 本文作者創新點: l、主機報警和分機無線報警.提高了安全性和實用性。 2、手動設置溫度報警極限值.提高了方便性和可控性。 作者:董麗梅,王飛,王海松 來源:《微計算機信息》(嵌入式與SOC)2009年第25卷第4-2期 |