水位檢測儀設計畢業(yè)設計1_第1頁
水位檢測儀設計畢業(yè)設計1_第2頁
水位檢測儀設計畢業(yè)設計1_第3頁
水位檢測儀設計畢業(yè)設計1_第4頁
水位檢測儀設計畢業(yè)設計1_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄摘要11 引言2 1.1水位檢測儀器的現(xiàn)狀和發(fā)展前景2 1.2 本文的結構安排22 水位監(jiān)測儀的基本原理3 2.1功能說明3 2.2整體架構33 硬件設計5 3.1水位檢測與數(shù)據(jù)采集5 3.2數(shù)碼管與led顯示7 3.2.1 相關芯片簡介7 3.2.2 顯示部分工作原理94 系統(tǒng)軟件設計12 4.1 初始化程序12 4.1.1 i/o端口方向控制寄存器12 4.1.2 tmr1初始化12 4.1.3 tmr0初始化13 4.2 定時/計數(shù)器13 4.2.1 tmr1中斷服務程序14 4.2.2 tmr0中斷服務程序15 4.3 數(shù)據(jù)轉換子程序17結束語19致謝20參考文獻21附錄22 附

2、錄 程序清單及注釋22水位檢測儀設計摘要:水位檢測和顯示儀表裝置在工業(yè)上有著廣泛的應用,本文設計了一種能實時檢測并顯示水位的儀器-水位檢測儀。設計主要論述對水位數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn),其主要功能是完成數(shù)據(jù)采集、處理、顯示、數(shù)據(jù)存儲等。根據(jù)對數(shù)據(jù)采集系統(tǒng)體系結構及功能要求的分析,以pic16f877單片機為核心設計并實現(xiàn)的采集系統(tǒng),結合cd4051實現(xiàn)對水位的檢測,結構簡單,實現(xiàn)可靠。在pic單片機中實現(xiàn)了數(shù)據(jù)存儲和處理,獲取了當前的水位,并設計實現(xiàn)了數(shù)碼管的驅動顯示電路。該設計是基于單片機技術設計實現(xiàn)的低功耗水位數(shù)據(jù)采集裝置,是一個具有一定實用性的實時數(shù)據(jù)采集系統(tǒng)。最后的實驗結果驗證了水位監(jiān)

3、測儀的總體設計思路及硬件、軟件設計方案正確,能夠準確地實現(xiàn)了水位的自動檢測。關鍵詞:pic單片機;水位檢測;led顯示design of water-level detecting meter abstract: water level detection and display devices has a wide range of applications in industry, this article design a real-time detection and display equipment - water level detector.this design focuse

4、s on the design and implementation of data acquisition system for the water level,and its main function is to complete the data collection, processing, display, data storage and so on.according to the data acquisition system architecture and functional requirements analysis,the article design and ac

5、complish the acquisition system with simple structure using pic16f877 single-chip as the core,it can detect the water level with cd4051 reliably.it implements the data storage and processing in the pic mcu, access to the current water level, and design digital display drive control circuit.the desig

6、n is a low-power water-level data acquisition device based on single-chip technology,its a practical real-time data acquisition system.finally, the experimental results verify the water level monitor the overall design ideas and hardware, software design is correct, can be achieved accurately the wa

7、ter level auto-detection.keywords:pic single-chip computer; water level detection; led display第1章 引言 1.1 水位檢測儀器的現(xiàn)狀和發(fā)展前景 隨著科學技術的不斷發(fā)展,我國的監(jiān)測儀器已具有一定研究、開發(fā)和生產能力,特別是各種儀器的數(shù)據(jù)處理系統(tǒng)及自動控制系統(tǒng)的最新研究成果,使我國儀器研制和在用儀器改造的升級,邁上了一個新的臺階。目前國產儀器在功能齊全、性能穩(wěn)定等方面,與國際上較為先進的同類產品不相上下,完全能夠滿足水位檢測的需要,且價格比國外進口儀器便宜得多。 雖然我國的地下水環(huán)境監(jiān)測儀器,從工藝力量

8、和工藝裝備,從行業(yè)生產水平和專業(yè)化水平等方面來看,與發(fā)達國家相比有較大差距,但在某些方面,已具有一定的優(yōu)勢,特別是各種儀器數(shù)據(jù)處理系統(tǒng)及自動控制系統(tǒng)的最新研究成果,使我國儀器研制和在用儀器改造的升級,邁上了一個新的臺階,而就功能設置與軟件編輯來說,更適合我國的國情。在水位檢測儀器方面,國外具有較為先進產品,但不適合我國國情,突出表現(xiàn)在:儀器設備昂貴,操作步驟復雜,質控程序繁瑣。我們應采取有效措施,揚長避短,將國外的先進技術引入國內消化吸收,建立既適合我國國情又盡可能與國際接軌的監(jiān)測方法。在地下水監(jiān)測儀器的研制中,要在多品種和提高技術水平上下功夫,真正做到能準確、及時、真實的數(shù)據(jù)反映地下水狀況和

9、變化規(guī)律1。水位檢測和顯示儀表裝置在工業(yè)上有著廣泛的應用2-9。為了適應我國自動檢測的發(fā)展現(xiàn)狀,本文設計了一種能實時檢測并顯示水位的儀器-水位監(jiān)測儀1.2 本文的結構安排本文主要分三個章節(jié)介紹水位監(jiān)測儀的開發(fā)流程:第二章介紹水位監(jiān)測儀的基本原理,簡單介紹水位監(jiān)測儀的功能以及整體架構第三章介紹硬件設計,從數(shù)據(jù)采集和顯示兩個方面分別介紹第四章介紹軟件設計,從tmr1中斷服務程序、子程序轉換程序、tmr0中斷服務程序三部分進行系統(tǒng)分析。第2章 水位監(jiān)測儀的基本原理2.1 功能說明對偏離零點的水位進行檢測,然后將帶符號的水位置(低于或高于零點)用數(shù)碼管顯示出來,并通過雙色發(fā)光二極管led陣列對水位高度

10、進行模擬顯示。(1) 水位檢測:在0mm、10mm,25mm、50mm、80mm、120mm、160mm、240mm共15點的基礎上,檢測水位偏離零點的大小。(2) 水位顯示:將上一步檢測結果用數(shù)碼管顯示出來,顯示值以比實際水位小的最近點為準,同時用15個豎直排列的雙色led陣列直觀地模擬當前水位高度,當水位沒有達到某點時相應的led顯示紅色、達到或超過則顯示綠色。當水位低于-240mm時報警燈顯示綠色,高于240mm是報警燈顯示紅色,當水位恢復正常時報警燈熄滅。2.2 整體架構水位監(jiān)測儀主要由三部分組成:水位檢測與數(shù)據(jù)采集電路、pic16f877單片機以及數(shù)碼管與led顯示電路。整體框圖如圖

11、2.1所示。電源數(shù)碼管及l(fā)ed顯示電路pic16f877水位數(shù)據(jù)采集電路圖2.1 水位監(jiān)測儀整體構架框圖水位數(shù)據(jù)采集電路將采集到的數(shù)據(jù)通過采樣通道輸入口傳輸給pic16f877單片機,pic單片機對數(shù)據(jù)進行處理后信號輸出給顯示電路,數(shù)碼管及l(fā)ed顯示電路將水位顯示出來。本設計引入一種獨特的掃描思想-循環(huán)掃描,由于水位檢測的數(shù)據(jù)采集及顯示的實時性要求不是很高,而單片機的的運行速度相對很快,如果分時選通各個采樣及顯示通道,整體開來近似為同時進行的,只要不斷的重復這一掃描過程,就可以完成無間隔數(shù)據(jù)采集和無閃爍顯示。水位檢測與數(shù)據(jù)采集電路部分采用電接點水位檢測方法,在每一個預定水位檢測點處,將兩個電極

12、安裝在容器壁,使其一端能夠與沒過該點的水充分接觸,另一端引出到容器外面同檢測電路相連接,兩個電極等高度并間隔一定距離。當水位沒有達到該檢定點是,兩個電極間電阻為無窮大;而一旦水位上升到該點高度,則兩個電極同時沒入水中,由于水的導電性,兩個電極導通。通過檢測兩個電極是否導通就可以檢測水位的高度了。數(shù)碼管與led顯示電路部分主要由15個雙色發(fā)光二極管和4個數(shù)碼管組成。模擬水位高度由15個雙色發(fā)光二極管(led)來完成,共分4組。數(shù)字水位高度顯示由四個數(shù)碼管來完成,分別表示正負、百位、十位和各位。在某一特定時刻,每組led與一個數(shù)碼管一起被選通(4組led對應4個數(shù)碼管),兩個8位的移位寄存器74l

13、s164級聯(lián),將單片機送出的2個字節(jié)串行數(shù)據(jù)轉化為16位并行數(shù)據(jù),分別送選通的led和數(shù)碼管。在不同時刻,系統(tǒng)對4組led和數(shù)碼管快速的循環(huán)掃描,就完成了面板顯示的功能。第3章 硬件設計本部分介紹多通道水位循環(huán)檢測的硬件設計、利用串行芯片擴展i/o端口的方法以及循環(huán)掃描方式實現(xiàn)面板顯示的硬件結構。水位檢測儀的電路原理圖如圖3.1所示。圖3.1 水位監(jiān)測儀電路原理圖3.1 水位檢測與數(shù)據(jù)采集本設計采用電接點水位檢測方法,通過檢測兩個電極是否導通就可以檢測水位的高度了。對15個檢測點相應有15個檢測通道,本設計運用兩片8通道的多路選擇開關cd4051,對各個通道循環(huán)檢測來實現(xiàn)數(shù)據(jù)采集。cd4051

14、是一種雙向8通道的多路開關,可以8路選通輸入,1路輸出;也可以1路輸入,8路選通輸出。通過3為數(shù)據(jù)位a,b,c進行通道選擇。禁止輸入輸出端inh可以禁止和允許工作。其引腳定義如圖3.2所示,真值表如表1所示。 in/out vdd 1 0 3 a b c 16 15 14 13 12 11 10 90 1 2 3 4 5 6 7 84 6 out/in 7 5 inh vee vss in/out in/out 圖3.2 cd4051引腳圖表1 cd4051真值表選通通道輸入狀態(tài)inhibitcba0000010001200103001140100501016011070111none1*盡管

15、水位檢測原理簡單,但應用時卻不能僅僅用每路的通斷來判斷水位時否沒過該路的點擊。實際上水的電阻因水的所含成分不同有很大的差異,例如蒸餾水就不到點,就不能用這種方法來檢測。另一方面,空氣電阻也不是無窮大的,也跟其成分有關,例如飽和蒸汽的組織大概有1m歐左右。所以,不能通過判斷單片機的數(shù)據(jù)采集引腳輸入電平高低來判斷水位是否到達某點,否則介于高低電平之間的電平狀態(tài)就無法做出判斷,而這種情況可能存在。一個可靠的方法就是對輸入引腳的數(shù)據(jù)進行采樣,然后將結果與一個閥值電壓進行比較,從而得出結論。根據(jù)這個原理設計的水位檢測儀數(shù)據(jù)采集部分的電路如圖3.3所示。從圖中可以看出,rd3口是地址擴展口,其與一個非門連

16、接,結合inh引腳,將2個8路選通開關擴展為一個16路選通開關。通過rd03口進行采樣通道地址譯碼,在不同時刻選通15個通道中的1個,循環(huán)掃描15個通道。當水位上升到某一對電極高度時,相應通道的采樣電壓將會較低;若沒有上升到電極高度,那么上拉電阻將會把采樣值箝位到+5v。通過判斷采樣電壓的高低,就可以判斷選通的通道是否沒于水中,進而判斷水位高度,ra0口作為a/d采樣的通道輸入口。pole014為15對模擬水位高度的電極。圖3.3 數(shù)據(jù)采集原理圖3.2 數(shù)碼管與led顯示鍵盤和顯示器是單片機系統(tǒng)中人機對話不可缺少的一部分。在許多智能儀表的設計中,多用led數(shù)碼管來顯示。這是因為led數(shù)碼管驅動

17、簡單,成本較低并且能適應惡劣的環(huán)境。用于數(shù)碼管顯示驅動的芯片有很多種,常見的有max7219、max7221、zlg7290、icm7218b以及8279等。這些專用芯片使用方便,功能較強,但價格偏高。本設計中采用循環(huán)掃描的方式,充分利用單片機快速的處理能力對各顯示單元分時選通,只需普通的串行移位芯片,就可以達到顯示驅動的目的。3.2.1 相關芯片的介紹顯示部分用到的芯片包括移位寄存器74ls164、數(shù)據(jù)緩沖器74ls244以及多路開關cd4051。下面就74ls164和74ls244作簡單介紹。(1) 移位寄存器 74ls164。74ls164引腳定義如圖3.4所示,起真值表如表2所示,其功

18、能是將外部輸入的串行數(shù)據(jù)轉化為8位的并行數(shù)據(jù)輸出,+5v供電,串行傳輸?shù)念l率由外部時鐘控制,其數(shù)據(jù)輸出具有鎖存功能。a,b端為穿行數(shù)據(jù)輸入端,qaqh為并行數(shù)據(jù)輸出端,clk為外部時鐘輸入端,clr為清零端。當清除端clear為低電平時,輸出端(qaqh)均為低電平。串行數(shù)據(jù)輸入端(a、b)可控制數(shù)據(jù),當a、b任意一個為低電平,則禁止新數(shù)據(jù)輸入,在時鐘端(clock)脈沖上升沿作用下qa為低電平。當a、b有一個為高電平則另一個就允許數(shù)據(jù)輸入,并在clock上升沿作用下決定qa的狀態(tài)。 圖3.4 74ls164引腳圖10表2 74ls164的真值表輸入輸出clearclocka bqa qb q

19、hlxx xl l lhlx xqa0 qb0 qh0hh hh qan qgnhl xl qan qgnhx ll qan qgn注: qa0、 qb0、qh0為在穩(wěn)態(tài)輸入條件建立之前qa 、qb 和qh相應的電平;qan 、qgn 為在最近的時鐘轉換前qa或qg的電平,表示移1位。(2) 數(shù)據(jù)緩沖器74ls244。由于74ls164在高電平輸出時,其輸出最大電流為0.4ma;低電平輸出時,起輸出最大電流為8ma,不足以驅動數(shù)碼管或發(fā)光二極管正常工作,所以在本設計中外加數(shù)據(jù)緩沖器以增大驅動能力,使數(shù)碼管和二極管可以正常工作。 74ls244緩沖器常用作三態(tài)緩沖或總線驅動,+5v供電,其高電平

20、時輸出最大電流可達15ma,低電平輸出時最大電流可達24ma,足以驅動數(shù)碼管和led工作。74ls244共8個輸入輸出通道,通過門控端1g和2g來選擇其通斷,其引腳圖如圖3.5所示。圖3.5 74ls244內部結構及引腳圖從圖中可以看出,當引腳1g為低電平時,輸入通道1a11a4與輸出通道1y11y4連通;當引腳1g為高電平時則截止。當引腳2g為低電平時,輸入通道2a12a4與輸出通道2y12y4連通;當引腳2g為高電平時,輸入通道2a12a4與輸出通道2y12y4截止。3.2.2 顯示部分工作原理首先介紹一下雙色二極管的功能和用法。如圖3.6所示,1個雙色二極管有3個引腳,引腳1,2均為信號

21、“+”端,引腳3為gnd端(信號“-”端)。引腳電平(ttl電平)與led顯示顏色如表3所示。圖3.6 雙色二極管外觀圖表3 雙色二極管的功能表引腳1引腳2二極管狀態(tài)00熄滅01綠色10紅色11混合顏色數(shù)碼管及l(fā)ed顯示電路如圖3.7所示,其主要功能流程是:將單片機輸出的串行數(shù)據(jù)通過74ls164移位寄存器轉化并行數(shù)據(jù),經74ls244數(shù)據(jù)緩沖器驅動數(shù)碼管及l(fā)ed顯示。rc5口作為串行數(shù)據(jù)輸出端,與74ls164的數(shù)據(jù)輸入端相連,當單片機輸出的串行數(shù)據(jù)輸入74ls164;rc3口作為串行數(shù)據(jù)的同步時鐘端,與74ls164的時鐘同步輸入端相連。兩片移位寄存器74ls164的并行數(shù)據(jù)輸出端則分別與

22、兩片數(shù)據(jù)緩沖器74ls244的輸入端相連,兩片74ls244分別驅動數(shù)碼管和led的顯示,rd7口作為數(shù)據(jù)緩沖器74ls244的門控信號輸出端,控制74ls244的通斷。圖3.7 數(shù)碼管及l(fā)ed顯示電路每4個雙色二極管和1個數(shù)碼管一組,二極管的8個信號“+”端分別與第一片74ls244的8位數(shù)據(jù)輸出端相連,數(shù)碼管的8為數(shù)據(jù)輸入端分別與第二片74ls244的8為數(shù)據(jù)輸出端相連,每組二極管和數(shù)碼管的gnd端都與cd4051的1個輸入通道相連,cd4051的輸出端與系統(tǒng)的“地”相連。re0re1口作為地址譯碼輸出端口,用于多路開關cd4051的4路通道選擇,每一時刻只有一組共4個二極管和一個數(shù)碼管被

23、選通,其gnd端同系統(tǒng)的“地”構成通路,其他的二極管與數(shù)碼管則不能構成通路。每向74ls164傳送完2個字節(jié)共16位數(shù)據(jù),通過rd7口使能74ls244,將數(shù)據(jù)送到二極管和數(shù)碼管的輸入口,然后通過re0re1口打開一條通道,則被選通的數(shù)碼管和二極管就會按照接收的數(shù)據(jù)進行相應的顯示。不斷的發(fā)送新數(shù)據(jù)并利用cd4051循環(huán)的掃描4個通道,則所有的二極管和數(shù)碼管就會持續(xù)的發(fā)光顯示。利用人的視覺暫留現(xiàn)象,每個led或數(shù)碼管兩次被選通的時間間隔不能大于100ms。另外由一個雙色二極管作為報警燈,rd5口與二極管引腳1相連,作為上限報警燈;rd4口與二極管的引腳2相連,作為上限報警燈。第4章 系統(tǒng)軟件設計

24、本設計關鍵的核心是兩個不循環(huán)執(zhí)行的中斷程序:tmr0中斷用于驅動數(shù)碼管和led顯示;tmr1中斷用于采集水位值并且將采集結果送緩沖寄存器供顯示部分讀取,同時對采集結果進行簡單的分析,判斷其是否超過水位上限和下限,若超過則點亮相應的報警燈。整個軟件大體可以分為初始化程序、tmr0中斷服務程序、數(shù)據(jù)轉換子程序、tmr1中斷服務程序4個部分,以下分別加以描述。4.1 初始化程序初始化程序位于主程序開始部分,主要對3部分進行初始化:i/o端口、tmr1和tmr0。各部分的初始化步驟如下描述。4.1.1 i/o端口方向控制寄存器u ra0端口用于將采集到的數(shù)據(jù)輸入,故將a/d端口ra0設置為輸入方式u

25、串行數(shù)據(jù)同步端口rc3,設置為輸出方式u 串行數(shù)據(jù)輸出端口rc5,設置為輸入方式u 采樣通道地址譯碼端口rd0rd3,設置為輸出方式u 顯示部分地址譯碼端口re0re1,設置為輸出方式u 報警輸出端口rd4rd5,設置為輸出4.1.2 tmr1初始化tmr1初始化步驟如下:l 將第一外設中斷標志寄存器pir1(地址為0ch)中的trm1溢出中斷標志位tmr1if(bit0)清零。l 將第一外設中斷屏蔽寄存器pie1(地址為8ch)中的tmr1溢出中斷屏蔽位tmr1ie(bit0)置位。l 通過tmr1中斷控制寄存器t1con(地址為10h)設置時鐘及分頻比等。 即:時鐘源選擇位tmr1cs(b

26、it1)清零,選擇內部時鐘源 分頻比選擇位t1ckps0t1ckps1(bit54)置位11,選擇分頻比1:8l 給tmr1計數(shù)器tmr1h(地址為0fh)、tmr1l(地址為0eh)賦初值l 將中斷控制寄存器intcon(地址為0bh)中的全局中斷屏蔽位gie(bit7)置位,響應所有外圍設備模塊產生的中斷請求l 將中斷控制寄存器intcon(地址為0bh)中的外設中斷屏蔽位peie(bit6)置位,開放第二級別的外圍中斷4.1.3 tmr0初始化tmr0初始化步驟如下:n 通過選項寄存器option_reg(地址為81h)設置tmr0的分頻比及時鐘 即:時鐘選擇位t0cs(bit5)清零,

27、由內部提供的指令周期信號作為時鐘源 分頻器分配為psa(bit3)清零,分頻器分配給tmr0 分頻器分頻比選擇位ps2ps0(bit20)置位111,選擇分頻比1:128n 將intcon寄存器(地址為0bh)中的tmr0中斷標志位t0if(bit2)清零并將中斷屏蔽位t0ie(bit5)置位n 將中斷控制寄存器intcon(地址為0bh)中的全局中斷屏蔽位gie(bit7)置位,響應所有外圍設備模塊產生的中斷請求n 將中斷控制寄存器intcon(地址為0bh)中的外設中斷屏蔽位peie(bit6)置位,開放第二級別的外圍中斷n 給tmr0計數(shù)器賦初值4.2定時/計數(shù)器定時/計數(shù)器其功能都是靠

28、寄存器計數(shù)值的累積來實現(xiàn)的,pic單片機采用遞增方式,計數(shù)值累加到上限后會產生溢出,相應的會在溢出中斷標志位上反映出來。計數(shù)值的累加又是靠時鐘來觸發(fā)的,它可以是單片機內部時鐘,也可以來自外部。定時的長短以及數(shù)值的上限都是定時/計數(shù)器的位寬、分頻器的分頻值有關。pic16f87x系列單片機集成3個定時/計數(shù)器模塊tmr0、tmr1、tmr2。在結構和功能上不盡相同,其定時長短,計數(shù)上限因此也不一樣,應用場合也不同11。tmr0為8位寬,與wdt共用一個可選的預分頻器,用于一般的通用目的。tmr1為16位寬,附帶一個可編程的預分頻器以及一個可選的低頻時基振蕩器,不僅可以用來計數(shù),還可與ccp模塊一

29、起實現(xiàn)輸入捕捉與輸出比較功能。tmr2也是一個8位寬的定時/計數(shù)器,附帶一個可編程的預分頻器,一個可編程的后分頻器,一個周期寄存器和比較器,只能用于定時,不能用于計時,可與ccp模塊一起實現(xiàn)pwm功能(即產生脈寬調制信號)。tmr0的特點:u 8位寬定時/計數(shù)器u 計數(shù)器tmr0內容可讀可寫u 8位軟件可編程預分頻器u 內部/外部時鐘可選,外部時鐘觸發(fā)邊沿可選u 溢出中斷功能tmr1的特點:u 16位寬定時/計數(shù)器u 計數(shù)器tmr1內容可讀可寫u 3位軟件可編程預分頻器u 累加計數(shù)信號源可選內部時鐘、外部觸發(fā)信號或自帶時基振蕩器信號u 溢出中斷功能tmr2的的特點:u 8位寬的定時器u 計數(shù)器

30、tmr2內容可讀可寫u 2位軟件可編程與預分頻器,4位軟件可編程后分頻器u 累加計數(shù)信號源可選內部時鐘信號,因此只能工作在定時器模式u 8位周期寄存器u 溢出次數(shù)經過分頻后溢出中斷u 可以由用戶軟件關閉退出定時 本設計應用到了trm0和tmr14.2.1 tmr1中斷服務程序 設定系統(tǒng)的水位刷新時間為1s,即單片機每秒鐘對采樣通道進行一遍a/d轉換、軟件上則設定tmr1定時器每秒產生一次中斷,執(zhí)行數(shù)據(jù)采樣程序,從最高水位采樣通道向下執(zhí)行,并不斷將每次采樣結果與系統(tǒng)設定的門限值比較(采樣結果如果小于門限值,說明電平低,即電容兩極同時沒于水中,水位已經超過該電極)當檢測到水位超過某一對電極時,則退

31、出采樣程序。接下來判斷水位是否越限,若是則點亮相應的報警燈,否則使報警燈熄滅。然后調用數(shù)據(jù)轉換子程序,將水位采樣結果轉化為相應數(shù)碼管和led顯示段碼值存入顯示數(shù)據(jù)緩沖寄存器。由于pic單片機的中斷矢量只有一個,而本設計中用到兩個中斷(tmr1和tmr0),故而在中斷服務程序入口處,需要對中斷源進行判斷,這是通過判斷相應的中斷標志寄存器來實現(xiàn)的。tmr1中斷服務程序流程圖如圖4.1所示。 設置tmr1定時器分頻比為1:8,采用內部時鐘源,系統(tǒng)采用2m晶振。那么tmr1的時鐘脈沖周期為2s,由于分頻比為1:8,則每16s計數(shù)一次,1s需要計數(shù)62500次,即從計時開始到62500個計數(shù)周期后,tm

32、r1寄存器達到上限65536并溢出,所以tmr1寄存器初始值65536-62500=3036,即0bdch。下面對流程圖中的關鍵部分進行簡單說明:(1) 關于adc控制寄存器adcon0的設置:ad轉換時鐘選擇位bit76置位01,選擇系統(tǒng)時鐘,頻率為fosc/8,模擬輸入通道選擇位bit53置位000,選擇通道0(ra0/an0)。(2) 關于adc控制器adcon1的設置:a/d轉換結果格式選擇位(bit7)清零,a/d轉換結果左對齊,adresh有效,adresl的低六位為0,a/d端口控制位(bit30)置位1110,選擇ra0口為模擬輸入口(3) 采樣開始部分,要先關閉a/d轉換器(

33、bit0=0),令其退出工作狀態(tài),等待采樣值穩(wěn)定后在重新開啟a/d轉換器(bit0=1),開始采樣。并通過檢測a/d轉換狀態(tài)位go/done(bit2)是否為0,確定采樣是否結束。圖4.1 tmr1中斷服務程序流程圖4.2.2 tmr0中斷服務程序tmr0中斷用于數(shù)碼管及l(fā)ed顯示,每次中斷將兩個字節(jié)的數(shù)據(jù)串行發(fā)送發(fā)送至以為寄存器,后經74ls244驅動一組led和1個數(shù)碼管發(fā)光。由于每個led或數(shù)碼管兩次被選通的時間最大不能燒過100ms(利用人的視覺暫留現(xiàn)象,否則就會出現(xiàn)閃爍),加之tmr1中斷可能占用的時間,所以每次tmr0中斷溢出時間不能太長;兩一方面,tmr0中斷溢出時間又不能太短,

34、必須保證串行發(fā)送正常發(fā)送完畢。綜合兩方面因素,將tmr0溢出時間設定為10ms。tmr0中斷服務程序流程圖如圖4.2所示。設置tmr0定時器分頻比為1:128,采用內部時鐘源,系統(tǒng)采用2m晶振。那么tmr0的時鐘脈沖周期為1s,由于分頻比為1:128,則每256s計數(shù)一次,10ms需要計數(shù)39次,即從計時開始到39個計數(shù)周期后,tmr0寄存器達到上限256并產生溢出,所以tmr0寄存器初始值256-39=217,即0d9h。圖4.2 tmr0中斷服務程序流程圖下面對流程圖中的關鍵部分進行簡單說明:(1) 發(fā)送的兩個字節(jié),根據(jù)硬件電路原理可知,先發(fā)送的字節(jié)經過移位寄存器74ls164及數(shù)據(jù)緩沖器

35、74ls244驅動一組led;后發(fā)送的字節(jié)經過移位寄存器74ls164及數(shù)據(jù)緩沖器74ls244驅動一個數(shù)碼顯示管。(2) 發(fā)送字節(jié)過程中,需清74ls244使能位,暫時禁止數(shù)據(jù)輸出顯示,待發(fā)送完畢后,置74ls244使能位,允許數(shù)據(jù)輸出顯示。(3) 當使用spi來進行數(shù)據(jù)發(fā)送時,采用軟件對標志位查詢的方式來完成。(4) 關于同步串口控制寄存器sspcon的設置:同步串行口允許位sspen(bit5)置位,允許串口工作;同步串行口工作模式選擇位sspm30(bit30)置位0000,選擇spi主控模式,并且時鐘頻率為系統(tǒng)時鐘的1/4。4.3 數(shù)據(jù)轉換子程序在進行水位檢測后,會產生一個水位的高度

36、值(設置為height),但它并不是一個真實的水位值,只是一個標識水位高度的通道號,其值為015中的某個數(shù),分別表示沒有水以及15種水位高度共16種情況。故而需要將其轉化為led和數(shù)碼管的實際顯示段碼值。表4列出了高度值height、led段碼值led1led4和數(shù)碼管顯示數(shù)據(jù)seg1seg4的對應關系,表5則為數(shù)碼管的七段碼值遇顯示符號的對應關系。表4 高度值與顯示段碼對照表heightled1led2led3led4seg1seg2seg3seg400f0h0f0h0f0h0f0h-10e1h0f0h0f0h0f0h-24020c3h0f0h0f0h0f0h-160387h0f0h0f0h

37、0f0h-12040fh0f0h0f0h0f0h-8050fh0e1h0f0h0f0h-5060fh0c300f0h0f0h-2570fh87h0f0h0f0h-1080fh0fh0f0h0f0h090fh0fh0e1h0f0h10100fh0fh0c3h0f0h25110fh0fh87h0f0h50120fh0fh0fh0f0h80130fh0fh0fh0e1h120140fh0fh0fh0c3h160150fh0fh0fh87h240表5 數(shù)碼管七段碼顯示符號共陽極七段碼共陰極七段碼顯示符號共陽極七段碼共陰極七段碼00c0h3fh682h7dh10f9h06h70f8h07h20a4h5b

38、h880h7fh30b0h4fh990h6fh499h66h-0bfh40h592h6dh全滅ffh00h有三種方法對led和數(shù)碼管顯示緩沖寄存器寫入數(shù)據(jù):第一種是采用查表的方法,將各個高度值對應的數(shù)據(jù)預先存入一塊緩沖區(qū)內,通過對指令指針賦值來訪問特定數(shù)據(jù)單位,返回轉換后的數(shù)值;第二種是采用逐個比較的方法,將采樣結果與115的數(shù)逐個比較,若相等則向緩沖區(qū)賦相應值;第三種方法是根據(jù)表的特征來賦值,很顯然,第二、三種方法比較費時間,第一種方法雖然程序代碼最大,但執(zhí)行起來速度快,本設計采用第一種方法,具體可參見查表子程序的程序代碼。結束語由于許多數(shù)據(jù)采集、顯示的實時性要求不是很高,因此單片機的執(zhí)行速

39、度相對于這些過程要快得多,若分時選通各個采樣或顯示通道,雖然單片機對各個通道的處理是依次進行的,但是只要這一過程達到一定速度,總的看來幾乎同時執(zhí)行,不斷重復這一過程,就產生了循環(huán)掃描的思想,它在單片機系統(tǒng)設計中得到了廣泛的應用。本設計中的水位采樣通道設計以及數(shù)碼管、led顯示都是基于這一思想。主要是通過移位的方法,用74ls164芯片將每個通道的串行數(shù)據(jù)轉化為并行方式,在通過數(shù)據(jù)緩沖器74ls244輸出,用cd4051循環(huán)對每個通道選通,從而實現(xiàn)對數(shù)碼管的驅動。串行通信上則利用pic的ccp模塊,采用硬件spi方式進行串行通信。軟件上采用了兩個中斷程序分別進行采樣和顯示。致謝 本次畢業(yè)設計歷時

40、兩個多月,從選題、開題答辯到設計的完成,設計的完稿。其間每一過程都得到指導教師王靈矯老師的悉心指導,在此表達我對他的深深的敬意和由衷的感謝! 同時,我要向我的家人表達我深深的感激!在我的求學生涯中,他們給了我最無私的關懷和鼓勵。如果沒有他們無限的支持和幫助,我也不能在我的學習之路上勇往直前。最后,我要感謝一同學習了4年的同學們和所有關心我的朋友們,他們給予了我大量的幫助和支持,在我猶豫和困惑的時候,他們的支持幫我堅定了目標,走出了困境,他們是我一生的財富。參考文獻1史云.我國地下水監(jiān)測儀器的現(xiàn)狀與發(fā)展電子文獻北京:地質環(huán)境信息網(wǎng),2005年 2楊恢先、黃輝先.單片機原理及應用m.北京:人民郵電

41、出版社,2006年 3羅翼、張宏偉.pic單片機應用系統(tǒng)開發(fā)典型實例m.北京:中國電力出版,2005年 4李學海. pic單片機實用教程-基礎篇m. 北京:北京航空航天大學出版設,2007年 5李學海. pic單片機實用教程-提高篇m. 北京:北京航空航天大學出版設,2007年. 6李學海.pic單片機原理m北京:北京航空航天大學出版社,2004年 7彭樹生.pic單片機原理及應用m機械工業(yè)出版社,2002年 8楊圣.pic系列單片機的原理與實踐m合肥:中國科學技術大學出版社,2003 9劉啟中、李榮正等.pic單片機原理及應用m.北京:北京航空航天大學出版社,2003 10閻石.數(shù)字電子技術

42、基礎m.北京:高等教育出版社,2005年 11求是科技. pic單片機典型模塊設計實例導航m. 北京:人民郵電出版社,2005年附錄附錄 程序清單及注釋list p=16f877include p16f877.incstatus equ 03h;定義狀態(tài)寄存器地址pcl equ 02h ;定義程序計數(shù)器低8位指針地址porta equ 05h;定義端口ra的數(shù)據(jù)寄存器地址portc equ 07h ;定義端口rc的數(shù)據(jù)寄存器地址portd equ 08h ;定義端口rd的數(shù)據(jù)寄存器地址porte equ 09h ;定義端口re的數(shù)據(jù)寄存器地址trisa equ 85h;定義端口ra的方向控制寄

43、存器地址trisc equ 87h;定義端口rc的方向控制寄存器地址trisd equ 88h;定義端口rd的方向控制寄存器地址trise equ 89h;定義端口re的方向控制寄存器地址intcon equ 0bh;定義中斷控制寄存器地址t1con equ 10h ;定義tmr1中斷控制寄存器tmr0 equ 01h;定義tmr0寄存器地址pir1 equ 0ch;定義第一外設中斷標志寄存器地址pie1 equ 8ch ;定義第一外設中斷屏蔽寄存器地址adresh equ 1eh;定義adc結果寄存器高字節(jié)地址adcon0 equ 1fh ;定義adc控制寄存器0地址adcon1 equ 9

44、fh;定義adc控制寄存器1地址t1con equ 10h;定義tmr1控制寄存器地址tmr1l equ 0eh ;定義tmr1低字節(jié)地址tmr1h equ 0fh;定義tmr1高字節(jié)地址sspbuf equ 13h ;定義spi收發(fā)緩沖寄存器地址sspcon equ 14h ;定義同步串口控制寄存器地址sspstat equ 94h ;定義同步串口狀態(tài)寄存器地址option_reg equ 81h ;定義選項寄存器;=變量聲明=temp equ 20h ;定義暫存寄存器height equ 22h ;定義采樣結果寄存器,用以標識水位高度select_count equ 23h ;定義翻轉計數(shù)

45、器,用以標識選通的顯示通道ad_count equ 24h ;定義翻轉計數(shù)器,用以標識選通的采樣通道tx_led equ 25h ;led數(shù)據(jù)串行發(fā)送暫存寄存器tx_data equ 26h ;數(shù)碼管數(shù)據(jù)串行發(fā)送暫存寄存器led1 equ 29h ;發(fā)光二極管顯示數(shù)據(jù)寄存器1led2 equ 30h ;發(fā)光二極管顯示數(shù)據(jù)寄存器2led3 equ 31h ;發(fā)光二極管顯示數(shù)據(jù)寄存器3led4 equ 32h ;發(fā)光二極管顯示數(shù)據(jù)寄存器4seg1 equ 33h ;數(shù)碼管顯示數(shù)據(jù)寄存器1seg2 equ 34h ;數(shù)碼管顯示數(shù)據(jù)寄存器2seg3 equ 35h ;數(shù)碼管顯示數(shù)據(jù)寄存器3seg4 equ 36h ;數(shù)碼管顯示數(shù)據(jù)寄存器4;=常量聲明=tmr1lb equ 0dch ;定義tmr1低字節(jié)寄存器初始值 (定時1秒)tmr1hb equ 0bh ;定義tmr1高字節(jié)寄存器初始值tmr0b equ 0d9h ;定義tmr0寄存器初始值(定時10毫秒)gate_value equ 07fh ;定義采樣結果門檻值,用以區(qū)分水和空氣阻值; *復位矢量和中斷矢量* org 000h ;復位矢量 no

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論