基于單片機(jī)的液位控制系統(tǒng)設(shè)計的-畢業(yè)設(shè)計論文.doc
《基于單片機(jī)的液位控制系統(tǒng)設(shè)計的-畢業(yè)設(shè)計論文.doc》由會員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的液位控制系統(tǒng)設(shè)計的-畢業(yè)設(shè)計論文.doc(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、摘 要本課題是基于單片機(jī)的液位控制系統(tǒng)的設(shè)計,使用在日常生活和工業(yè)應(yīng)用中廣泛應(yīng)用的水塔作為被控裝置,水塔液位和水壓作為被控對象;本設(shè)計采用液位檢測裝置和電容式差壓變送器對液位高度和壓力進(jìn)行實時檢測并傳送到單片機(jī)進(jìn)行實時處理,從而使水塔水位自動保持在指定的范圍。其中,液位控制系統(tǒng)的硬件電路主要包括水位和水壓檢測電路、A/D轉(zhuǎn)換電路、鍵盤顯示電路、報警電路、電機(jī)控制電路等五大部分;該系統(tǒng)使用電容式差壓變送器對水塔水壓進(jìn)行檢測并將檢測到的信號送給A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器將對應(yīng)的模擬電壓信號轉(zhuǎn)換成數(shù)字量傳給單片機(jī)AT89C51進(jìn)行處理,單片機(jī)將處理的結(jié)果通過數(shù)碼管顯示出來,并完成對排水、抽水電動機(jī)的
2、控制;在單片機(jī)進(jìn)行實時處理的同時,可以通過按鍵對控制系統(tǒng)進(jìn)行相應(yīng)的功能切換。該系統(tǒng)各個部分的硬件電路采用C51語言編寫控制程序,從而實現(xiàn)使用鍵盤調(diào)整被控參數(shù)水壓的上、下限以及軟件復(fù)位功能;利用四位一體共陰極數(shù)碼管顯示水壓;通過邏輯代碼達(dá)到對電機(jī)控制電路的控制,使電機(jī)在一定的條件下進(jìn)行抽水或者排水操作;最終使被控對象被控制在指定的水位和水壓范圍內(nèi)。在將系統(tǒng)的硬件電路設(shè)計和軟件程序設(shè)計完成后,需要將硬件電路部分和軟件程序部分結(jié)合起來進(jìn)行液位控制系統(tǒng)的調(diào)試,如果發(fā)現(xiàn)問題,就需要找到合適的解決方案,修改錯誤的部分;并且將這兩者結(jié)合進(jìn)行液位控制系統(tǒng)仿真結(jié)果的測試,觀察實驗的結(jié)果是否符合課題的設(shè)計要求,不
3、然修改不符合課題要求的部分,最終達(dá)到液位控制系統(tǒng)的課題目標(biāo)。關(guān)鍵詞:AT89C51單片機(jī);A/D轉(zhuǎn)換;液位控制 I AbstractThis topic is the design of control system based on single-chip liquid level control, using the tower as a controlled device which is often seen in daily life and industrial application, the liquid level of the water tower and water p
4、ressure as the object; this design uses the liquid level detection device and capacitive differential pressure transmitter to monitor the liquid level and pressure and real-time processing, so that the water level automatically keeps in the specified range. The hardware circuit of control system mai
5、nly has five parts, which includes water pressure and liquid level detection, A/D converter, keyboard display circuit, alarm circuit, motor control and so on; the system uses capacitive differential pressure transmitter to detect the tower pressure and the detected signal is sended to the A/D conver
6、ter; A/D converter will convert this analog voltage signals into digital signals which send to the AT89C51 single-chip, and the micro-controller processes the results, which can use the nixie tubes to display, and accomplish the control of drainage and pumping motor; At the same time of real-time pr
7、ocessing in the SCM, the corresponding button can switch to different functions of the control system.Each part of the hardware circuit of the system uses C51 language to program, so as to realize the use of the keyboard to adjust the controlled parameters of upper and lower limit pressure; using on
8、e of LED to display the pressure, through the logic code to control the control circuit of the motor, the motor will pump or drain under a certain condition; ultimately the water pressure and water pressure will be controlled in a specified range.After the design of hardware circuit and software pro
9、gram, debugging liquid level control system combining hardware with software part is needed; if errors are found, find the right solution, modify the wrong part; also this combination of liquid level control system simulation results need test, and observe the experimental results whether or not the
10、se results are in conformity with the requirements of the project design; Otherwise, modifying the part that does not meet the requirements of the project, and ultimately the aim of liquid level control system will be achieved.Keywords: AT89C51 single chip micro-controller; A/D conversion;liquid lev
11、el control II 目 錄摘 要IAbstractII第1章 緒論11.1 課題的意義11.2 國內(nèi)外的研究動態(tài)21.3 課題的目的和預(yù)期目標(biāo)3第2章 系統(tǒng)整體方案設(shè)計4第3章 硬件電路設(shè)計63.1 AT89C51單片機(jī)63.1.1 單片機(jī)的功能和特點63.1.2 時鐘和復(fù)位電路83.2 水位檢測電路和水壓檢測電路93.2.1 水壓檢測電路以及控制儀表93.2.2 水位檢測電路103.3 A/D轉(zhuǎn)換設(shè)計113.3.1 A/D轉(zhuǎn)換器介紹113.3.2 A/D轉(zhuǎn)換電路133.4 數(shù)碼管顯示和鍵盤電路143.4.1 鍵盤電路143.4.2 數(shù)碼管顯示電路153.5 報警電路173.6 電機(jī)控
12、制18第4章 軟件設(shè)計194.1 軟件語言的選擇194.2 系統(tǒng)主程序和初始化函數(shù)194.3 A/D轉(zhuǎn)換和水壓的數(shù)據(jù)處理204.4 延時處理214.5 鍵盤部分的軟件設(shè)計244.5.1 按鍵去抖動244.5.2 按鍵功能實現(xiàn)264.6 顯示部分的軟件設(shè)計264.7 水位監(jiān)測和報警電路的軟件設(shè)計274.8 驅(qū)動電路的軟件設(shè)計28第5章 系統(tǒng)調(diào)試與仿真結(jié)果295.1 系統(tǒng)調(diào)試295.2 仿真結(jié)果305.2.1 水壓仿真測試305.2.2 水位仿真測試31第6章 結(jié)論32參 考 文 獻(xiàn)33致 謝34附 錄35 IV沈陽工業(yè)大學(xué)本科生畢業(yè)設(shè)計第1章 緒論1.1 課題的意義隨著很多行業(yè)對液位控制的需求日
13、益增加,液位和液壓控制技術(shù)正在不斷發(fā)展。為了增加控制功能、提高生產(chǎn)效率,采用AT89C51單片機(jī)進(jìn)行液位和液壓的控制技術(shù)得到了廣泛的應(yīng)用。不論是在工業(yè)生產(chǎn)過程中,還是在農(nóng)業(yè)和其他行業(yè)生產(chǎn)過程中,水塔都是生產(chǎn)生活中不可或缺的控制裝置設(shè)備,所以水塔的液位控制就是我們面臨的嚴(yán)峻問題之一。在我國液位技術(shù)需求迅猛上升之前,液位的控制需要人來進(jìn)行看管,這不但降低了勞動生產(chǎn)率,而且還不能高效和精確地將水位和水壓控制在一個指定的范圍內(nèi)。正因為這些各種方面的原因,所以采用單片機(jī)控制水塔的水位和水壓的控制方案就達(dá)到了這一基本要求,并且解決了這一重要問題。液位控制作為過程控制研究領(lǐng)域重要的課題之一,它不僅在生產(chǎn)生活
14、中占有相當(dāng)大的比例,而且人們對液位控制的需要和要求越來越多,多功能的液位控制系統(tǒng)就為了滿足這一情況而進(jìn)行設(shè)計的。多功能的液位控制相比較傳統(tǒng)的機(jī)械液位控制系統(tǒng)有無可比擬的優(yōu)勢;首先,多功能的液位控制系統(tǒng)在功能上比機(jī)械液位控制系統(tǒng)要多了不少,不僅是傳統(tǒng)意義上的液位控制而已,還增加了水壓的顯示顯示功能和鍵盤對液壓的控制切換功能;其次,多功能的液位控制系統(tǒng)在控制速度上比機(jī)械液位控制系統(tǒng)要快了不少,機(jī)械液位控制系統(tǒng)依靠傳統(tǒng)的機(jī)械杠桿進(jìn)行移動產(chǎn)生位移會有一定的機(jī)械延遲,從而增加了滯后時間,然而采用單片機(jī)進(jìn)行液位控制的系統(tǒng)使用了A/D轉(zhuǎn)換器,采樣頻率相較于機(jī)械液位控制系統(tǒng)較高,可以對液位控制系統(tǒng)進(jìn)行快速控制
15、;再次,機(jī)械液位控制系統(tǒng)需要進(jìn)行零點值和滿度值進(jìn)行反復(fù)的調(diào)整1,而多功能的液位控制系統(tǒng)不用對其進(jìn)行反復(fù)的調(diào)整,只要進(jìn)行過零點調(diào)整,就無需進(jìn)行反復(fù)設(shè)置;最后,多功能的液位控制系統(tǒng)無需人為手動的調(diào)整液位,直接通過控制電機(jī)達(dá)到控制液位的效果,相較于機(jī)械液位控制系統(tǒng)節(jié)省了勞動力成本,同時提高了生成過程中控制的效率。多功能的液位控制系統(tǒng)將使用AT89C51單片機(jī)作為核心處理器,方便對整個液位控制系統(tǒng)的調(diào)度和操作,它具有一定的可靠性、穩(wěn)定性和準(zhǔn)確性。使用單片機(jī)實現(xiàn)多功能的液位控制系統(tǒng)不僅可以減少簡單液位控制的控制成本,而且可以提高用戶的可操作性,方便用戶對液位控制系統(tǒng)的控制。因此本課題采用AT89C51單
16、片機(jī)控制水塔的液位相比于以前的控制方式將會有更大的性能和控制操作的提升。目前,雖然市場上的液位控制系統(tǒng)種類繁多,但是掌握液位控制系統(tǒng)關(guān)鍵核心技術(shù)對我們有很多好處,有助于我們更有效率和安全地進(jìn)行生產(chǎn)生活,而且,對液位變化進(jìn)行分析并采集大量數(shù)據(jù),找出數(shù)據(jù)經(jīng)常變化的位置,這些數(shù)據(jù)將會幫助我們實現(xiàn)更加快速和穩(wěn)定的控制系統(tǒng)。1.2 國內(nèi)外的研究動態(tài)很多歐美的發(fā)達(dá)國家在液位控制系統(tǒng)的設(shè)計中,特別是液位控制系統(tǒng),已經(jīng)積累了很多的經(jīng)驗,具有堅實的基礎(chǔ),所以歐美的發(fā)達(dá)國家的液位控制系統(tǒng)迅速占領(lǐng)了國際市場。我國在液位控制系統(tǒng)的研究和制造上,與其他發(fā)達(dá)國家相比還存在一定差距;但是,我們國家的研究人員在液位控制系統(tǒng)研
17、究的道路上克服了許多未知困難,在探索中不斷前進(jìn),希望在相關(guān)封鎖的技術(shù)領(lǐng)域有所突破,甚至超過發(fā)達(dá)國家的控制技術(shù)水平使我國的液位控制技術(shù)領(lǐng)先于全世界。然而,在液位控制系統(tǒng)中,液位測量是液位控制技術(shù)非常重要的一項步驟,依據(jù)測量的工作原理,液位測量分為直讀式液位測量、浮力式液位測量、電氣式液位測量等。直讀式液位測量是利用連通器的原理測量液位,浮力式液位測量利用浮力原理測量液位,分為恒浮力和變浮力兩種2。電氣式測量法測量液位是將液位的變化轉(zhuǎn)換為某些電量的變化,從而實現(xiàn)液位檢測;一般,把敏感元件做成的桿狀電極置于被測物質(zhì)中,則電極的電氣參數(shù),隨著液位的變化而變化;電氣式測量液位又分為電極式、電容式、電感式
18、等3。除了液位測量以外,液壓的測量也是液位控制技術(shù)不可缺少的部分,測量壓力一般使用差壓變送器,可以將420mA的電流遠(yuǎn)傳到控制室,方便對控制裝置的統(tǒng)一管理。國外發(fā)達(dá)國家的控制方式已經(jīng)由集散控制系統(tǒng)發(fā)展到了現(xiàn)場總線技術(shù),現(xiàn)場總線技術(shù)的發(fā)展使得自動化控制技術(shù)發(fā)生了變革。信息技術(shù)現(xiàn)在正融入到生產(chǎn)現(xiàn)場,新型的現(xiàn)場總線技術(shù)克服了系統(tǒng)封閉帶來的缺陷,提高了信號測量準(zhǔn)確度和傳輸精度,同時可以進(jìn)行多種復(fù)雜的控制運(yùn)算,提高系統(tǒng)的可靠性。不僅如此,現(xiàn)場總線技術(shù)還便于操作管理人員更好、更深入地了解生產(chǎn)現(xiàn)場和自動控制裝置的運(yùn)行狀態(tài)。1.3 課題的目的和預(yù)期目標(biāo)本課題是通過單片機(jī)作為系統(tǒng)核心達(dá)到控制液位的目的。本設(shè)計采
19、用液位檢測裝置和電容式差壓變送器對液位高度和壓力進(jìn)行實時監(jiān)控并進(jìn)行實時處理,從而使水塔水位自動保持在指定的范圍。其中,液位控制系統(tǒng)的硬件電路主要包括水位和水壓檢測電路、A/D轉(zhuǎn)換電路、鍵盤顯示電路、報警電路、電機(jī)控制電路等五大部分;該系統(tǒng)使用電容式差壓變送器對水塔水壓進(jìn)行檢測并將檢測到的信號送給A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器將對應(yīng)的模擬電壓信號轉(zhuǎn)換成數(shù)字量傳給單片機(jī)AT89C51進(jìn)行處理,單片機(jī)將處理的結(jié)果通過數(shù)碼管顯示出來,并完成對排水、抽水電動機(jī)的控制;在單片機(jī)進(jìn)行實時處理的同時,可以通過按鍵對控制系統(tǒng)進(jìn)行相應(yīng)的功能切換。本設(shè)計的模型是基于水塔控制裝置,以1m的水塔的液位和液壓作為被控對象,液
20、位范圍是(0-100cm),液壓范圍是(0-9980Pa),實現(xiàn)液位和液壓被控制在指定的范圍內(nèi)。本系統(tǒng)的軟件部分采用C51語言編寫控制程序,從而實現(xiàn)使用鍵盤調(diào)整被控參數(shù)水壓的上、下限以及軟件復(fù)位功能;利用四位一體共陰極數(shù)碼管顯示水壓;通過邏輯代碼達(dá)到對電機(jī)控制電路的控制,使電機(jī)在一定的條件下進(jìn)行抽水和排水操作;最終使被控對象被控制在指定的水位和水壓范圍內(nèi)。本課題的水位控制技術(shù)采用液位傳感器和壓力傳感器對液位高度和壓力進(jìn)行實時監(jiān)控;預(yù)期目標(biāo)是:當(dāng)水位和壓力超出規(guī)定范圍時,系統(tǒng)能夠自動調(diào)整水位和水壓,使其落在規(guī)定的范圍內(nèi);當(dāng)水位和水壓低于規(guī)定范圍時,就控制水泵工作抽水,使水塔內(nèi)的水位和水壓上升,到
21、達(dá)規(guī)定高度。而達(dá)到不用人工專門去控制即可使水位保持在一定范圍內(nèi)的目的。第2章 系統(tǒng)整體方案設(shè)計在生產(chǎn)生活中有很多種方式可以對液位和液壓進(jìn)行控制,但是使用比較常見的有兩種控制方式,一個是基于機(jī)械的簡單控制方法,另一個是基于控制器的復(fù)雜控制方法。 現(xiàn)在介紹這兩種控制方式的區(qū)別和原理。(1)基于機(jī)械的簡單控制方法??梢允褂玫膶崿F(xiàn)方式有浮標(biāo)式、電極式等,基于機(jī)械的簡單控制方式的優(yōu)點是結(jié)構(gòu)簡單、成本低。但是缺點也很明顯,就是精度低、不能進(jìn)行數(shù)據(jù)實時顯示;另外,這種控制方式很容易引起誤操作,且只能單獨控制,不能與其他的計算機(jī)進(jìn)行數(shù)據(jù)交換,難以實現(xiàn)數(shù)據(jù)的采集和數(shù)據(jù)的分析以及對數(shù)據(jù)處理后的控制4。圖2-1 單
22、片機(jī)液位控制系統(tǒng)框圖(2)基于控制器的復(fù)雜控制方法?;诳刂破鞯膹?fù)雜控制方法是通過安裝在水塔下方安裝差壓變送器,把水塔底部的壓力首先轉(zhuǎn)換成變極距位移值的變化,然后再轉(zhuǎn)換成電阻、電容等電量值的變化,再經(jīng)過一些電路的處理,將這些電量值的變化轉(zhuǎn)換成標(biāo)準(zhǔn)電壓信號或者是電流信號,再經(jīng)過多路切換、A/D轉(zhuǎn)換器將模擬信號變換成數(shù)字信號送到單片機(jī),然后單片機(jī)對數(shù)據(jù)進(jìn)行運(yùn)算和處理5,通過相應(yīng)的邏輯實現(xiàn)單片機(jī)端口信號的變化,實現(xiàn)改變外圍裝置狀態(tài)的變化,最終達(dá)到控制水塔液位和液壓在指定范圍內(nèi)的目的。針對以上描述的兩種控制方法,以及綜合考慮本設(shè)計需要達(dá)到目的和要求。本設(shè)計選擇第二種基于控制器的復(fù)雜控制方法進(jìn)行液位和液
23、壓的控制,并且對其加以改進(jìn)。最終構(gòu)成的控制方案如圖2-1所示,本液位控制系統(tǒng)由單片機(jī)AT89C51、數(shù)碼管顯示器、報警器、鍵盤、變送器和其它基本外圍裝置組成。使用單片機(jī)作為液位控制系統(tǒng)的核心,設(shè)計出了一個對供水塔液位和液壓進(jìn)行實時監(jiān)測的系統(tǒng)。實時檢測水塔的液位高度和液壓的變化,將來自傳感器測量液壓和液位的信號經(jīng)過AD轉(zhuǎn)換或者測量電路的處理后送到單片機(jī)再進(jìn)行控制處理,由單片機(jī)控制外圍裝置,實現(xiàn)排水電機(jī)、抽水電機(jī)以及報警器等外圍裝置進(jìn)行實時動作,達(dá)到對水塔的液位高度和液壓的調(diào)整,最終達(dá)到水塔的液位高度和液壓保持在要求的指定范圍內(nèi)。除此之外,本設(shè)計實時顯示測量的液壓值,從而實現(xiàn)對水塔水位的實時監(jiān)測。
24、同時可以利用鍵盤輸入需要控制液壓的上、下限和實現(xiàn)其他的控制功能。第3章 硬件電路設(shè)計液位控制系統(tǒng)的硬件主要由AT89C51單片機(jī),水位檢測電路,水壓檢測傳感器(使用變送器),報警電路,數(shù)碼管顯示電路,鍵盤輸入電路,電動機(jī)控制電路,AD0809轉(zhuǎn)換器等組成。下面對各部分硬件電路進(jìn)行詳細(xì)介紹。3.1 AT89C51單片機(jī)3.1.1 單片機(jī)的功能和特點單片機(jī)采用由ATMEL公司生產(chǎn)的雙列40腳AT89C51芯片,芯片引腳如下圖3-1所示。其中,P0口用于A/D轉(zhuǎn)換;P1口作為數(shù)碼管的段選信號;P2口的低四位給數(shù)碼管提供位選信號,高四位用于連接鍵盤;P3口用于控制水泵的動作,并且用于控制A/D轉(zhuǎn)換的啟
25、動和停止,控制報警器以及用于讀取液位等。下面具體介紹各個接口的功能和特點。圖3-1 AT89C51單片機(jī)引腳圖P0口:單片機(jī)P0口有兩種使用方式,第一種是作為通用的I/O口使用,用于傳送單片機(jī)的輸入輸出數(shù)據(jù),此時的輸出可以得到緩存,輸入的數(shù)據(jù)可以得到緩沖,保證了數(shù)據(jù)輸入輸出的可靠性6。第二種是連接外部的存儲器,通過和單片機(jī)的P2口結(jié)合起來使用,單片機(jī)就可以訪問外部存儲設(shè)備的數(shù)據(jù),可以對其進(jìn)行讀寫操作7。P1口:單片機(jī)的P1口第一種使用方式和P0口一樣;P1口的第二種使用方式是作為8751編程/校驗用于ROM的低8位地址。P2口:單片機(jī)的P2口第一種使用方式和P1口一樣;P2口的第二種使用方式是
26、和P0口結(jié)合起來使用,作為訪問片外存儲器的高8位地址中的數(shù)據(jù)。表3-1 AT89C51端口引腳的第二功能端口號第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INTO(外中斷0)P3.3INT1(外中斷1)P3.4TO(定時/計數(shù)器0)P3.5T1(定時/計數(shù)器1)P3.6WR(外部數(shù)據(jù)存儲器寫選通)P3.7RD(外部數(shù)據(jù)存儲器讀選通)P3口:單片機(jī)P3口的第一種使用方式和P1口一樣;第二種使用方式是作為第二功能使用,每一個引腳都有各自的功能,可以作為控制液位控制系統(tǒng)的外圍裝置使用,如表3-1所示。RST:復(fù)位引腳。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平,
27、這些加到RST引腳的高電平會使AT89C51單片機(jī)復(fù)位。ALE/PROG:地址鎖存引腳。ALE引腳配合單片機(jī)的P0口的第二種使用方式工作。在訪問外部存儲器時,單片機(jī)除了在P0口輸出存儲器的地址,還在ALE引腳上輸出一個高電平;在沒有訪問外部存儲器的情況下,單片機(jī)在ALE引腳輸出1/6時鐘頻率的脈沖。PSEN:外部程序存儲器的讀選通引腳。EA/VPP:外部訪問允許引腳。EA=1,訪問片內(nèi)存儲器;EA=0,訪問外部存儲器。3.1.2 時鐘和復(fù)位電路1.時鐘電路如圖3-2所示,左邊的電路圖是單片機(jī)的片內(nèi)振蕩電路輸入線。XTAL1和XTAL2連接石英晶體和微調(diào)電容,同時連接單片機(jī)的片內(nèi)振蕩器的定時反饋
28、回路。石英晶振起振后,在XTAL2線上輸出一個3V左右的正弦波,以使單片機(jī)的片內(nèi)OSC電路按晶振同頻率自激振蕩。電容C1和C2幫助起振,調(diào)節(jié)這兩個電容的電容值以達(dá)到微調(diào)時鐘頻率的目的8。圖3-2 復(fù)位電路及時鐘電路(2) 復(fù)位電路復(fù)位電路可以分為上電復(fù)位和手動按鍵復(fù)位兩種。單片機(jī)上電復(fù)位的原理是,在系統(tǒng)上電的一瞬間,利用電容兩端的電壓不能發(fā)生突變,在一上電的瞬間電容如同短路,加在RST引腳的電平是高電平,雖然時間很短,但足以讓單片機(jī)復(fù)位9。手動按鍵復(fù)位的原理是,在系統(tǒng)正常工作的過程中可以手動觸動按鍵使單片機(jī)復(fù)位。按下按鍵,5V的電壓經(jīng)過一個200歐姆的電阻分壓后加到系統(tǒng)的RST上,手動按鍵按下
29、到抬起的過程足以使系統(tǒng)復(fù)位10。圖3-2中網(wǎng)絡(luò)標(biāo)號RST連接單片機(jī)RST引腳,同時具有上述的兩種功能。3.2 水位檢測電路和水壓檢測電路3.2.1 水壓檢測電路以及控制儀表1. 電容式差壓變送器簡介該變送器采用差動電容作為檢測元件,完全沒有機(jī)械傳動機(jī)構(gòu)和機(jī)械調(diào)整裝置,抗震性好、準(zhǔn)確度高,靜壓誤差小,其可靠性、穩(wěn)定性都較高,儀表準(zhǔn)確度為0.25-0.5級11。由于變送器采用集成放大器和現(xiàn)代電子工藝,參數(shù)調(diào)整通過電路完成,簡單方便,且零點調(diào)整和量程調(diào)整互不影響。圖3-3 電容式差壓變送器實物圖電容式差壓變送器使用變極距的方法測量壓力差,實物圖如圖3-3所示。它是將被測壓力差引起的彈性元件的變形轉(zhuǎn)變
30、成電容量的變化,通過測量電容量的變化,便可知道被測壓力差大小。隔離膜片集成運(yùn)放測量電路活動電極輸入差壓輸出電流位移電壓電容變化圖3-4 電容式差壓變送器原理圖變送器原理如圖3-4所示,從輸入電壓到電容變化是檢測部分,從電容變化到輸出電流是轉(zhuǎn)換部分。由檢測部分的差動電容膜盒把被測壓力差轉(zhuǎn)換成電容量的變化,經(jīng)轉(zhuǎn)換部分把電容量的變化轉(zhuǎn)換為電壓,再由運(yùn)算放大器將電壓轉(zhuǎn)換成4-20mA標(biāo)準(zhǔn)信號輸出。3.2.2 水位檢測電路水位檢測電路結(jié)合了電路和機(jī)械兩個部分,其中電路部分如圖3-5所示,主要是通過一個開關(guān)來檢測水位的位置,當(dāng)開關(guān)閉合時,說明水位到達(dá)指定的水位,對應(yīng)單片機(jī)的P3.6或P3.7引腳檢測的電壓
31、是低電平;如果開關(guān)斷開,表明水位沒有到達(dá)指定的位置,對應(yīng)單片機(jī)的P3.6或P3.7引腳檢測的電壓是高電平。圖3-5 水位檢測電路機(jī)械部分是根據(jù)水的浮力使浮球漂浮,從而使浮球產(chǎn)生位移,達(dá)到觸碰開關(guān),實現(xiàn)電路部分開關(guān)的開、閉兩種狀態(tài);通過在液位控制裝置上設(shè)置浮球的位置,可以得到想要液位范圍,使水位保持指定的范圍內(nèi)。3.3 A/D轉(zhuǎn)換設(shè)計3.3.1 A/D轉(zhuǎn)換器介紹1. ADC0809轉(zhuǎn)換器概述 A/D轉(zhuǎn)換器是液位控制系統(tǒng)中最為重要的一個電子元件,它可以將模擬信號轉(zhuǎn)換成數(shù)字信號,變成單片機(jī)可以處理的數(shù)字信息。本設(shè)計考慮到液位控制系統(tǒng)進(jìn)行A/D轉(zhuǎn)換的各種要求,決定采用ADC0809進(jìn)行A/D轉(zhuǎn)換電路部
32、分的設(shè)計,使用這種逐次逼近式A/D轉(zhuǎn)換器轉(zhuǎn)換速度比較圖3-6 ADC0809引腳圖快,造價成本比較低,可以滿足測量水壓的要求;ADC0809使用起來也比較簡單,可以進(jìn)行多路的模擬信號的轉(zhuǎn)換,通過改變模擬信號輸入地址就可以實現(xiàn)這一功能;單片機(jī)只需要提供一個數(shù)據(jù)接收端口和少量的控制端口就可以對該芯片進(jìn)行控制和接收信號。ADC0809的引腳圖如圖3-6所示。單片機(jī)可以通過對與其連接的ADC0809轉(zhuǎn)換器的端口進(jìn)行讀取操作,通過ADC0809將輸入的模擬數(shù)據(jù),處理成數(shù)字信號輸出,單片機(jī)就可以獲得液位控制裝置的水壓數(shù)字量信號;單片機(jī)將這一數(shù)字量進(jìn)行數(shù)學(xué)運(yùn)算處理,可以得到一個水壓值,經(jīng)過這些步驟,后續(xù)的鍵
33、盤以及顯示操作的功能才能被實現(xiàn)。ADC0809主要信號引腳的功能說明如下表3-1所示。表3-1 ADC0809引腳功能ADC0809引腳ADC0809引腳的功能IN7-IN0模擬電壓輸入線ALE地址鎖存允許信號START轉(zhuǎn)換啟動線。上升沿,復(fù)位芯片;下降沿,開始轉(zhuǎn)換ADDA、ADDB和ADDC信號輸入地址線CLK時鐘輸入線。由外界提供頻率為500KHz的時鐘信號EOC轉(zhuǎn)換結(jié)束信號。D7-D0數(shù)據(jù)輸出線OE輸出允許信號。控制輸出轉(zhuǎn)換的數(shù)據(jù)Vcc+5V電源Vref參考電壓線2. A/D轉(zhuǎn)換數(shù)據(jù)傳送方式A/D轉(zhuǎn)換器經(jīng)過轉(zhuǎn)換后,應(yīng)及時把轉(zhuǎn)換后的數(shù)據(jù)送到單片機(jī)的P0端口,單片機(jī)才能對這個數(shù)據(jù)繼續(xù)進(jìn)行處理
34、。所以知道ADC0809轉(zhuǎn)換器何時完成A/D轉(zhuǎn)換是非常重要的,單片機(jī)有3種方式判斷A/D轉(zhuǎn)換是否完成。(1) 定時傳送方式任何一個ADC轉(zhuǎn)換器的轉(zhuǎn)換時間都有一個固定值,可以使單片機(jī)通過定時程序中斷,到達(dá)這個固定時間值去取轉(zhuǎn)換后的數(shù)據(jù)。(2) 查詢方式AT89C51單片機(jī)通過不斷地查詢ADC0809的EOC引腳的狀態(tài)就可以判斷轉(zhuǎn)換是否完成。(3) 中斷方式將ADC0809的EOC引腳連接到單片機(jī)的P3口,讓單片機(jī)的P3口以第二種使用方式工作,轉(zhuǎn)換時間到會給單片機(jī)發(fā)送中斷請求信號,以中斷方式判斷轉(zhuǎn)換是否完成。3. ADC0809的工作過程首先輸入3位地址ADDA、ADDB、ADDC,并使ALE=1
35、,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入線中的一個到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動 A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進(jìn)行,直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請。當(dāng)OE輸入高電平時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上12。3.3.2 A/D轉(zhuǎn)換電路本設(shè)計的液位控制系統(tǒng)中的A/D轉(zhuǎn)換器采用的是ADC0808,它與ADC0809的功能沒有太大差別,使用ADC0808進(jìn)行液位控制系統(tǒng)的仿真測試。圖3-7 A/D轉(zhuǎn)換電路ADC0808與AT89C51單片機(jī)的電路連接
36、圖如圖3-7所示,本設(shè)計使用的是查詢方式;ADC0808的頻率由一個外部脈沖源提供其所需要的500kHz;模擬輸入通道選擇IN0,所以ADDA,ADDB ADDC都是0,表明選擇的輸入通道是IN0;ALE接地,使000地址鎖存起來;參考電壓為+5V;數(shù)字量輸出通道連接到單片機(jī)的P0口;開啟A/D轉(zhuǎn)換的引腳START連接單片機(jī)的P3.0,查詢A/D轉(zhuǎn)換是否完成使用到了EOC引腳,單片機(jī)的P3.1與其連接用于查詢ADC0809的狀態(tài);OE引腳控制ADC0809轉(zhuǎn)換器數(shù)據(jù)的輸出,單片機(jī)的P3.2與其連接在一起用于獲取來自ADC0809轉(zhuǎn)換器的數(shù)字信號。3.4 數(shù)碼管顯示和鍵盤電路數(shù)碼管顯示電路和鍵盤
37、電路一起進(jìn)行設(shè)計,數(shù)碼管顯示電路由四位一體共陽極數(shù)碼管組成,分為動態(tài)顯示和靜態(tài)顯示,為了系統(tǒng)的優(yōu)化和省電,本設(shè)計采用動態(tài)顯示。鍵盤電路采用常用的鍵盤電路設(shè)計,本設(shè)計使用獨立式鍵盤設(shè)計,用以實現(xiàn)液位控制系統(tǒng)的用戶操作功能。3.4.1 鍵盤電路圖3-8 鍵盤電路鍵盤電路是液位控制系統(tǒng)中一個比較重要的組成部分,它不僅可以實現(xiàn)向該控制系統(tǒng)中的單片機(jī)發(fā)送命令的功能,而且還可以向該控制系統(tǒng)輸入信號改變液位控制系統(tǒng)參數(shù)。鍵盤電路是人與液位控制系統(tǒng)進(jìn)行交互的重要工具。結(jié)合液位控制系統(tǒng)設(shè)計的實際情況,故采用獨立式鍵盤接口電路,而非矩陣式鍵盤設(shè)計。獨立式鍵盤是將每一個獨立的按鍵直接接到單片機(jī)指定的I/O口上,每個
38、按鍵連接單片機(jī)一個引腳,這是在液位控制系統(tǒng)使用鍵盤非常少才采用的設(shè)計方案。當(dāng)鍵盤的按鍵按下時,需要向單片機(jī)發(fā)送一個信號,通知單片機(jī)用戶按下了按鍵,需要單片機(jī)對該按鍵的功能進(jìn)行響應(yīng)。獨立式鍵盤的信號檢測是通過單片機(jī)指定的I/O口的狀態(tài)變化實現(xiàn)的,通過如圖3-8所示的鍵盤電路設(shè)計,可以使連接的單片機(jī)P2端口的高四位的狀態(tài)發(fā)生變化。按下按鍵,這些接口的狀態(tài)就變成了低電平;松開按鍵,這些接口的狀態(tài)就變成了高電平;利用這一原理,就可以方便的編寫程序?qū)崿F(xiàn)相應(yīng)的功能了。其中,MODE、ADD、SUBTRACT不僅是用來控制顯示用的按鍵,主要功能是改變水塔被控水壓的范圍??梢酝ㄟ^ADD、SUBTRACT實現(xiàn)對
39、高低警戒水壓的設(shè)置。具體來說,ADD、SUBTRACT分別實現(xiàn)數(shù)字的增一與減一,MODE、RESET則作為模式選擇和重置鍵。重置鍵會讓液位控制系統(tǒng)回到初始化狀態(tài),模式選擇鍵是選擇水壓上限還是水壓下限。3.4.2 數(shù)碼管顯示電路本設(shè)計采用四位一體共陰極數(shù)碼管。它的每一位發(fā)光段,分別是A-G段和DP段,分別按照字母順序與單片機(jī)的P1口連接;每一位數(shù)碼管1,2,3,4同樣按照順序與單片機(jī)的P2口的低四位連接。1. 數(shù)碼管簡介數(shù)碼管是由發(fā)光二極管構(gòu)成的發(fā)光顯示元件。單片機(jī)將指定的數(shù)據(jù)進(jìn)行處理后,將在與四位一體共陰極數(shù)碼管連接的I/O上輸出一些數(shù)字信號,用于驅(qū)動數(shù)碼管中的發(fā)光二極管,使發(fā)光二極管發(fā)生亮滅
40、13。這些指定的數(shù)字信號需要在程序中進(jìn)行編碼,具體的編碼詳見本設(shè)計的軟件部分。它的引腳以及與外部的連接如圖3-9所示。數(shù)碼管又分為兩種顯示方式,下面分別介紹共陰極和共陽極這兩種方式。圖3-9 數(shù)碼管顯示電路2. 數(shù)碼管的顯示方式數(shù)碼管要正常顯示就要使數(shù)碼管的各個段的做出相應(yīng)的亮滅,從而顯示出待顯示的數(shù)字。因此,根據(jù)單片機(jī)對它的驅(qū)動方式不同,可以分為以下兩種方式工作。(1) 靜態(tài)顯示:靜態(tài)顯示是將數(shù)碼管的每一個段選線都都連接到單片機(jī)的引腳上,由單片機(jī)對其驅(qū)動,控制其顯示。靜態(tài)驅(qū)動的優(yōu)點是結(jié)構(gòu)簡單,但占用單片機(jī)的引腳多,能耗高,不利于高效使用單片機(jī)。(2) 動態(tài)顯示:數(shù)碼管的動態(tài)顯示在單片機(jī)設(shè)計中
41、廣泛應(yīng)用。動態(tài)顯示是將所有的數(shù)碼管的8個段選線連接到單片機(jī)的同一個I/O口,通過位選線來控制哪一個數(shù)碼管進(jìn)行顯示。在延時進(jìn)行輪流的顯示過程中,由于人的視覺短暫停留效應(yīng)以及發(fā)光二極管的余暉效應(yīng),盡管各位的數(shù)碼管不是同時點亮,但是給人的印象感覺就是顯示了穩(wěn)定數(shù)據(jù)14。動態(tài)顯示可以達(dá)到和靜態(tài)顯示一樣的效果,不僅功耗更低,而且還能節(jié)省大量的I/O端口。3.5 報警電路圖3-10 蜂鳴器報警功能電路如圖3-10所示,報警電路由三極管2N2219和蜂鳴器組成。蜂鳴器由2N2219驅(qū)動,進(jìn)而實現(xiàn)報警功能。2N2219的集電極接電源+5V,基極通過一個電阻連接到P3.3口,射極接蜂鳴器,當(dāng)P.3為低電平時,2
42、N2219截止,報警器不響,當(dāng)P3.3為高電平時,2N2219導(dǎo)通,報警器發(fā)出響聲。3.6 電機(jī)控制電機(jī)控制系統(tǒng)采用普通的電磁繼電器,使用2N2219三極管放大電路對其進(jìn)行驅(qū)動,如圖3-11所示。繼電器兩端連接了一個1N4001二極管。原因是,線圈通電時,1N4001對驅(qū)動電路沒有任何作用。當(dāng)繼電器線圈在斷電的一瞬間會圖3-11 電機(jī)控制電路產(chǎn)生一個很強(qiáng)的逆向電壓,在繼電器線圈兩端反向并聯(lián)1N4001就是用來抵抗這個逆向電壓對2N2219的影響;如果不加1N4001反向二極管,逆向電壓會直接作用在2N2219上,很容易將2N2219燒壞。當(dāng)單片機(jī)的控制端P3.4輸出高電平時,2N2219導(dǎo)通,
43、驅(qū)動電磁繼電器的開關(guān)閉合,使抽水電動機(jī)開始工作;當(dāng)單片機(jī)的控制端P3.4輸出低電平時,2N2219截止,驅(qū)動電磁繼電器的開關(guān)端口,使抽水電動機(jī)停止工作。這樣便可以實現(xiàn)對液位控制系統(tǒng)水位和水壓的控制。排水電機(jī)與之類似,只是受到P3.5端控制,其他與抽水電機(jī)相同,不再贅述。第4章 軟件設(shè)計4.1 軟件語言的選擇本設(shè)計采用C51語言編寫軟件。C51不僅可以對單片機(jī)編程,而且還能對硬件控制系統(tǒng)進(jìn)行高效開發(fā),利用C51語言編寫程序簡便、易懂,相比較于匯編語言,使用C51編程有下列優(yōu)點。1.不用寫反復(fù)繁瑣的指令,也不用記憶指令和考慮指令的使用2.寄存器是由編譯器自動管理,不用再人工考慮設(shè)置3.使用C51編
44、程可以是程序設(shè)計結(jié)構(gòu)變得規(guī)范,程序分成函數(shù)結(jié)構(gòu)化設(shè)計4.C51提供了許多標(biāo)準(zhǔn)的子程序,對數(shù)據(jù)處理起來方便5.避開了對跳轉(zhuǎn)指令的直接處理,防止了程序過大出現(xiàn)不可預(yù)知的問題6.方便模塊化的編程設(shè)計技術(shù),易于程序的移植除了以上的優(yōu)點外,C51編程對數(shù)據(jù)的是非常方便的,傳統(tǒng)的匯編語言需要對二進(jìn)制和十六進(jìn)制數(shù)直接操作,這額外增加了設(shè)計的時間,所以使用C51編程可以使用人性化的十進(jìn)制數(shù),將十進(jìn)制數(shù)定義為指定的數(shù)據(jù)類型即可,通過編譯器自動轉(zhuǎn)換成底層的二進(jìn)制數(shù)。雖然C51有很多優(yōu)點,但是也有一定的不足,匯編語言程序可以設(shè)計的結(jié)構(gòu)清晰,方便單片機(jī)對指令的高效處理,C51編譯后的程序重復(fù)度比直接編寫的匯編語言程序
45、要高。綜上所述,在對比了C51語言和匯編語言的優(yōu)點以及缺點后,本設(shè)計采用C51編程,方便對液位控制系統(tǒng)軟件設(shè)計的邏輯實現(xiàn),同時也能夠快速排查程序出現(xiàn)的問題。下面是液位控制系統(tǒng)各部分使用C51語言編程的軟件設(shè)計。4.2 系統(tǒng)主程序和初始化函數(shù)液位控制系統(tǒng)的主程序包括系統(tǒng)初始化函數(shù)、按鍵函數(shù)、水位監(jiān)測函數(shù)和電動機(jī)控制函數(shù)以及水壓檢測函數(shù)。液位控制系統(tǒng)的主程序的主要功能是完成液位控制系統(tǒng)參數(shù)的初始化,設(shè)置默認(rèn)的警戒液位和液壓的上下限,實時顯示水壓值以及鍵盤掃描等工作。程序流程框圖如圖4-1所示。系統(tǒng)的初始化函數(shù)主要是對水壓的上、下限進(jìn)行初始化賦值,并對其他的控制參數(shù)例如電機(jī)控制位、報警器控制位等進(jìn)行
46、初始化設(shè)置。圖4-1 主程序流程圖4.3 A/D轉(zhuǎn)換和水壓的數(shù)據(jù)處理本設(shè)計采用的A/D 轉(zhuǎn)換器分辨率是8 位逐次逼近型A/D 轉(zhuǎn)換器,位數(shù)越高,分辨率越高。若小于最小變化量的輸入模擬電壓的任何變化,將不會引起輸出數(shù)字值的變化15。 而常用的8-bit 的ADC0809,若是滿刻度為5V的話,分辨率即為5V / 28 = 19.53mV。 程序如下:START=0; /啟動A/D轉(zhuǎn)換 OE=0;if(EOC=1) /查詢0808轉(zhuǎn)換結(jié)束信號 /這時D0-D7輸出轉(zhuǎn)換后的數(shù)據(jù),CPU可以進(jìn)行讀取數(shù)據(jù)OE=1; temp=P0; /讀取數(shù)據(jù) temp=temp*1.0/255*500; temp=(
47、temp-100)*25; OE=0; START=1; START=0; OE=0:禁止轉(zhuǎn)換器的數(shù)據(jù)輸出,為A/D轉(zhuǎn)換做準(zhǔn)備START=0;START=1;START=0;產(chǎn)生一個脈沖信號,啟動A/D轉(zhuǎn)換If(EOC=1):檢測轉(zhuǎn)換器是否進(jìn)行A/D轉(zhuǎn)換完成OE=1:允許A/D轉(zhuǎn)換數(shù)據(jù)輸出,并將數(shù)據(jù)傳送給P0Temp=temp*1.0/255*500;OE=0:對輸入的數(shù)字量0-255轉(zhuǎn)換成對應(yīng)的模擬量0到+5V。OE=0,禁止數(shù)據(jù)輸出,防止在處理P0口數(shù)據(jù)過程中,輸入P0口的數(shù)據(jù)發(fā)生變化。4.4 延時處理本設(shè)計的延時處理方案設(shè)計了兩種,一種是以循環(huán)為主的延時設(shè)計,另一種是以定時器中斷為核心進(jìn)
48、行計時,從而實現(xiàn)延時的效果;1. 通過循環(huán)進(jìn)行延時處理程序如下:/延時子程序void delay(uint m)while(m-);2. 通過定時器進(jìn)行延時處理 定時/計數(shù)器有兩種用途:定時器和計數(shù)器。但一個定時/計數(shù)器(T1或T0)不能既做定時器又作為計數(shù)器。其實,定時/計數(shù)器的核心是一個加1的計數(shù)器,脈沖的來源有兩個:一個是由系統(tǒng)的晶振器的脈沖提供;另一個是由外部脈沖源提供。這就是51單片機(jī)中定時/計數(shù)器 的定時功能和計數(shù)功能的區(qū)別。每來一個脈沖則加1計數(shù),當(dāng)計數(shù)器記錄為全1時,再來一個脈沖就會使計數(shù)器回到0;并且計數(shù)器的溢出會在TCON寄存器中的TF0(或TF1)置位為1,向CPU發(fā)出中
49、斷請求。如果定時/計數(shù)器工作于定時模式,則表示定時時間已到16。定時器的定時時間不僅與初始值有關(guān),而且還與系統(tǒng)的時鐘頻率有關(guān),所以在設(shè)計中要根據(jù)時鐘頻率設(shè)置定時器的初值。定時/計數(shù)器有兩個控制寄存器,TMOD和TCON。TMOD用于控制定時/計數(shù)器的工作方式,選擇定時或者計數(shù)的功能;TCON用于控制定時/計數(shù)器的啟動和停止,并控制定時/計數(shù)器的工作狀態(tài)等;啟動定時/計數(shù)器開始工作之前,需要定義定時/計數(shù)器的工作方式,同時對TL0、TH0及TL1、TH1進(jìn)行初始化編程17。液位控制系統(tǒng)的顯示需要定時18ms,所以采用方式1,16位定時/計數(shù)器,16位定時/計數(shù)器最大容量是65536,大約65ms
50、,所以不能直接定時18ms,因此加入了一個計算次數(shù)的變量count,使定時器定時18ms。定時器初始值的計算:液位控制系統(tǒng)使用單片機(jī)的晶振頻率是12MHz,并且16位定時/計數(shù)器是由TH0、TH1兩個8位寄存器組成的,所以為了定時18ms,可以計算:TH0=(65536-9000)/256; /給定時器的高8位賦初始值TL0=(65536-9000)%256; /給定時器的低8位賦初始值給定時器設(shè)置的初始值是9ms,使用count作為中斷次數(shù)變量。當(dāng)每次中斷溢出后,AT89C51單片機(jī)就會執(zhí)行中斷子程序,變量count加1。當(dāng)count增加到2時(總時長是29ms=18ms),則定時時間18m
51、s到,可以執(zhí)行相應(yīng)的顯示程序。根據(jù)以上原理編寫的程序如下:/選擇使用定時器0并且設(shè)置其工作方式為1 TMOD=0X01;/給定時器0賦初始值為50ms TH0=(65536-9000)/256; / TL0=(65536-9000)%256; EA=1; /開總中斷 ET0=1;/開定時/計數(shù)器0中斷 TR0=1;/啟動定時/計數(shù)器0/定時器0中斷延時子程序void timer0() interrupt 1/重新給定時器賦初始值 TH0=(65536-9000)/256; TL0=(65536-9000)%256; count+; /沒過50ms使count加1/到達(dá)指定的中斷次數(shù)后執(zhí)行響應(yīng)的
52、操作 if(count=2) count=0; /需要執(zhí)行的程序 display(AD_number); 4.5 鍵盤部分的軟件設(shè)計鍵盤的軟件設(shè)計流程框圖如圖4-2所示通過程序掃描查詢方式實現(xiàn)單片機(jī)鍵盤部分的軟件設(shè)計。通過單片機(jī)P2端口的高四位讀入按鍵狀態(tài),判斷四個按鍵中哪個按鍵被按下。鍵盤部分編寫程序如下。temp=P2|0 x0f; /讀取P2口/判斷有無按鍵按下 if(temp!=0 xff)delay(500); /延時再判斷其的狀態(tài) /判斷是否真的有按鍵按下,否則退出 if(temp=0 xff|reset=1)當(dāng)有按鍵按下時,相應(yīng)的單片機(jī)P2端口的高四位的某一位變?yōu)榈碗娖?,而未被?/p>
53、下的按鍵仍為高電平。通過讀取單片機(jī)P2端口的高四位的狀態(tài),根據(jù)端口狀態(tài)判斷是否有按鍵按下。但是只進(jìn)行一次按鍵判斷是不夠的,還需要判斷是否是鍵盤抖動帶來的影響,所以還需要再進(jìn)一步處理鍵盤的按鍵是否真的被按下,下面就介紹按鍵去抖動的原理。4.5.1 按鍵去抖動由于按鍵是利用機(jī)械觸點的閉合與斷開功能進(jìn)行工作的。因此,按鍵的按下與抬起一般都會有抖動的存在。為了獲得實時準(zhǔn)確真實的按鍵操作,必須去除抖動給按鍵掃描帶來的不穩(wěn)定影響,這是鍵盤軟件設(shè)計部分中一個極其重要環(huán)節(jié)。去抖動采用了延時掃描再讀取的方式,在檢測到有按鍵按下時,執(zhí)行一個延時程序后,再次進(jìn)行判斷該按鍵的閉合斷開狀態(tài),如果再次判斷保持閉合狀態(tài),則
54、可以被認(rèn)為是真正的按下了該按鍵。圖4-2 鍵盤控制流程圖4.5.2 按鍵功能實現(xiàn)MODE鍵功能實現(xiàn):通過按下MODE鍵,可以對顯示進(jìn)行切換,這是依靠設(shè)置標(biāo)志值實現(xiàn)的。ADD、SUBTRACT鍵功能實現(xiàn):在判斷是ADD鍵按下后,還需要判斷是水壓上限還是水壓下限需要增加,這就需要上一步MODE按下后設(shè)置的標(biāo)志high_pressure_flag和low_pressure_flag來判斷,為1則就是需要修改的參數(shù);SUBTRACT鍵的功能同ADD鍵。RESET鍵功能實現(xiàn):直接在確定是RESET鍵按下后,調(diào)用init()函數(shù),就可以對控制系統(tǒng)的參數(shù)進(jìn)行重置。4.6 顯示部分的軟件設(shè)計4位一體共陰極數(shù)碼
55、管的數(shù)據(jù)輸入只有4位,由4個數(shù)碼管公用。每次顯示數(shù)字時都要選中響應(yīng)的數(shù)碼管,才能在相應(yīng)的位置顯示想要的數(shù)字。因此,定義了一個數(shù)碼管位選擇編碼表“uchar code table”。在這里使用了延時函數(shù),在顯示部分中作為延時使用,用以動態(tài)顯示。表4-3 數(shù)碼管字形編碼表顯示字符共陰極段碼顯示字符共陰極段碼0FCH8FEH160H9F6H2DAH10EEH3F2HA3EH466HB9CH5B6HC7AH6BEHD9EH7E0HE8EH如表4-3所示,要使數(shù)碼管顯示出指定的數(shù)字(在本控制系統(tǒng)中是水壓),必須使單片機(jī)的P1口輸出相應(yīng)的字形編碼信號。根據(jù)圖3-9,字型碼各位定義為:數(shù)據(jù)接口P1.7與a字
56、段對應(yīng),依此類推。使用共陰極數(shù)碼管,輸出位為0表示對應(yīng)字段顯示暗,輸出位為1表示對應(yīng)字段顯示亮。如果要顯示“0”,共陰極數(shù)碼管的字型編碼應(yīng)為:11111100B(即FCH),依此類推。4.7 水位監(jiān)測和報警電路的軟件設(shè)計當(dāng)系統(tǒng)出現(xiàn)異常時,可以調(diào)用報警器函數(shù),使液位控制系統(tǒng)報警;實現(xiàn)報警器的控制方法很簡單,只需要這條語句就可以改變報警器的狀態(tài): buzzer=1;buzzer=1;報警器發(fā)出聲響;buzzer=0;報警器不響對液位進(jìn)行檢測和處理同樣寫成了函數(shù),供系統(tǒng)調(diào)用;為保證設(shè)計的嚴(yán)謹(jǐn)性,液位在控制過程中有以下五種情形:1. 正常情況下 level_high=1&level_low=0;這樣水
57、位就在指定的范圍內(nèi),否則就出現(xiàn)異常情況2. if(level_high=0&level_low=0) 這是水位偏高的情況,返回標(biāo)志值 return 2;3. if(level_high=1&level_low=1) 這是水位偏低的情況,返回標(biāo)志值 return 1;4.if(level_high=0&level_low=1) 5.硬件損壞,必須報警進(jìn)行提醒操作buzzer_control();水位監(jiān)測正常,什么也不做,返回標(biāo)志值 return 0;4.8 驅(qū)動電路的軟件設(shè)計將驅(qū)動電路部分的程序設(shè)計成函數(shù),驅(qū)動電路函數(shù)主要是用來控制抽水電機(jī)(motor1)和排水電機(jī)(motor2)的,需要兩個參
58、數(shù),一個是實時水壓數(shù)據(jù)tmp,另外一個是水位數(shù)據(jù)level_condition;可以根據(jù)這兩個參數(shù)對電機(jī)進(jìn)行控制,對電機(jī)的控制情況分為以下三種情形:1. if(tmppressure_high)|(level_condition=2) 這是水壓過高或者是液位為高的情況,其中l(wèi)evel_condition=2這個值是經(jīng)過液位函數(shù)處理后的一個標(biāo)志的值,表明液位是過高的情況,所以需要排水,故令 motor2=1;motor1=0;2. if(tmppressure_low)|(level_condition=1)這是水壓過低或者是液位為低的情況,其中l(wèi)evel_condition=1這個值是經(jīng)過液位
59、函數(shù)處理后的一個標(biāo)志的值,表明液位是過低的情況,所以需要排水,故令 motor2=0;motor1=1;3. 默認(rèn)情況下水壓和液位在正常范圍內(nèi)就無需對電機(jī)進(jìn)行處理,所以 motor1=0;motor2=0;第5章 系統(tǒng)調(diào)試與仿真結(jié)果5.1 系統(tǒng)調(diào)試在液位控制系統(tǒng)設(shè)計過程中,不可避免的會遇到一些無法預(yù)知問題,只有對控制系統(tǒng)進(jìn)行良好的設(shè)計,才能順利的解決這些問題;通過對硬件電路的設(shè)計以及對單片機(jī)軟件分模塊的設(shè)計,不僅方便系統(tǒng)結(jié)構(gòu)功能的擴(kuò)展和重組,而且可以快捷的找到系統(tǒng)在設(shè)計過程中出現(xiàn)的錯誤和有效的解決遇到的指定問題;同時,對控制系統(tǒng)的調(diào)試不可或缺,只有不斷地發(fā)現(xiàn)問題,和采取合適的措施解決問題才能使
60、控制系統(tǒng)變得更加完善。本液位控制系統(tǒng)的調(diào)試主要分為硬件調(diào)試和軟件調(diào)試兩大部分,硬件電路的調(diào)試可以根據(jù)軟件仿真的結(jié)果進(jìn)行判斷和處理,軟件調(diào)試是最為重要的部分,系統(tǒng)邏輯功能的實現(xiàn)全靠軟件部分的正確編寫。可以在程序設(shè)計無誤的情況下,結(jié)合單片機(jī)硬件仿真,檢測實驗結(jié)果是否正常,如果不正常則需要修改原來編寫的程序,并進(jìn)行調(diào)試和檢查仿真結(jié)果。在單片機(jī)液位控制系統(tǒng)設(shè)計中遇到的問題以及解決方案如下介紹。(1) A/D轉(zhuǎn)換不正常本設(shè)計需要將來自A/D轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行實時顯示和處理,在設(shè)計過程中,A/D轉(zhuǎn)換的結(jié)果通過四位一體數(shù)碼管始終為0;這是不正常的結(jié)果,在顯示部分設(shè)計正確的情況下,判斷A/D轉(zhuǎn)換異常,然后對A/
61、D轉(zhuǎn)換電路和軟件設(shè)計部分進(jìn)行的檢查和調(diào)試,最終發(fā)現(xiàn)是軟件設(shè)計的錯誤,軟件沒有正確的開啟A/D轉(zhuǎn)換,在對程序調(diào)整后,使A/D轉(zhuǎn)換在系統(tǒng)啟動時開啟,并實時轉(zhuǎn)換來自于水壓傳感器的數(shù)據(jù),最后由數(shù)碼管顯示器顯示實時水壓數(shù)據(jù)。(2) 鍵盤操作功能不能完全按照要求實現(xiàn)經(jīng)過檢查,這一部分的硬件設(shè)計完全沒有問題,設(shè)計中簡單的使用了四個獨立的功能按鍵,其中第二個“模式”鍵并沒有按照編寫的邏輯代碼執(zhí)行,在按下“模式”鍵進(jìn)行切換后,應(yīng)該轉(zhuǎn)到水壓上限和水壓下限數(shù)據(jù)的處理和顯示,但是顯示的始終是水壓上限,這說明“模式”鍵的切換不正常,在經(jīng)過一番調(diào)試后,發(fā)現(xiàn)對按鍵進(jìn)行判斷處理的程序沒有進(jìn)行延時處理才導(dǎo)致程序執(zhí)行異常。(3)
62、 對電機(jī)的控制出現(xiàn)了不合邏輯的問題軟件代碼問題,邏輯與、或、非編寫錯誤,更改后正常。5.2 仿真結(jié)果5.2.1 水壓仿真測試表5-1 水壓仿真測試結(jié)果測試內(nèi)容測試結(jié)果(水壓:單位Pa)初始狀態(tài)顯示0000A/D轉(zhuǎn)換時的顯示XXXX(實時顯示水壓數(shù)據(jù))RESET鍵按下顯示0000MODE鍵按下一次顯示MODE鍵按下兩次顯示MODE鍵按下三次顯示ADD鍵按下顯示SUBTRACT鍵按下顯示3456(水壓下限)5678(水壓上限)XXXX(實時顯示水壓數(shù)據(jù))水壓上限或者下限加1水壓上限或者下限減1液位控制系統(tǒng)的四位一體共陰極數(shù)碼管在系統(tǒng)開始啟動的初始狀態(tài)顯示水壓為0000Pa,表示系統(tǒng)剛開始運(yùn)行,會首先執(zhí)行init()函數(shù);在A/D轉(zhuǎn)換過程中數(shù)碼管顯示XXXX(Pa),“XXXX”表示數(shù)碼管正在顯示的水壓值,因為是變化的值
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。