廢水排放檢測(cè)器(doc 34頁)_第1頁
廢水排放檢測(cè)器(doc 34頁)_第2頁
廢水排放檢測(cè)器(doc 34頁)_第3頁
廢水排放檢測(cè)器(doc 34頁)_第4頁
廢水排放檢測(cè)器(doc 34頁)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計(jì)說明書(論文)中文摘要本設(shè)計(jì)是基于單片機(jī)技術(shù)原理,以單片機(jī)芯片AT89C52作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計(jì)制作出一個(gè)具有警戒水位報(bào)警和時(shí)間顯示的廢水排放監(jiān)測(cè)器。顯示器是由液晶1602制作而成,它顯示廢水排放的時(shí)間和水位,蜂鳴器和LED燈起到超過警戒水位報(bào)警的提示作用。該廢水排放監(jiān)測(cè)器主要由液晶顯示模塊、聲光報(bào)警模塊、A/D轉(zhuǎn)換模塊、鍵盤控制模塊組成。關(guān)鍵詞 單片機(jī)、1602液晶顯示模塊、A/D轉(zhuǎn)換模塊。Title The campus wastewater discharge Monitor AbstractThe design is based on th

2、e principle of SCM technology and AT89C52 microcontroller chip is the core controller.By hardware circuit design as well as the preparation of the software program, We design the wastewater discharge monitor with the function of warning water level alarm and time display.The display is made by LCD 1

3、602,it shows the time and the water level of the wastewater discharge.Buzzer and LED lights play a role above the warning level alarm prompt.The wastewater discharge monitor is mainly composed of a liquid crystal display module,sound and light alarm module,A / D conversion module,keyboard control mo

4、dule.Keywords SCM 1602 LCD module A / D conversion module目 次1 緒論11.1本設(shè)計(jì)研究的背景以及現(xiàn)實(shí)意義11.1本設(shè)計(jì)對(duì)于專業(yè)知識(shí)的綜合應(yīng)用情況12 本課題的總體設(shè)計(jì)22.1本課題的總體設(shè)計(jì)思路22.2 本課題的設(shè)計(jì)框圖23 本課題硬件電路的設(shè)計(jì)33.1 單片機(jī)模塊33.2 1602液晶模塊33.3液位傳感器63.4濾波電路73.5 A/D轉(zhuǎn)換模快83.6 蜂鳴器模塊103.7 按鈕操作模塊113.6應(yīng)用Protel實(shí)現(xiàn)電路原理圖及PCB設(shè)計(jì)114 本課題的軟件設(shè)計(jì)與編程144.1 KEIL軟件的簡介144.2 KEIL的模塊化編程1

5、44.3軟件設(shè)計(jì)結(jié)構(gòu)144.4主程序模塊的設(shè)計(jì)154.5 1602液晶程序184.6 A/D轉(zhuǎn)換程序204.7 報(bào)警程序255 本課題的仿真和調(diào)試275.1 軟件調(diào)試275.2 硬件調(diào)試28硬件電路調(diào)試準(zhǔn)備狀態(tài)28致謝311 緒論1.1本設(shè)計(jì)研究的背景以及現(xiàn)實(shí)意義為了滿足廣大師生的正常生活和維持校園的清潔環(huán)境,學(xué)校每天都要通過地下通道向外面排放大量的污水,在正常情況下學(xué)校的地下通道是可以安全排除污水的,但是每當(dāng)遇到下雨天氣大量積水時(shí),地下排水通道則不能正常排水,會(huì)出現(xiàn)污水外溢的情況。給廣大師生帶來不便,污染校園環(huán)境,需要人工及時(shí)進(jìn)行排水。污水排放監(jiān)測(cè)在工業(yè)控制以及日常生活中具有廣泛的應(yīng)用。在工

6、程領(lǐng)域進(jìn)行污水排放量和排放時(shí)間的監(jiān)測(cè)是一個(gè)極為基礎(chǔ)也極為重要的研究。采用典型的A/D模數(shù)轉(zhuǎn)換作為水位數(shù)據(jù)的采集,應(yīng)用無線傳輸?shù)哪J綄?shí)現(xiàn)測(cè)量點(diǎn)的自由選擇以及水量和時(shí)間數(shù)據(jù)的傳輸。同時(shí)考慮到工程應(yīng)用的實(shí)際情況。采用RS485串口將數(shù)據(jù)傳輸?shù)缴衔粰C(jī)進(jìn)行識(shí)別以及實(shí)時(shí)處理。這樣的污水排放量和時(shí)間的監(jiān)測(cè)系統(tǒng)具有一定的實(shí)用性。同時(shí)對(duì)于工程領(lǐng)域的污水排放測(cè)量具有一定的實(shí)用價(jià)值。更有利于針對(duì)污染情況及時(shí)的采取有利對(duì)策1。1.1本設(shè)計(jì)對(duì)于專業(yè)知識(shí)的綜合應(yīng)用情況因?yàn)閷W(xué)習(xí)的知識(shí)的深度的限制以及實(shí)際情況的考慮,對(duì)于校園廢水排放監(jiān)測(cè)器的電路設(shè)計(jì)采用了Protel99SE軟件進(jìn)行了系統(tǒng)的原理圖繪制。電路上參考了揚(yáng)州工業(yè)職業(yè)

7、技術(shù)學(xué)院的AT89C51單片機(jī)開發(fā)板設(shè)計(jì)的。在設(shè)計(jì)電路中力求以最簡單的電路來穩(wěn)定完成所以的效用。在寫程序中則是用C語言來完成,C語言相比匯編語言帶來的好處就是簡明易懂,而且可移植性高。最后調(diào)試則是用Proteus仿真軟件來完成。在整個(gè)設(shè)計(jì)到編程到最后的調(diào)試過程中完全是按照大學(xué)期間所學(xué)的模擬電子產(chǎn)品的安裝與調(diào)試、數(shù)字電子產(chǎn)品的安裝及調(diào)試、電子產(chǎn)品的安裝及調(diào)試、單片機(jī)應(yīng)用與項(xiàng)目實(shí)踐化教程等多門專業(yè)課程本課題選題難度適中,能夠?qū)λ鶎W(xué)的單片機(jī)編程,以及Proteus仿真,Protel99SE繪制電路圖有一個(gè)綜合的應(yīng)用2。2 本課題的總體設(shè)計(jì)2.1本課題的總體設(shè)計(jì)思路 本課題是基于單片機(jī)的廢水排放監(jiān)測(cè)器

8、的設(shè)計(jì)與制作。該監(jiān)測(cè)器能實(shí)現(xiàn)廢水排放的水位和時(shí)間監(jiān)測(cè)。該監(jiān)測(cè)器先通過模數(shù)轉(zhuǎn)換將測(cè)得水位的模擬信號(hào)進(jìn)行處理轉(zhuǎn)換成數(shù)字信號(hào)傳送給單片機(jī)。單片機(jī)進(jìn)行判斷測(cè)得的水位值有沒有超過警戒水位,若高于警戒水位,則單片機(jī)向蜂鳴器和led燈傳遞報(bào)警信息,此時(shí)報(bào)警模塊就會(huì)向外界發(fā)出報(bào)警信號(hào)。以便工作人員及時(shí)的進(jìn)行人工排水處理,減少不必要的損失和污染,提高廢水排放的警戒處理效率3。 本課題設(shè)計(jì)采用效用模塊化的設(shè)計(jì)思想,本課題主要分為總體方案設(shè)計(jì)、硬件和軟件的設(shè)計(jì)三大部分??傇O(shè)計(jì)方案分為以下幾個(gè)步驟:(1)硬件電路的設(shè)計(jì);(2)軟件的設(shè)計(jì)與編程;(3)硬件電路及軟件的調(diào)試;(4)結(jié)論。2.2 本課題的設(shè)計(jì)框圖校園廢水排

9、放監(jiān)測(cè)器由 單片機(jī)模塊,A/D轉(zhuǎn)換模塊,1602液晶模塊,蜂鳴器模塊,復(fù)位晶振模塊,按鈕控制模塊,LED模塊等七個(gè)模塊組成。其工作過程是:首先A/D模塊將外部的廢水排放的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),然后將數(shù)字信號(hào)傳給單片機(jī)進(jìn)行處理. 并且廢水排放的時(shí)間和水位不停地顯示在1602液晶上。如果廢水排放量達(dá)到了設(shè)置警戒水位,蜂鳴器和LED燈會(huì)發(fā)出報(bào)警提示信號(hào)。外部的按鈕則是來控制廢水排放監(jiān)測(cè)器的啟動(dòng)和復(fù)位4。結(jié)構(gòu)框圖如圖2.1所示。模數(shù)轉(zhuǎn)換報(bào)警發(fā)送啟動(dòng),停止信號(hào)報(bào)警輸出顯示復(fù)位復(fù)位晶振按鈕模塊A/D轉(zhuǎn)換模塊LED模塊蜂鳴器模塊1602液晶模塊AT89C51單片機(jī)圖 2.1 本設(shè)計(jì)的圖 2.1 本設(shè)計(jì)的電

10、路結(jié)構(gòu)框圖3 本課題硬件電路的設(shè)計(jì)3.1 單片機(jī)模塊單片機(jī)最小系統(tǒng)電路由單片機(jī)、單片機(jī)復(fù)位電路、晶體振蕩回路組成,能夠完成單片機(jī)工作的最基本需要。其中單片機(jī)的外部晶振是11.1592,而復(fù)位電路則是要給RST引腳至少兩個(gè)機(jī)器周期就可實(shí)現(xiàn)復(fù)位5。圖3.1 單片機(jī)模塊外部接線圖3.2 1602液晶模塊1602液晶是我們比較常用的一個(gè)液晶,它具有操作簡單,價(jià)格低廉,而且可以應(yīng)用于各種小型的項(xiàng)目。1602液晶的主要技術(shù)參數(shù):顯示容量16x2個(gè)字符,芯片工作電壓是4.5V-5.5V,工作電流是2.0mA,模塊最佳工作電壓是5V,字符尺寸是2.95x4.35mm.1602液晶是16個(gè)引腳,是8位操作。LC

11、D1602讀操作時(shí)序圖如圖3.2所示圖 3.2讀時(shí)序圖LCD1602寫操作時(shí)序圖如圖3.3所示圖 3.3寫時(shí)序圖液晶屏幕上的每個(gè)字符位置與內(nèi)部數(shù)據(jù)存儲(chǔ)器(DDRAM)之間有著一一對(duì)應(yīng)關(guān)系。如圖3.4所示。圖 3.4液晶電路的外部接線如圖3.5所示圖 3.5 液晶模塊外部接線圖3.3液位傳感器液位傳感器(靜壓液位計(jì)/液位變送器/液位傳感器/水位傳感器)是一種測(cè)量液位的壓力傳感器靜壓投入式液位變送器(液位計(jì))是基于所測(cè)液體靜壓與該液體的高度成比例的原理,采用國外先進(jìn)的隔離型擴(kuò)散硅敏感元件或陶瓷電容壓力敏感傳感器,將靜壓轉(zhuǎn)換為電信號(hào),再經(jīng)過溫度補(bǔ)償和線性修正,轉(zhuǎn)化成標(biāo)準(zhǔn)電信號(hào)(一般為420mA/15

12、VDC)6。液位傳感器實(shí)物如圖3.6所示。圖3.6液位傳感器實(shí)物3.3.1工作原理用靜壓測(cè)量原理:當(dāng)液位變送器投入到被測(cè)液體中某一深度時(shí),傳感器迎液面受到的壓力公式為: = .g.H + Po式中:P :變送器迎液面所受壓力:被測(cè)液體密度g :當(dāng)?shù)刂亓铀俣萈o :液面上大氣壓H :變送器投入液體的深度同時(shí),通過導(dǎo)氣不銹鋼將液體的壓力引入到傳感器的正壓腔,再將液面上的大氣壓 Po 與傳感器的負(fù)壓腔相連,以抵消傳感器背面的 Po ,使傳感器測(cè)得壓力為: .g.H ,顯然 , 通過測(cè)取壓力 P ,可以得到液位深度。3.3.2效用特點(diǎn)1 穩(wěn)定性好,滿度、零位長期穩(wěn)定性可達(dá) 0.1%FS/ 年。在補(bǔ)償

13、溫度 0 70 范圍內(nèi),溫度飄移低于 0.1%FS ,在整個(gè)允許工作溫度范圍內(nèi)低于 0.3%FS 。2 具有反向保護(hù)、限流保護(hù)電路,在安裝時(shí)正負(fù)極接反不會(huì)損壞變送器,異常時(shí)送器會(huì)自動(dòng)限流在 35MA 以內(nèi)。3 固態(tài)結(jié)構(gòu),無可動(dòng)部件,高可靠性,使用壽命長。4 安裝方便、結(jié)構(gòu)簡單、經(jīng)濟(jì)耐用。3.3.3液位傳感器與液位開關(guān)的區(qū)別液位開關(guān)是根據(jù)液位傳感器的信號(hào)輸出開啟放水或者進(jìn)水的閥門而使水位保持恒定的一種控制器。也可以說液位開關(guān)輸出的是一種開關(guān)信號(hào),液位開關(guān)首先要確定液位的高度,依據(jù)這個(gè)高度來輸出開關(guān)量信號(hào)。而液位傳感器是將液位的高度轉(zhuǎn)化為電信號(hào)的形式進(jìn)行輸出。我們可以對(duì)電信號(hào)進(jìn)行處理比如和plc、

14、數(shù)據(jù)采集器或者專業(yè)顯示器相連進(jìn)而輸出液位的高度。還有就是液位開關(guān)和液位傳感器的原理雖然相同。但是液位開關(guān)是開關(guān)控制電路,而液位傳感器是相當(dāng)于變壓,變流用的電路元件。3.4濾波電路濾波電路常用于濾去整流輸出電壓中的紋波,一般由電抗元件組成,如在負(fù)載電阻兩端并聯(lián)電容器C,或與負(fù)載串聯(lián)電感器L,以及由電容,電感組成而成的各種復(fù)式濾波電路7。濾波電路如圖3.7所示。識(shí)別濾波電路的方法:若信號(hào)頻率趨于零時(shí)有確定的電壓放大倍數(shù),且信號(hào)頻率趨于無窮大時(shí)電壓放大倍數(shù)趨于零,則為低通濾波器;反之,若信號(hào)頻率趨于無窮大時(shí)有確定的電壓放大倍數(shù),且信號(hào)頻率趨于零時(shí)電壓放大倍數(shù)趨于零,則為高通濾波器;若信號(hào)頻率趨于零和

15、無窮大時(shí)電壓放大倍數(shù)均趨于零,則為帶通濾波器;反之,若信號(hào)頻率趨于零和無窮大時(shí)電壓放大倍數(shù)具有相同的確定值,且在某一頻率范圍內(nèi)電壓放大倍數(shù)趨于零,則為帶阻濾波器。圖3.7 濾波電路3.5放大電路經(jīng)過濾波器處理后,信號(hào)的高次諧波得到了很好的削弱,但是輸出信號(hào)幅度較小,為了能夠讓單片機(jī)有效接受處理,信號(hào)需要進(jìn)行放大處理,這里采用成熟的集成運(yùn)放進(jìn)行放大,放大電路的電路原理圖如圖3.8所示8。圖3.8放大電路的電路原理圖3.5 A/D轉(zhuǎn)換??霵CF8591是一個(gè)單片集成、單獨(dú)供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個(gè)模擬輸入、1個(gè)模擬輸出和1個(gè)串行I²C總線接口。

16、PCF8591的3個(gè)地址引腳A0, A1和A2可用于硬件地址編程,允許在同個(gè)I²C總線上接入8個(gè)PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號(hào)都是通過雙線雙向I²C總線以串行的方式進(jìn)行傳輸。PCF8591的效用包括多路模擬輸入、內(nèi)置跟蹤保持、8-bit模數(shù)轉(zhuǎn)換和8-bit數(shù)模轉(zhuǎn)換。PCF8591的最大轉(zhuǎn)化速率由I²C總線的最大速率決定9。工作特性:單獨(dú)供電 ,PCF8591的操作電壓范圍2.5V-6V ,低待機(jī)電流 ,通過I²C總線串行輸入/輸出 ,PCF8591通過3個(gè)硬件地址引腳尋址 ,PCF8591的采樣

17、率由I²C總線速率決定 ,4個(gè)模擬輸入可編程為單端型或差分輸入 ,自動(dòng)增量頻道選擇 ,PCF8591的模擬電壓范圍從VSS到VDD ,PCF8591內(nèi)置跟蹤保持電路 ,8-bit逐次逼近A/D轉(zhuǎn)換器 ,通過1路模擬輸出實(shí)現(xiàn)DAC增益 ·圖3.6 PCF8591AIN0AIN3:模擬信號(hào)輸入端。 A0A3:引腳地址端。 VDD、VSS:電源端。 (2.56V) SDA、SCL:I2C 總線的數(shù)據(jù)線、 時(shí)鐘線。 OSC:外部時(shí)鐘輸入端,內(nèi)部時(shí)鐘 輸出端。 EXT:內(nèi)部、外部時(shí)鐘選擇線,使 用內(nèi)部時(shí)鐘時(shí) EXT 接地。 AGND:模擬信號(hào)地。 AOUT:D/A 轉(zhuǎn)換輸出端。 VR

18、EF:基準(zhǔn)電源端。 圖 3.7 PCF8591引腳 圖 3.8A/D轉(zhuǎn)換模塊外部接線圖3.6 蜂鳴器模塊蜂鳴器在生活以及工業(yè)中是比較常用的報(bào)警器件,在這個(gè)電路中不僅起到按鍵的發(fā)音時(shí)鐘的走動(dòng)發(fā)音,還起到了警戒水位的報(bào)警。為了增大電流來驅(qū)動(dòng)蜂鳴器,我們則采用了三極管來驅(qū)動(dòng)它,從而達(dá)到更好的效果。如圖3-9所示。圖3.9 蜂鳴器模塊3.7 按鈕操作模塊 按鈕也是一個(gè)系統(tǒng)中必不可少的一部分,在這個(gè)電路中用到的二個(gè)按鈕分別是啟動(dòng)鍵,復(fù)位鍵。每次按下啟動(dòng)鍵監(jiān)測(cè)器開始工作,每當(dāng)按下復(fù)位按鈕監(jiān)測(cè)器復(fù)位重新計(jì)時(shí)開始工作。按鈕操作模塊電路如圖3-10所示圖3-10按鈕操作模塊3.6應(yīng)用Protel實(shí)現(xiàn)電路原理圖及

19、PCB設(shè)計(jì)3.6.1 Protel簡介使用電腦設(shè)計(jì)電路原理圖和電路板圖是把電子技術(shù)從理論運(yùn)用到實(shí)際的第一步。只有會(huì)設(shè)計(jì)電路原理圖和電路板圖才能進(jìn)行電子產(chǎn)品的研發(fā)與開發(fā)。本軟件就是從理論走向?qū)嶋H,掌握電子產(chǎn)品開發(fā)的基本技術(shù)。Protel99SE是澳大利亞ProtelTechnology公司推出的一個(gè)全32位的電路板設(shè)計(jì)軟件。該軟件效用強(qiáng)大,人機(jī)界面友好,易學(xué)易用,使用該軟件設(shè)計(jì)者可以容易設(shè)計(jì)電路原理圖、畫元件圖、設(shè)計(jì)電路板圖、畫元件封裝圖和電路仿真,是業(yè)內(nèi)人士首選的電路板設(shè)計(jì)工具。繪制電路原理圖的主要步驟1、進(jìn)入Protel 99SE環(huán)境2、使用菜單建立新設(shè)計(jì)數(shù)據(jù)庫文件3、使用菜單在打開窗口選擇

20、Schematic Document圖標(biāo),建立新原理圖文件4、將原理圖打開5、設(shè)置畫圖環(huán)境6、添加元件庫7、將所需元件從元件庫中取出來,放置在圖紙上,并且調(diào)整好位置8、使用連線工具將元件連起來,設(shè)置元件屬性,對(duì)元件進(jìn)行編號(hào)9、進(jìn)行電氣規(guī)格檢查(ERC)10、建立網(wǎng)絡(luò)表,為制作電路板圖做準(zhǔn)備 繪制完成的電路原理圖,除了保證電路原理圖的正確性以外,同時(shí)要注意原理圖繪制中的工藝要求。原理圖的繪制首先注意的就是原理圖的標(biāo)題欄的設(shè)置,在標(biāo)題欄中一定注意按照工程的規(guī)則,對(duì)電路的各個(gè)屬性進(jìn)行詳細(xì)的標(biāo)注。在實(shí)際的工作崗位中,不同的公司對(duì)于標(biāo)題欄的填寫都具有一定的要求。整體原理圖的繪制要求布局均勻,電路按照效用

21、模塊進(jìn)行分布,符合信號(hào)流向等一系列的工程規(guī)則。在電路圖中,要綜合使用網(wǎng)絡(luò)標(biāo)號(hào)、總線、總線入口等對(duì)象力求原理圖實(shí)現(xiàn)結(jié)構(gòu)化走線。在原理圖中可以使用文本等對(duì)電路進(jìn)行一定的闡述,增強(qiáng)電路的可讀性以及可理解性10。3.6.2電路原理圖的設(shè)計(jì) 電路原理圖如圖3.11所示 圖 3.11電路原理圖電路工作原理: 本電路是基于單片機(jī)的廢水排放監(jiān)測(cè)器的設(shè)計(jì)電路。該電路能實(shí)現(xiàn)校園廢水排放的水位和時(shí)間監(jiān)測(cè)。該電路是由復(fù)位晶振模塊,單片機(jī)模塊,A/D轉(zhuǎn)換模塊,1602液晶顯示模塊,報(bào)警模塊,按鍵模塊組成。電路按鈕模塊中的啟動(dòng)按鈕按下之后,此時(shí)A/D轉(zhuǎn)換模塊開始工作,將測(cè)得水位的模擬信號(hào)進(jìn)行處理轉(zhuǎn)換成數(shù)字信號(hào)傳送給單片機(jī)

22、。單片機(jī)再將信號(hào)傳給液晶進(jìn)行顯示,單片機(jī)進(jìn)行判斷測(cè)得的水位值有沒有超過警戒水位,若水位的值沒有到達(dá)警戒水位值,電路正常工作,在液晶上顯示廢水排放的水位和排放的時(shí)間。若高于警戒水位,則單片機(jī)向報(bào)警模塊傳遞報(bào)警信息,此時(shí)液晶上會(huì)顯示警戒的水位值,但停止顯示廢水排放計(jì)時(shí)。此時(shí)報(bào)警模塊就會(huì)向外界發(fā)出報(bào)警信號(hào)。以便工作人員及時(shí)的進(jìn)行人工排水處理,減少不必要的損失和污染,提高廢水排放的警戒處理效率。待水位處理到安全水位值時(shí),按下復(fù)位按鈕之后再重新按下啟動(dòng)按鈕電路會(huì)重新正常工作,以此方式周而復(fù)始的進(jìn)行工作,進(jìn)行校園廢水排放的監(jiān)測(cè)11。3.6.3 繪制PCB板圖 PCB板圖如圖3.12所示圖 3.12 PCB

23、板圖4 本課題的軟件設(shè)計(jì)與編程4.1 KEIL軟件的簡介 KEIL C51是德國KEIL Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在效用上,結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用,用過匯編語言后再進(jìn)行C語言來開發(fā),體會(huì)更加深刻。KEIL C51軟件提供豐富的庫函數(shù)和效用強(qiáng)大的集成開發(fā)調(diào)試工具,全Windowa界面。另外重要一點(diǎn),只要看一下匯編后生成的會(huì)變代碼,就會(huì)體會(huì)到KEIL C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。4.2 KEIL的模塊化編程用KEIL進(jìn)行編程時(shí)

24、,有時(shí)候由于項(xiàng)目的比較大我們寫的程序要幾百行甚至上千行,這樣帶來的后果是,如果要修改某一個(gè)參數(shù)時(shí)則要找個(gè)半天,這將帶來很大的麻煩,以及給別人看時(shí),人家會(huì)一頭霧水,不知道你寫的什么。于是,我們就想到了用模塊化編程的方法,把一個(gè)大項(xiàng)目分割成若干個(gè)小項(xiàng)目,然后每一個(gè)小項(xiàng)目寫一個(gè).C文件,最后在一個(gè)主函數(shù)中把這些小程序組合在一起。這樣寫的好處是可讀性比較強(qiáng),以及可移植性比較好,可以方便以后的編程。校園廢水排放監(jiān)測(cè)器就是用模塊化編程,一共寫了A/D轉(zhuǎn)換模塊、1602液晶、delay延時(shí)函數(shù)、LED燈.四個(gè).C文件最后在main主函數(shù)中全部結(jié)合起來。4.3軟件設(shè)計(jì)結(jié)構(gòu)軟件設(shè)計(jì)部分主要包括:主程.序/子程序

25、流程的設(shè)計(jì)、效用模塊程序的編寫、軟/硬件結(jié)合調(diào)試與演示。主要包括以下效用模塊:51驅(qū)動(dòng)、檢測(cè)、液晶顯示、報(bào)警、鍵盤、數(shù)據(jù)采集、模數(shù)軟換,軟件流程圖如圖4.3所示。系統(tǒng)初始化、按鍵掃描顯示選擇菜單測(cè)量相關(guān)設(shè)置模數(shù)轉(zhuǎn)換串行通信對(duì)數(shù)據(jù)進(jìn)行處理圖4.3 4.4主程序模塊的設(shè)計(jì)主程序?qū)崿F(xiàn)的效用:與硬件相結(jié)合實(shí)現(xiàn)便攜式環(huán)境檢測(cè)儀的各個(gè)效用。主要是檢測(cè)與顯示,上下限值調(diào)整與顯示,數(shù)據(jù)存儲(chǔ),效用子函數(shù)的調(diào)用,見圖4.4。開 始初始化CPU,液晶數(shù)據(jù)檢測(cè)監(jiān)測(cè)器正常計(jì)時(shí)工作IF水位顯示>.=60(警戒水位2米)顯示蜂鳴器報(bào)警,LED燈閃爍。YESN0圖4.4主程序流程圖#include<reg51.h

26、> /定義頭文件#include<intrins.h> /定義頭文件#include "head.h" /定義頭文件#include "delay.h"#include "pcf8591.h" void di();void didi();sbit key1=P30; /定義啟動(dòng)按鈕端口sbit key2=P31 ; /定義復(fù)位按鈕端口sbit led=P25; /定義LED警示燈端口sbit beep=P24; /定義蜂鳴器端口uint miao,fen,shi,shi1; /定義時(shí)間函數(shù)#include "

27、;1602.h" /1602液晶頭文件#include "fmq.h" /蜂鳴器頭文件#include "jishi.h" /計(jì)時(shí)頭文件#include "display.h" /延時(shí)函數(shù)頭文件void init_pcf8591(void) /A/D模數(shù)轉(zhuǎn)換初始化程序iic_start();iic_sendbyte(0x90);iic_waitack();iic_sendbyte(CHANNEL_3);iic_waitack();iic_stop();delay(10);void main() /主函數(shù)程序 init_pcf

28、8591();LCD_Init();while(1)temp_AD_Value = adc_pcf8591()*1.0/255*100; /將模擬信號(hào)轉(zhuǎn)成數(shù)字信號(hào)display();LCD_Write_String(13,1,temp_AD);/在液晶上從第一行的第13位開始顯示delay(3);4.5 1602液晶程序(1) LCD模塊在本系統(tǒng)中主要起著開界面漢字顯示,以及各控制效果的顯示。采用直接訪問方式。 下面這個(gè)就是液晶的驅(qū)動(dòng)程序,在這個(gè)程序中先是根據(jù)數(shù)據(jù)手冊(cè)對(duì)這個(gè)液晶先進(jìn)行初始化,然后根據(jù)時(shí)序圖讀液晶的程序,以及寫液晶的程序。重要的一點(diǎn)就是延時(shí)的時(shí)間一定要把握好,對(duì)液晶的忙檢測(cè)可以延

29、長一點(diǎn)時(shí)間來解決。該程序包括液晶寫入命令函數(shù),寫入數(shù)據(jù)函數(shù),寫入字符串函數(shù),初始化函數(shù)14。#ifndef _1602_H_#define _1602_H_sbit RS = P24; /定義端口 sbit RW = P25;sbit EN = P26;#define DataPort P0/*- 寫入命令函數(shù)-*/void LCD_Write_Com(uchar com) RS=0; RW=0; EN=1; DataPort= com; delay(1); EN=0;/*- 寫入數(shù)據(jù)函數(shù)-*/void LCD_Write_Data(uchar Data) RS=1; RW=0; EN=1;

30、DataPort= Data; delay(1);EN=0;/*- 寫入字符串函數(shù)-*/void LCD_Write_String(uchar x,uchar y,uchar *s) if(y = 0) LCD_Write_Com(0x80 + x); /表示第一行else LCD_Write_Com(0xC0 + x); /表示第二行 while (*s) LCD_Write_Data( *s); s +; /*- 初始化函數(shù)-*/void LCD_Init(void) TMOD=0X10;TH1=(65536-50000)/256;TL1=(65536-50000)%256; EA=1;E

31、T1=1;TR1=0;beep=0;LCD_Write_Com(0x38); /*顯示模式設(shè)置*/ LCD_Write_Com(0x01); /*顯示清屏*/ LCD_Write_Com(0x06); /*顯示光標(biāo)移動(dòng)設(shè)置*/ LCD_Write_Com(0x0C); /*顯示開及光標(biāo)設(shè)置*/#endif4.6 A/D轉(zhuǎn)換程序(1)模數(shù)轉(zhuǎn)換模塊的主要效用就是將經(jīng)放大器放大的模擬電壓信號(hào)轉(zhuǎn)化為MCU能夠處理的數(shù)字信號(hào),并傳送給單片機(jī)。(2)pcf8591轉(zhuǎn)換的流程圖見下圖4.6。開始使能芯片產(chǎn)生時(shí)鐘信號(hào)輸入通道控制字讀取2字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù)校正送入指定寄存器結(jié)束圖 4.6該段程序是A/D轉(zhuǎn)換程序,

32、它的主要作用是將數(shù)據(jù)檢測(cè)到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),再將數(shù)字信號(hào)傳送給單片機(jī)進(jìn)行處理,處理之后將信息顯示在液晶屏上。它主要包括初始化函數(shù),啟動(dòng)總線函數(shù),結(jié)束總線函數(shù),模數(shù)轉(zhuǎn)換函數(shù),發(fā)送數(shù)據(jù)函數(shù),讀取數(shù)據(jù)函數(shù),延時(shí)函數(shù)。下面是具體的程序。#ifndef _PCF8591_H_#define _PCF8591_H_#define somenop _nop_();_nop_();_nop_();_nop_();_nop_();/定義空指令sbit SDA = P20; /雙向輸入輸出數(shù)據(jù)端sbit SCL = P21; /時(shí)鐘脈沖 #define CHANNEL_0 0x00 /定義串口通道 #de

33、fine CHANNEL_1 0x01#define CHANNEL_2 0x02 #define CHANNEL_3 0x03 void iic_start(void) /啟動(dòng)總線SDA = 1; /發(fā)送起始條件的數(shù)據(jù)信號(hào)_nop_(); /起始條件建立時(shí)間大于4.7us,延時(shí)SCL = 1;somenop;SDA = 0; /發(fā)送起始信號(hào)somenop; /起始條件鎖定時(shí)間大于4SCL = 0; /鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)void iic_stop(void) /結(jié)束總線SDA = 0; /發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)_nop_(); /發(fā)送結(jié)束條件的時(shí)鐘信號(hào)SCL = 1; /結(jié)束條

34、件建立時(shí)間大于4somenop;SDA = 1; /發(fā)送I2C總線結(jié)束信號(hào)void iic_ack(bit ackbit) /模數(shù)轉(zhuǎn)換if(ackbit) SDA = 0;else SDA = 1; somenop;SCL = 1;somenop;SCL = 0;SDA = 1; somenop;bit iic_waitack(void)SDA = 1;somenop;SCL = 1;somenop;if(SDA) SCL = 0;iic_stop();return 0;else SCL = 0;return 1;void iic_sendbyte(unsigned char byt) / 發(fā)

35、送數(shù)據(jù)unsigned char i;for(i=0;i<8;i+) /要傳送的數(shù)據(jù)長度為8位 if(byt&0x80) /判斷發(fā)送位 SDA = 1; /8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位else SDA = 0;somenop;SCL = 1; /置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位byt <<= 1;somenop; /保證時(shí)鐘高電平周期大于4SCL = 0;unsigned char iic_recbyte(void) /讀取數(shù)據(jù)unsigned char da;unsigned char i;for(i=0;i<8;i+) SCL = 1;som

36、enop;da <<= 1;if(SDA) da |= 0x01;SCL = 0;somenop;return da;/*void delay(unsigned char t) / 延時(shí)函數(shù)unsigned char i;while(t-)for(i=0;i<112;i+);*/unsigned char adc_pcf8591(void)unsigned char temp;iic_start(); /啟動(dòng)總線iic_sendbyte(0x91); /發(fā)送器件地址iic_waitack();temp = iic_recbyte(); /讀取數(shù)據(jù)iic_ack(0); /發(fā)送

37、非就答位iic_stop(); /結(jié)束總線return temp;#endif4.7 報(bào)警程序改程序的主要作用是報(bào)警。此段報(bào)警函數(shù)主要分為兩個(gè)部分。第一部分是蜂鳴器報(bào)警函數(shù),第二部分是LED燈閃爍報(bào)警函數(shù)。除此之外還有延時(shí)函數(shù)。當(dāng)監(jiān)測(cè)器所測(cè)量的數(shù)值達(dá)到設(shè)定的警戒值時(shí),報(bào)警程序就會(huì)啟動(dòng),向外界發(fā)出報(bào)警信號(hào)。下面就是具體的報(bào)警函數(shù)程序。#ifndef _FMQ_H_ /蜂鳴器程序的頭文件#define _FMQ_H_ /蜂鳴器程序的頭文件void di() /時(shí)鐘走動(dòng)的聲音提示程序uchar n;for(n=15;n>0;n-)beep=1;delay1(50);beep=0;delay1(

38、100);beep=1;delay1(50);beep=0;void didi() /超過警戒水位時(shí)的報(bào)警程序 uchar m;led=1;for(m=35;m>0;m-)beep=1;delay1(30);beep=0;delay1(50);beep=1;delay1(30);beep=0;#endif5 本課題的仿真和調(diào)試5.1 軟件調(diào)試5.1.1 編譯軟件調(diào)試一個(gè)優(yōu)異的編譯器是在單片機(jī)程序開發(fā)中不可缺少的部分,keil4是集編譯、調(diào)試、仿真為一體的編譯軟件。5.1.2 Proteus仿真調(diào)試Proteus軟件是由英國Labcenter electronics公司出版的EDA工具軟件

39、。它不僅具有其他EDA工具軟件的仿真效用,還能仿真單片機(jī)以及外圍器件。它是目前仿真單片機(jī)以及外圍器件最好的工具。盡管在中國剛起步,但已受到單片機(jī)的資源,而且還有許多像示波器這樣的測(cè)繪工具,在經(jīng)濟(jì)有限的學(xué)生時(shí)代更是受到青睞。它的仿真也是和KEIL軟件結(jié)合起來使用的,把KEIL軟件生成HEX文件直接導(dǎo)入到單片機(jī)中進(jìn)行仿真。仿真如圖5.13所示圖5.13仿真效果圖起到了在實(shí)物未做好的條件下,模擬設(shè)想效果的作用。給實(shí)驗(yàn)和程序的編寫帶來了極大的幫助,也為以后實(shí)物的調(diào)試運(yùn)行起到了參考的作用。5.2 硬件調(diào)試硬件電路調(diào)試準(zhǔn)備狀態(tài)圖5.14對(duì)硬件電路進(jìn)行外部端口連線,準(zhǔn)備通電調(diào)式。硬件電路工作狀態(tài)圖5.15對(duì)

40、電路進(jìn)行通電調(diào)試,此狀態(tài)是廢水排放監(jiān)測(cè)器正常工作的顯示狀態(tài)。LED1燈亮表示電路板已經(jīng)通電,LED2燈亮表示監(jiān)測(cè)器開始工作,喇叭的滴滴聲是時(shí)間的提示音,液晶上顯示的監(jiān)測(cè)器開始正常工作的提示信號(hào)NOW IS WORKING,和廢水排放時(shí)間長短的顯示。在時(shí)間后面緊跟著的三位數(shù)表示廢水排放的模擬水位,假如警戒水位數(shù)字顯示到60時(shí),表示實(shí)際中的水位超過了兩米,此時(shí)蜂鳴器會(huì)發(fā)出報(bào)警信號(hào),LED燈同時(shí)也會(huì)發(fā)出報(bào)警信號(hào)。硬件電路報(bào)警狀態(tài)圖5.16此時(shí)的工作狀態(tài)表示廢水排放監(jiān)測(cè)器的報(bào)警提示狀態(tài),此時(shí)液晶上的模擬水位值為83表示已經(jīng)超過了警戒模擬水位值60,表示此時(shí)的水位已經(jīng)超過了2米,廢水排放監(jiān)測(cè)器停止計(jì)時(shí),

41、蜂鳴器發(fā)出報(bào)警信號(hào),LED1燈發(fā)生強(qiáng)烈閃爍?,F(xiàn)實(shí)生活中報(bào)警信號(hào)一旦發(fā)出,為了減少不必要的損失和環(huán)境污染,需要人工及時(shí)的將廢水排掉降低水位,此時(shí)若要廢水排放監(jiān)測(cè)器重新開始工作,需要按下復(fù)位按鈕將其復(fù)位之后再按下啟動(dòng)按鈕讓其重新計(jì)時(shí)工作硬件電路復(fù)位狀態(tài)圖5.17此狀態(tài)是廢水排放監(jiān)測(cè)器的復(fù)位狀態(tài)。此狀態(tài)是警戒水位處理過后的機(jī)器復(fù)位狀態(tài)此狀態(tài)是為了下次的繼續(xù)使用做好準(zhǔn)備??偨Y(jié)本設(shè)計(jì)的主要任務(wù)是進(jìn)行校園廢水排放監(jiān)測(cè)器的設(shè)計(jì)與制作。所設(shè)計(jì)的廢水排放監(jiān)測(cè)器包含單片機(jī)模塊,模擬液位傳感器模塊,A/D轉(zhuǎn)換模塊,1602液晶模塊,蜂鳴器模塊,按鈕控制模塊,LED模塊等七個(gè)模塊組成??梢詫?shí)現(xiàn)廢水排放的時(shí)間和水位監(jiān)測(cè)

42、,該監(jiān)測(cè)器先通過液位傳感器感受水位信號(hào),再通過模數(shù)轉(zhuǎn)換將測(cè)得水位的模擬信號(hào)進(jìn)行處理轉(zhuǎn)換成數(shù)字信號(hào)傳送給單片機(jī)。單片機(jī)進(jìn)行判斷測(cè)得的水位值有沒有超過警戒水位,若高于警戒水位,則單片機(jī)向蜂鳴器和led燈傳遞報(bào)警信息,此時(shí)報(bào)警模塊就會(huì)向外界發(fā)出報(bào)警信號(hào)。通過RS485模塊完成水位信號(hào)的無線傳輸,可以實(shí)現(xiàn)水位測(cè)量點(diǎn)的自由選擇,水位接收模塊同時(shí)通過RS232串口完成與PC機(jī)完成上位機(jī)的傳輸以及控制。電路采用性價(jià)比較高的控制器件AT89S51芯片進(jìn)行數(shù)據(jù)的處理,整體校園廢水排放監(jiān)測(cè)器系統(tǒng)效用完整、可靠性高,在實(shí)際的工業(yè)測(cè)量、生產(chǎn)中具有一定的應(yīng)用價(jià)值。當(dāng)然,本設(shè)計(jì)也存在一些不足之處,校園廢水排放監(jiān)測(cè)器的精度

43、和量程不夠大,還需要進(jìn)一步的改善和提高,以加強(qiáng)產(chǎn)品在市場(chǎng)中的競(jìng)爭(zhēng)力和實(shí)用性。致謝在錢松導(dǎo)師的精心指導(dǎo)和大力支持下,我才得以完成這篇論文。我在論文的不斷修改過程中更是耳濡目染,深受感動(dòng)。通過老師的不斷指導(dǎo),使我對(duì)自己的選題有了更深刻的認(rèn)識(shí),并且收獲的不僅僅是知識(shí)方面的,王老師的治學(xué)態(tài)度于我也是一筆財(cái)富,我會(huì)好好珍惜這次收獲的。通過這次的設(shè)計(jì)使我認(rèn)識(shí)到我對(duì)單片機(jī)方面的知識(shí)知道的太少了,對(duì)于書本上的很多知識(shí)還不能靈活運(yùn)用,有很多我們需要掌握的知識(shí)在等著我去學(xué)習(xí),我會(huì)在以后的學(xué)習(xí)生活中彌補(bǔ)我所缺少的知識(shí)。本次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我所學(xué)到的知識(shí)運(yùn)用到我以后的工作中去。在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專業(yè)知識(shí),而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,此次的校園廢水排放監(jiān)測(cè)器的設(shè)計(jì)給我奠定了一個(gè)實(shí)踐基礎(chǔ),我會(huì)在以后的學(xué)習(xí)、生活中磨練自己,使自己適應(yīng)于以后的競(jìng)爭(zhēng)。感謝電子系的各位老師,正是因?yàn)樗麄円唤z不茍,任勞任怨的教學(xué),我們才能具有扎實(shí)的基本功來進(jìn)行并順利完成設(shè)計(jì)任務(wù)。感謝老師們?yōu)槲覀兲峁┝肆己玫脑O(shè)計(jì)環(huán)境和儀器設(shè)備。有了這些,我們才能夠高效率的完成畢業(yè)設(shè)計(jì)任務(wù)。同時(shí),對(duì)身邊的同學(xué)也表示感謝,對(duì)于我的論文中某些觀點(diǎn)提

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論