電子課程設計報告 設計題目:水位自動控制 專業: 電機與電器 班級:101 班 學號: 姓名: 指導教師: 微控制器技術課程設計任務書 設計題目: 水位自動控制 7
設計任務: 在Proteus中畫出原理圖或使用實物,編制程序,實現以下功能: 1、使用LED數碼管顯示當前水位; 2、使用按鍵模擬水位開關; 3、可以設定水位上、下限,到達或超過溫度上限時,電機停止轉動;到達或超過溫度下限時,電機開始轉動。 背景資料:1、單片機原理與應用 2、檢測技術 3、計算機原理與接口技術 進度安排: 1、第一天,領取題目,熟悉設計內容,分解設計步驟和任務; 2、第2-3天,規劃設計軟硬件,編制程序流程、繪制硬件電路。 3、第4-6天,動手制作硬件電路,或編寫軟件,并調試。 4、第7天,中期檢查。 5、第9-10天,完善為完成內容,書寫設計報告。 6、第11天,提交設計報告,整理設計實物,等待答辯。 7、第12天,設計答辯。 題目:水位自動控制 一、設計目的 1、掌握51單片機的基本硬件結構及工作原理。 2、熟悉關于51單片機系列的程序編寫,并學會基本程序的設計。 3、了解51系列單片機的有關控制系統的相關知識。 4、學會將理論賦予實踐,逐步掌握運用理論知識解決實際問題的方法。 二、設計要求 在Proteus中畫出原理圖或使用實物,編制程序,實現以下功能: 1、使用LED數碼管顯示當前水位; 2、使用按鍵模擬水位開關; 3、可以設定水位上、下限,到達或超過水位上限時,電機停止轉動;到達或超過水位下限時,電機開始轉動。 4、設置聲光報警系統,當水位過低或滿水位時,相應報警指示燈閃爍,并發出報警聲。 三、方案設計與論證 水位檢測電路可以通過兩個 51 單片機的管腳來感知水位的變化,產生不同的邏輯組合來控制是否進水或是停止進水。輸出端可由一個端口來控制電機的運行狀態,進而控制水泵的工作。 方案一:設計采用 ADC0808 芯片。用 LED 燈來顯示水位的高低。ADC0808 有 8 路模擬量的輸入端口,本次設計只要用其中一個。通過 A/D 轉換為數字量作用于單片機,進而控制電機的運轉。采用可調電阻器來控制模擬電信號的輸入。通過對電阻器的調節來模擬輸入量的變化。通過對比數字量來進行進行判斷水位的高低。進而通過輸出口對電機進行開關控制。 方案二:本方案采用555電路進行控制,即當水位探測傳感器探測到低水位時送一個低于1/3VCC的低電平給NE555芯片,555的輸出即為高電平驅動水泵加水;當在正常的水位時候,送給NE555為1/3VCC----2/3VCC的電平,即保持前一個水泵不加水的狀態;當水位居于高水位時,給NE555電路一個高電平,這時NE555輸出電平翻轉為低電平,不能驅動水泵,水泵停止加水。 方案三:本方案采用單片機AT89C51作為我們的控制芯片,主要工作過程是當高塔中的水在低水位時,水位探測傳感器送給單片機一個高電平,然后單片機驅動水泵加水和顯示系統使紅燈閃爍;當水位在正常范圍內時,水泵加水;當水位在高水位時,單片機不能驅動水泵加水,黃燈閃爍。 本課程設計采用方案三,這個方案中使用了單片機處理,單片機技術是信息時代用于精密測量的一種新技術。此系統使用過程中采用穩壓電路能夠準確地把輸入的電平送給單片機不會產生誤判的情況,由于AT89C51單片機有四端口,20引腳能夠非常方便地設計顯示系統。 四、設計原理和電路圖如下 1、系統原理 當水位處于低水位的時候,傳感器的低水位探測器沒被+5V的電源導通進入穩壓電路,經過處理在穩壓電路的輸出端有一個高電平,送入單片機的P1.7口,輸出的高電平進入單片機的P1口單片機經過分析,在P3.2口輸出一低電平,驅動紅燈閃爍,同時在P3.1口輸出一低電平,驅動蜂鳴器報警;P3.0出來一個信號使三極管導通,使水泵加水;當水位處于正常范圍內時,水泵加水,在P3.2引腳出來一個低電平,使紅燈滅;當水位在高水位區時,傳感器的低水位探測線被導通,經過處理在穩壓電路的輸出端有一個高電平,送入單片機的P1.0口,單片機經過分析,在P3.3引腳出來一個低電平,使黃燈亮,在P3.1口輸出一低電平,驅動蜂鳴器報警;P3.0輸出一個信號使三極管導通,使水泵停止加水。 2、系統結構圖 
圖1 系統結構圖 采用單片機AT89C51作為我們的控制芯片,主要工作過程是當高塔中的水在低水位時,水位探測傳感器送給單片機一個高電平,然后單片機驅動水泵加水和顯示系統使紅燈閃爍,同時報警;當水位在正常范圍內時,水泵加水 ,當水位在高水位時,單片機不能驅動水泵加水,黃燈閃爍,同時報警。 3、水塔水位控制系統的硬件電路設計 水塔水位控制系統的單片機選用AT89C51芯片,在Proteus 平臺下進行硬件仿真。硬件電路設計分為水位檢測、水位顯示、聲光報警、電機控制、振蕩電路和復位電路幾個部分。 3.1 水位檢測電路 本檢測電路采用DIPSW-8組開關來做水位監測觸發。水位檢測部分是用單片機P1.0~P1.7 連接的8個按鈕分別代表低水位,水位1、水位2、水位3、水位4、水位5 ,水位6,和滿水位。水位檢測電路如圖1 所示 圖2 水位檢測電路 3.2 水位顯示電路 采用一片LED數碼管進行顯示,由單片機P0.0~P0.7和P2.0口輸出段碼,進行水位顯示數字0 ~7分別代表低水位、水位1、水位2、水位3、水位4,水位5和水滿時的水位標志。水位顯示電路如圖2 所示 
圖3 水位顯示電路 3.3電機控制電路 加水時,電機正常工作。為確保水塔內不能沒有水,所以在設計當中,當到達水位0 的時候就開始供水,電機工作。 電機控制部分,采用了三極管放大來控制電機的工作,由單片機P3.0 口進行控制。電機控制電路如圖4 所示。 
圖4 電機控制電路 3.4振蕩電路和復位電路(見圖6) 圖 5 振蕩電路和復位電路 3.5聲光報警電路 本電路采用不同顏色的發光二極管來表示不同的水位情況。即紅燈D1亮表示是低水位狀態,蜂鳴器報警;黃燈D2發亮,水泵停止加水,蜂鳴器報警。原理圖如下圖4-4: 圖6 聲光報警電路 4 軟件程序設計 4.1 系統主程序流程圖 系統主程序的功能主要是完成對單片機的初始化,設置警戒液位的上下限,實時顯示液位值以及按鍵掃描等工作。主程序流程圖如圖4-1所示。 圖7 系統主程序流程圖 4.2編寫C程序 根據系統主程序流程圖,在keil C51中編寫相應程序,并檢索、編譯。查找編寫程序中的錯誤,并改正,最終得到正確的程序。并生成HEX文件。在仿真調試時使用。編寫的C程序見附錄2. 五、元件清單 表1 元件清單 六、硬件制作與調試 根據系統結構圖與原件清單,設計電路圖,在proteus軟件里繪制電路圖,并進行仿真調試檢測程序及電路圖中的錯誤,最終得到正確的電路圖。 調試成功后電路運行情況:單擊仿真運行開始按鈕 ,我們能清楚地觀察到每一個引腳的電頻變化,紅色代表高電頻,藍色代表低電頻。按下低水位按鈕時,在LED 顯示器上顯示“0”, 低水位報警,低水位報警指示燈紅燈亮,蜂鳴器響,電機工作給水塔加水;按下水位1 按鈕時,,顯示水位為“1 ”, 低水位報警指示燈紅燈滅,電機工作給水塔加水;按下水位2 按鈕時,顯示水位為“2 ”;按下水位3 按鈕時,顯示水位為“3 ”;按下水位4 按鈕時,顯示水位為“4”,水塔控制工作正常運行;按下水位7 按鈕時,顯示水位為“7”,高水位報警,黃燈亮,蜂鳴器響,電機停止工作。總體電路圖見附錄一。 七、設計總結 該自動系統才用自帶存儲空間的8051單片機芯片,造型袖珍,線路簡單,運行效率高。與外部的聯系小,減少了外部干擾對系統的運行影響,具有很好的穩定性。在內部干擾中,由于所有運算都有單片機芯片內部自己完成,減少了數據傳輸損耗的可能性,對數據的運算傳輸可靠性高。 作為一名電器的大二學生,在即將就業之際,通過做這次課程設計是很有意義的。在做這次課程設計的過程中,為了讓自己的設計更加完善,我感觸最深的當屬查閱大量的設計資料。 其次,在這次課程設計中,我們運用了以前學過的專業課知識,如:proteus仿真、C語言、模擬和數字電路知識等。雖然過去我從未獨立應用過他們,但在學習的過程中帶著問題去學我發現效率很高,這是我做這次課程設計的又一收獲。 最后,要做好一個課程設計,就必須做到:在設計程序之前,對所用單片機的內部結構有一個系統的了解,知道該單片機有哪些資源;要有一個清晰的思路和一個完整的軟件流程圖;在設計程序時,不能妄想一次將整個程序設計好,反復修改、不斷改進是程序設計的必經之路;要養成注釋程序的好習慣,這樣為資料的保留和交流提供了方便;在設計中遇到的問題要記錄,以免下次遇到同樣的問題。 在這次的課程設計中,我真正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單片機更是如此,程序只有在經常寫與讀的過程中才能提高,這就是這次課程設計的最大收獲。 八、參考文獻 [1]陳海宴. 51單片機原理及其應用. 北京:北京航空航天大學出版社, 2010.3 [2]何希才. 傳感器及其應用實例. 北京:機械工業出版社, 2004.9 [3]李廣弟. 單片機基礎. 北京:北京航空航天大學出版社, 2007.6 [4]周瀾景. 基于proteus電路及單片機系統設計與仿真. 北京:北京航空航天大學出版 社 2006.5 [5]童詩白. 數字電子技術. 北京:高等教育出版社,2001.6
附錄1 總體電路 
- #include<reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code shuzu[]=
- {0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,0x80};
- uint n,m;
- //*******延時程序************
- void delay()
- {
- uint i,j;
- for(i=0;i<12;i++)
- for(j=0;j<120;j++);
- }
- sbit k7=P1^7;
- sbit k6=P1^6;
- sbit k5=P1^5;
- sbit k4=P1^4;
- sbit k3=P1^3;
- sbit k2=P1^2;
- sbit k1=P1^1;
- sbit k0=P1^0;
- sbit dj=P3^0;
- sbit fmq=P3^1;
- sbit led1=P3^2;
- sbit led2=P3^3;
- //**********主程序***********
- void main()
- {
- led1=0;
- led2=0;
- while(1)
- {
- if(k6==1)
- dj=1;
- if(k7==0)
- n=0;
- if(k6==0)
- n=1;
- if(k5==0)
- n=2;
- if(k4==0)
- n=3;
- if(k3==0)
- n=4;
- if(k2==0)
- n=5;
- if(k1==0)
- n=6;
- if(k0==0)
- {
- n=7;dj=0;
- }
- P0=shuzu[n];
- if(k7==1)
- for(m=0;m<10;m++)
- {
- delay();
- fmq=~fmq;
- led1=~led1;
- }
- if(k0==0)
- for(m=0;m<10;m++)
- {
- delay();
- fmq=~fmq;
- led2=~led2;
- }
- }
- }
復制代碼
完整的Word格式文檔51黑下載地址:
單片機課程設計--水位自動控制.doc
(339.5 KB, 下載次數: 66)
2018-6-26 12:30 上傳
點擊文件名下載附件
|