基于單片機(jī)的液位控制系統(tǒng)設(shè)計(jì)的-畢業(yè)設(shè)計(jì)論文.doc
《基于單片機(jī)的液位控制系統(tǒng)設(shè)計(jì)的-畢業(yè)設(shè)計(jì)論文.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的液位控制系統(tǒng)設(shè)計(jì)的-畢業(yè)設(shè)計(jì)論文.doc(41頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、摘 要本課題是基于單片機(jī)的液位控制系統(tǒng)的設(shè)計(jì),使用在日常生活和工業(yè)應(yīng)用中廣泛應(yīng)用的水塔作為被控裝置,水塔液位和水壓作為被控對(duì)象;本設(shè)計(jì)采用液位檢測(cè)裝置和電容式差壓變送器對(duì)液位高度和壓力進(jìn)行實(shí)時(shí)檢測(cè)并傳送到單片機(jī)進(jìn)行實(shí)時(shí)處理,從而使水塔水位自動(dòng)保持在指定的范圍。其中,液位控制系統(tǒng)的硬件電路主要包括水位和水壓檢測(cè)電路、A/D轉(zhuǎn)換電路、鍵盤顯示電路、報(bào)警電路、電機(jī)控制電路等五大部分;該系統(tǒng)使用電容式差壓變送器對(duì)水塔水壓進(jìn)行檢測(cè)并將檢測(cè)到的信號(hào)送給A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器將對(duì)應(yīng)的模擬電壓信號(hào)轉(zhuǎn)換成數(shù)字量傳給單片機(jī)AT89C51進(jìn)行處理,單片機(jī)將處理的結(jié)果通過(guò)數(shù)碼管顯示出來(lái),并完成對(duì)排水、抽水電動(dòng)機(jī)的
2、控制;在單片機(jī)進(jìn)行實(shí)時(shí)處理的同時(shí),可以通過(guò)按鍵對(duì)控制系統(tǒng)進(jìn)行相應(yīng)的功能切換。該系統(tǒng)各個(gè)部分的硬件電路采用C51語(yǔ)言編寫(xiě)控制程序,從而實(shí)現(xiàn)使用鍵盤調(diào)整被控參數(shù)水壓的上、下限以及軟件復(fù)位功能;利用四位一體共陰極數(shù)碼管顯示水壓;通過(guò)邏輯代碼達(dá)到對(duì)電機(jī)控制電路的控制,使電機(jī)在一定的條件下進(jìn)行抽水或者排水操作;最終使被控對(duì)象被控制在指定的水位和水壓范圍內(nèi)。在將系統(tǒng)的硬件電路設(shè)計(jì)和軟件程序設(shè)計(jì)完成后,需要將硬件電路部分和軟件程序部分結(jié)合起來(lái)進(jìn)行液位控制系統(tǒng)的調(diào)試,如果發(fā)現(xiàn)問(wèn)題,就需要找到合適的解決方案,修改錯(cuò)誤的部分;并且將這兩者結(jié)合進(jìn)行液位控制系統(tǒng)仿真結(jié)果的測(cè)試,觀察實(shí)驗(yàn)的結(jié)果是否符合課題的設(shè)計(jì)要求,不
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 國(guó)內(nèi)外的研究動(dòng)態(tài)21.3 課題的目的和預(yù)期目標(biāo)3第2章 系統(tǒng)整體方案設(shè)計(jì)4第3章 硬件電路設(shè)計(jì)63.1 AT89C51單片機(jī)63.1.1 單片機(jī)的功能和特點(diǎn)63.1.2 時(shí)鐘和復(fù)位電路83.2 水位檢測(cè)電路和水壓檢測(cè)電路93.2.1 水壓檢測(cè)電路以及控制儀表93.2.2 水位檢測(cè)電路103.3 A/D轉(zhuǎn)換設(shè)計(jì)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 報(bào)警電路173.6 電機(jī)控
12、制18第4章 軟件設(shè)計(jì)194.1 軟件語(yǔ)言的選擇194.2 系統(tǒng)主程序和初始化函數(shù)194.3 A/D轉(zhuǎn)換和水壓的數(shù)據(jù)處理204.4 延時(shí)處理214.5 鍵盤部分的軟件設(shè)計(jì)244.5.1 按鍵去抖動(dòng)244.5.2 按鍵功能實(shí)現(xiàn)264.6 顯示部分的軟件設(shè)計(jì)264.7 水位監(jiān)測(cè)和報(bào)警電路的軟件設(shè)計(jì)274.8 驅(qū)動(dòng)電路的軟件設(shè)計(jì)28第5章 系統(tǒng)調(diào)試與仿真結(jié)果295.1 系統(tǒng)調(diào)試295.2 仿真結(jié)果305.2.1 水壓仿真測(cè)試305.2.2 水位仿真測(cè)試31第6章 結(jié)論32參 考 文 獻(xiàn)33致 謝34附 錄35 IV沈陽(yáng)工業(yè)大學(xué)本科生畢業(yè)設(shè)計(jì)第1章 緒論1.1 課題的意義隨著很多行業(yè)對(duì)液位控制的需求日
13、益增加,液位和液壓控制技術(shù)正在不斷發(fā)展。為了增加控制功能、提高生產(chǎn)效率,采用AT89C51單片機(jī)進(jìn)行液位和液壓的控制技術(shù)得到了廣泛的應(yīng)用。不論是在工業(yè)生產(chǎn)過(guò)程中,還是在農(nóng)業(yè)和其他行業(yè)生產(chǎn)過(guò)程中,水塔都是生產(chǎn)生活中不可或缺的控制裝置設(shè)備,所以水塔的液位控制就是我們面臨的嚴(yán)峻問(wèn)題之一。在我國(guó)液位技術(shù)需求迅猛上升之前,液位的控制需要人來(lái)進(jìn)行看管,這不但降低了勞動(dòng)生產(chǎn)率,而且還不能高效和精確地將水位和水壓控制在一個(gè)指定的范圍內(nèi)。正因?yàn)檫@些各種方面的原因,所以采用單片機(jī)控制水塔的水位和水壓的控制方案就達(dá)到了這一基本要求,并且解決了這一重要問(wèn)題。液位控制作為過(guò)程控制研究領(lǐng)域重要的課題之一,它不僅在生產(chǎn)生活
14、中占有相當(dāng)大的比例,而且人們對(duì)液位控制的需要和要求越來(lái)越多,多功能的液位控制系統(tǒng)就為了滿足這一情況而進(jìn)行設(shè)計(jì)的。多功能的液位控制相比較傳統(tǒng)的機(jī)械液位控制系統(tǒng)有無(wú)可比擬的優(yōu)勢(shì);首先,多功能的液位控制系統(tǒng)在功能上比機(jī)械液位控制系統(tǒng)要多了不少,不僅是傳統(tǒng)意義上的液位控制而已,還增加了水壓的顯示顯示功能和鍵盤對(duì)液壓的控制切換功能;其次,多功能的液位控制系統(tǒng)在控制速度上比機(jī)械液位控制系統(tǒng)要快了不少,機(jī)械液位控制系統(tǒng)依靠傳統(tǒng)的機(jī)械杠桿進(jìn)行移動(dòng)產(chǎn)生位移會(huì)有一定的機(jī)械延遲,從而增加了滯后時(shí)間,然而采用單片機(jī)進(jìn)行液位控制的系統(tǒng)使用了A/D轉(zhuǎn)換器,采樣頻率相較于機(jī)械液位控制系統(tǒng)較高,可以對(duì)液位控制系統(tǒng)進(jìn)行快速控制
15、;再次,機(jī)械液位控制系統(tǒng)需要進(jìn)行零點(diǎn)值和滿度值進(jìn)行反復(fù)的調(diào)整1,而多功能的液位控制系統(tǒng)不用對(duì)其進(jìn)行反復(fù)的調(diào)整,只要進(jìn)行過(guò)零點(diǎn)調(diào)整,就無(wú)需進(jìn)行反復(fù)設(shè)置;最后,多功能的液位控制系統(tǒng)無(wú)需人為手動(dòng)的調(diào)整液位,直接通過(guò)控制電機(jī)達(dá)到控制液位的效果,相較于機(jī)械液位控制系統(tǒng)節(jié)省了勞動(dòng)力成本,同時(shí)提高了生成過(guò)程中控制的效率。多功能的液位控制系統(tǒng)將使用AT89C51單片機(jī)作為核心處理器,方便對(duì)整個(gè)液位控制系統(tǒng)的調(diào)度和操作,它具有一定的可靠性、穩(wěn)定性和準(zhǔn)確性。使用單片機(jī)實(shí)現(xiàn)多功能的液位控制系統(tǒng)不僅可以減少簡(jiǎn)單液位控制的控制成本,而且可以提高用戶的可操作性,方便用戶對(duì)液位控制系統(tǒng)的控制。因此本課題采用AT89C51單
16、片機(jī)控制水塔的液位相比于以前的控制方式將會(huì)有更大的性能和控制操作的提升。目前,雖然市場(chǎng)上的液位控制系統(tǒng)種類繁多,但是掌握液位控制系統(tǒng)關(guān)鍵核心技術(shù)對(duì)我們有很多好處,有助于我們更有效率和安全地進(jìn)行生產(chǎn)生活,而且,對(duì)液位變化進(jìn)行分析并采集大量數(shù)據(jù),找出數(shù)據(jù)經(jīng)常變化的位置,這些數(shù)據(jù)將會(huì)幫助我們實(shí)現(xiàn)更加快速和穩(wěn)定的控制系統(tǒng)。1.2 國(guó)內(nèi)外的研究動(dòng)態(tài)很多歐美的發(fā)達(dá)國(guó)家在液位控制系統(tǒng)的設(shè)計(jì)中,特別是液位控制系統(tǒng),已經(jīng)積累了很多的經(jīng)驗(yàn),具有堅(jiān)實(shí)的基礎(chǔ),所以歐美的發(fā)達(dá)國(guó)家的液位控制系統(tǒng)迅速占領(lǐng)了國(guó)際市場(chǎng)。我國(guó)在液位控制系統(tǒng)的研究和制造上,與其他發(fā)達(dá)國(guó)家相比還存在一定差距;但是,我們國(guó)家的研究人員在液位控制系統(tǒng)研
17、究的道路上克服了許多未知困難,在探索中不斷前進(jìn),希望在相關(guān)封鎖的技術(shù)領(lǐng)域有所突破,甚至超過(guò)發(fā)達(dá)國(guó)家的控制技術(shù)水平使我國(guó)的液位控制技術(shù)領(lǐng)先于全世界。然而,在液位控制系統(tǒng)中,液位測(cè)量是液位控制技術(shù)非常重要的一項(xiàng)步驟,依據(jù)測(cè)量的工作原理,液位測(cè)量分為直讀式液位測(cè)量、浮力式液位測(cè)量、電氣式液位測(cè)量等。直讀式液位測(cè)量是利用連通器的原理測(cè)量液位,浮力式液位測(cè)量利用浮力原理測(cè)量液位,分為恒浮力和變浮力兩種2。電氣式測(cè)量法測(cè)量液位是將液位的變化轉(zhuǎn)換為某些電量的變化,從而實(shí)現(xiàn)液位檢測(cè);一般,把敏感元件做成的桿狀電極置于被測(cè)物質(zhì)中,則電極的電氣參數(shù),隨著液位的變化而變化;電氣式測(cè)量液位又分為電極式、電容式、電感式
18、等3。除了液位測(cè)量以外,液壓的測(cè)量也是液位控制技術(shù)不可缺少的部分,測(cè)量壓力一般使用差壓變送器,可以將420mA的電流遠(yuǎn)傳到控制室,方便對(duì)控制裝置的統(tǒng)一管理。國(guó)外發(fā)達(dá)國(guó)家的控制方式已經(jīng)由集散控制系統(tǒng)發(fā)展到了現(xiàn)場(chǎng)總線技術(shù),現(xiàn)場(chǎng)總線技術(shù)的發(fā)展使得自動(dòng)化控制技術(shù)發(fā)生了變革。信息技術(shù)現(xiàn)在正融入到生產(chǎn)現(xiàn)場(chǎng),新型的現(xiàn)場(chǎng)總線技術(shù)克服了系統(tǒng)封閉帶來(lái)的缺陷,提高了信號(hào)測(cè)量準(zhǔn)確度和傳輸精度,同時(shí)可以進(jìn)行多種復(fù)雜的控制運(yùn)算,提高系統(tǒng)的可靠性。不僅如此,現(xiàn)場(chǎng)總線技術(shù)還便于操作管理人員更好、更深入地了解生產(chǎn)現(xiàn)場(chǎng)和自動(dòng)控制裝置的運(yùn)行狀態(tài)。1.3 課題的目的和預(yù)期目標(biāo)本課題是通過(guò)單片機(jī)作為系統(tǒng)核心達(dá)到控制液位的目的。本設(shè)計(jì)采
19、用液位檢測(cè)裝置和電容式差壓變送器對(duì)液位高度和壓力進(jìn)行實(shí)時(shí)監(jiān)控并進(jìn)行實(shí)時(shí)處理,從而使水塔水位自動(dòng)保持在指定的范圍。其中,液位控制系統(tǒng)的硬件電路主要包括水位和水壓檢測(cè)電路、A/D轉(zhuǎn)換電路、鍵盤顯示電路、報(bào)警電路、電機(jī)控制電路等五大部分;該系統(tǒng)使用電容式差壓變送器對(duì)水塔水壓進(jìn)行檢測(cè)并將檢測(cè)到的信號(hào)送給A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器將對(duì)應(yīng)的模擬電壓信號(hào)轉(zhuǎn)換成數(shù)字量傳給單片機(jī)AT89C51進(jìn)行處理,單片機(jī)將處理的結(jié)果通過(guò)數(shù)碼管顯示出來(lái),并完成對(duì)排水、抽水電動(dòng)機(jī)的控制;在單片機(jī)進(jìn)行實(shí)時(shí)處理的同時(shí),可以通過(guò)按鍵對(duì)控制系統(tǒng)進(jìn)行相應(yīng)的功能切換。本設(shè)計(jì)的模型是基于水塔控制裝置,以1m的水塔的液位和液壓作為被控對(duì)象,液
20、位范圍是(0-100cm),液壓范圍是(0-9980Pa),實(shí)現(xiàn)液位和液壓被控制在指定的范圍內(nèi)。本系統(tǒng)的軟件部分采用C51語(yǔ)言編寫(xiě)控制程序,從而實(shí)現(xiàn)使用鍵盤調(diào)整被控參數(shù)水壓的上、下限以及軟件復(fù)位功能;利用四位一體共陰極數(shù)碼管顯示水壓;通過(guò)邏輯代碼達(dá)到對(duì)電機(jī)控制電路的控制,使電機(jī)在一定的條件下進(jìn)行抽水和排水操作;最終使被控對(duì)象被控制在指定的水位和水壓范圍內(nèi)。本課題的水位控制技術(shù)采用液位傳感器和壓力傳感器對(duì)液位高度和壓力進(jìn)行實(shí)時(shí)監(jiān)控;預(yù)期目標(biāo)是:當(dāng)水位和壓力超出規(guī)定范圍時(shí),系統(tǒng)能夠自動(dòng)調(diào)整水位和水壓,使其落在規(guī)定的范圍內(nèi);當(dāng)水位和水壓低于規(guī)定范圍時(shí),就控制水泵工作抽水,使水塔內(nèi)的水位和水壓上升,到
21、達(dá)規(guī)定高度。而達(dá)到不用人工專門去控制即可使水位保持在一定范圍內(nèi)的目的。第2章 系統(tǒng)整體方案設(shè)計(jì)在生產(chǎn)生活中有很多種方式可以對(duì)液位和液壓進(jìn)行控制,但是使用比較常見(jiàn)的有兩種控制方式,一個(gè)是基于機(jī)械的簡(jiǎn)單控制方法,另一個(gè)是基于控制器的復(fù)雜控制方法。 現(xiàn)在介紹這兩種控制方式的區(qū)別和原理。(1)基于機(jī)械的簡(jiǎn)單控制方法。可以使用的實(shí)現(xiàn)方式有浮標(biāo)式、電極式等,基于機(jī)械的簡(jiǎn)單控制方式的優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、成本低。但是缺點(diǎn)也很明顯,就是精度低、不能進(jìn)行數(shù)據(jù)實(shí)時(shí)顯示;另外,這種控制方式很容易引起誤操作,且只能單獨(dú)控制,不能與其他的計(jì)算機(jī)進(jìn)行數(shù)據(jù)交換,難以實(shí)現(xiàn)數(shù)據(jù)的采集和數(shù)據(jù)的分析以及對(duì)數(shù)據(jù)處理后的控制4。圖2-1 單
22、片機(jī)液位控制系統(tǒng)框圖(2)基于控制器的復(fù)雜控制方法?;诳刂破鞯膹?fù)雜控制方法是通過(guò)安裝在水塔下方安裝差壓變送器,把水塔底部的壓力首先轉(zhuǎn)換成變極距位移值的變化,然后再轉(zhuǎn)換成電阻、電容等電量值的變化,再經(jīng)過(guò)一些電路的處理,將這些電量值的變化轉(zhuǎn)換成標(biāo)準(zhǔn)電壓信號(hào)或者是電流信號(hào),再經(jīng)過(guò)多路切換、A/D轉(zhuǎn)換器將模擬信號(hào)變換成數(shù)字信號(hào)送到單片機(jī),然后單片機(jī)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算和處理5,通過(guò)相應(yīng)的邏輯實(shí)現(xiàn)單片機(jī)端口信號(hào)的變化,實(shí)現(xiàn)改變外圍裝置狀態(tài)的變化,最終達(dá)到控制水塔液位和液壓在指定范圍內(nèi)的目的。針對(duì)以上描述的兩種控制方法,以及綜合考慮本設(shè)計(jì)需要達(dá)到目的和要求。本設(shè)計(jì)選擇第二種基于控制器的復(fù)雜控制方法進(jìn)行液位和液
23、壓的控制,并且對(duì)其加以改進(jìn)。最終構(gòu)成的控制方案如圖2-1所示,本液位控制系統(tǒng)由單片機(jī)AT89C51、數(shù)碼管顯示器、報(bào)警器、鍵盤、變送器和其它基本外圍裝置組成。使用單片機(jī)作為液位控制系統(tǒng)的核心,設(shè)計(jì)出了一個(gè)對(duì)供水塔液位和液壓進(jìn)行實(shí)時(shí)監(jiān)測(cè)的系統(tǒng)。實(shí)時(shí)檢測(cè)水塔的液位高度和液壓的變化,將來(lái)自傳感器測(cè)量液壓和液位的信號(hào)經(jīng)過(guò)AD轉(zhuǎn)換或者測(cè)量電路的處理后送到單片機(jī)再進(jìn)行控制處理,由單片機(jī)控制外圍裝置,實(shí)現(xiàn)排水電機(jī)、抽水電機(jī)以及報(bào)警器等外圍裝置進(jìn)行實(shí)時(shí)動(dòng)作,達(dá)到對(duì)水塔的液位高度和液壓的調(diào)整,最終達(dá)到水塔的液位高度和液壓保持在要求的指定范圍內(nèi)。除此之外,本設(shè)計(jì)實(shí)時(shí)顯示測(cè)量的液壓值,從而實(shí)現(xiàn)對(duì)水塔水位的實(shí)時(shí)監(jiān)測(cè)。
24、同時(shí)可以利用鍵盤輸入需要控制液壓的上、下限和實(shí)現(xiàn)其他的控制功能。第3章 硬件電路設(shè)計(jì)液位控制系統(tǒng)的硬件主要由AT89C51單片機(jī),水位檢測(cè)電路,水壓檢測(cè)傳感器(使用變送器),報(bào)警電路,數(shù)碼管顯示電路,鍵盤輸入電路,電動(dòng)機(jī)控制電路,AD0809轉(zhuǎn)換器等組成。下面對(duì)各部分硬件電路進(jìn)行詳細(xì)介紹。3.1 AT89C51單片機(jī)3.1.1 單片機(jī)的功能和特點(diǎn)單片機(jī)采用由ATMEL公司生產(chǎn)的雙列40腳AT89C51芯片,芯片引腳如下圖3-1所示。其中,P0口用于A/D轉(zhuǎn)換;P1口作為數(shù)碼管的段選信號(hào);P2口的低四位給數(shù)碼管提供位選信號(hào),高四位用于連接鍵盤;P3口用于控制水泵的動(dòng)作,并且用于控制A/D轉(zhuǎn)換的啟
25、動(dòng)和停止,控制報(bào)警器以及用于讀取液位等。下面具體介紹各個(gè)接口的功能和特點(diǎn)。圖3-1 AT89C51單片機(jī)引腳圖P0口:?jiǎn)纹瑱C(jī)P0口有兩種使用方式,第一種是作為通用的I/O口使用,用于傳送單片機(jī)的輸入輸出數(shù)據(jù),此時(shí)的輸出可以得到緩存,輸入的數(shù)據(jù)可以得到緩沖,保證了數(shù)據(jù)輸入輸出的可靠性6。第二種是連接外部的存儲(chǔ)器,通過(guò)和單片機(jī)的P2口結(jié)合起來(lái)使用,單片機(jī)就可以訪問(wèn)外部存儲(chǔ)設(shè)備的數(shù)據(jù),可以對(duì)其進(jìn)行讀寫(xiě)操作7。P1口:?jiǎn)纹瑱C(jī)的P1口第一種使用方式和P0口一樣;P1口的第二種使用方式是作為8751編程/校驗(yàn)用于ROM的低8位地址。P2口:?jiǎn)纹瑱C(jī)的P2口第一種使用方式和P1口一樣;P2口的第二種使用方式是
26、和P0口結(jié)合起來(lái)使用,作為訪問(wèn)片外存儲(chǔ)器的高8位地址中的數(shù)據(jù)。表3-1 AT89C51端口引腳的第二功能端口號(hào)第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INTO(外中斷0)P3.3INT1(外中斷1)P3.4TO(定時(shí)/計(jì)數(shù)器0)P3.5T1(定時(shí)/計(jì)數(shù)器1)P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口:?jiǎn)纹瑱C(jī)P3口的第一種使用方式和P1口一樣;第二種使用方式是作為第二功能使用,每一個(gè)引腳都有各自的功能,可以作為控制液位控制系統(tǒng)的外圍裝置使用,如表3-1所示。RST:復(fù)位引腳。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平,
27、這些加到RST引腳的高電平會(huì)使AT89C51單片機(jī)復(fù)位。ALE/PROG:地址鎖存引腳。ALE引腳配合單片機(jī)的P0口的第二種使用方式工作。在訪問(wèn)外部存儲(chǔ)器時(shí),單片機(jī)除了在P0口輸出存儲(chǔ)器的地址,還在ALE引腳上輸出一個(gè)高電平;在沒(méi)有訪問(wèn)外部存儲(chǔ)器的情況下,單片機(jī)在ALE引腳輸出1/6時(shí)鐘頻率的脈沖。PSEN:外部程序存儲(chǔ)器的讀選通引腳。EA/VPP:外部訪問(wèn)允許引腳。EA=1,訪問(wèn)片內(nèi)存儲(chǔ)器;EA=0,訪問(wèn)外部存儲(chǔ)器。3.1.2 時(shí)鐘和復(fù)位電路1.時(shí)鐘電路如圖3-2所示,左邊的電路圖是單片機(jī)的片內(nèi)振蕩電路輸入線。XTAL1和XTAL2連接石英晶體和微調(diào)電容,同時(shí)連接單片機(jī)的片內(nèi)振蕩器的定時(shí)反饋
28、回路。石英晶振起振后,在XTAL2線上輸出一個(gè)3V左右的正弦波,以使單片機(jī)的片內(nèi)OSC電路按晶振同頻率自激振蕩。電容C1和C2幫助起振,調(diào)節(jié)這兩個(gè)電容的電容值以達(dá)到微調(diào)時(shí)鐘頻率的目的8。圖3-2 復(fù)位電路及時(shí)鐘電路(2) 復(fù)位電路復(fù)位電路可以分為上電復(fù)位和手動(dòng)按鍵復(fù)位兩種。單片機(jī)上電復(fù)位的原理是,在系統(tǒng)上電的一瞬間,利用電容兩端的電壓不能發(fā)生突變,在一上電的瞬間電容如同短路,加在RST引腳的電平是高電平,雖然時(shí)間很短,但足以讓單片機(jī)復(fù)位9。手動(dòng)按鍵復(fù)位的原理是,在系統(tǒng)正常工作的過(guò)程中可以手動(dòng)觸動(dòng)按鍵使單片機(jī)復(fù)位。按下按鍵,5V的電壓經(jīng)過(guò)一個(gè)200歐姆的電阻分壓后加到系統(tǒng)的RST上,手動(dòng)按鍵按下
29、到抬起的過(guò)程足以使系統(tǒng)復(fù)位10。圖3-2中網(wǎng)絡(luò)標(biāo)號(hào)RST連接單片機(jī)RST引腳,同時(shí)具有上述的兩種功能。3.2 水位檢測(cè)電路和水壓檢測(cè)電路3.2.1 水壓檢測(cè)電路以及控制儀表1. 電容式差壓變送器簡(jiǎn)介該變送器采用差動(dòng)電容作為檢測(cè)元件,完全沒(méi)有機(jī)械傳動(dòng)機(jī)構(gòu)和機(jī)械調(diào)整裝置,抗震性好、準(zhǔn)確度高,靜壓誤差小,其可靠性、穩(wěn)定性都較高,儀表準(zhǔn)確度為0.25-0.5級(jí)11。由于變送器采用集成放大器和現(xiàn)代電子工藝,參數(shù)調(diào)整通過(guò)電路完成,簡(jiǎn)單方便,且零點(diǎn)調(diào)整和量程調(diào)整互不影響。圖3-3 電容式差壓變送器實(shí)物圖電容式差壓變送器使用變極距的方法測(cè)量壓力差,實(shí)物圖如圖3-3所示。它是將被測(cè)壓力差引起的彈性元件的變形轉(zhuǎn)變
30、成電容量的變化,通過(guò)測(cè)量電容量的變化,便可知道被測(cè)壓力差大小。隔離膜片集成運(yùn)放測(cè)量電路活動(dòng)電極輸入差壓輸出電流位移電壓電容變化圖3-4 電容式差壓變送器原理圖變送器原理如圖3-4所示,從輸入電壓到電容變化是檢測(cè)部分,從電容變化到輸出電流是轉(zhuǎn)換部分。由檢測(cè)部分的差動(dòng)電容膜盒把被測(cè)壓力差轉(zhuǎn)換成電容量的變化,經(jīng)轉(zhuǎn)換部分把電容量的變化轉(zhuǎn)換為電壓,再由運(yùn)算放大器將電壓轉(zhuǎn)換成4-20mA標(biāo)準(zhǔn)信號(hào)輸出。3.2.2 水位檢測(cè)電路水位檢測(cè)電路結(jié)合了電路和機(jī)械兩個(gè)部分,其中電路部分如圖3-5所示,主要是通過(guò)一個(gè)開(kāi)關(guān)來(lái)檢測(cè)水位的位置,當(dāng)開(kāi)關(guān)閉合時(shí),說(shuō)明水位到達(dá)指定的水位,對(duì)應(yīng)單片機(jī)的P3.6或P3.7引腳檢測(cè)的電壓
31、是低電平;如果開(kāi)關(guān)斷開(kāi),表明水位沒(méi)有到達(dá)指定的位置,對(duì)應(yīng)單片機(jī)的P3.6或P3.7引腳檢測(cè)的電壓是高電平。圖3-5 水位檢測(cè)電路機(jī)械部分是根據(jù)水的浮力使浮球漂浮,從而使浮球產(chǎn)生位移,達(dá)到觸碰開(kāi)關(guān),實(shí)現(xiàn)電路部分開(kāi)關(guān)的開(kāi)、閉兩種狀態(tài);通過(guò)在液位控制裝置上設(shè)置浮球的位置,可以得到想要液位范圍,使水位保持指定的范圍內(nèi)。3.3 A/D轉(zhuǎn)換設(shè)計(jì)3.3.1 A/D轉(zhuǎn)換器介紹1. ADC0809轉(zhuǎn)換器概述 A/D轉(zhuǎn)換器是液位控制系統(tǒng)中最為重要的一個(gè)電子元件,它可以將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),變成單片機(jī)可以處理的數(shù)字信息。本設(shè)計(jì)考慮到液位控制系統(tǒng)進(jìn)行A/D轉(zhuǎn)換的各種要求,決定采用ADC0809進(jìn)行A/D轉(zhuǎn)換電路部
32、分的設(shè)計(jì),使用這種逐次逼近式A/D轉(zhuǎn)換器轉(zhuǎn)換速度比較圖3-6 ADC0809引腳圖快,造價(jià)成本比較低,可以滿足測(cè)量水壓的要求;ADC0809使用起來(lái)也比較簡(jiǎn)單,可以進(jìn)行多路的模擬信號(hào)的轉(zhuǎn)換,通過(guò)改變模擬信號(hào)輸入地址就可以實(shí)現(xiàn)這一功能;單片機(jī)只需要提供一個(gè)數(shù)據(jù)接收端口和少量的控制端口就可以對(duì)該芯片進(jìn)行控制和接收信號(hào)。ADC0809的引腳圖如圖3-6所示。單片機(jī)可以通過(guò)對(duì)與其連接的ADC0809轉(zhuǎn)換器的端口進(jìn)行讀取操作,通過(guò)ADC0809將輸入的模擬數(shù)據(jù),處理成數(shù)字信號(hào)輸出,單片機(jī)就可以獲得液位控制裝置的水壓數(shù)字量信號(hào);單片機(jī)將這一數(shù)字量進(jìn)行數(shù)學(xué)運(yùn)算處理,可以得到一個(gè)水壓值,經(jīng)過(guò)這些步驟,后續(xù)的鍵
33、盤以及顯示操作的功能才能被實(shí)現(xiàn)。ADC0809主要信號(hào)引腳的功能說(shuō)明如下表3-1所示。表3-1 ADC0809引腳功能ADC0809引腳ADC0809引腳的功能IN7-IN0模擬電壓輸入線ALE地址鎖存允許信號(hào)START轉(zhuǎn)換啟動(dòng)線。上升沿,復(fù)位芯片;下降沿,開(kāi)始轉(zhuǎn)換ADDA、ADDB和ADDC信號(hào)輸入地址線CLK時(shí)鐘輸入線。由外界提供頻率為500KHz的時(shí)鐘信號(hào)EOC轉(zhuǎn)換結(jié)束信號(hào)。D7-D0數(shù)據(jù)輸出線OE輸出允許信號(hào)。控制輸出轉(zhuǎn)換的數(shù)據(jù)Vcc+5V電源Vref參考電壓線2. A/D轉(zhuǎn)換數(shù)據(jù)傳送方式A/D轉(zhuǎn)換器經(jīng)過(guò)轉(zhuǎn)換后,應(yīng)及時(shí)把轉(zhuǎn)換后的數(shù)據(jù)送到單片機(jī)的P0端口,單片機(jī)才能對(duì)這個(gè)數(shù)據(jù)繼續(xù)進(jìn)行處理
34、。所以知道ADC0809轉(zhuǎn)換器何時(shí)完成A/D轉(zhuǎn)換是非常重要的,單片機(jī)有3種方式判斷A/D轉(zhuǎn)換是否完成。(1) 定時(shí)傳送方式任何一個(gè)ADC轉(zhuǎn)換器的轉(zhuǎn)換時(shí)間都有一個(gè)固定值,可以使單片機(jī)通過(guò)定時(shí)程序中斷,到達(dá)這個(gè)固定時(shí)間值去取轉(zhuǎn)換后的數(shù)據(jù)。(2) 查詢方式AT89C51單片機(jī)通過(guò)不斷地查詢ADC0809的EOC引腳的狀態(tài)就可以判斷轉(zhuǎn)換是否完成。(3) 中斷方式將ADC0809的EOC引腳連接到單片機(jī)的P3口,讓單片機(jī)的P3口以第二種使用方式工作,轉(zhuǎn)換時(shí)間到會(huì)給單片機(jī)發(fā)送中斷請(qǐng)求信號(hào),以中斷方式判斷轉(zhuǎn)換是否完成。3. ADC0809的工作過(guò)程首先輸入3位地址ADDA、ADDB、ADDC,并使ALE=1
35、,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入線中的一個(gè)到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行,直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平時(shí),輸出三態(tài)門打開(kāi),轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上12。3.3.2 A/D轉(zhuǎn)換電路本設(shè)計(jì)的液位控制系統(tǒng)中的A/D轉(zhuǎn)換器采用的是ADC0808,它與ADC0809的功能沒(méi)有太大差別,使用ADC0808進(jìn)行液位控制系統(tǒng)的仿真測(cè)試。圖3-7 A/D轉(zhuǎn)換電路ADC0808與AT89C51單片機(jī)的電路連接
36、圖如圖3-7所示,本設(shè)計(jì)使用的是查詢方式;ADC0808的頻率由一個(gè)外部脈沖源提供其所需要的500kHz;模擬輸入通道選擇IN0,所以ADDA,ADDB ADDC都是0,表明選擇的輸入通道是IN0;ALE接地,使000地址鎖存起來(lái);參考電壓為+5V;數(shù)字量輸出通道連接到單片機(jī)的P0口;開(kāi)啟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與其連接在一起用于獲取來(lái)自ADC0809轉(zhuǎn)換器的數(shù)字信號(hào)。3.4 數(shù)碼管顯示和鍵盤電路數(shù)碼管顯示電路和鍵盤
37、電路一起進(jìn)行設(shè)計(jì),數(shù)碼管顯示電路由四位一體共陽(yáng)極數(shù)碼管組成,分為動(dòng)態(tài)顯示和靜態(tài)顯示,為了系統(tǒng)的優(yōu)化和省電,本設(shè)計(jì)采用動(dòng)態(tài)顯示。鍵盤電路采用常用的鍵盤電路設(shè)計(jì),本設(shè)計(jì)使用獨(dú)立式鍵盤設(shè)計(jì),用以實(shí)現(xiàn)液位控制系統(tǒng)的用戶操作功能。3.4.1 鍵盤電路圖3-8 鍵盤電路鍵盤電路是液位控制系統(tǒng)中一個(gè)比較重要的組成部分,它不僅可以實(shí)現(xiàn)向該控制系統(tǒng)中的單片機(jī)發(fā)送命令的功能,而且還可以向該控制系統(tǒng)輸入信號(hào)改變液位控制系統(tǒng)參數(shù)。鍵盤電路是人與液位控制系統(tǒng)進(jìn)行交互的重要工具。結(jié)合液位控制系統(tǒng)設(shè)計(jì)的實(shí)際情況,故采用獨(dú)立式鍵盤接口電路,而非矩陣式鍵盤設(shè)計(jì)。獨(dú)立式鍵盤是將每一個(gè)獨(dú)立的按鍵直接接到單片機(jī)指定的I/O口上,每個(gè)
38、按鍵連接單片機(jī)一個(gè)引腳,這是在液位控制系統(tǒng)使用鍵盤非常少才采用的設(shè)計(jì)方案。當(dāng)鍵盤的按鍵按下時(shí),需要向單片機(jī)發(fā)送一個(gè)信號(hào),通知單片機(jī)用戶按下了按鍵,需要單片機(jī)對(duì)該按鍵的功能進(jìn)行響應(yīng)。獨(dú)立式鍵盤的信號(hào)檢測(cè)是通過(guò)單片機(jī)指定的I/O口的狀態(tài)變化實(shí)現(xiàn)的,通過(guò)如圖3-8所示的鍵盤電路設(shè)計(jì),可以使連接的單片機(jī)P2端口的高四位的狀態(tài)發(fā)生變化。按下按鍵,這些接口的狀態(tài)就變成了低電平;松開(kāi)按鍵,這些接口的狀態(tài)就變成了高電平;利用這一原理,就可以方便的編寫(xiě)程序?qū)崿F(xiàn)相應(yīng)的功能了。其中,MODE、ADD、SUBTRACT不僅是用來(lái)控制顯示用的按鍵,主要功能是改變水塔被控水壓的范圍。可以通過(guò)ADD、SUBTRACT實(shí)現(xiàn)對(duì)
39、高低警戒水壓的設(shè)置。具體來(lái)說(shuō),ADD、SUBTRACT分別實(shí)現(xiàn)數(shù)字的增一與減一,MODE、RESET則作為模式選擇和重置鍵。重置鍵會(huì)讓液位控制系統(tǒng)回到初始化狀態(tài),模式選擇鍵是選擇水壓上限還是水壓下限。3.4.2 數(shù)碼管顯示電路本設(shè)計(jì)采用四位一體共陰極數(shù)碼管。它的每一位發(fā)光段,分別是A-G段和DP段,分別按照字母順序與單片機(jī)的P1口連接;每一位數(shù)碼管1,2,3,4同樣按照順序與單片機(jī)的P2口的低四位連接。1. 數(shù)碼管簡(jiǎn)介數(shù)碼管是由發(fā)光二極管構(gòu)成的發(fā)光顯示元件。單片機(jī)將指定的數(shù)據(jù)進(jìn)行處理后,將在與四位一體共陰極數(shù)碼管連接的I/O上輸出一些數(shù)字信號(hào),用于驅(qū)動(dòng)數(shù)碼管中的發(fā)光二極管,使發(fā)光二極管發(fā)生亮滅
40、13。這些指定的數(shù)字信號(hào)需要在程序中進(jìn)行編碼,具體的編碼詳見(jiàn)本設(shè)計(jì)的軟件部分。它的引腳以及與外部的連接如圖3-9所示。數(shù)碼管又分為兩種顯示方式,下面分別介紹共陰極和共陽(yáng)極這兩種方式。圖3-9 數(shù)碼管顯示電路2. 數(shù)碼管的顯示方式數(shù)碼管要正常顯示就要使數(shù)碼管的各個(gè)段的做出相應(yīng)的亮滅,從而顯示出待顯示的數(shù)字。因此,根據(jù)單片機(jī)對(duì)它的驅(qū)動(dòng)方式不同,可以分為以下兩種方式工作。(1) 靜態(tài)顯示:靜態(tài)顯示是將數(shù)碼管的每一個(gè)段選線都都連接到單片機(jī)的引腳上,由單片機(jī)對(duì)其驅(qū)動(dòng),控制其顯示。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,但占用單片機(jī)的引腳多,能耗高,不利于高效使用單片機(jī)。(2) 動(dòng)態(tài)顯示:數(shù)碼管的動(dòng)態(tài)顯示在單片機(jī)設(shè)計(jì)中
41、廣泛應(yīng)用。動(dòng)態(tài)顯示是將所有的數(shù)碼管的8個(gè)段選線連接到單片機(jī)的同一個(gè)I/O口,通過(guò)位選線來(lái)控制哪一個(gè)數(shù)碼管進(jìn)行顯示。在延時(shí)進(jìn)行輪流的顯示過(guò)程中,由于人的視覺(jué)短暫停留效應(yīng)以及發(fā)光二極管的余暉效應(yīng),盡管各位的數(shù)碼管不是同時(shí)點(diǎn)亮,但是給人的印象感覺(jué)就是顯示了穩(wěn)定數(shù)據(jù)14。動(dòng)態(tài)顯示可以達(dá)到和靜態(tài)顯示一樣的效果,不僅功耗更低,而且還能節(jié)省大量的I/O端口。3.5 報(bào)警電路圖3-10 蜂鳴器報(bào)警功能電路如圖3-10所示,報(bào)警電路由三極管2N2219和蜂鳴器組成。蜂鳴器由2N2219驅(qū)動(dòng),進(jìn)而實(shí)現(xiàn)報(bào)警功能。2N2219的集電極接電源+5V,基極通過(guò)一個(gè)電阻連接到P3.3口,射極接蜂鳴器,當(dāng)P.3為低電平時(shí),2
42、N2219截止,報(bào)警器不響,當(dāng)P3.3為高電平時(shí),2N2219導(dǎo)通,報(bào)警器發(fā)出響聲。3.6 電機(jī)控制電機(jī)控制系統(tǒng)采用普通的電磁繼電器,使用2N2219三極管放大電路對(duì)其進(jìn)行驅(qū)動(dòng),如圖3-11所示。繼電器兩端連接了一個(gè)1N4001二極管。原因是,線圈通電時(shí),1N4001對(duì)驅(qū)動(dòng)電路沒(méi)有任何作用。當(dāng)繼電器線圈在斷電的一瞬間會(huì)圖3-11 電機(jī)控制電路產(chǎn)生一個(gè)很強(qiáng)的逆向電壓,在繼電器線圈兩端反向并聯(lián)1N4001就是用來(lái)抵抗這個(gè)逆向電壓對(duì)2N2219的影響;如果不加1N4001反向二極管,逆向電壓會(huì)直接作用在2N2219上,很容易將2N2219燒壞。當(dāng)單片機(jī)的控制端P3.4輸出高電平時(shí),2N2219導(dǎo)通,
43、驅(qū)動(dòng)電磁繼電器的開(kāi)關(guān)閉合,使抽水電動(dòng)機(jī)開(kāi)始工作;當(dāng)單片機(jī)的控制端P3.4輸出低電平時(shí),2N2219截止,驅(qū)動(dòng)電磁繼電器的開(kāi)關(guān)端口,使抽水電動(dòng)機(jī)停止工作。這樣便可以實(shí)現(xiàn)對(duì)液位控制系統(tǒng)水位和水壓的控制。排水電機(jī)與之類似,只是受到P3.5端控制,其他與抽水電機(jī)相同,不再贅述。第4章 軟件設(shè)計(jì)4.1 軟件語(yǔ)言的選擇本設(shè)計(jì)采用C51語(yǔ)言編寫(xiě)軟件。C51不僅可以對(duì)單片機(jī)編程,而且還能對(duì)硬件控制系統(tǒng)進(jìn)行高效開(kāi)發(fā),利用C51語(yǔ)言編寫(xiě)程序簡(jiǎn)便、易懂,相比較于匯編語(yǔ)言,使用C51編程有下列優(yōu)點(diǎn)。1.不用寫(xiě)反復(fù)繁瑣的指令,也不用記憶指令和考慮指令的使用2.寄存器是由編譯器自動(dòng)管理,不用再人工考慮設(shè)置3.使用C51編
44、程可以是程序設(shè)計(jì)結(jié)構(gòu)變得規(guī)范,程序分成函數(shù)結(jié)構(gòu)化設(shè)計(jì)4.C51提供了許多標(biāo)準(zhǔn)的子程序,對(duì)數(shù)據(jù)處理起來(lái)方便5.避開(kāi)了對(duì)跳轉(zhuǎn)指令的直接處理,防止了程序過(guò)大出現(xiàn)不可預(yù)知的問(wèn)題6.方便模塊化的編程設(shè)計(jì)技術(shù),易于程序的移植除了以上的優(yōu)點(diǎn)外,C51編程對(duì)數(shù)據(jù)的是非常方便的,傳統(tǒng)的匯編語(yǔ)言需要對(duì)二進(jìn)制和十六進(jìn)制數(shù)直接操作,這額外增加了設(shè)計(jì)的時(shí)間,所以使用C51編程可以使用人性化的十進(jìn)制數(shù),將十進(jìn)制數(shù)定義為指定的數(shù)據(jù)類型即可,通過(guò)編譯器自動(dòng)轉(zhuǎn)換成底層的二進(jìn)制數(shù)。雖然C51有很多優(yōu)點(diǎn),但是也有一定的不足,匯編語(yǔ)言程序可以設(shè)計(jì)的結(jié)構(gòu)清晰,方便單片機(jī)對(duì)指令的高效處理,C51編譯后的程序重復(fù)度比直接編寫(xiě)的匯編語(yǔ)言程序
45、要高。綜上所述,在對(duì)比了C51語(yǔ)言和匯編語(yǔ)言的優(yōu)點(diǎn)以及缺點(diǎn)后,本設(shè)計(jì)采用C51編程,方便對(duì)液位控制系統(tǒng)軟件設(shè)計(jì)的邏輯實(shí)現(xiàn),同時(shí)也能夠快速排查程序出現(xiàn)的問(wèn)題。下面是液位控制系統(tǒng)各部分使用C51語(yǔ)言編程的軟件設(shè)計(jì)。4.2 系統(tǒng)主程序和初始化函數(shù)液位控制系統(tǒng)的主程序包括系統(tǒng)初始化函數(shù)、按鍵函數(shù)、水位監(jiān)測(cè)函數(shù)和電動(dòng)機(jī)控制函數(shù)以及水壓檢測(cè)函數(shù)。液位控制系統(tǒng)的主程序的主要功能是完成液位控制系統(tǒng)參數(shù)的初始化,設(shè)置默認(rèn)的警戒液位和液壓的上下限,實(shí)時(shí)顯示水壓值以及鍵盤掃描等工作。程序流程框圖如圖4-1所示。系統(tǒng)的初始化函數(shù)主要是對(duì)水壓的上、下限進(jìn)行初始化賦值,并對(duì)其他的控制參數(shù)例如電機(jī)控制位、報(bào)警器控制位等進(jìn)行
46、初始化設(shè)置。圖4-1 主程序流程圖4.3 A/D轉(zhuǎn)換和水壓的數(shù)據(jù)處理本設(shè)計(jì)采用的A/D 轉(zhuǎn)換器分辨率是8 位逐次逼近型A/D 轉(zhuǎn)換器,位數(shù)越高,分辨率越高。若小于最小變化量的輸入模擬電壓的任何變化,將不會(huì)引起輸出數(shù)字值的變化15。 而常用的8-bit 的ADC0809,若是滿刻度為5V的話,分辨率即為5V / 28 = 19.53mV。 程序如下:START=0; /啟動(dòng)A/D轉(zhuǎn)換 OE=0;if(EOC=1) /查詢0808轉(zhuǎn)換結(jié)束信號(hào) /這時(shí)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)生一個(gè)脈沖信號(hào),啟動(dòng)A/D轉(zhuǎn)換If(EOC=1):檢測(cè)轉(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:對(duì)輸入的數(shù)字量0-255轉(zhuǎn)換成對(duì)應(yīng)的模擬量0到+5V。OE=0,禁止數(shù)據(jù)輸出,防止在處理P0口數(shù)據(jù)過(guò)程中,輸入P0口的數(shù)據(jù)發(fā)生變化。4.4 延時(shí)處理本設(shè)計(jì)的延時(shí)處理方案設(shè)計(jì)了兩種,一種是以循環(huán)為主的延時(shí)設(shè)計(jì),另一種是以定時(shí)器中斷為核心進(jìn)
48、行計(jì)時(shí),從而實(shí)現(xiàn)延時(shí)的效果;1. 通過(guò)循環(huán)進(jìn)行延時(shí)處理程序如下:/延時(shí)子程序void delay(uint m)while(m-);2. 通過(guò)定時(shí)器進(jìn)行延時(shí)處理 定時(shí)/計(jì)數(shù)器有兩種用途:定時(shí)器和計(jì)數(shù)器。但一個(gè)定時(shí)/計(jì)數(shù)器(T1或T0)不能既做定時(shí)器又作為計(jì)數(shù)器。其實(shí),定時(shí)/計(jì)數(shù)器的核心是一個(gè)加1的計(jì)數(shù)器,脈沖的來(lái)源有兩個(gè):一個(gè)是由系統(tǒng)的晶振器的脈沖提供;另一個(gè)是由外部脈沖源提供。這就是51單片機(jī)中定時(shí)/計(jì)數(shù)器 的定時(shí)功能和計(jì)數(shù)功能的區(qū)別。每來(lái)一個(gè)脈沖則加1計(jì)數(shù),當(dāng)計(jì)數(shù)器記錄為全1時(shí),再來(lái)一個(gè)脈沖就會(huì)使計(jì)數(shù)器回到0;并且計(jì)數(shù)器的溢出會(huì)在TCON寄存器中的TF0(或TF1)置位為1,向CPU發(fā)出中
49、斷請(qǐng)求。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到16。定時(shí)器的定時(shí)時(shí)間不僅與初始值有關(guān),而且還與系統(tǒng)的時(shí)鐘頻率有關(guān),所以在設(shè)計(jì)中要根據(jù)時(shí)鐘頻率設(shè)置定時(shí)器的初值。定時(shí)/計(jì)數(shù)器有兩個(gè)控制寄存器,TMOD和TCON。TMOD用于控制定時(shí)/計(jì)數(shù)器的工作方式,選擇定時(shí)或者計(jì)數(shù)的功能;TCON用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和停止,并控制定時(shí)/計(jì)數(shù)器的工作狀態(tài)等;啟動(dòng)定時(shí)/計(jì)數(shù)器開(kāi)始工作之前,需要定義定時(shí)/計(jì)數(shù)器的工作方式,同時(shí)對(duì)TL0、TH0及TL1、TH1進(jìn)行初始化編程17。液位控制系統(tǒng)的顯示需要定時(shí)18ms,所以采用方式1,16位定時(shí)/計(jì)數(shù)器,16位定時(shí)/計(jì)數(shù)器最大容量是65536,大約65ms
50、,所以不能直接定時(shí)18ms,因此加入了一個(gè)計(jì)算次數(shù)的變量count,使定時(shí)器定時(shí)18ms。定時(shí)器初始值的計(jì)算:液位控制系統(tǒng)使用單片機(jī)的晶振頻率是12MHz,并且16位定時(shí)/計(jì)數(shù)器是由TH0、TH1兩個(gè)8位寄存器組成的,所以為了定時(shí)18ms,可以計(jì)算:TH0=(65536-9000)/256; /給定時(shí)器的高8位賦初始值TL0=(65536-9000)%256; /給定時(shí)器的低8位賦初始值給定時(shí)器設(shè)置的初始值是9ms,使用count作為中斷次數(shù)變量。當(dāng)每次中斷溢出后,AT89C51單片機(jī)就會(huì)執(zhí)行中斷子程序,變量count加1。當(dāng)count增加到2時(shí)(總時(shí)長(zhǎng)是29ms=18ms),則定時(shí)時(shí)間18m
51、s到,可以執(zhí)行相應(yīng)的顯示程序。根據(jù)以上原理編寫(xiě)的程序如下:/選擇使用定時(shí)器0并且設(shè)置其工作方式為1 TMOD=0X01;/給定時(shí)器0賦初始值為50ms TH0=(65536-9000)/256; / TL0=(65536-9000)%256; EA=1; /開(kāi)總中斷 ET0=1;/開(kāi)定時(shí)/計(jì)數(shù)器0中斷 TR0=1;/啟動(dòng)定時(shí)/計(jì)數(shù)器0/定時(shí)器0中斷延時(shí)子程序void timer0() interrupt 1/重新給定時(shí)器賦初始值 TH0=(65536-9000)/256; TL0=(65536-9000)%256; count+; /沒(méi)過(guò)50ms使count加1/到達(dá)指定的中斷次數(shù)后執(zhí)行響應(yīng)的
52、操作 if(count=2) count=0; /需要執(zhí)行的程序 display(AD_number); 4.5 鍵盤部分的軟件設(shè)計(jì)鍵盤的軟件設(shè)計(jì)流程框圖如圖4-2所示通過(guò)程序掃描查詢方式實(shí)現(xiàn)單片機(jī)鍵盤部分的軟件設(shè)計(jì)。通過(guò)單片機(jī)P2端口的高四位讀入按鍵狀態(tài),判斷四個(gè)按鍵中哪個(gè)按鍵被按下。鍵盤部分編寫(xiě)程序如下。temp=P2|0 x0f; /讀取P2口/判斷有無(wú)按鍵按下 if(temp!=0 xff)delay(500); /延時(shí)再判斷其的狀態(tài) /判斷是否真的有按鍵按下,否則退出 if(temp=0 xff|reset=1)當(dāng)有按鍵按下時(shí),相應(yīng)的單片機(jī)P2端口的高四位的某一位變?yōu)榈碗娖?,而未被?/p>
53、下的按鍵仍為高電平。通過(guò)讀取單片機(jī)P2端口的高四位的狀態(tài),根據(jù)端口狀態(tài)判斷是否有按鍵按下。但是只進(jìn)行一次按鍵判斷是不夠的,還需要判斷是否是鍵盤抖動(dòng)帶來(lái)的影響,所以還需要再進(jìn)一步處理鍵盤的按鍵是否真的被按下,下面就介紹按鍵去抖動(dòng)的原理。4.5.1 按鍵去抖動(dòng)由于按鍵是利用機(jī)械觸點(diǎn)的閉合與斷開(kāi)功能進(jìn)行工作的。因此,按鍵的按下與抬起一般都會(huì)有抖動(dòng)的存在。為了獲得實(shí)時(shí)準(zhǔn)確真實(shí)的按鍵操作,必須去除抖動(dòng)給按鍵掃描帶來(lái)的不穩(wěn)定影響,這是鍵盤軟件設(shè)計(jì)部分中一個(gè)極其重要環(huán)節(jié)。去抖動(dòng)采用了延時(shí)掃描再讀取的方式,在檢測(cè)到有按鍵按下時(shí),執(zhí)行一個(gè)延時(shí)程序后,再次進(jìn)行判斷該按鍵的閉合斷開(kāi)狀態(tài),如果再次判斷保持閉合狀態(tài),則
54、可以被認(rèn)為是真正的按下了該按鍵。圖4-2 鍵盤控制流程圖4.5.2 按鍵功能實(shí)現(xiàn)MODE鍵功能實(shí)現(xiàn):通過(guò)按下MODE鍵,可以對(duì)顯示進(jìn)行切換,這是依靠設(shè)置標(biāo)志值實(shí)現(xiàn)的。ADD、SUBTRACT鍵功能實(shí)現(xiàn):在判斷是ADD鍵按下后,還需要判斷是水壓上限還是水壓下限需要增加,這就需要上一步MODE按下后設(shè)置的標(biāo)志high_pressure_flag和low_pressure_flag來(lái)判斷,為1則就是需要修改的參數(shù);SUBTRACT鍵的功能同ADD鍵。RESET鍵功能實(shí)現(xiàn):直接在確定是RESET鍵按下后,調(diào)用init()函數(shù),就可以對(duì)控制系統(tǒng)的參數(shù)進(jìn)行重置。4.6 顯示部分的軟件設(shè)計(jì)4位一體共陰極數(shù)碼
55、管的數(shù)據(jù)輸入只有4位,由4個(gè)數(shù)碼管公用。每次顯示數(shù)字時(shí)都要選中響應(yīng)的數(shù)碼管,才能在相應(yīng)的位置顯示想要的數(shù)字。因此,定義了一個(gè)數(shù)碼管位選擇編碼表“uchar code table”。在這里使用了延時(shí)函數(shù),在顯示部分中作為延時(shí)使用,用以動(dòng)態(tài)顯示。表4-3 數(shù)碼管字形編碼表顯示字符共陰極段碼顯示字符共陰極段碼0FCH8FEH160H9F6H2DAH10EEH3F2HA3EH466HB9CH5B6HC7AH6BEHD9EH7E0HE8EH如表4-3所示,要使數(shù)碼管顯示出指定的數(shù)字(在本控制系統(tǒng)中是水壓),必須使單片機(jī)的P1口輸出相應(yīng)的字形編碼信號(hào)。根據(jù)圖3-9,字型碼各位定義為:數(shù)據(jù)接口P1.7與a字
56、段對(duì)應(yīng),依此類推。使用共陰極數(shù)碼管,輸出位為0表示對(duì)應(yīng)字段顯示暗,輸出位為1表示對(duì)應(yīng)字段顯示亮。如果要顯示“0”,共陰極數(shù)碼管的字型編碼應(yīng)為:11111100B(即FCH),依此類推。4.7 水位監(jiān)測(cè)和報(bào)警電路的軟件設(shè)計(jì)當(dāng)系統(tǒng)出現(xiàn)異常時(shí),可以調(diào)用報(bào)警器函數(shù),使液位控制系統(tǒng)報(bào)警;實(shí)現(xiàn)報(bào)警器的控制方法很簡(jiǎn)單,只需要這條語(yǔ)句就可以改變報(bào)警器的狀態(tài): buzzer=1;buzzer=1;報(bào)警器發(fā)出聲響;buzzer=0;報(bào)警器不響對(duì)液位進(jìn)行檢測(cè)和處理同樣寫(xiě)成了函數(shù),供系統(tǒng)調(diào)用;為保證設(shè)計(jì)的嚴(yán)謹(jǐn)性,液位在控制過(guò)程中有以下五種情形: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.硬件損壞,必須報(bào)警進(jìn)行提醒操作buzzer_control();水位監(jiān)測(cè)正常,什么也不做,返回標(biāo)志值 return 0;4.8 驅(qū)動(dòng)電路的軟件設(shè)計(jì)將驅(qū)動(dòng)電路部分的程序設(shè)計(jì)成函數(shù),驅(qū)動(dòng)電路函數(shù)主要是用來(lái)控制抽水電機(jī)(motor1)和排水電機(jī)(motor2)的,需要兩個(gè)參
58、數(shù),一個(gè)是實(shí)時(shí)水壓數(shù)據(jù)tmp,另外一個(gè)是水位數(shù)據(jù)level_condition;可以根據(jù)這兩個(gè)參數(shù)對(duì)電機(jī)進(jìn)行控制,對(duì)電機(jī)的控制情況分為以下三種情形:1. if(tmppressure_high)|(level_condition=2) 這是水壓過(guò)高或者是液位為高的情況,其中l(wèi)evel_condition=2這個(gè)值是經(jīng)過(guò)液位函數(shù)處理后的一個(gè)標(biāo)志的值,表明液位是過(guò)高的情況,所以需要排水,故令 motor2=1;motor1=0;2. if(tmppressure_low)|(level_condition=1)這是水壓過(guò)低或者是液位為低的情況,其中l(wèi)evel_condition=1這個(gè)值是經(jīng)過(guò)液位
59、函數(shù)處理后的一個(gè)標(biāo)志的值,表明液位是過(guò)低的情況,所以需要排水,故令 motor2=0;motor1=1;3. 默認(rèn)情況下水壓和液位在正常范圍內(nèi)就無(wú)需對(duì)電機(jī)進(jìn)行處理,所以 motor1=0;motor2=0;第5章 系統(tǒng)調(diào)試與仿真結(jié)果5.1 系統(tǒng)調(diào)試在液位控制系統(tǒng)設(shè)計(jì)過(guò)程中,不可避免的會(huì)遇到一些無(wú)法預(yù)知問(wèn)題,只有對(duì)控制系統(tǒng)進(jìn)行良好的設(shè)計(jì),才能順利的解決這些問(wèn)題;通過(guò)對(duì)硬件電路的設(shè)計(jì)以及對(duì)單片機(jī)軟件分模塊的設(shè)計(jì),不僅方便系統(tǒng)結(jié)構(gòu)功能的擴(kuò)展和重組,而且可以快捷的找到系統(tǒng)在設(shè)計(jì)過(guò)程中出現(xiàn)的錯(cuò)誤和有效的解決遇到的指定問(wèn)題;同時(shí),對(duì)控制系統(tǒng)的調(diào)試不可或缺,只有不斷地發(fā)現(xiàn)問(wèn)題,和采取合適的措施解決問(wèn)題才能使
60、控制系統(tǒng)變得更加完善。本液位控制系統(tǒng)的調(diào)試主要分為硬件調(diào)試和軟件調(diào)試兩大部分,硬件電路的調(diào)試可以根據(jù)軟件仿真的結(jié)果進(jìn)行判斷和處理,軟件調(diào)試是最為重要的部分,系統(tǒng)邏輯功能的實(shí)現(xiàn)全靠軟件部分的正確編寫(xiě)??梢栽诔绦蛟O(shè)計(jì)無(wú)誤的情況下,結(jié)合單片機(jī)硬件仿真,檢測(cè)實(shí)驗(yàn)結(jié)果是否正常,如果不正常則需要修改原來(lái)編寫(xiě)的程序,并進(jìn)行調(diào)試和檢查仿真結(jié)果。在單片機(jī)液位控制系統(tǒng)設(shè)計(jì)中遇到的問(wèn)題以及解決方案如下介紹。(1) A/D轉(zhuǎn)換不正常本設(shè)計(jì)需要將來(lái)自A/D轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示和處理,在設(shè)計(jì)過(guò)程中,A/D轉(zhuǎn)換的結(jié)果通過(guò)四位一體數(shù)碼管始終為0;這是不正常的結(jié)果,在顯示部分設(shè)計(jì)正確的情況下,判斷A/D轉(zhuǎn)換異常,然后對(duì)A/
61、D轉(zhuǎn)換電路和軟件設(shè)計(jì)部分進(jìn)行的檢查和調(diào)試,最終發(fā)現(xiàn)是軟件設(shè)計(jì)的錯(cuò)誤,軟件沒(méi)有正確的開(kāi)啟A/D轉(zhuǎn)換,在對(duì)程序調(diào)整后,使A/D轉(zhuǎn)換在系統(tǒng)啟動(dòng)時(shí)開(kāi)啟,并實(shí)時(shí)轉(zhuǎn)換來(lái)自于水壓傳感器的數(shù)據(jù),最后由數(shù)碼管顯示器顯示實(shí)時(shí)水壓數(shù)據(jù)。(2) 鍵盤操作功能不能完全按照要求實(shí)現(xiàn)經(jīng)過(guò)檢查,這一部分的硬件設(shè)計(jì)完全沒(méi)有問(wèn)題,設(shè)計(jì)中簡(jiǎn)單的使用了四個(gè)獨(dú)立的功能按鍵,其中第二個(gè)“模式”鍵并沒(méi)有按照編寫(xiě)的邏輯代碼執(zhí)行,在按下“模式”鍵進(jìn)行切換后,應(yīng)該轉(zhuǎn)到水壓上限和水壓下限數(shù)據(jù)的處理和顯示,但是顯示的始終是水壓上限,這說(shuō)明“模式”鍵的切換不正常,在經(jīng)過(guò)一番調(diào)試后,發(fā)現(xiàn)對(duì)按鍵進(jìn)行判斷處理的程序沒(méi)有進(jìn)行延時(shí)處理才導(dǎo)致程序執(zhí)行異常。(3)
62、 對(duì)電機(jī)的控制出現(xiàn)了不合邏輯的問(wèn)題軟件代碼問(wèn)題,邏輯與、或、非編寫(xiě)錯(cuò)誤,更改后正常。5.2 仿真結(jié)果5.2.1 水壓仿真測(cè)試表5-1 水壓仿真測(cè)試結(jié)果測(cè)試內(nèi)容測(cè)試結(jié)果(水壓:?jiǎn)挝籔a)初始狀態(tài)顯示0000A/D轉(zhuǎn)換時(shí)的顯示XXXX(實(shí)時(shí)顯示水壓數(shù)據(jù))RESET鍵按下顯示0000MODE鍵按下一次顯示MODE鍵按下兩次顯示MODE鍵按下三次顯示ADD鍵按下顯示SUBTRACT鍵按下顯示3456(水壓下限)5678(水壓上限)XXXX(實(shí)時(shí)顯示水壓數(shù)據(jù))水壓上限或者下限加1水壓上限或者下限減1液位控制系統(tǒng)的四位一體共陰極數(shù)碼管在系統(tǒng)開(kāi)始啟動(dòng)的初始狀態(tài)顯示水壓為0000Pa,表示系統(tǒng)剛開(kāi)始運(yùn)行,會(huì)首先執(zhí)行init()函數(shù);在A/D轉(zhuǎn)換過(guò)程中數(shù)碼管顯示XXXX(Pa),“XXXX”表示數(shù)碼管正在顯示的水壓值,因?yàn)槭亲兓闹?/p>
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腎臟病的診療思路
- PICC維護(hù)流程專題知識(shí)
- 液氯生產(chǎn)與氫氣處理
- 鑫享至尊高端銷售理念之穩(wěn)健理財(cái)篇課件
- 管理流程會(huì)計(jì)
- 人教版七年級(jí)下冊(cè)《從百草園到三味書(shū)屋》課件_22頁(yè)(教育精品)
- 6sigma培訓(xùn)-基本統(tǒng)計(jì)概念PPT課件
- 七座高級(jí)商務(wù)車推薦
- 比例的基本性質(zhì)80651
- 53已更改的《動(dòng)物兒歌》
- 金華的雙龍洞課件文講
- 《古詩(shī)三首》完整課件——語(yǔ)文教育S版四年級(jí)下冊(cè)
- 唯物辯證法的聯(lián)系觀和發(fā)展觀網(wǎng)課課件
- 青島版體積和體積單位課件
- 嬰兒沐浴撫觸及護(hù)理