畢業(yè)設(shè)計基于51單片機控制的水塔自動供水系統(tǒng)設(shè)計_第1頁
畢業(yè)設(shè)計基于51單片機控制的水塔自動供水系統(tǒng)設(shè)計_第2頁
畢業(yè)設(shè)計基于51單片機控制的水塔自動供水系統(tǒng)設(shè)計_第3頁
畢業(yè)設(shè)計基于51單片機控制的水塔自動供水系統(tǒng)設(shè)計_第4頁
畢業(yè)設(shè)計基于51單片機控制的水塔自動供水系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、畢 業(yè) (設(shè) 計) 論 文題目: 基于51單片機控制的水塔自動供水系統(tǒng)系部: 電氣工程與自動化系 專業(yè): 自動化技術(shù) 班級: 電氣A0701班 姓名: 李月鵬 指導教師: 陳毅朋、張慧明 山 西 綜 合 職 業(yè) 技 術(shù) 學 院 摘 要微型計算機SCMC,簡稱單片機,又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。這種計算機的最小系統(tǒng)只用了一片集成電路,可進行簡單運算和控制。雖然單片機只有一個芯片,但無論從組成還是從功能上看,它已具備了計算機系統(tǒng)的屬性,是一個簡單的微型計算機。單片機以其體積小、功能全、價格優(yōu)等種種優(yōu)勢充斥著整個市場?,F(xiàn)在,單片機的使用領(lǐng)域

2、已十分廣泛,如智能儀表、實時工控、導航系統(tǒng)、家用電器等。單片機開發(fā)出的各種產(chǎn)品遍布于我們?nèi)粘I钪械拿總€角落。為了加深對單片機智能型控制器的了解,經(jīng)過綜合分析,本次設(shè)計最終選取了由51單片機控制的智能型液位控制器作為研究項目,本文對單片機水塔水位控制系統(tǒng)進行了整體設(shè)計,完成了單片機水塔水位控制系統(tǒng)硬件接線圖和流程圖以及單片機內(nèi)部控制程序設(shè)計,并完成了開發(fā)板模擬仿真過程。通過此次設(shè)計過程,自己在分析問題、解決問題方面的能力得到了很大程度的提高。關(guān)鍵詞: MCS-51單片機 液壓傳感器 AD轉(zhuǎn)換 水塔水位檢控目 錄引言31、系統(tǒng)設(shè)計方案比較及論證32、系統(tǒng)原理框圖43、工作原理44、硬件設(shè)計44.

3、1 STC89C52RC單片機簡介44.2 鎖存器(74HC573)簡介54.3 ADC0804簡介64.4 單片機與繼電器及蜂鳴器的接口電路74.5 井中缺水信號檢測電路84.6 壓力傳感器介紹94.7 LCD1602液晶顯示屏接線圖及其引腳功能圖104.8 開關(guān)電源部分105、軟件設(shè)計125.1 程序流程圖125.2 程序流程圖解析136、實驗仿真結(jié)果137、結(jié)束語13致謝14附 錄15附錄1 PCB原理圖15附錄2 C程序16參考文獻26基于51單片機控制的水塔自動供水系統(tǒng)山西綜合職業(yè)技術(shù)學院 李月鵬引言    水塔供水的主要問題是塔內(nèi)水位應(yīng)始終保持在一定范

4、圍,避免“空塔”、“溢塔”現(xiàn)象發(fā)生。目前,控制水塔水位方法較多,其中較為常用的是由單片機控制實現(xiàn)自動運行,使水塔內(nèi)水位保持恒定,以保證連續(xù)正常地供水。實際供水過程中要確保水位在允許的范圍內(nèi)浮動,應(yīng)采用水壓監(jiān)測來控制水位。首先通過壓力傳感器實時檢測水壓,測量水位變化,再變送成電壓信號傳回單片機,由單片機執(zhí)行內(nèi)部控制程序指令,從而控制水泵電動機,保證水位在正常范圍內(nèi)變化。為此,這里給出以STC公司的STC89C52RC單片機為核心器件、以壓力傳感器為檢測原件、通過ADC0804芯片為信號轉(zhuǎn)換原件的水塔水位檢測控制系統(tǒng)仿真設(shè)計,實現(xiàn)水位的自動檢測控制、電機故障檢測和報警等功能,通過在51單片機實驗開

5、發(fā)板上實際仿真,實驗結(jié)果表明:該系統(tǒng)具有良好的檢測和控制功能,實用性很強。1 系統(tǒng)設(shè)計方案比較及論證 對于液位進行控制的方式有很多,而應(yīng)用較多的主要有2種,一種是通過簡單的機械控制裝置來實現(xiàn),而另一種是由復雜的控制器來控制。兩種方式的實現(xiàn)簡介如下: (1)簡單的機械式控制方式。其常用形式有浮標式、電極式等,這種控制形式的優(yōu)點是結(jié)構(gòu)簡單,成本低廉。存在問題是精度不高,不能進行數(shù)值顯示,另外很容易引起誤動作,且只能單獨控制,與計算機進行通信較難實現(xiàn)。 (2)復雜控制器控制方式。這種控制方式是通過安裝在水塔出口管道上的壓力傳感器來把出口水壓變成標準工業(yè)電信號的模擬信號,再經(jīng)過前置放大、AD轉(zhuǎn)換模塊變

6、換成數(shù)字信號傳送到單片機中,而后經(jīng)單片機運算和給定參量的比較,進行PID運算,得出調(diào)節(jié)參量;最后經(jīng)由DA變換給調(diào)壓、變頻調(diào)速裝置輸入給定端,控制其輸出電壓變化,來調(diào)節(jié)電機轉(zhuǎn)速,以達到控制水箱液位的目的。 針對上述2種控制方式,以及設(shè)計需達到的性能要求,這里選取第二種控制方式,同時考慮到成本問題需要把PID控制去掉。最終形成的方案是,利用單片機為控制核心,設(shè)計一個對水塔水位能進行自動監(jiān)控的工控系統(tǒng)。根據(jù)監(jiān)控對象的特征,要求實時檢測水塔的液位高度,并與開始預(yù)設(shè)定的上、下限值做比較,由單片機控制固態(tài)繼電器的開斷進行液位的調(diào)整,最終達到液位的預(yù)設(shè)定值范圍內(nèi)。檢測值若高于上限設(shè)定值時,要求報警,同時斷開

7、繼電器,使水泵停止上水;檢測值若低于下限設(shè)定值,要求報警,同時開啟繼電器,控制水泵開始上水。現(xiàn)場在LCD1602液晶屏上實時顯示測量值,從而實現(xiàn)對水箱液位的自動監(jiān)控。 在功能上,本設(shè)計還預(yù)留了兩個調(diào)參按鍵,通過這兩個按鍵可以自由設(shè)定水塔內(nèi)水位的上下限值,以此來實現(xiàn)人工可控功能。2 系統(tǒng)原理框圖 圖1 系統(tǒng)原理框圖3 工作原理基于51單片機實現(xiàn)液位控制的控制器是以STC89C52RC芯片為核心,由鍵盤、LCD1602液晶顯示、ADC0804模數(shù)轉(zhuǎn)換、液壓傳感器、開關(guān)電源、蜂鳴報警、電磁繼電器等部分組成。工作過程如下:水塔液位發(fā)生變化時,引起水塔中液壓傳感器的輸出電壓值變化,即把壓力變化量轉(zhuǎn)化成電

8、壓信號;該信號經(jīng)過運算放大電路放大后變成幅度為05 V標準信號,送入AD轉(zhuǎn)換器,AD轉(zhuǎn)換器把模擬信號量變成數(shù)字信號量,再由單片機進行實時數(shù)據(jù)采集,并進行處理,根據(jù)設(shè)定要求控制輸出,同時由液晶屏顯示液位高度。通過鍵盤能夠自由設(shè)置水位上下限值。該系統(tǒng)控制器的最大特點是可直觀地顯示水位占水塔容積的百分量,并可任意控制水位上下限高度。 4 硬件設(shè)計液位控制器的硬件主要包括由單片機、液壓傳感器(帶變送器)、鍵盤電路、液晶顯示電路、AD轉(zhuǎn)換器和輸出控制電路等。 4.1 STC89C52單片機簡介 單片機采用的是由STC公司生產(chǎn)的雙列40腳STC89C52RC芯片。STC公司生產(chǎn)的STC89C52RC單片機

9、,是一款性價比非常高的單片機,普通用戶可完全將其當作一般的51單片機來使用,高級用戶可使用其擴展功能。 STC公司的單片機內(nèi)部資源比起來ATMEL公司的單片機要豐富的多,它內(nèi)部有1280字節(jié)的SRAM、8-64K字節(jié)的內(nèi)部程序存儲器、2-8K字節(jié)的ISP引導碼、除P0-P3口外還多出了P4口(PLCC封裝)、片內(nèi)自帶8路8位AD(AD系列),片內(nèi)自帶EEPROM、單片機內(nèi)自帶看門狗、雙數(shù)據(jù)指針等。目前STC公司的單片機在國內(nèi)市場上的占有率與日俱增。其中在這里我們把P0口連接LCD1602液晶顯示屏;P1口用于AD轉(zhuǎn)換; P2口用于控制電磁閥、蜂鳴報警和鍵盤輸入;P3口用于讀寫控制和中斷等。下圖

10、是STC89C52RC單片機管腳圖。 圖2 STC89C52RC單片機管腳圖4.2 鎖存器(74HC573)簡介 鎖存器,顧名思義,就是把輸入端的數(shù)據(jù)鎖存(或送出)到輸出端,如下圖所示,第11角(鎖存端)為高電平的時候,右邊D0-D7的輸入與左邊Q0-Q7的輸出是直通的,就是說,輸入端是什么電平,輸出端就是什么電平,可以把它當作不存在。當?shù)?1角為低電平的時候,左右兩端就被斷開了,無論輸入端怎么變化,輸出端都不會變化,當?shù)?1角由低電平變?yōu)楦唠娖降囊凰查g,輸入端的數(shù)據(jù)立刻被傳送到輸出端,并且在11角保持為高電平期間,輸出端數(shù)據(jù)始終的輸入端數(shù)據(jù)相同,如果此時我們再次把第11角設(shè)置為低電平,那么以

11、后當輸入端無論再怎么變化,輸出端都不會變化而是保持剛才第11角在下降沿(由高電平到低電平跳變)之間時輸入端的值,這樣就達到了鎖存數(shù)據(jù)的目的,這也就是所謂的總線設(shè)計思路,一個8位的數(shù)據(jù)線加一個鎖存器后就可以擴接多個元件,當選通哪個元件的片選信號,就送數(shù)據(jù)給那個元件。 圖3 74HC573管腳圖4.3 ADC0804簡介 ADC0804是8位全MOS中速A/D 轉(zhuǎn)換器,它是逐次逼近式A/D 轉(zhuǎn)換器,片內(nèi)有三態(tài)數(shù)據(jù)輸出鎖存器,可以和單片機直接接口。單通道輸入,轉(zhuǎn)換時間大約為100us。ADC0804 轉(zhuǎn)換時序是:當CS0 許可進行A/D 轉(zhuǎn)換。WR由低到高時,A/D開始轉(zhuǎn)換。CS與WR同時有效時啟動

12、A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)束產(chǎn)生INTR 信號(低電平有效),可供查詢或者中斷信號。在CS和RD 的控制下可以讀取數(shù)據(jù)結(jié)果。在使用時可選擇中斷、查詢和延時等待3種方式編制AD轉(zhuǎn)換程序。本實驗沒有使用INTR信號,而是采用了延時等待的方式,以便把中斷口留給LCD1602液晶顯示屏接線使用。AD轉(zhuǎn)換電路在控制器中起主導作用,用它來將液壓傳感器輸出的模擬電壓信號轉(zhuǎn)換成單片機能處理的數(shù)字量。下圖是AD轉(zhuǎn)換部分原理圖,在接線時先要經(jīng)過運算放大器和分壓電路把傳感器輸出的電流信號轉(zhuǎn)換成電壓信號,然后輸入到AD轉(zhuǎn)換器。由于實際條件較為有限,在此暫時由電位器來代替模擬液壓傳感器傳回的電壓信號量。 圖4 ADC0804與

13、單片機接線圖4.4 單片機與繼電器及蜂鳴器的接口電路簡介  采用光電耦合器的開關(guān)量輸出電路如下圖所示。+5V電源為單片機電源,+24V電源為開關(guān)量輸出電源,兩個電源是隔離的。當單片機輸出端口輸出高電平時,經(jīng)與非門電路,A點為低電平,經(jīng)光耦器件使驅(qū)動晶體管V導通,出口繼電器J得電吸合。當輸出端輸出低電平時,經(jīng)與非門電路,A點輸出高電平,經(jīng)光耦器件使V截止,J釋放。以此來控制水泵執(zhí)行運行或停止工作。 圖5 單片機與繼電器接口電路原理圖說明:P2.5口接的J,是為了判斷接觸器是否吸合,從而判知水泵是否得電,以此來檢測配合完成單片機內(nèi)部程序的運行。也就是說程序流程圖上的“判斷水泵的

14、前一個工作狀態(tài)”就是通過此處的接觸器常開觸點J的通斷來判斷的。 圖6 單片機與蜂鳴器接口電路原理圖4.5 井中缺水信號檢測電路 圖7 井中缺水信號檢測電路說明:通過井中的兩電極是否導通來判斷井中是否缺水,當井中水位過低、不足以淹沒兩檢測電極,則P2.0口會檢測到一個低電平輸入信號,單片機可判知井中缺水,并作出相應(yīng)的動作指令,如缺水報警、水泵停機等緊急動作。4.6 壓力傳感器介紹經(jīng)過市場及網(wǎng)上實際調(diào)查發(fā)現(xiàn),目前的液壓傳感器價格普遍偏高,多為高規(guī)格工業(yè)用品。為實現(xiàn)低價位高功能,在此我們通過氣壓傳感器改制了一個液壓傳感器。同樣可以滿足實際要求。傳感器使用SY一9411LD型變送器,它內(nèi)部含有1個壓力

15、傳感器和相應(yīng)的放大電路。該壓力傳感器是美國SM公司生產(chǎn)的5552型OEM壓阻式壓力傳感器,其有全溫度補償及標定(O70),傳感器經(jīng)過特殊加工處理,用堅固的耐高溫塑料外殼封裝。其引腳分布如圖3所示。1腳為信號輸出(一);2腳為信號輸出(一);3腳為激勵電壓;4腳為地;5腳為信號輸出(+);6腳為信號輸出(+)。 在水塔底部安裝1根直徑為5 mm的軟管,一端安裝在水塔底部;另一端與傳感器連接。水塔水位高度發(fā)生變化時,引起軟管內(nèi)氣壓變化,然后傳感器把氣壓轉(zhuǎn)換成電壓信號,輸送到AD轉(zhuǎn)換器。 圖8 SY-9411L-D型變送器引腳結(jié)構(gòu)圖4.7 LCD1602液晶顯示屏接線圖及其引腳功能圖 圖9 LCD1

16、602與單片機的接線圖 圖10 LCD1602液晶屏的各引腳功能圖4.8 開關(guān)電源部分隨著全球?qū)δ茉磫栴}的重視,電子產(chǎn)品的耗能問題將愈來愈突出,如何降低其待機功耗,提高供電效率成為一個亟待解決的問題。傳統(tǒng)的線性穩(wěn)壓電源雖然電路結(jié)構(gòu)簡單、工作可靠,但它存在著效率低(只有40% 50%)、體積大、銅鐵消耗量大,工作溫度高及調(diào)整范圍小等缺點。為了提高效率,人們研制出了開關(guān)式穩(wěn)壓電源,它的效率可達85% 以上,穩(wěn)壓范圍寬,除此之外,還具有穩(wěn)壓精度高、不使用電源變壓器等特點,是一種較理想的穩(wěn)壓電源。正因為如此,開關(guān)式穩(wěn)壓電源已廣泛應(yīng)用于各種電子設(shè)備中,本著節(jié)能環(huán)保、電能高效利用的原則,本設(shè)計選用了開關(guān)電

17、源為整個模塊供電。下面是對開關(guān)電源基本原理的簡單介紹。1 開關(guān)式穩(wěn)壓電源的基本工作原理        開關(guān)式穩(wěn)壓電源接控制方式分為調(diào)寬式和調(diào)頻式兩種,在實際的應(yīng)用中,調(diào)寬式使用較多,在目前開發(fā)和使用的開關(guān)電源集成電路中,絕大多數(shù)為脈寬調(diào)制型。因此下面就主要介紹調(diào)寬式開關(guān)穩(wěn)壓電源。調(diào)寬式開關(guān)穩(wěn)壓電源的基本原理可參見下圖。 圖11 調(diào)寬式開關(guān)穩(wěn)壓電源的基本原理對于單極性矩形脈沖來說,其直流平均電壓Uo取決于矩形脈沖的寬度,脈沖越寬,其直流平均電壓值就越高。直流平均電壓??捎晒接嬎悖碪o=Um×T1/T,式中Um為矩

18、形脈沖最大電壓值;T為矩形脈沖周期;T1為矩形脈沖寬度。從上式可以看出,當Um 與T 不變時,直流平均電壓Uo 將與脈沖寬度T1 成正比。這樣,只要我們設(shè)法使脈沖寬度隨穩(wěn)壓電源輸出電壓的增高而變窄,就可以達到穩(wěn)定電壓的目的。2 開關(guān)式穩(wěn)壓電源的原理電路   開關(guān)式穩(wěn)壓電源的基本電路框圖如圖二所示。交流電壓經(jīng)整流電路及濾波電路整流濾波后,變成含有一定脈動成份的直流電壓,該電壓進人高頻變換器被轉(zhuǎn)換成所需電壓值的方波,最后再將這個方波電壓經(jīng)整流濾波變?yōu)樗枰闹绷麟妷骸?#160;      控制電路為一脈沖寬度調(diào)制器,它主要由取

19、樣器、比較器、振蕩器、脈寬調(diào)制及基準電壓等電路構(gòu)成。這部分電路目前已集成化,制成了各種開關(guān)電源用集成電路??刂齐娐酚脕碚{(diào)整高頻開關(guān)元件的開關(guān)時間比例,以達到穩(wěn)定輸出電壓的目的。                                   &#

20、160;            圖12 開關(guān)電源基本電路框圖     5. 軟件設(shè)計5.1 程序流程圖 圖13 程序流程圖5.2 程序流程圖解析1 正常工作時:(1)假設(shè)初始時水塔中無水,經(jīng)過開始、初始化程序后首先判斷是否有按鍵鍵入,如果有的話執(zhí)行按鍵調(diào)試子程序,通過按鍵可以設(shè)定上限位,下限位值。設(shè)定完成后再執(zhí)行AD轉(zhuǎn)換,接下來是判斷一下液晶屏上是否有報警指示輸出,如果有的話就不執(zhí)行顯示水塔液位這一子程序,直接判斷是否首次啟動AD轉(zhuǎn)換;

21、否則在液晶屏上顯示通過AD轉(zhuǎn)換得來的水塔水位值。下一步再判斷AD轉(zhuǎn)換是否是首次啟動,是首次啟動就直接判斷測量值是否小于預(yù)設(shè)的上限位AD值,如果此時小于上限位,再判斷是否小于下限位AD值,如果判得小于下限位則再判斷井中是否有水,接著如果判得井中有水就執(zhí)行上水工作。經(jīng)過一個延時程序后再執(zhí)行下一次循環(huán)。(2)有所不同的是在執(zhí)行到判得檢測值大于下限位時不執(zhí)行上述循環(huán),而是再判斷之前水泵的工作狀態(tài),如果之前水泵是上水狀態(tài)則轉(zhuǎn)到判斷井中是否有水,接著再執(zhí)行上水工作,否則繼續(xù)循環(huán)保持水泵停機狀態(tài)。(3)當水塔中的水高出上限位,此時執(zhí)行斷開繼電器這一指令,讓水泵停機。到此,上水工作完成。繼續(xù)循環(huán)檢測,用戶用水

22、會使水塔水位低于上限值,這時再執(zhí)行判斷之前水泵是否在上水狀態(tài),如果判得之前水泵沒在上水狀態(tài)則繼續(xù)執(zhí)行循環(huán)判斷,如此一來就保證了低于水位下限時水泵開始上水,并一直上水達到上限位為止。再保持水塔水位用到低于下限位時開始打水。2 出現(xiàn)故障時:(1)當井中水位傳感器檢測到井中缺水時會調(diào)用報警子程序,在液晶屏上顯示“井中缺水”字樣,并響起蜂鳴器,同時斷開控制水泵的繼電器。再執(zhí)行一個長延時子程序,等待井中積攢下足夠的水后再執(zhí)行上水工作。(2)當判斷AD值始終保持不變次數(shù)達到十次時,則需要再判斷控制水泵的繼電器是否一直吸合,如果滿足這兩個條件則可判知水泵可能出現(xiàn)故障,這時就需要液晶顯示“水泵故障”,同時蜂鳴

23、報警,并立即斷開控制水泵的繼電器。6 實驗仿真結(jié)果    根據(jù)所設(shè)計系統(tǒng)的軟件流程圖,編寫相應(yīng)的程序在kill軟件環(huán)境下實現(xiàn)仿真,并且還通過51單片機實驗開發(fā)板進行了模擬實驗。實驗結(jié)果表明,該系統(tǒng)能夠?qū)崿F(xiàn)水位檢測、電機故障檢測、處理和報警等功能,具有良好的檢測控制功能,可移植性和擴展性強。7 結(jié)束語    該系統(tǒng)設(shè)計是基于在單片機嵌入式系統(tǒng)基礎(chǔ)上而設(shè)計的,充分利用單片機強大控制功能,該檢測控制系統(tǒng)經(jīng)過軟件仿真實驗和單片機實驗開發(fā)板模擬實驗,基本實現(xiàn)了水位模擬檢測、電機故障模擬檢測、處理和報警等功能。進一步優(yōu)化了系統(tǒng)軟硬件整體功能,可實

24、時實現(xiàn)水塔自動控制,因此,該系統(tǒng)在水塔自動控制領(lǐng)域有著廣闊的應(yīng)用前景。致 謝經(jīng)過半個多月的匆忙準備,我們組所選的“基于51單片機控制的水塔自動供水系統(tǒng)”終于小有所成。在這期間非常感謝我的導師陳毅鵬老師和張慧明老師,還有所有培育過我的老師們!是他們悉心指導、耐心教誨下才讓我逐漸發(fā)現(xiàn)知識的“廬山真面目”,并從中體驗到了學習研究過程中所帶來的巨大樂趣。這些天我還體悟到一個道理:任何一件偉大的事情都是由若干個細節(jié)堆砌而成的,要想取得最后的成功,那就必須把握好中間過程的每一個細節(jié)。同時在這里我也要感謝我的隊友們,是大家的共同努力才贏得了這次小小的勝利,團隊的力量是偉大的,三人行必有我?guī)熝伞B仿湫捱h兮

25、,吾將上下而求索!在今后的工作學習中我會深深的記住并運用此次獲得的經(jīng)驗教訓,相信以后的日子里在該行業(yè)領(lǐng)域我會有更大的收獲。附 錄附錄1 PCB原理圖附錄2 C程序#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit adrd=P37; /IO口定義sbit diola=P25;sbit dula=P26;sbit wela=P27; sbit BEEP=P23 ; /蜂鳴器驅(qū)動線sbit LCD_RS = P35; sbit LCD_R

26、W = P36;sbit LCD_EN = P34;bit presence,flag;uchar code cdis1 = " PLEASE CHECK "uchar code cdis2 = " DEEP: "uchar code cdis3 = "TH: TL: "unsigned char data deep_data2 = 0x00,0x00;unsigned char data deep_alarm2 = 0x0a,0xff;unsigned char data display5 = 0x00,0x00,0x00,0x00

27、,0x00; /深度值顯示unsigned char data display13 = 0x00,0x00,0x00; unsigned char code mytab18 = 0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00;unsigned char code mytab28 = 0x01,0x1b,0x1d,0x19,0x1d,0x1b,0x01,0x00; /小喇叭#define delayNOP(); _nop_();_nop_();_nop_();_nop_();unsigned char deep,deep_comp,timecount,count,

28、compare_th,compare_tl;/數(shù)據(jù)存放位置void Disp_deep_alarm(uchar addr,uchar num);void Natural_Menu ();void spk(uchar addr);void set_deep_alarm();void deep_compare();void beep();/*/void delay1(int ms) unsigned char y; while(ms-) for(y = 0; y<250; y+) _nop_(); _nop_(); _nop_(); _nop_(); /檢查LCD忙狀態(tài) /*lcd_busy

29、為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)*/*/bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/*寫指令數(shù)據(jù)到LCD */ /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 /*/void lcd_wcmd(uchar cmd) delay1(10); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _no

30、p_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/*寫顯示數(shù)據(jù)到LCD /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 /*/void lcd_wdat(uchar dat) delay1(10); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/* LCD初始化設(shè)定 /*/void lcd_init() delay1(15); lcd_wcmd(0x01);

31、 /清除LCD的顯示內(nèi)容 lcd_wcmd(0x38); /16*2顯示,5*7點陣,8位數(shù)據(jù) delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x0c); /顯示開,關(guān)光標 delay1(5); lcd_wcmd(0x06); /移動光標 delay1(5); lcd_wcmd(0x01); /清除LCD的顯示內(nèi)容 delay1(5);/*/* 設(shè)定顯示位置 /*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80); /數(shù)據(jù)指針=80+地址變量/*/*us

32、級延時函數(shù) /*/void Delay(unsigned int num) while( -num );/*/* 讀取深度 /*/ Read_deep(void) uchar a,sl; TR0=0; /關(guān)中斷,防止讀數(shù)錯誤 wela=1; P0=0; /選通ADCS LCD_RW=0;/AD寫入(隨便寫個什么都行, LCD_RW=1; P0=0xff; /關(guān)閉ADCS Delay(10); wela=0; /關(guān)閉有AD片選信號鎖存器的鎖/存端以防止在操作數(shù)碼管時使AD的片選發(fā)生變化 for(a=20;a>0;a-) ; /需要注意的是ADC0804在寫和/讀之間的時間間隔要足夠長否則無

33、法讀出數(shù)據(jù) for(a=20;a>0;a-); /這里把顯示部分放這里的原 wela=1; /重新打開有AD片選信號鎖存器 P1=0xff; /讀取P1口之前先給其寫全1 P0=0; /選通ADCS adrd=0; /AD讀使能 sl=P1;/AD數(shù)據(jù)讀取賦給P1口 adrd=1; P0=0xff; /關(guān)閉ADCS LCD_RW=0; deep_data0 = sl ; /深度 TR0=1; /開中斷/*/* 數(shù)據(jù)轉(zhuǎn)換與深度顯示 /*/ Disp_Temperature() display4=deep_data0&0x0f; display0=(display4*10/16)+0

34、x30; display4=(deep_data0&0xf0)>>4)|(deep_data1&0x0f)<<4); display3=display4/100+0x30; display1=display4%100; display2=display1/10+0x30; display1=display1%10+0x30; if(display3=0x30) /高位為0,不顯示 display3=0x20; if(display2=0x30) /次高位為0,不顯示 display2=0x20; ; ; lcd_pos(0x07); lcd_wdat(d

35、isplay3); /百位數(shù)顯示 lcd_wdat(display2); /十位數(shù)顯示 lcd_wdat(display1); /個位數(shù)顯示 lcd_wdat('.'); lcd_wdat(display0); /小數(shù)位數(shù)顯示 lcd_wdat('%'); /顯示%void beep() unsigned char y; for (y=0;y<100;y+) Delay(70); BEEP=!BEEP; /BEEP取反 ; BEEP=1; /關(guān)閉蜂鳴器Delay(25000);/*/* ad0804 正常顯示菜單 /*/void Natural_Menu

36、() uchar m; lcd_init(); /初始化LCD lcd_pos(0); /設(shè)置顯示位置為第一行的第1個 for(m=0;m<16;m+); lcd_wdat(cdis2m); /顯示字符 lcd_pos(0x40); /設(shè)置顯示位置為第二行第1個字 for(m=0;m<16;m+); lcd_wdat(cdis3m); /顯示字符 Read_deep(); Disp_deep_alarm(0x43,0); /顯示deeph值 Disp_deep_alarm(0x4b,1); /顯示deepl值 Disp_Temperature(); /顯示實時深度值/*/ 顯示報警

37、深度/*/void Disp_deep_alarm(uchar addr,uchar num) /0=TH,1=TL display12=deep_alarmnum/100+0x30; display10=deep_alarmnum%100; display11=display10/10+0x30; display10=display10%10+0x30; lcd_pos(addr); lcd_wdat(display12); /百位數(shù)顯示 lcd_wdat(display11); /十位數(shù)顯示 lcd_wdat(display10); /個位數(shù)顯示 /*/ Time0中斷函數(shù)/*/void

38、Time0(void) interrupt 1 using 0 TH0=0x4c; /50ms定時 TL0=0x00; timecount+; if(timecount>9) timecount=0; flag=flag; ;/*/*小喇叭閃動 */*/void spk(uchar addr) if(flag) lcd_pos(addr); lcd_wdat(0x01); /小喇叭顯示 else lcd_pos(addr); lcd_wdat(0x20); /清屏 ;/*/ 深度比較函數(shù)/*/void deep_compare() if(deep_comp >= deep_alar

39、m0) /比較 TH 值 compare_th=1; else compare_th=0; if(deep_comp < deep_alarm1) /比較 TL 值 compare_tl=1; else compare_tl=0;if(compare_th) spk(0x46); /小喇叭閃動 beep(); count=deep_alarm0; else lcd_pos(0x46); lcd_wdat(0x20); if(compare_tl) spk(0x4e); /小喇叭閃動 beep(); count=deep_alarm1; else lcd_pos(0x4e); lcd_wd

40、at(0x20); /*/ 深度報警值閃動/*/void Set_tempalarm_Flash(uchar addr,uchar num) if(flag) deep_alarmnum=count; Disp_deep_alarm(addr,num); /顯示溫度報警值 else lcd_pos(addr); lcd_wdat(0x20); lcd_wdat(0x20); lcd_wdat(0x20); ;/*/* 主函數(shù) /*/void main() uchar m;TMOD=0x01; TH0=0x4c; TL0=0x00; /50ms定時EA=1; ET0=1; TR0=1;P0=0;

41、P2&=0x1F; Natural_Menu ();/正常顯示界面Delay(50000);while(1)Read_deep();/讀取當前溫度Delay(50000);Disp_Temperature();/更新當前溫度deep_compare();/深度上下限比較Set_tempalarm_Flash(); /end of while(1) /end of main()參考文獻:(1)胡壽松主編.自動控制原理.第四版.北京:科學出版社,2001年(2)劉豹主編.現(xiàn)代控制理論.第二版.北京:機械工業(yè)出版社,2004年(3)朱曉青主編.過程檢測控制技術(shù)與應(yīng)用.北京:冶金工業(yè)出版社,2

42、002年(4)李朝青編著.單片機原理及接口技術(shù).簡明修訂版.北京:北京航天航空大學出版社,1998年(5)李廣弟單片機技術(shù)中央廣播電視大學,2001年(6)何立民MCS一5l系列單片機應(yīng)用系統(tǒng)設(shè)計配制和接口北京:北京航天大學出版社(7)曹文輝實用的自動排水及水塔自動控制電路J中國科技信息,2006,(6):5-6(8)趙利明,張廣輝水塔水位自動控制系統(tǒng)J重慶電力高等??茖W校學報,2000,(9):20-23g an employment tribunal claiEmployment tribunals sort out disagreements between employers and

43、employees.You may need to make a claim to an employment tribunal if:· you don't agree with the disciplinary action your employer has taken against you· your employer dismisses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismis

44、sal, see Dismissal.You can make a claim to an employment tribunal, even if you haven't appealed against the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal.Remember that in most cases you must make an application to an employment tribunal within three months of the date when the event you are complaining about happened. If your application is received after this time li

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論