1.基于AT89C52單片機和DS18B02溫度測量接口的溫度控制調節完整電路;
2.采用4位共陽極數碼管顯示設定溫度值與實際溫度值(℃);
3.利用蜂鳴器實現達到預設溫度的報警
2 總體方案設計 2.1 硬件方案

圖1.1系統結構框圖
圖1.1為簡易溫度控制器的系統結構框圖,由鍵盤,DS18B20溫度采集接口,數碼管,蜂鳴器,繼電器連接加熱設備組成。。 2.1.1.溫度檢測部分 采用美國DALLAS半導體公司的DS18B20智能型溫度傳感器,使用方便、接口簡單,與CPU通信采用并口通信方式。 - 測量范圍:-55℃~125℃(在-10℃~85℃范圍內測量誤差為±0.5℃;12位分辨率時,最多750ms完成溫度值的數字轉換,溫度分辨率為0.0625)
結構:該器件有3個引腳:輸入/輸出引腳及電源和地;內部有三個主要器件:64位ROM、溫度傳感器和報警觸發器。 - 電源連接:該器件可由外部5V電源VDD供電,也可以從單總線上取得電源。

圖1.2 DS18B20內部結構 
圖1.3 DS18B20封裝圖 2.1.2.顯示部分 顯示模塊電路采用4個共陽極八位數碼管顯示。位選口為單片機 P1.0~P1.3 I/O口,四個數碼管共用一組段選口為單片機 P0~P7 I/O口。采用動態顯示方法。電路如圖1.4所示: 
圖1.4 數碼管電路圖
2.1.3.鍵盤部分 鍵盤部分采用單一按鍵形式,設置兩個鍵:加1鍵、減1鍵用來調節溫度顯示。 
圖1.5 鍵盤電路圖 2.1.4.溫度控制部分 繼電器 2.2 軟件方案2.2.1.主程序 主要功能是完成DS18的初始化工作,并進行讀溫度,將溫度轉化為壓縮BCD碼并在顯示器上顯示傳感器實際溫度。
2.2.2.讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節,在讀出時需要進行CRC校驗,校驗有錯時不進行溫度數據的改寫,其程序框圖如下圖所示: 
圖2.1系統程序框圖
3 硬件設計與實踐
3.1 測量電路本系統由主控模塊、信號顯示模塊、溫度檢測模塊、報警模塊、設定報警溫度和自動調溫6個模塊。
3.2 硬件連接 
圖3.2硬件連接
3.2.1溫度檢測  模數轉換器ADC0808引腳圖 電壓信號模擬溫度信號,通過ADC0808的轉換,將模擬信號變成數字信號傳輸給AT89C52單片機.單片機根據程序做出反應,控制各個引腳輸出相應高低電平信號使外圍模塊做出相應的反應,從而達到當溫度超出或低于溫度上限時蜂鳴器報警,且指示燈點亮,繼電器閉合。
4 軟件設計與實踐 4.1 主程序- void main(void)
- {
- unsigned char c=0;
- unsigned char c0=0;
- unsigned long ldata=2500; //作為顯示的數據
- while(1)
- { //循環掃描按鍵及顯示
- c0=c;
- c=ReadTemperature();
- c=(c/7);
- ldata=(ldata-c0+c);
- switch(ReadKey())
- { //讀取鍵值做以下相應處理
- case 1:ldata=ldata+100; //1鍵顯示內容加1
- break;
- case 2:ldata=ldata-100; //2鍵顯示內容減1
- break;
- case 3:ldata=c; //3鍵顯示內容清0
- break;
- }
- display(ldata); //顯示相應的數值,這里用函數的形式調用顯示
- delay(10);
- if(c>30)
- Warning();
- else if(c<(ldata/100))
- {
- JDQ=0;
- EJG=1;
- FMQ=1;
- }
- else
- {
- JDQ=1;
- EJG=1;
- FMQ=1;
- }
- }
- }
復制代碼
4.2 子程序1.鍵盤部分 - unsigned char ReadKey(void)
- {
- unsigned char lkey=0;
- if((P3&0xe0)!=0xe0){ //檢測所有按鍵是否有按鍵按下
- FMQ=0; //按鍵按下則蜂鳴器發聲
- delay(10); //有按鍵按下則延時一段時間,以消除按鍵拌動
- if(oldkey!=(P3&0xe0)){//檢測按鍵未松開而且不是之前按下的按健就進入讀鍵值,否則不作處理
- oldkey=P3&0xe0; //保存當前狀態,為下一次掃描做判斷,請看上一行
- if(key1==0)
- lkey=1; //第一個鍵按下復值1
- else if(key2==0)
- lkey=2; //第二個鍵按下復值2
- else if(key3==0)
- lkey=3; //第三個鍵按下復值3
- }
- }
- else{
- oldkey=0xe0; //如果都沒有按鍵按下,將復值初始狀態
- FMQ=1; //無按鍵按下則退出蜂鳴
- }
- return lkey;
- }
- 2. 顯示部分
- void display(unsigned int da)
- {
- P0=0XFF; //
- da=da%10000;
- switch(l_posit){
- case 0: //選擇千位數碼管,關閉其它位
- SMG_q=1;
- SMG_b=0;
- SMG_s=0;
- SMG_g=0;
- P0=table[da/1000]; //輸出顯示內容
- break;
- case 1: //選擇百位數碼管,關閉其它位
- SMG_q=0;
- SMG_b=1;
- SMG_s=0;
- SMG_g=0;
- P0=table[da%1000/100];
- break;
- case 2: //選擇十位數碼管,關閉其它位
- SMG_q=0;
- SMG_b=0;
- SMG_s=1;
- SMG_g=0;
- P0=table[da%100/10];
- break;
- case 3: //選擇個位數碼管,關閉其它位
- SMG_q=0;
- SMG_b=0;
- SMG_s=0;
- SMG_g=1;
- P0=table[da%10];
- break;
- }
- l_posit++; //每調用一次將輪流顯示一位
- if(l_posit>3)
- l_posit=0; }
復制代碼
5 調試及性能分析
5.1調試分析 本次設計溫度控制器根據溫度傳感器測得的溫度值,由軟件查詢判斷是否達到編程設定的值,如果超過溫度上限,即預置溫度小于當前溫度,蜂鳴器響報警,啟動風扇以溫度值返回到閾值以下;如果溫度達到下線閾值,則同樣使溫度返回。 5.2性能分析1、對于設計采用89C52單片機作為溫度控制的主CPU芯片,系統硬件設備結構簡單合理,成本低,實時性好。 2、采用DS18B20作為溫度測量接口,它是具有單總線接口的數字溫度傳感器。該器件具有接線簡單,功耗低,體積小等特點。 3、針對采用數碼管顯示溫度值,直觀、穩定,易于實現。 4、溫度控制器的功能還有待進一步擴充,如高溫斷電;電路布局、和抗干擾方面。 結 論本文給出了一種單片機實現簡易溫度控制系統,克服了傳統方法的不足,可以達到低溫加熱,高溫報警的效果。該溫度控制系統具有測量溫度準,調節溫度快的優點。主要通過學習了DS18B02溫度測量接口、89C52單片機、數碼管顯示等知識,查閱了相關資料,簡易溫度控制器的基本要求,低溫上電,高溫報警,對溫度上下限進行合理地設置,實時顯示溫度。所設計的系統具有以下功能: 1、對于設計采用89C52單片機作為溫度控制的主CPU芯片,系統硬件設備結構簡單合理,成本低,實時性好。 2、采用DS18B20作為溫度測量接口,它是具有單總線接口的數字溫度傳感器。該器件具有接線簡單,功耗低,體積小等特點。 3、針對采用數碼管顯示溫度值,直觀、穩定,易于實現。 4、溫度控制器的功能還有待進一步擴充,如高溫斷電;電路布局、和抗干擾方面。 還有很大的提升空間。
調試系統照片
附錄3 程序全文 完整的Word格式文檔51黑下載地址:
好萊塢的單片機課程設計報告.doc
(2.44 MB, 下載次數: 54)
2019-6-27 20:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|