1 引言 針對傳統測溫元件(熱電偶、熱電阻)組成的溫度測量電路復雜,軟件調試繁瑣等缺點,設計基于MSC-51單片機及ADC0809的溫度采集控制系統。該系統利用單片機中空余的I/O接口,以中斷的方式實現溫度的實時采集與控制,充分利用CPU的資源空間,簡化了測量電路以及程序調試的復雜過程,方便了技術人員在實際中的開發和應用。 2 硬件電路設計 2.1 系統組成 圖1為系統硬件組成框圖。外部傳感器將與溫度相對應的電信號傳至A/D轉換器,進行模數轉換,完成后將數據傳送至單片機,單片機進行數據處理后將數據送至譯碼器,最后在數碼管上顯示。當有鍵盤輸入控制溫度時,單片機內部比較此時得到的A/D轉換數據與控制設定溫度,若低于設定溫度,外部裝置加熱,LED單色燈亮;反之,則不加熱,LED單色燈熄滅。 2.2 系統模塊設計 (1)主控制模塊 選用單片機MSC-51的最小系統作為主控制器件,且采用MSC-51單片機的最小主控制模塊,由于程序控制簡單,器件內部空間足夠存儲程序,無需外擴存儲器,選用P0、P1口作為輸出接口,P2口作為輸入接口。 (2)溫度采集模塊溫度采集模塊由外部傳感器、電熱器以及ADC0809器件組成。傳感器的測量范同是0℃~50℃。在理想情況下,A/D轉換器輸出的數值D與輸入的電壓信號V之間有以下關系式成立 式中,Vmax為連接在器件Vref+引腳的“高基準電壓值”;Vmin為連接在器件Vref-引腳的“低基準電壓值”。DMAx為當輸入電壓為Vmax時,接口輸出的轉換數值。Dmin為當輸入電壓為Vmin時,接口輸出的轉換數值。 (3)溫度顯示模塊 溫度顯示模塊由8279器件與數碼管組成,8279內部的OUTA0~OUTA3、OUTB0~OUTB3與譯碼器74LS138連接,控制七段數碼管的顯示。 (4)溫度控制模塊溫度控制模塊由鍵盤、MSC-51器件、電熱器、A/D轉換器等組成。鍵盤數值的輸入也由8279器件通過行列掃描控制,再通過MSC-51的內部數值比較,電熱器控制溫度,進而達到保溫的目的。 2.3 系統硬件連接 系統選用MSC-51單片機作為主控制器件,進行數據的處理與傳輸。設計中將74LS273的引腳P0.4與外部電熱器的開關相連接,控制加熱。同時將 LED單色燈與74LS273的引腳P0.4口連接.以顯示外部電熱器的狀態。A/D轉換器ADC0809的引腳CS與編號為“8300H”的譯碼器輸出端連接,EOC信號接MSC-51的引腳P1.7,IN1與溫度傳感器相連接。數碼顯示控制器件8279的引腳CS與編號為“8700H”的譯碼器輸出端連接。圖2為鍵盤及數碼管顯示電路,圖3為A/D轉換電路。 3 軟件設計 軟件采用MSC-51的單片機匯編語言編寫,運用單片機內部定時器的中斷實現中斷程序的調用以及5 s刷新數據的功能,從而大大節約CPU的資源,提高了工作效率。 3.1 主程序流程 在主程序開始之前設置偽指令,方便程序編寫時查找各個器件地址及初始化命令。主程序中設置定時器1的中斷程序,其定時產生中斷并進入中斷子程序。主程序入口地址是0000H,中斷入口地址是001BH。為避免程序的存儲位置與單片機預設的存儲位置發生沖突,在各個入口地址中只放置跳轉指令。主程序的存放地址從0500H開始。 主程序以“START”開始,經設置堆棧棧底以及各接口器件的初始化程序后.啟動定時器1開始計時,當計數時間為50 ms時,定時器1產生中斷,轉入中斷子程序運行。主程序流程如圖4所示。 主程序部分代碼如下: 3.2 系統中斷子程序流程 圖5是中斷子程序流程,其程序步驟如下:單片機響應定時器1的中斷,進入中斷子程序“FRESH”,設置50 ms的定時時間循環100次后,得到5 s的刷新時間,當到達5 s定時,隨即進人A/D轉換器的讀取數據。將A/D轉換器得到的數值與預設溫度值相比較。測量值低于預設溫度則啟動電熱器,L=ED亮;反之,繼續下一步。數碼管初始化,并將A/D轉換后的十六進制數值轉換為十進制數值并顯示輸出。 4 結束語 該方案具有節約接口資源,CPU利用率高,執行速度快,簡單易行等特點,具有推廣價值。但基于系統本身及器件轉換中存在誤差的缺點,該設計還需進一步提高控制精度,減小誤差,從而提高系統的整體性能。 |