1 引言隨著我國(guó)的國(guó)民經(jīng)濟(jì)與生活水平的發(fā)展,各個(gè)行業(yè)對(duì)自動(dòng)化的需求也日益增加,為減少污染、節(jié)約資源,單片機(jī)的控制技術(shù)得到了廣泛的應(yīng)用。無(wú)論是在工業(yè)生產(chǎn)中,還是在其他行業(yè),水都是人們生活中不可或缺的資源,大部分都會(huì)使用到水箱,水箱里的水位控制就是最重要的問(wèn)題了,以前都會(huì)有專門(mén)的人看管,既浪費(fèi)人力,又不能準(zhǔn)確的判斷水位高低。所以以單片機(jī)控制水箱的水位就得到了廣泛應(yīng)用。
水位控制系統(tǒng)是以水位為被控參數(shù)的控制系統(tǒng),它在工業(yè)生產(chǎn)的各個(gè)領(lǐng)域都有廣泛的應(yīng)用。在目前的過(guò)程控制領(lǐng)域中水位控制的研究引起了廣泛的關(guān)注,隨著集成電路規(guī)模的日趨大型化、復(fù)雜化,各種復(fù)雜的液位控制系統(tǒng)已成為一個(gè)研究焦點(diǎn)。單片機(jī)是靠程序運(yùn)行的,并且是可以修改的,通過(guò)不同的程序?qū)崿F(xiàn)不同的功能。尤其是特殊的獨(dú)特的一些功能,這是別的器件需要費(fèi)很大的力氣才能做到的,有些則是花大力氣也很難做到的。為什么一點(diǎn)要用單片機(jī)呢,原因很簡(jiǎn)單,只因?yàn)閱纹瑱C(jī)通過(guò)自己編寫(xiě)的程序便可以實(shí)現(xiàn)高智能、高效率以及高可靠性!現(xiàn)代電子系統(tǒng)的基本核心是嵌入式計(jì)算機(jī)系統(tǒng)(簡(jiǎn)稱嵌入式系統(tǒng)),而單片機(jī)是最典型、最廣泛、最普及的嵌入式系統(tǒng)[1]。
目前我國(guó)在單片機(jī)測(cè)控裝置研究、生產(chǎn)、應(yīng)用中,取得了很大的成績(jī),總結(jié)了很多經(jīng)驗(yàn),但是各行業(yè)仍處于發(fā)展期,經(jīng)調(diào)查,更多科研研究在這方面開(kāi)展的工作更看重的是理論和算法,數(shù)年來(lái)這方面的研究的論文較多,但著重生產(chǎn)實(shí)際的很少。
一些發(fā)達(dá)國(guó)家在單片機(jī)新型系統(tǒng)研究、制造和應(yīng)用上,已積累了很多經(jīng)驗(yàn),奠定了基礎(chǔ),進(jìn)入了國(guó)際市場(chǎng)。我國(guó)在新型測(cè)控裝置與系統(tǒng)研究、制造、應(yīng)用和經(jīng)驗(yàn)上,與其他發(fā)達(dá)國(guó)家相比還存在差距,但是我國(guó)的研究人員已經(jīng)克服很多困難,并在不斷地摸索中前進(jìn),有望在相關(guān)領(lǐng)域趕上甚至超過(guò)發(fā)達(dá)國(guó)家的技術(shù)水平,這是發(fā)展趨勢(shì)。
在工農(nóng)業(yè)生產(chǎn)以及日常生活應(yīng)用中,常常會(huì)需要對(duì)容器中的水位進(jìn)行自動(dòng)控制。比如自動(dòng)控制冰箱、水池、水槽、鍋爐等容器中的蓄水量,生活中抽水馬桶的自動(dòng)補(bǔ)水控制、自動(dòng)電熱水器、電開(kāi)水機(jī)的自動(dòng)進(jìn)水控制等。雖然各種水位控制的技術(shù)要求不同、精度不同,但是基本的控制原理可以歸納為一般的反饋控制方式,他們的主要區(qū)別在于檢測(cè)水位的方式、反饋方式、以及控制器上的區(qū)別。
隨著單片機(jī)和微機(jī)技術(shù)的不斷發(fā)展,由PC機(jī)和多臺(tái)單片機(jī)構(gòu)成的多機(jī)向網(wǎng)絡(luò)發(fā)展。單片機(jī)自問(wèn)世以來(lái),性能不斷地提高和完善,體積小、速度快、功率低的特點(diǎn)使它的應(yīng)用領(lǐng)域日益廣泛。一般,工業(yè)控制系統(tǒng)的工作環(huán)境差,干擾性強(qiáng),利用單片機(jī)控制就能克服這些缺點(diǎn),因此單片機(jī)在控制領(lǐng)域得到廣泛的應(yīng)用,使用單片機(jī)控制液體的水位是個(gè)很好的選擇。基于51單片機(jī)的液位控制系統(tǒng)既滿足系統(tǒng)精度的要求,同時(shí)具有可靠性[2]。
不論社會(huì)經(jīng)濟(jì)如何飛速,水在人們的正常生活和生產(chǎn)中起著重要的作用。一旦斷了水,輕則個(gè)人民帶來(lái)極大地不便,重則可能造成嚴(yán)重的生產(chǎn)事故及損傷,從而對(duì)供水系統(tǒng)提出了更高的要求,滿足及時(shí)、準(zhǔn)確、安全充足的供水。如果仍然使用人工的方式,勞動(dòng)強(qiáng)度大,工作效率低,安全性難以保障,因此必須進(jìn)行自動(dòng)化控制系統(tǒng)的改造。從而實(shí)現(xiàn)提供足夠的水量、平穩(wěn)的水壓的自動(dòng)控制有設(shè)計(jì)低成本、高實(shí)用價(jià)值的控制器。
一般工廠使用的水箱,體積都比較大,所以對(duì)水位的控制需求就相應(yīng)的大了,而且隨著工業(yè)上使用比較多,對(duì)水位的控制精度要求也高。由于自動(dòng)化技術(shù)在礦企業(yè)的廣泛應(yīng)用,水位自動(dòng)控制技術(shù)越來(lái)越頻繁地進(jìn)入到自動(dòng)控制系統(tǒng)設(shè)計(jì)者的視線。
2 系統(tǒng)設(shè)計(jì)方案比較說(shuō)明對(duì)于水位進(jìn)行控制的方式有很多,而應(yīng)用較多的主要有兩種,一種是簡(jiǎn)單的機(jī)械式控制裝置控制,一種是復(fù)雜的控制器控制方式。兩種方式的實(shí)現(xiàn)如下:
- 簡(jiǎn)單的接線式控制方式。其常用形式有浮標(biāo)式、電極式等,這種控制形式的優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,成本低廉。存在問(wèn)題是精度不高,不能進(jìn)行數(shù)值顯示,另外很容易引起誤動(dòng)作,且只能單獨(dú)控制,與計(jì)算機(jī)進(jìn)行通信較難實(shí)現(xiàn)
- 復(fù)雜控制器控制方式。這種控制方式是通過(guò)安裝在水泵出口管道上的壓力傳感器,把出口壓力變成標(biāo)準(zhǔn)工業(yè)電信號(hào)的模擬信號(hào),經(jīng)過(guò)前置放大、多路切換、A/D變換成數(shù)字信號(hào)傳送到單片機(jī),經(jīng)單片機(jī)運(yùn)算和給定參量的比較,進(jìn)行PID運(yùn)算,得出調(diào)節(jié)參量來(lái)控制其輸出電壓變化,進(jìn)而調(diào)節(jié)電機(jī)轉(zhuǎn)速,以達(dá)到控制水箱水位的目的[3]。
針對(duì)上述兩種控制方式,以及設(shè)計(jì)需達(dá)到的性能要求,這里選擇第二種控制方式。最終形成的方案是,利用單片機(jī)為控制核心,設(shè)計(jì)一個(gè)對(duì)供水箱水位進(jìn)行監(jiān)控的系統(tǒng)。根據(jù)監(jiān)控對(duì)象的特征,要求實(shí)時(shí)檢測(cè)水箱的水位高度,并與開(kāi)始預(yù)設(shè)值進(jìn)行比較,由單片機(jī)控制固態(tài)繼電器的開(kāi)斷進(jìn)行水位的調(diào)整,最終達(dá)到液位的與設(shè)定值。檢測(cè)值若高于上限設(shè)定值時(shí),要求報(bào)警,斷開(kāi)繼電器,控制水泵停止上水,檢測(cè)值若低于下限設(shè)定值,要求報(bào)警,開(kāi)啟繼電器,控制水泵開(kāi)始上水。現(xiàn)場(chǎng)實(shí)時(shí)顯示測(cè)量值,從而實(shí)現(xiàn)對(duì)水箱水位的監(jiān)控。
3 水位控制系統(tǒng)的原理和設(shè)計(jì)方案
3.1 水位控制系統(tǒng)組成系統(tǒng)采用單片機(jī)作為數(shù)字控制器的處理器,其中,由壓力變送器傳送來(lái)的電壓信號(hào)經(jīng)過(guò)A/D轉(zhuǎn)換傳送給單片機(jī),然后由單片機(jī)控制電動(dòng)執(zhí)行機(jī)構(gòu),具體結(jié)構(gòu)如圖3.1所示。
狀態(tài)設(shè)定
圖3.1水位控制原理框圖
3.2 單片機(jī)系統(tǒng)組成及工作原理本系統(tǒng)主要是由ATMEL公司生產(chǎn)的單片機(jī)AT89C51芯片為核心,加上一些外部原件,構(gòu)成了硬件電路。AT89C51是一種帶4K字節(jié)FLASH可編程可擦除只讀存儲(chǔ)器的低電壓、高性能CMOS 8位微處理器,與標(biāo)準(zhǔn)的MCS-51指令集和輸出管教相兼容。由于將多功能8位CPU和FLASH存儲(chǔ)器組合在單個(gè)芯片中,所以AT89C51是一種高效的微控制器[4]。
3.2.1 系統(tǒng)組成本系統(tǒng)主要由AT89C51單片機(jī)、LED顯示電路、報(bào)警電路、看門(mén)狗電路以及電機(jī)控制電路等部分組成。系統(tǒng)框圖如圖3.2所示。
圖3.2 系統(tǒng)組成框圖
3.2.2 工作原理水位控制系統(tǒng)的基本原理是:基于單片機(jī)AT989C51實(shí)現(xiàn)的水位控制器,由鍵盤(pán)、數(shù)碼顯示、A/D轉(zhuǎn)換、傳感器,電源和控制部分等組成。工作過(guò)程如下:當(dāng)水位發(fā)生變化時(shí),引起連接在水箱底部的軟管管內(nèi)的水壓發(fā)生變化,水壓傳感器在接收到軟管內(nèi)的水氣壓信號(hào)后,即把變化量轉(zhuǎn)化成電壓信號(hào);該信號(hào)經(jīng)過(guò)放大運(yùn)算放大電路放大后變成幅度為0-5V的標(biāo)準(zhǔn)信號(hào),送入A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器把模擬信號(hào)變成數(shù)字信號(hào)量,由單片機(jī)進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,并進(jìn)行處理,根據(jù)設(shè)定要求控制輸出,同時(shí)數(shù)碼管顯示液位高度。通過(guò)鍵盤(pán)設(shè)置液位高、低和限定值以及強(qiáng)制報(bào)警器,該系統(tǒng)的控制特點(diǎn)是直觀地顯示水位高度,可任意控制水位高度[5]。
3.3 控制方案的設(shè)計(jì)3.3.1 設(shè)計(jì)思路用單片機(jī)做水箱水位控制這個(gè)設(shè)計(jì)核心也是傳感器,將信號(hào)送到單片機(jī),單片機(jī)再將信號(hào)輸出給電機(jī),來(lái)完成設(shè)計(jì)的要求工作。判斷是否要啟動(dòng)或者停止電機(jī)的運(yùn)轉(zhuǎn)以達(dá)到水位的控制,同時(shí)驅(qū)動(dòng)顯示電路顯示當(dāng)前水位的所處的狀態(tài)。首先,電路獲取信號(hào),然后由單片機(jī)AT89C51對(duì)測(cè)得水位信號(hào)進(jìn)行判斷,根據(jù)判斷的結(jié)果,單片機(jī)輸出相應(yīng)的控制信號(hào)控制繼電器的動(dòng)作,進(jìn)而控制電機(jī)的啟動(dòng)或者停止。當(dāng)水箱的水位下降,達(dá)到下限時(shí),需啟動(dòng)電機(jī)給水箱供水;當(dāng)水箱的水位達(dá)到上限后,應(yīng)該關(guān)閉電機(jī),并采用不同色彩的發(fā)光二極管顯示相應(yīng)的水位。當(dāng)系統(tǒng)出現(xiàn)故障時(shí),報(bào)警電路工作[6]。
3.3.2 方案設(shè)計(jì)當(dāng)水箱水位低時(shí),啟動(dòng)M1、M2、給給水,水位上升到90%,停止M1。當(dāng)水箱水位低(小于50%)時(shí),同時(shí)起動(dòng)M1、M2,當(dāng)水位上升到50%以上70%一下時(shí),M2停止運(yùn)行,M1繼續(xù)運(yùn)行到水位上升到90%以上才停止工作。
如下圖3.3中,M1、M2為給水泵機(jī)組,LG、LD、LDD分別為水位高、水位低、水位低低浮球開(kāi)關(guān),當(dāng)水位高(大于90%)時(shí),LG閉合,當(dāng)水位低(小于75%)時(shí),LD閉合,當(dāng)水位低低(小于50%)時(shí),LDD閉合[7]。
圖3.3 控制方案框圖
3.3.3 報(bào)警控制過(guò)程
當(dāng)水位高于90開(kāi)度的時(shí)候,由傳感器經(jīng)變送器發(fā)送信號(hào),LG閉合,系統(tǒng)水位高報(bào)警。當(dāng)水位低于75開(kāi)度的時(shí)候,由傳感器經(jīng)變送器發(fā)送信號(hào),LD閉合,系統(tǒng)水位低報(bào)警。當(dāng)水位低與50開(kāi)度的時(shí)候,由傳感器經(jīng)由變送器發(fā)送信號(hào),LDD閉合,系統(tǒng)水位低低報(bào)警。手動(dòng)/自動(dòng)模式轉(zhuǎn)換控制如下:全自動(dòng)模式下,系統(tǒng)自動(dòng)判斷水位的狀況,選擇不同工作狀態(tài)。在手動(dòng)的模式下,兩臺(tái)給水泵的運(yùn)行控制可有人工自己操作[7]。
此方案設(shè)計(jì)采用的是AT89C51芯片。AY89C51是高性能COMS8位單片機(jī),片內(nèi)含4K bytes的可反復(fù)擦寫(xiě)的只讀存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元。
4 硬件設(shè)計(jì)水位控制器的硬件主要包括由單片機(jī)、傳感器(帶變送器)、鍵盤(pán)電路、數(shù)碼顯示電力、A/D轉(zhuǎn)換器和輸出控制電路等。
4.1 單片機(jī)單片機(jī)采用由ATMEL公司生產(chǎn)的雙列40腳AT89C51芯片,芯片引腳如下圖4.1所示。其中,P0口用于A/D轉(zhuǎn)換和顯示;P1口連接一個(gè)4*4的鍵盤(pán);P2口用于控制電磁閥和水泵動(dòng)作;P3口用于上、下限指示燈,報(bào)警指示燈以及用于讀寫(xiě)控制和中斷等[8]。
圖4.1 AT89C51引腳圖1、單片機(jī)的工作過(guò)程
單片機(jī)自動(dòng)完成賦予它的任務(wù)的過(guò)程,也就是單片機(jī)執(zhí)行程序的過(guò)程,即一條條執(zhí)行的指令的過(guò)程,所謂指令就是把要求單片機(jī)執(zhí)行的各種操作作用的命令的形式寫(xiě)下來(lái),這是在設(shè)計(jì)人員賦予它的指令系統(tǒng)所決定的,一條指令對(duì)應(yīng)著一種基本操作;單片機(jī)所能執(zhí)行的的全部任務(wù),必須把要解決的問(wèn)題編成一系列的指令(這些指令必須是選定單片機(jī)能識(shí)別和執(zhí)行的指令),這一系列指令的集合就成為程序,程序需要預(yù)先存放在具有存儲(chǔ)功能的部件——存儲(chǔ)器中。存儲(chǔ)器由許多存儲(chǔ)單元(最小的存儲(chǔ)單元)組成,就像大樓房有許多房間組成一樣,指令就存放在這些單元里,單元里的指令取出并執(zhí)行就像大樓房的每個(gè)房間的被分分配到了唯一一個(gè)房間號(hào)一樣,每一個(gè)存儲(chǔ)單元也必須被分配到唯一的地址號(hào),該地址號(hào)成為存儲(chǔ)單元的地址,這樣只要知道了存儲(chǔ)單元的地址,就可以找到這個(gè)存儲(chǔ)單元,其中存儲(chǔ)的指令就可以被取出,然后再被執(zhí)行。
程序通常是順序執(zhí)行的,所以程序中的指令也是一條條順序存放的,單片機(jī)在執(zhí)行程序時(shí)要把這些指令一條條取出并加以執(zhí)行,必須有一個(gè)部件能追蹤指令所在的地址,這一部件就是程序計(jì)數(shù)器PC(包含在CPU中),在開(kāi)始執(zhí)行程序時(shí),給PC賦以程序中第一條指令所在的地址,然后取得每一條要執(zhí)行的命令,PC在中的內(nèi)容就會(huì)自動(dòng)增加,增加量由本條指令長(zhǎng)度決定,可能是1、2或3,以指向下一條指令的起始地址,保證指令順序執(zhí)行。
4.2 時(shí)鐘電路MCS-51單片機(jī)內(nèi)部的振蕩電路是一個(gè)高增益反相放大器,引線XTAL1和XTAL2分別是放大器的輸入端和輸出端。單片機(jī)內(nèi)部雖然有振蕩電路,但要形成時(shí)鐘,外部還需附加電路。MCS-51單片機(jī)的時(shí)鐘產(chǎn)生方式有兩種:
利用其內(nèi)部的振蕩電路在XTAL1和XTAL2引線上外接定時(shí)元件,內(nèi)部震蕩電路便產(chǎn)生自激震蕩,用示波器可以觀察到XTAL2輸出的時(shí)鐘信號(hào)。最常用的是在XTAL1和XTAL2之間連接晶體振蕩器與電容構(gòu)成穩(wěn)定的自激振蕩器,如圖4.2所示。
晶體可在1.2-12MHz之間選擇。MCS-51單片機(jī)在通常應(yīng)用情況下,使用振蕩頻率為6MHz的石英晶體,而12MHz頻率的晶體主要是在高速串行通信情況下才使用,對(duì)電容值沒(méi)有嚴(yán)格的要求,但它的取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小及振蕩電路起振速度有少許影響。C1和C2可在20-100pF之間取值,一般去30pF左右。
本設(shè)計(jì)的單片機(jī)系統(tǒng)中,為了各單片機(jī)之間時(shí)鐘信號(hào)的同步,應(yīng)當(dāng)引入唯一的合用外部振蕩脈沖作為各自單片機(jī)的時(shí)鐘。外部時(shí)鐘方式中是把外部振蕩信號(hào)直接接入XTAL1或XTAL2。由于HMOS和CHMOS單片機(jī)外部時(shí)鐘進(jìn)入的引線不同,其外部振蕩信號(hào)源接入的方式也不同。HMOS型單片機(jī)由XTAL2進(jìn)入,外部振蕩信號(hào)接至XTAL2,而內(nèi)部反相放大器的輸入端XTAL1應(yīng)接地,如圖4.3所示。由于XTAL2端得邏輯電平不是TTL的,故還要接一上拉電阻。CHMOS型單片機(jī)由XTAL1進(jìn)入,外部振蕩信號(hào)接至XTAL2可不接地,如圖4.4所示。
圖4.2 使用片內(nèi)振蕩電路的時(shí)鐘電路
圖4.3 HMOS型單片機(jī)的外部時(shí)鐘電路圖4.4 CHMOS型單片機(jī)的外部時(shí)鐘電路
4.3 電源電路在水位控制系統(tǒng)中,本單元為系統(tǒng)提供+5V的工作電源。從220V的交流電通過(guò)變壓器轉(zhuǎn)換為15V電壓,然后經(jīng)過(guò)整流橋、濾波后得到+5V的系統(tǒng)工作電源,如圖4.5所示。
圖4.5 單片機(jī)的電源電路 4.4 傳感器傳感器來(lái)自“感覺(jué)”一詞。人們用視覺(jué)、聽(tīng)覺(jué)、嗅覺(jué)和觸覺(jué)等器官感受外界的有關(guān)信息,如物體的大小、形狀和顏色,感覺(jué)到的聲音、氣味等。在視覺(jué)情況下,絕不是靠眼睛本身進(jìn)行感覺(jué),而是從眼睛進(jìn)入的外界刺激信號(hào)通過(guò)神經(jīng)傳送到大腦,由大腦感知物體的大小和顏色,然后由大腦提供命令信號(hào)支配行動(dòng)。聽(tīng)覺(jué)和嗅覺(jué)也完全一樣。然而要是大腦受到這些刺激,首先必須有接受外界刺激的“五官”人的“五官”可以稱之為傳感器。它們的基本功能是首先接收外界的刺激信號(hào)然后產(chǎn)生作用于各種神經(jīng)傳送信號(hào)的能量,最后再傳送大腦。
傳感器是一種能感受被測(cè)物體物理量并將其轉(zhuǎn)化為便于傳輸或處理的電信號(hào)的裝置,在現(xiàn)代科技領(lǐng)域中,傳感器得到了廣泛應(yīng)用,各種信息的采集離不了各種傳感器,傳感器的基本功能在于能感受外界的各種“刺激”并作出迅速反映。本設(shè)計(jì)當(dāng)中我們采用的水位探測(cè)傳感器。
傳感器使用SY-9411L-D型變送器,它內(nèi)部含有1個(gè)壓力傳感器和相應(yīng)的放大電路。壓力傳感器是美國(guó)SM公司生產(chǎn)的555-2型OEM壓阻式壓力傳感器,其有全溫度補(bǔ)償及標(biāo)定(0-70度),傳感器經(jīng)過(guò)特殊加工處理,用堅(jiān)固的耐高溫塑料外殼封裝。其引腳分布如圖6.1所示。1腳為信號(hào)輸出(-);2腳為信號(hào)輸出(-);3腳為激勵(lì)電壓;4腳為地;5腳為信號(hào)輸出(+);6腳為信號(hào)輸出(+)[9]。
在水箱底部安裝1根直徑為5mm的軟管,一端安裝在水箱底部;另一端與傳感器連接。水箱水位高度發(fā)生變化時(shí),引起軟管內(nèi)水壓變化,然后傳感器把水壓轉(zhuǎn)換成電壓信號(hào),輸送到A/D轉(zhuǎn)化器。
4.5 串行通信單片機(jī)要跟PC連接要用到串行通信,如4.7和4.8所示框圖框圖和系統(tǒng)原理圖[10]。
圖4.7 單片機(jī)和PC連接框圖
圖4.8 串行通信原理圖 4.6 鍵盤(pán)電路P1口作為鍵盤(pán)電路,連接一個(gè)4*4鍵盤(pán)。結(jié)構(gòu)如圖4.9所示。
圖4.9 鍵盤(pán)電路
4.7 水位顯示電路顯示電路如圖4.10所示。
圖4.10顯示電路
液位顯示采用數(shù)碼管動(dòng)態(tài)顯示,范圍從0-999(單位可自定),選擇的數(shù)碼管是7段共陰極連接,型號(hào)是LDS18B20。在這里使用到了74HC244,它是一個(gè)8位的D觸發(fā)器,在單片機(jī)系統(tǒng)中經(jīng)常使用,可以作為地址數(shù)據(jù)總線擴(kuò)展的鎖存器,也可以作為普通的LED的驅(qū)動(dòng)器件,由于單獨(dú)使用HEF4511B七段譯碼驅(qū)動(dòng)顯示器來(lái)完成數(shù)碼管的驅(qū)動(dòng)顯示,圖4.10是顯示電路的原理圖[11]。
4.8 A/D轉(zhuǎn)換電路4.8.1 ADC0809的內(nèi)部邏輯結(jié)構(gòu)A/D轉(zhuǎn)化電路在控制器中起主導(dǎo)作用,用它將傳感器輸出的模擬電壓信號(hào)轉(zhuǎn)換為單片機(jī)能處理的數(shù)字量。該控制器采用CMOS工藝制造的逐步逼近式8位A/D轉(zhuǎn)換器芯片ADC0809。在使用時(shí)可選擇中斷、查詢和延時(shí)等待3種方法編制A/D轉(zhuǎn)換程序。在接線時(shí)先經(jīng)過(guò)運(yùn)算放大器和分壓電路把傳感器輸出的電流信號(hào)轉(zhuǎn)換為電壓信號(hào),然后輸入到A/D轉(zhuǎn)換器。
ADC0809是由一個(gè)8路模擬開(kāi)關(guān)、一個(gè)地址鎖存與譯碼器、一個(gè)A/D轉(zhuǎn)換器和一個(gè)三態(tài)輸出鎖存器組成。多路開(kāi)關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖存器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時(shí),才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)化完的數(shù)據(jù)。
4.8.2 ADC0809的引腳圖ADC0809的引腳圖如圖4.12所示。
ADC0809芯片為28引腳為雙列直插式封裝,
對(duì)ADC0809主要信號(hào)引腳的功能說(shuō)明如下:
IN7-IN0——模擬量輸入通道
ALE——地址鎖存允許信號(hào)。對(duì)應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器。
START——轉(zhuǎn)換啟動(dòng)信號(hào)。START上升沿時(shí),復(fù)位ADC0809;START下降沿時(shí)啟動(dòng)芯片,開(kāi)始進(jìn)行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。本信號(hào)有時(shí)簡(jiǎn)寫(xiě)為ST[12]。
圖4.12 ADC0809引腳圖
- B、C——地址線。通道端口選擇線,A為低地址,C為高地址,引腳圖中為ADDA、ADDB和ADDC。其地址狀態(tài)與通道對(duì)應(yīng)關(guān)系表見(jiàn)4-1。
CLK——時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒(méi)有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,因此有時(shí)鐘信號(hào) 引腳。通常使用頻率為500KHZ的時(shí)鐘信號(hào)。
EOC——轉(zhuǎn)換結(jié)束信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號(hào)即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請(qǐng)求信號(hào)使用。
D7-D0——數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)線直接相連。D0為最低位,D7為最高
OE——輸出允許信號(hào)。用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。
Vcc—+5V電源。
Vref——參考電源參考電壓用來(lái)與輸入的模擬信號(hào)進(jìn)行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref+=+5V, Verf-=-5V)
A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)分別是:分辨率和轉(zhuǎn)換速率。
分辨率表示輸出數(shù)字量變化一個(gè)相鄰數(shù)碼所需輸入模擬電壓的變化量。
ADC的轉(zhuǎn)換速率就是能夠重復(fù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的速度,即是每秒轉(zhuǎn)換的次數(shù)。而完成一次A/D轉(zhuǎn)換所需要的時(shí)間(包括穩(wěn)定時(shí)間),就是轉(zhuǎn)換速率的倒數(shù)。
ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖如4.13所示。
表4-1為通道選擇表。
表4-1通道選擇表
圖4.13 ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖

4.8.3 A/D轉(zhuǎn)換電路原理圖另外在設(shè)計(jì)過(guò)程中預(yù)留了串行口,供進(jìn)一步開(kāi)發(fā)使用。A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問(wèn)題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。
A/D轉(zhuǎn)換電路原理如圖4.14所示。
圖4.14 A/D轉(zhuǎn)換電路原理圖確定A/D轉(zhuǎn)換是否完成,通常采用以下三種方式。
對(duì)于一種A/D轉(zhuǎn)換器來(lái)說(shuō),轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時(shí)間為128uS,相當(dāng)于6MHz的MCS-51單片機(jī)共64個(gè)機(jī)器周期。可據(jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。
A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0809的EOC端。因此可以用查詢方式,測(cè)試EOC的狀態(tài),即可確定轉(zhuǎn)換是否完成,并接著進(jìn)行數(shù)據(jù)傳送。
把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。
不管采用上述哪種方式,只要一旦確定了轉(zhuǎn)換完成,即可通過(guò)指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以RD信號(hào)時(shí)有效,OE信號(hào)既有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接受[13]。
4.9 電機(jī)控制
設(shè)計(jì)采用交流過(guò)零型固態(tài)繼電器,它有過(guò)零時(shí)開(kāi)啟,負(fù)載電流過(guò)零時(shí)關(guān)斷的特性。它的最大接通、關(guān)斷時(shí)間是半個(gè)電源周期,在負(fù)載上可得到一個(gè)完整的正弦波形。它相應(yīng)地減少了對(duì)負(fù)載的沖擊,而在相應(yīng)的控制回路中產(chǎn)生的射頻干擾也大大減少。當(dāng)控制端輸入低電平時(shí),SSR導(dǎo)通,控制電動(dòng)機(jī)開(kāi)始工作上水;當(dāng)控制端輸入高電平時(shí),SSR截止,電動(dòng)機(jī)停止工作并停止上水。這樣便可以實(shí)現(xiàn)對(duì)水箱水位的控制[14],其控制電路圖如圖4.15所示。
圖4.15 電機(jī)控制電路圖
4.10 看門(mén)狗電路Watchdog(監(jiān)控定時(shí)器)技術(shù)是一個(gè)與CPU構(gòu)成閉合回路的定時(shí)器,是抗干擾和可靠性措施之一。
在由單片機(jī)構(gòu)成的微型計(jì)算機(jī)系統(tǒng)中,由于單片機(jī)的工作常常會(huì)受到來(lái)自外界電磁場(chǎng)的干擾,造成程序的跑飛,而陷入死循環(huán),程序的正常運(yùn)行被打斷,由單片機(jī)控制的系統(tǒng)無(wú)法繼續(xù)工作,會(huì)造成整個(gè)系統(tǒng)的陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對(duì)單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)的考慮,便產(chǎn)生了一種專門(mén)用于監(jiān)測(cè)單片機(jī)程序運(yùn)行狀態(tài)的芯片,俗稱“看門(mén)狗”
(watchdog)。
看門(mén)狗電路的應(yīng)用,使單片機(jī)可以在無(wú)人狀態(tài)下實(shí)現(xiàn)連續(xù)工作,其工作原理是:看門(mén)狗芯片和單片機(jī)的一個(gè)I/O引腳相連,該I/O引腳通過(guò)程序控制它定時(shí)地往看門(mén)狗的這個(gè)引腳上送入高電平(或低電平),這一程序語(yǔ)句是分散地放在單片機(jī)其他控制語(yǔ)句中間的,一旦單片機(jī)由于干擾造成程序跑飛后而陷入某一程序段進(jìn)入死循環(huán)狀態(tài)時(shí),寫(xiě)看門(mén)狗引腳的程序便不能被執(zhí)行,這個(gè)時(shí)候,看門(mén)狗電路就會(huì)由于得不到單片機(jī)送來(lái)的信號(hào),便在它和單片機(jī)復(fù)位引腳相連的引腳上送出一個(gè)復(fù)位信號(hào),使單片機(jī)發(fā)生復(fù)位,即程序從程序存儲(chǔ)器的起始位置開(kāi)始執(zhí)行,這樣便實(shí)現(xiàn)了單片機(jī)的自動(dòng)復(fù)位。
看門(mén)狗,又叫 watchdog timer,是一個(gè)定時(shí)器電路,一般有一個(gè)輸入,叫喂狗(kicking the dog or service the dog),一個(gè)輸出到MCU的RST端,MCU正常工作的時(shí)候,每隔一端時(shí)間輸出一個(gè)信號(hào)到喂狗端,給WDT清零,如果超過(guò)規(guī)定的時(shí)間不喂狗,(一般在程序跑飛時(shí))WDT定時(shí)超過(guò),就回給出一個(gè)復(fù)位信號(hào)到MC,是MCU復(fù)位。防止MCU死機(jī)。看門(mén)狗的作用就是防止程序發(fā)生死循環(huán),或者說(shuō)程序跑飛[15]。
工作原理:在系統(tǒng)運(yùn)行以后也就啟動(dòng)了看門(mén)狗的計(jì)數(shù)器,看門(mén)狗就開(kāi)始自動(dòng)計(jì)數(shù),如果到了一定的時(shí)間還不去清看門(mén)狗,那么看門(mén)狗計(jì)數(shù)器就會(huì)溢出從而引起看門(mén)狗中斷,造成系統(tǒng)復(fù)位。所以在使用有看門(mén)狗的芯片時(shí)要注意清看門(mén)狗。
系統(tǒng)軟件"看門(mén)狗"的設(shè)計(jì)思路:
(1)看門(mén)狗定時(shí)器T0的設(shè)置。在初始化程序塊中設(shè)置T0的工作方式,并開(kāi)啟中斷和計(jì)數(shù)功能。系統(tǒng)Fosc=12 MHz,T0為16位計(jì)數(shù)器,最大計(jì)數(shù)值為(2的16次方)-1=65 535,T0輸入計(jì)數(shù)頻率是。Fosc/12,溢出周期為(65 535+1)/1=65 536(μs)。
(2)計(jì)算主控程序循環(huán)一次的耗時(shí)。考慮系統(tǒng)各功能模塊及其循環(huán)次數(shù),本系統(tǒng)主控制程序的運(yùn)行時(shí)間約為16.6 ms。系統(tǒng)設(shè)置“看門(mén)狗”定時(shí)器T0定時(shí)30 ms(T0的初值為65536-30000=35536)。主控程序的每次循環(huán)都將刷新T0的初值。如程序進(jìn)入“死循環(huán)”而T0的初值在30 ms內(nèi)未被刷新,這時(shí)“看門(mén)狗”定時(shí)器T0將溢出并申請(qǐng)中斷。
(3)設(shè)計(jì)T0溢出所對(duì)應(yīng)的中斷服務(wù)程序。此子程序只須一條指令,即在T0對(duì)應(yīng)的中斷向量地址(000BH)寫(xiě)入“無(wú)條件轉(zhuǎn)移”命令,把計(jì)算機(jī)拖回整個(gè)程序的第一行,對(duì)單片機(jī)重新進(jìn)行初始化并獲得正確的執(zhí)行順序。
正常情況下,CPU在Watchdog“定時(shí)”到以前對(duì)它訪問(wèn)1次,定時(shí)器重新開(kāi)始計(jì)時(shí)后Watchdog不起作用;如果發(fā)生“定時(shí)信號(hào)”就會(huì)出現(xiàn),從而引起系統(tǒng)復(fù)位。具體的實(shí)現(xiàn)電路如圖4.15所示。
圖4.15看門(mén)狗電路電路圖 4.11 穩(wěn)壓電路本電路的主要作用是使從傳感器輸出的電平能夠穩(wěn)定地輸入單片機(jī)中,主要由三極管的兩極放大穩(wěn)定電路組成,其工作過(guò)程是水位探測(cè)傳感器把探測(cè)到的電信號(hào)送給R12,如果送入的是高電平則R11、Q5、D3、Q4導(dǎo)通把低于1.4V的低電平穩(wěn)定地送給單片機(jī)。如果是低電平送給R12則R11、Q5、D3、Q4均不能導(dǎo)通二是R13導(dǎo)通將把高于1.4V的高電平穩(wěn)定的送給單片機(jī)[16]。穩(wěn)壓電路的設(shè)計(jì)如下圖4.16所示。
圖4.16 穩(wěn)壓電路 4.12 報(bào)警電路當(dāng)水位高于90開(kāi)度的時(shí)候,由傳感器經(jīng)變送器發(fā)送信號(hào)。LG閉合,系統(tǒng)水位高報(bào)警,D6亮。
當(dāng)水位低于75開(kāi)度的時(shí)候,由傳感器經(jīng)變送器發(fā)送信號(hào),LD閉合,系統(tǒng)水位低報(bào)警,D7亮。
當(dāng)水位低于50開(kāi)度的時(shí)候,由傳感器經(jīng)變送器發(fā)送信號(hào),LDD閉合,系統(tǒng)水位低低報(bào)警,D8亮[17]。
報(bào)警電路如圖4.17所示。
圖4.17 報(bào)警電路圖
5 軟件設(shè)計(jì)
5.1 程序設(shè)計(jì)流程圖
圖5.1 程序設(shè)計(jì)框圖
5.2 程序設(shè)計(jì)
5.2.1 鍵盤(pán)程序由于鍵盤(pán)采用的是4*4的結(jié)構(gòu),因此可使用的鍵有16個(gè),根據(jù)需要分別定義各鍵,0-9號(hào)為數(shù)字鍵,10-15號(hào)分別是確定鍵、修改鍵、移位鍵、加/減鍵、取消鍵和復(fù)位鍵。程序如下:
KEY: MOV P2,#07H ;用反轉(zhuǎn)法查鍵
KEY1: MOV B,A ;有鍵按下,存鍵碼
MOV A,P2
MOV DPTR,# T ABLE
ANL A,# 07H
MOV R3,# 0FFH ;存順序碼單元初始化
MOV B,A
KEY2:INC R3
MOV P2,# 0F8H
MOV A,R3
MOV A,P2
MOV C A,@DPTR
ANL A,#0F8H
CJNE A,KEY3 ;判鍵碼,求順序碼
ORL A,B
MOV A,R3 ;若找到鍵碼,存順序碼
CJNE A,# 0FFH,KEY 1
RET
RET ;無(wú)鍵按下
KEY3: CJNE A,# 0FFH,KEY2 ;判斷是否查完
RET ;已查完,鍵碼未找到,以無(wú)按鍵處理
TABLE:DB 0F6H,0EEH,0DEH,0BEH,7EH ;按鍵特征碼表
5.2.2 A/D轉(zhuǎn)換子程序A/D轉(zhuǎn)換子程序如下:
ADCC:PUSH ACC ;模數(shù)轉(zhuǎn)換程序
PUSH B
MOV DPTR,# 0BFFFH
MOVX A,@DPTR ;讀模數(shù)轉(zhuǎn)換值
MOV B,# 0AH ;十六/十進(jìn)制轉(zhuǎn)換
DIV AB
MOV DSP1,B
MOV B,# 0AH
DIV AB
MOV DSP2,B
MOV DSP3,A
POP B
POP ACC
SETB EA
RETI
5.2.3 初始化程序 ORL P2,#0FH ;初始化
SETB P1.7 ;關(guān)閉水泵
SETB P1.2 ;關(guān)閉報(bào)警器
ANL P1,#03H ;為檢查水位狀態(tài)做準(zhǔn)備
MOV A,P1 ;讀P1口
JNB ACC.0,LOOP1 ;當(dāng)P1.0=0則轉(zhuǎn)
JB ACC.1,LOOP2 ;當(dāng)1.1=1則轉(zhuǎn)
5.2.4 運(yùn)行狀態(tài)下的程序1. 電機(jī)不運(yùn)轉(zhuǎn),報(bào)警器不響,“水滿”LED亮
SETB P1.7 ;使P1.7=1,停止電機(jī)工作
SETB P1.2 ;關(guān)閉報(bào)警器
CLR P2.3 ;“水滿”LED亮
2. 適中狀態(tài)下的程序
電機(jī)運(yùn)轉(zhuǎn),報(bào)警器不響,“欠水”LED亮
SETB P1.2 ;關(guān)閉報(bào)警器
CLR P2.2 ;“適中”LED亮
3. 欠水狀態(tài)下的程序
電機(jī)運(yùn)轉(zhuǎn),報(bào)警器不響,“欠水”LED亮
CLR P1.7 ;使P1.7=0,啟動(dòng)電機(jī)工作
SETB P1.2 ;關(guān)閉報(bào)警器
CLR P2.1 ;欠水“LED”亮
4. 故障狀態(tài)下的程序
電機(jī)不運(yùn)轉(zhuǎn),報(bào)警器響3S后關(guān)閉,“欠水”和“故障”LED一直亮
SETB P1.7 ;使P1.7=1,停止電機(jī)工作
CLR P1.2 ;報(bào)警器響
CLR P2.1 ;“欠水”LED亮
CLR P2.0 ;“故障”LED亮
ACALL DELAY ;調(diào)用3S延時(shí)子程序
SETB P1.2 ;關(guān)閉報(bào)警器
LOOP4:AJMP LOOP4 ;出現(xiàn)故障后程序進(jìn)入等待狀態(tài)
結(jié) 論
本系統(tǒng)就介紹了一種以單片機(jī)為核心對(duì)水箱水位進(jìn)行控制的方案,分為硬件和軟件兩個(gè)部分,硬件部分介紹了系統(tǒng)要實(shí)現(xiàn)的功能,以及要實(shí)現(xiàn)這些功能所必備的硬件設(shè)備,并通過(guò)多種方案的比較得到最佳的方案。并根據(jù)硬件設(shè)備的功能編寫(xiě)程序,控制器的職能通過(guò)編制相應(yīng)的應(yīng)用軟件就得以實(shí)現(xiàn)了。
軟件和硬件設(shè)計(jì)部分的成功與否直接影響這系統(tǒng)性能的優(yōu)劣。初始化主要是完成中斷任務(wù),接著系統(tǒng)就開(kāi)始接受檢測(cè)信號(hào),如果信號(hào)沒(méi)有越過(guò)設(shè)定的界限,那么系統(tǒng)會(huì)繼續(xù)往后檢測(cè),如果信號(hào)越過(guò)了設(shè)定的界限,系統(tǒng)就會(huì)暫停當(dāng)前的工作,進(jìn)入到中斷處理程序,在中斷處理過(guò)程中,將判斷是否有水位處于極限低狀態(tài),若有則報(bào)警,沒(méi)有則繼續(xù)檢測(cè)水位是否高于上限或者低于下限,如果有水位信號(hào)輸入或高水位信號(hào)輸入,系統(tǒng)則進(jìn)行調(diào)節(jié),中斷返回后繼續(xù)往下檢測(cè),這就完成了中斷程序的極限信號(hào)判斷,然后轉(zhuǎn)到相應(yīng)的處理程序。
用單片機(jī)進(jìn)行控制,能夠直觀的反應(yīng)水位的運(yùn)行狀態(tài),將水箱的傳感器信號(hào)通過(guò)儀表顯示為上下限信號(hào)的輸入,使得水位易于控制,而且造價(jià)低,程序易于調(diào)試。采用單片機(jī)的水位控制系統(tǒng),運(yùn)行穩(wěn)定,控制效果明顯改善,同時(shí)大大提高了控制系統(tǒng)的抗干擾能力,保證了水位的運(yùn)動(dòng)運(yùn)行。水箱控制器充分利用了單片機(jī)的特點(diǎn),軟件維護(hù)簡(jiǎn)單方便,具有良好的應(yīng)用前景,因此可以預(yù)見(jiàn)采用計(jì)算機(jī)控制水位系統(tǒng)是非常必要的。
受時(shí)間和經(jīng)驗(yàn)限制,本系統(tǒng)有不足和需改進(jìn)的地方:
(1)由于時(shí)間和經(jīng)驗(yàn)有限,所以只能畫(huà)出硬件圖、原理圖和程序流程圖,并沒(méi)有畫(huà)出模擬圖。
(2) PROTEL軟件之前并沒(méi)有學(xué)過(guò),所以使用起來(lái)會(huì)比較生疏。
致 謝大學(xué)即將畢業(yè),回顧這四年的學(xué)習(xí),不由得感慨萬(wàn)分,通過(guò)幾年辛苦的學(xué)習(xí),畢業(yè)論文順利的完成。回頭看看我所取得的每一份成績(jī),都離不開(kāi)我周?chē)耐瑢W(xué)們和老師的幫助與鼓勵(lì)。在此表達(dá)我深深的謝意。作態(tài)度和創(chuàng)造性的科研方式使我受益匪淺,在此,謹(jǐn)向?qū)煴硎镜闹孕牡母兄x和崇高的敬意。
附錄1系統(tǒng)原理如圖1
圖1 系統(tǒng)原理圖
附錄2
總程序設(shè)計(jì):
- 1. 初始化程序
- ORL P2,#0FH ;初始化
- SETB P1.7 ;關(guān)閉水泵
- SETB P1.2 ;關(guān)閉報(bào)警器
- ANL P1,#03H ;為檢查水位狀態(tài)做準(zhǔn)備
- MOV A,P1 ;讀P1口
- JNB ACC.0,LOOP1 ;當(dāng)P1.0=0則轉(zhuǎn)
- JB ACC.1,LOOP2 ;當(dāng)1.1=1則轉(zhuǎn)
- 2. 鍵盤(pán)電路
- KEY: MOV P2,#07H ;用反轉(zhuǎn)法查鍵
- KEY1: MOV B,A ;有鍵按下,存鍵碼
- MOV A,P2
- MOV DPTR,# T ABLE
- ANL A,# 07H
- MOV R3,# 0FFH ;存順序碼單元初始化
- MOV B,A
- KEY2:INC R3
- MOV P2,# 0F8H
- MOV A,R3
- MOV A,P2
- MOV C A,@DPTR
- ANL A,#0F8H
- CJNE A,KEY3 ;判鍵碼,求順序碼
- ORL A,B
- MOV A,R3 ;若找到鍵碼,存順序碼
- CJNE A,# 0FFH,KEY 1
- RET
- RET ;無(wú)鍵按下
- KEY3: CJNE A,# 0FFH,KEY2 ;判斷是否查完
- RET ;已查完,鍵碼未找到,以無(wú)按鍵處理
- TABLE:DB 0F6H,0EEH,0DEH,0BEH,7EH ;按鍵特征碼表
- 3. A/D轉(zhuǎn)換子程序
- ADCC:PUSH ACC ;模數(shù)轉(zhuǎn)換程序
- PUSH B
- MOV DPTR,# 0BFFFH
- MOVX A,@DPTR ;讀模數(shù)轉(zhuǎn)換值
- MOV B,# 0AH ;十六/十進(jìn)制轉(zhuǎn)換
- DIV AB
- MOV DSP1,B
- MOV B,# 0AH
- DIV AB
- MOV DSP2,B
- MOV DSP3,A
- POP B
- POP ACC
- SETB EA
- RETI
- 4. 水滿狀態(tài)下的程序
- 電機(jī)不運(yùn)轉(zhuǎn),報(bào)警器不響,“水滿”LED亮
- SETB P1.7 ;使P1.7=1,停止電機(jī)工作
- SETB P1.2 ;關(guān)閉報(bào)警器
- CLR P2.3 ;“水滿”LED亮
- 5. 適中狀態(tài)下的程序
- 電機(jī)運(yùn)轉(zhuǎn),報(bào)警器不響,“欠水”LED亮
- SETB P1.2 ;關(guān)閉報(bào)警器
- CLR P2.2 ;“適中”LED亮
- 6. 欠水狀態(tài)下的程序
- 電機(jī)運(yùn)轉(zhuǎn),報(bào)警器不響,“欠水”LED亮
- CLR P1.7 ;使P1.7=0,啟動(dòng)電機(jī)工作
- SETB P1.2 ;關(guān)閉報(bào)警器
- CLR P2.1 ;欠水“LED”亮
- 7. 故障狀態(tài)下的程序
- 電機(jī)不運(yùn)轉(zhuǎn),報(bào)警器響3S后關(guān)閉,“欠水”和“故障”LED一直亮
- SETB P1.7 ;使P1.7=1,停止電機(jī)工作
- CLR P1.2 ;報(bào)警器響
- CLR P2.1 ;“欠水”LED亮
- CLR P2.0 ;“故障”LED亮
- ACALL DELAY ;調(diào)用3S延時(shí)子程序
- SETB P1.2 ;關(guān)閉報(bào)警器
- LOOP4:AJMP LOOP4 ;出現(xiàn)故障后程序進(jìn)入等待狀態(tài)
復(fù)制代碼