如題 51單片機設計,內有文檔代碼解釋
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
本文介紹的是一個由單片機構成的溫度控制系統,主要用來提供測溫的解決方案,同時還能實時監控溫度變化趨勢,以及報警功能。它利用STC89C52RC單片機,DS18B20,蜂鳴器報警電路和LCD1602來實現溫度檢測控制功能。溫度檢測是使用的DS18B20溫度傳感器,將檢測得到的溫度通過單片機單總線的協議讀取并將其顯示在LCD1602液晶屏上。除此之外,它還能通過按鍵設置溫度的上限值,如果溫度超過上限,則蜂鳴器報警,大大提高了系統的安全性。本文在后續章節詳細介紹了系統的總體方案設計,硬件設計,軟件設計等。
傳感器主要大體經過了三個發展階段:模擬集成溫度傳感器。該傳感器是采用硅半導體集成工藝制成,因此亦稱硅傳感器或單片集成溫度傳感器。此種傳感器具有功能單一(僅測量溫度)、測溫誤差小、價格低、響應速度快、傳輸距離遠、體積小、微功耗等,適合遠距離測溫、控溫,不需要進行非線性校準,外圍電路簡單。它是目前在國內外應用最為普遍的一種集成傳感器,典型產品有AD590、AD592、TMP17、LM135等;模擬集成溫度控制器。模擬集成溫度控制器主要包括溫控開關、可編程溫度控制器,典型產品有LM56、AD22105和MAX6509。某些增強型集成溫度控制器(例如TC652/653)中還包含了A/D轉換器以及固化好的程序,這與智能溫度傳感器有某些相似之處。但它自成系統,工作時并不受微處理器的控制,這是二者的主要區別;智能溫度傳感器。智能溫度傳感器(亦稱數字溫度傳感器)是在20世紀90年代中期問世的。它是微電子技術、計算機技術和自動測試技術(ATE)的結晶。智能溫度傳感器內部都包含溫度傳感器、A/D轉換器、信號處理器、存儲器(或寄存器)和接口電路。有的產品還帶多路選擇器、中央控制器(CPU)、隨機存取存儲器(RAM)和只讀存儲器(ROM)。智能溫度傳感器的特點是能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU);并且它是在硬件的基礎上通過軟件來實現測試功能的,其智能化程度也取決于軟件的開發水平。
系統總體方案設計溫度檢測系統有著共同的特點:測量點多、環境復雜、布線分散、現場離監控室遠等。若采用一般溫度傳感器采集溫度信號,則需要設計信號調理電路、A/D 轉換及相應的接口電路,才能把傳感器輸出的模擬信號轉換成數字信號送到計算機去處理。這樣,由于各種因素會造成檢測系統較大的偏差;又因為檢測環境復雜、測量點多、信號傳輸距離遠及各種干擾的影響,會使檢測系統的穩定性和可靠性下降。所以溫度檢測系統的設計的關鍵在于兩部分:溫度傳感器的選擇和主控單元的設計。溫度傳感器應用范圍廣泛、使用數量龐大,也高居各類傳感器之首。 2.1、傳感器部分方案一:采用熱敏電阻,利用其感溫效應,可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復性、可靠性較差,對于檢測1攝氏度的信號是不適用的。而且在溫度測量系統中,采用單片溫度傳感器,比如AD590,LM35等。但這些芯片輸出的都是模擬信號,必須經過A/D轉換后才能送給計算機,這樣就使得測溫裝置的結構較復雜,一定程度上也增加了軟件實現的難度。 方案二:在溫度控制系統中,傳統的測溫方法是將模擬信號遠距離采樣進行A/D轉換,而為了獲得較高的測溫精度,就必須采用措施解決由長線傳輸、放大電路零點漂移等造成的誤差補償問題。采用數字溫度芯片DS18B20測量溫度,輸出信號全數字化,便于單片機處理及控制,省去傳統的測溫方法的很多外圍電路。且該芯片的物理化學性很穩定,它能用做工業測溫元件,此元件線形較好。在0—100攝氏度時,最大線形偏差小于1攝氏度。DS18B20的最大特點之一采用了單總線的數據傳輸,由數字溫度計DS1820和微控制器STC89C52RC構成的溫度測第一章總體設計方案4量裝置,它直接輸出溫度的數字信號,可直接與計算機連接。這樣,測溫系統的結構就比較簡單,體積也不大,且由于STC89C52RC可以帶多個DSB1820,可實現多點測量,輕松的組建傳感器網絡,本次設計用于大棚溫度檢測比較適合方便。 2.2、主控制部分方案一:此方案采用PC機實現,它可在線編程,可在線仿真的功能,這讓調試變得方便,且人機交互友好。但是PC機輸出信號不能直接與DS18B20通信,需要通過RS232電平轉換兼容,硬件的合成在線調試,較為繁瑣,很不簡便。而且在一些環境比較惡劣的場合,PC機的體積大,攜帶安裝不方便,性能不穩定,給工程帶來很多麻煩。 方案二:此方案采用STC89C52RC八位單片機實現。單片機軟件編程的自由度大,可通過編程實現各種各樣的算術算法和邏輯控制。而且體積小,硬件實現簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC機通信,運用主從分布式思想,由一臺上位機(PC微型計算機),下位機(單片機)實現溫度數據采集,組成兩級分布式溫度測量的巡回檢測系統,實現遠程控制。另外STC89S51在農業控制上也有著廣泛的應用,編程技術及外圍功能電路的配合使用都很成熟。 總體設計綜上所述,溫度傳感器以及主控部分都采用第二方案。首先由溫度傳感器DS18B20采集溫度數據,經單片機I/O模擬單總線讀取后送入STC89C52RC單片機中進行運算處理,并LCD1602液晶顯示當前溫度,同時與鍵盤輸入的設定溫度值(上限)進行比較,由單片機控制是否發出報警信號。在整個過程中,溫度始終都能得以顯示。設定溫度過程中顯示設定溫度值,以便于操作。 本系統的總體設計方框圖如圖2-1所示,它主要由五部分組成: ①主控制部分主芯片采用單片機STC89C52RC(包括時鐘和復位電路); ②顯示部分采用3位LED數碼管以動態掃描方式實現溫度顯示; ③溫度采集部分采用DS18B20溫度傳感器; ④按鍵輸入部分主要功能是實現設定溫度值的輸入; ⑤人體紅外傳感器用來檢測人體信息 DS18B20檢測溫度,將溫度信息傳送到單片機內,單片機檢測到溫度信號,對其進行處理,將處理得到的數據在LCD1602液晶上顯示出來。可以通過按鍵來設置溫度的上下限值,當溫度超過范圍時,單片機控制蜂鳴器報警,同時當人體紅外傳感器檢測到人體時,也會觸發蜂鳴器報警。 圖2-1 系統總體設計框圖
3、系統硬件設計硬件電路部分包括51單片機主控模塊的設計,單片機最小系統的設計,DS18B20溫度檢測模塊,按鍵設置模塊,蜂鳴器報警模塊,LCD1602液晶顯示模塊。各模塊電路的詳細介紹將在后續給出。 主程序流程圖設計如下圖4-2所示是系統主程序流程圖。 
圖4-2 主程序流程圖 如圖4.2所示,程序開始后,進行初始化,初始化包括LCD1602液晶初始化,DS18B20初始化;然后在LCD1602液晶上顯示固定信息,再給DS18B20溫度傳感器發送讀取數據命令,則模塊開始測溫。然后進入主循環,顯示當前溫度,再進入按鍵設置子程序設置當前溫度上限值,最后比較當前溫度是否超過范圍,若是則蜂鳴器報警,否則不報警。 4.3各子程序設計子程序設計包括按鍵設置子程序、DS18B20溫度檢測子程序、LCD1602液晶顯示子程序、。各子程序的具體介紹將在如下部分詳細給出。 4.3.1按鍵設置子程序

圖4-3 按鍵設置子程序流程圖 如圖4-3所示為按鍵設置子程序流程圖,程序當分別按下按鍵K1、K2時,則上限值Tmpup加1和減1,然后結束,Tmpup表示溫度上限,程序當分別按下按鍵K3、K4時,則上限值Tmpdowm加1和減1,然后結束,Tmpdowm表示溫度下限。
如上為DS18B20讀取溫度子函數,read_18b20()是用來讀取DS18B20溫度傳感器中的一字節數據,通過DQ數據總線時序來實現。read_temp()是用來處理從DS18B20讀取的數據并轉換成溫度值的函數,通過調用read_temp()函數得到兩字節溫度數據,分為高8位和低8位,將其整合在一起得到溫度完整的數據。
如上LCD_Init()函數為1602液晶初始化程序,write_com(0x38)用來設置初始化顯示模式為0x38,write_com(0x0c)用來顯示開和光標設置,write_com(0x06)用來顯示光標移動設置。Wite_com()用來寫命令,write_data()用來寫數據,write_string()則用來給1602寫入顯示的字符串數據。 如上為按鍵設置子程序,當按鍵KEY0或KEY1、KEY2或KEY3按下時LCD顯示的設置上限值也會隨之加減,改變報警溫度上限,從而實時判斷當前溫度,當溫度超出范圍則蜂鳴器報警。 附錄一 系統原理圖

全部資料51hei下載地址:
設計方案.7z
(666.59 KB, 下載次數: 65)
2019-6-25 03:36 上傳
點擊文件名下載附件
|