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

下載本文檔

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

文檔簡(jiǎn)介

1、 . PAGE33 / NUMPAGES34目 錄摘要11 TOC o 1-3 h z u 引言2 1.1水位檢測(cè)儀器的現(xiàn)狀和發(fā)展前景2 1.2 本文的結(jié)構(gòu)安排22 水位監(jiān)測(cè)儀的基本原理3 2.1功能說明3 2.2整體架構(gòu)33硬件設(shè)計(jì)5 3.1水位檢測(cè)與數(shù)據(jù)采集5 3.2數(shù)碼管與LED顯示7 3.2.1 相關(guān)芯片簡(jiǎn)介7 3.2.2 顯示部分工作原理94 系統(tǒng)軟件設(shè)計(jì)12 4.1 初始化程序12 4.1.1 I/O端口方向控制寄存器12 4.1.2 TMR1初始化12 4.1.3 TMR0初始化13 4.2 定時(shí)/計(jì)數(shù)器13 4.2.1 TMR1中斷服務(wù)程序14 4.2.2 TMR0中斷服務(wù)程序

2、15 4.3 數(shù)據(jù)轉(zhuǎn)換子程序17結(jié)束語19致20參考文獻(xiàn)21附錄22 附錄 程序清單與注釋22水位檢測(cè)儀設(shè)計(jì)摘要:水位檢測(cè)和顯示儀表裝置在工業(yè)上有著廣泛的應(yīng)用,本文設(shè)計(jì)了一種能實(shí)時(shí)檢測(cè)并顯示水位的儀器水位檢測(cè)儀。設(shè)計(jì)主要論述對(duì)水位數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),其主要功能是完成數(shù)據(jù)采集、處理、顯示、數(shù)據(jù)存儲(chǔ)等。根據(jù)對(duì)數(shù)據(jù)采集系統(tǒng)體系結(jié)構(gòu)與功能要求的分析,以PIC16F877單片機(jī)為核心設(shè)計(jì)并實(shí)現(xiàn)的采集系統(tǒng),結(jié)合CD4051實(shí)現(xiàn)對(duì)水位的檢測(cè),結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)可靠。在PIC單片機(jī)中實(shí)現(xiàn)了數(shù)據(jù)存儲(chǔ)和處理,獲取了當(dāng)前的水位,并設(shè)計(jì)實(shí)現(xiàn)了數(shù)碼管的驅(qū)動(dòng)顯示電路。該設(shè)計(jì)是基于單片機(jī)技術(shù)設(shè)計(jì)實(shí)現(xiàn)的低功耗水位數(shù)據(jù)采集裝

3、置,是一個(gè)具有一定實(shí)用性的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)。最后的實(shí)驗(yàn)結(jié)果驗(yàn)證了水位監(jiān)測(cè)儀的總體設(shè)計(jì)思路與硬件、軟件設(shè)計(jì)方案正確,能夠準(zhǔn)確地實(shí)現(xiàn)了水位的自動(dòng)檢測(cè)。關(guān)鍵詞:PIC單片機(jī);水位檢測(cè);LED顯示Design of Water-level Detecting MeterAbstract: Water level detection and display devices has a wide range of applications in industry, this article designa real-time detection and display equipment water le

4、vel detector.This design focuses 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 ana

5、lysis,the article design and accomplish 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

6、drive control circuit.The design 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, ca

7、n be achieved accurately the water level auto-detection.Keywords:PIC Single-chip Computer; Water level detection; LED display第1章 引言1.1 水位檢測(cè)儀器的現(xiàn)狀和發(fā)展前景 隨著科學(xué)技術(shù)的不斷發(fā)展,我國(guó)的監(jiān)測(cè)儀器已具有一定研究、開發(fā)和生產(chǎn)能力,特別是各種儀器的數(shù)據(jù)處理系統(tǒng)與自動(dòng)控制系統(tǒng)的最新研究成果,使我國(guó)儀器研制和在用儀器改造的升級(jí),邁上了一個(gè)新的臺(tái)階。目前國(guó)產(chǎn)儀器在功能齊全、性能穩(wěn)定等方面,與國(guó)際上較為先進(jìn)的同類產(chǎn)品不相上下,完全能夠滿足水位檢測(cè)的需要,且價(jià)格比國(guó)外

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

9、上下功夫,真正做到能準(zhǔn)確、與時(shí)、真實(shí)的數(shù)據(jù)反映地下水狀況和變化規(guī)律1。水位檢測(cè)和顯示儀表裝置在工業(yè)上有著廣泛的應(yīng)用2-9。為了適應(yīng)我國(guó)自動(dòng)檢測(cè)的發(fā)展現(xiàn)狀,本文設(shè)計(jì)了一種能實(shí)時(shí)檢測(cè)并顯示水位的儀器水位監(jiān)測(cè)儀1.2 本文的結(jié)構(gòu)安排本文主要分三個(gè)章節(jié)介紹水位監(jiān)測(cè)儀的開發(fā)流程:第二章介紹水位監(jiān)測(cè)儀的基本原理,簡(jiǎn)單介紹水位監(jiān)測(cè)儀的功能以與整體架構(gòu)第三章介紹硬件設(shè)計(jì),從數(shù)據(jù)采集和顯示兩個(gè)方面分別介紹第四章介紹軟件設(shè)計(jì),從TMR1中斷服務(wù)程序、子程序轉(zhuǎn)換程序、TMR0中斷服務(wù)程序三部分進(jìn)行系統(tǒng)分析。 水位監(jiān)測(cè)儀的基本原理2.1 功能說明對(duì)偏離零點(diǎn)的水位進(jìn)行檢測(cè),然后將帶符號(hào)的水位置(低于或高于零點(diǎn))用數(shù)碼管

10、顯示出來,并通過雙色發(fā)光二極管LED陣列對(duì)水位高度進(jìn)行模擬顯示。水位檢測(cè):在0mm、10mm,25mm、50mm、80mm、120mm、160mm、240mm共15點(diǎn)的基礎(chǔ)上,檢測(cè)水位偏離零點(diǎn)的大小。水位顯示:將上一步檢測(cè)結(jié)果用數(shù)碼管顯示出來,顯示值以比實(shí)際水位小的最近點(diǎn)為準(zhǔn),同時(shí)用15個(gè)豎直排列的雙色LED陣列直觀地模擬當(dāng)前水位高度,當(dāng)水位沒有達(dá)到某點(diǎn)時(shí)相應(yīng)的LED顯示紅色、達(dá)到或超過則顯示綠色。當(dāng)水位低于-240mm時(shí)報(bào)警燈顯示綠色,高于240mm是報(bào)警燈顯示紅色,當(dāng)水位恢復(fù)正常時(shí)報(bào)警燈熄滅。2.2 整體架構(gòu)水位監(jiān)測(cè)儀主要由三部分組成:水位檢測(cè)與數(shù)據(jù)采集電路、PIC16F877單片機(jī)以與數(shù)

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

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

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

14、檢測(cè)來實(shí)現(xiàn)數(shù)據(jù)采集。CD4051是一種雙向8通道的多路開關(guān),可以8路選通輸入,1路輸出;也可以1路輸入,8路選通輸出。通過3為數(shù)據(jù)位A,B,C進(jìn)行通道選擇。禁止輸入輸出端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)INHIBITCBA000001000120010300114010050101601

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

16、口是地址擴(kuò)展口,其與一個(gè)非門連接,結(jié)合INH引腳,將2個(gè)8路選通開關(guān)擴(kuò)展為一個(gè)16路選通開關(guān)。通過RD03口進(jìn)行采樣通道地址譯碼,在不同時(shí)刻選通15個(gè)通道中的1個(gè),循環(huán)掃描15個(gè)通道。當(dāng)水位上升到某一對(duì)電極高度時(shí),相應(yīng)通道的采樣電壓將會(huì)較低;若沒有上升到電極高度,那么上拉電阻將會(huì)把采樣值箝位到+5V。通過判斷采樣電壓的高低,就可以判斷選通的通道是否沒于水中,進(jìn)而判斷水位高度,RA0口作為A/D采樣的通道輸入口。POLE014為15對(duì)模擬水位高度的電極。圖3.3 數(shù)據(jù)采集原理圖3.2 數(shù)碼管與LED顯示鍵盤和顯示器是單片機(jī)系統(tǒng)中人機(jī)對(duì)話不可缺少的一部分。在許多智能儀表的設(shè)計(jì)中,多用LED數(shù)碼管來

17、顯示。這是因?yàn)長(zhǎng)ED數(shù)碼管驅(qū)動(dòng)簡(jiǎn)單,成本較低并且能適應(yīng)惡劣的環(huán)境。用于數(shù)碼管顯示驅(qū)動(dòng)的芯片有很多種,常見的有MAX7219、MAX7221、ZLG7290、ICM7218B以與8279等。這些專用芯片使用方便,功能較強(qiáng),但價(jià)格偏高。本設(shè)計(jì)中采用循環(huán)掃描的方式,充分利用單片機(jī)快速的處理能力對(duì)各顯示單元分時(shí)選通,只需普通的串行移位芯片,就可以達(dá)到顯示驅(qū)動(dòng)的目的。3.2.1 相關(guān)芯片的介紹顯示部分用到的芯片包括移位寄存器74LS164、數(shù)據(jù)緩沖器74LS244以與多路開關(guān)CD4051。下面就74LS164和74LS244作簡(jiǎn)單介紹。移位寄存器 74LS164。74LS164引腳定義如圖3.4所示,起

18、真值表如表2所示,其功能是將外部輸入的串行數(shù)據(jù)轉(zhuǎn)化為8位的并行數(shù)據(jù)輸出,+5V供電,串行傳輸?shù)念l率由外部時(shí)鐘控制,其數(shù)據(jù)輸出具有鎖存功能。A,B端為穿行數(shù)據(jù)輸入端,QAQH為并行數(shù)據(jù)輸出端,CLK為外部時(shí)鐘輸入端,CLR為清零端。當(dāng)清除端CLEAR為低電平時(shí),輸出端(QAQH)均為低電平。串行數(shù)據(jù)輸入端(A、B)可控制數(shù)據(jù),當(dāng)A、B任意一個(gè)為低電平,則禁止新數(shù)據(jù)輸入,在時(shí)鐘端(CLOCK)脈沖上升沿作用下QA為低電平。當(dāng)A、B有一個(gè)為高電平則另一個(gè)就允許數(shù)據(jù)輸入,并在CLOCK上升沿作用下決定QA的狀態(tài)。圖3.4 74LS164引腳圖10表2 74LS164的真值表輸入輸出CLEARCLOCK

19、A BQA QB QHLXX XL L LHLX XQA0 QB0 QH0HH HHQAn QGnHL XLQAn QGnHX LL QAn QGn注: QA0、 QB0、QH0為在穩(wěn)態(tài)輸入條件建立之前QA 、QB 和QH相應(yīng)的電平;QAn 、QGn 為在最近的時(shí)鐘轉(zhuǎn)換前QA或QG的電平,表示移1位。數(shù)據(jù)緩沖器74LS244。由于74LS164在高電平輸出時(shí),其輸出最大電流為0.4mA;低電平輸出時(shí),起輸出最大電流為8mA,不足以驅(qū)動(dòng)數(shù)碼管或發(fā)光二極管正常工作,所以在本設(shè)計(jì)中外加數(shù)據(jù)緩沖器以增大驅(qū)動(dòng)能力,使數(shù)碼管和二極管可以正常工作。 74LS244緩沖器常用作三態(tài)緩沖或總線驅(qū)動(dòng),+5V供電,

20、其高電平時(shí)輸出最大電流可達(dá)15mA,低電平輸出時(shí)最大電流可達(dá)24mA,足以驅(qū)動(dòng)數(shù)碼管和LED工作。74LS244共8個(gè)輸入輸出通道,通過門控端1G和2G來選擇其通斷,其引腳圖如圖3.5所示。圖3.5 74LS244部結(jié)構(gòu)與引腳圖從圖中可以看出,當(dāng)引腳1G為低電平時(shí),輸入通道1A11A4與輸出通道1Y11Y4連通;當(dāng)引腳1G為高電平時(shí)則截止。當(dāng)引腳2G為低電平時(shí),輸入通道2A12A4與輸出通道2Y12Y4連通;當(dāng)引腳2G為高電平時(shí),輸入通道2A12A4與輸出通道2Y12Y4截止。3.2.2 顯示部分工作原理首先介紹一下雙色二極管的功能和用法。如圖3.6所示,1個(gè)雙色二極管有3個(gè)引腳,引腳1,2均

21、為信號(hào)“+”端,引腳3為GND端(信號(hào)“-”端)。引腳電平(TTL電平)與LED顯示顏色如表3所示。圖3.6 雙色二極管外觀圖表3 雙色二極管的功能表引腳1引腳2二極管狀態(tài)00熄滅01綠色10紅色11混合顏色數(shù)碼管與LED顯示電路如圖3.7所示,其主要功能流程是:將單片機(jī)輸出的串行數(shù)據(jù)通過74LS164移位寄存器轉(zhuǎn)化并行數(shù)據(jù),經(jīng)74LS244數(shù)據(jù)緩沖器驅(qū)動(dòng)數(shù)碼管與LED顯示。RC5口作為串行數(shù)據(jù)輸出端,與74LS164的數(shù)據(jù)輸入端相連,當(dāng)單片機(jī)輸出的串行數(shù)據(jù)輸入74LS164;RC3口作為串行數(shù)據(jù)的同步時(shí)鐘端,與74LS164的時(shí)鐘同步輸入端相連。兩片移位寄存器74LS164的并行數(shù)據(jù)輸出端則

22、分別與兩片數(shù)據(jù)緩沖器74LS244的輸入端相連,兩片74LS244分別驅(qū)動(dòng)數(shù)碼管和LED的顯示,RD7口作為數(shù)據(jù)緩沖器74LS244的門控信號(hào)輸出端,控制74LS244的通斷。圖3.7 數(shù)碼管與LED顯示電路每4個(gè)雙色二極管和1個(gè)數(shù)碼管一組,二極管的8個(gè)信號(hào)“+”端分別與第一片74LS244的8位數(shù)據(jù)輸出端相連,數(shù)碼管的8為數(shù)據(jù)輸入端分別與第二片74LS244的8為數(shù)據(jù)輸出端相連,每組二極管和數(shù)碼管的GND端都與CD4051的1個(gè)輸入通道相連,CD4051的輸出端與系統(tǒng)的“地”相連。RE0RE1口作為地址譯碼輸出端口,用于多路開關(guān)CD4051的4路通道選擇,每一時(shí)刻只有一組共4個(gè)二極管和一個(gè)數(shù)

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

24、件設(shè)計(jì)本設(shè)計(jì)關(guān)鍵的核心是兩個(gè)不循環(huán)執(zhí)行的中斷程序:TMR0中斷用于驅(qū)動(dòng)數(shù)碼管和LED顯示;TMR1中斷用于采集水位值并且將采集結(jié)果送緩沖寄存器供顯示部分讀取,同時(shí)對(duì)采集結(jié)果進(jìn)行簡(jiǎn)單的分析,判斷其是否超過水位上限和下限,若超過則點(diǎn)亮相應(yīng)的報(bào)警燈。整個(gè)軟件大體可以分為初始化程序、TMR0中斷服務(wù)程序、數(shù)據(jù)轉(zhuǎn)換子程序、TMR1中斷服務(wù)程序4個(gè)部分,以下分別加以描述。4.1 初始化程序初始化程序位于主程序開始部分,主要對(duì)3部分進(jìn)行初始化:I/O端口、TMR1和TMR0。各部分的初始化步驟如下描述。4.1.1 I/O端口方向控制寄存器RA0端口用于將采集到的數(shù)據(jù)輸入,故將A/D端口RA0設(shè)置為輸入方式串

25、行數(shù)據(jù)同步端口RC3,設(shè)置為輸出方式串行數(shù)據(jù)輸出端口RC5,設(shè)置為輸入方式采樣通道地址譯碼端口RD0RD3,設(shè)置為輸出方式顯示部分地址譯碼端口RE0RE1,設(shè)置為輸出方式報(bào)警輸出端口RD4RD5,設(shè)置為輸出4.1.2 TMR1初始化TMR1初始化步驟如下:將第一外設(shè)中斷標(biāo)志寄存器PIR1(地址為0CH)中的TRM1溢出中斷標(biāo)志位TMR1IF(Bit0)清零。將第一外設(shè)中斷屏蔽寄存器PIE1(地址為8CH)中的TMR1溢出中斷屏蔽位TMR1IE(Bit0)置位。通過TMR1中斷控制寄存器T1CON(地址為10H)設(shè)置時(shí)鐘與分頻比等。 即:時(shí)鐘源選擇位TMR1CS(Bit1)清零,選擇部時(shí)鐘源分頻

26、比選擇位T1CKPS0T1CKPS1(Bit54)置位11,選擇分頻比1:8給TMR1計(jì)數(shù)器TMR1H(地址為0FH)、TMR1L(地址為0EH)賦初值將中斷控制寄存器INTCON(地址為0BH)中的全局中斷屏蔽位GIE(Bit7)置位,響應(yīng)所有外圍設(shè)備模塊產(chǎn)生的中斷請(qǐng)求將中斷控制寄存器INTCON(地址為0BH)中的外設(shè)中斷屏蔽位PEIE(Bit6)置位,開放第二級(jí)別的外圍中斷4.1.3 TMR0初始化TMR0初始化步驟如下:通過選項(xiàng)寄存器OPTION_REG(地址為81H)設(shè)置TMR0的分頻比與時(shí)鐘 即:時(shí)鐘選擇位T0CS(Bit5)清零,由部提供的指令周期信號(hào)作為時(shí)鐘源分頻器分配為PSA

27、(Bit3)清零,分頻器分配給TMR0分頻器分頻比選擇位PS2PS0(Bit20)置位111,選擇分頻比1:128將INTCON寄存器(地址為0BH)中的TMR0中斷標(biāo)志位T0IF(Bit2)清零并將中斷屏蔽位T0IE(Bit5)置位將中斷控制寄存器INTCON(地址為0BH)中的全局中斷屏蔽位GIE(Bit7)置位,響應(yīng)所有外圍設(shè)備模塊產(chǎn)生的中斷請(qǐng)求將中斷控制寄存器INTCON(地址為0BH)中的外設(shè)中斷屏蔽位PEIE(Bit6)置位,開放第二級(jí)別的外圍中斷給TMR0計(jì)數(shù)器賦初值4.2定時(shí)/計(jì)數(shù)器定時(shí)/計(jì)數(shù)器其功能都是靠寄存器計(jì)數(shù)值的累積來實(shí)現(xiàn)的,PIC單片機(jī)采用遞增方式,計(jì)數(shù)值累加到上限后

28、會(huì)產(chǎn)生溢出,相應(yīng)的會(huì)在溢出中斷標(biāo)志位上反映出來。計(jì)數(shù)值的累加又是靠時(shí)鐘來觸發(fā)的,它可以是單片機(jī)部時(shí)鐘,也可以來自外部。定時(shí)的長(zhǎng)短以與數(shù)值的上限都是定時(shí)/計(jì)數(shù)器的位寬、分頻器的分頻值有關(guān)。PIC16F87X系列單片機(jī)集成3個(gè)定時(shí)/計(jì)數(shù)器模塊TMR0、TMR1、TMR2。在結(jié)構(gòu)和功能上不盡一樣,其定時(shí)長(zhǎng)短,計(jì)數(shù)上限因此也不一樣,應(yīng)用場(chǎng)合也不同11。TMR0為8位寬,與WDT共用一個(gè)可選的預(yù)分頻器,用于一般的通用目的。TMR1為16位寬,附帶一個(gè)可編程的預(yù)分頻器以與一個(gè)可選的低頻時(shí)基振蕩器,不僅可以用來計(jì)數(shù),還可與CCP模塊一起實(shí)現(xiàn)輸入捕捉與輸出比較功能。TMR2也是一個(gè)8位寬的定時(shí)/計(jì)數(shù)器,附帶一

29、個(gè)可編程的預(yù)分頻器,一個(gè)可編程的后分頻器,一個(gè)周期寄存器和比較器,只能用于定時(shí),不能用于計(jì)時(shí),可與CCP模塊一起實(shí)現(xiàn)PWM功能(即產(chǎn)生脈寬調(diào)制信號(hào))。TMR0的特點(diǎn):8位寬定時(shí)/計(jì)數(shù)器計(jì)數(shù)器TMR0容可讀可寫8位軟件可編程預(yù)分頻器部/外部時(shí)鐘可選,外部時(shí)鐘觸發(fā)邊沿可選溢出中斷功能TMR1的特點(diǎn):16位寬定時(shí)/計(jì)數(shù)器計(jì)數(shù)器TMR1容可讀可寫3位軟件可編程預(yù)分頻器累加計(jì)數(shù)信號(hào)源可選部時(shí)鐘、外部觸發(fā)信號(hào)或自帶時(shí)基振蕩器信號(hào)溢出中斷功能TMR2的的特點(diǎn):8位寬的定時(shí)器計(jì)數(shù)器TMR2容可讀可寫2位軟件可編程與預(yù)分頻器,4位軟件可編程后分頻器累加計(jì)數(shù)信號(hào)源可選部時(shí)鐘信號(hào),因此只能工作在定時(shí)器模式8位周期寄

30、存器溢出次數(shù)經(jīng)過分頻后溢出中斷可以由用戶軟件關(guān)閉退出定時(shí) 本設(shè)計(jì)應(yīng)用到了TRM0和TMR14.2.1 TMR1中斷服務(wù)程序 設(shè)定系統(tǒng)的水位刷新時(shí)間為1S,即單片機(jī)每秒鐘對(duì)采樣通道進(jìn)行一遍A/D轉(zhuǎn)換、軟件上則設(shè)定TMR1定時(shí)器每秒產(chǎn)生一次中斷,執(zhí)行數(shù)據(jù)采樣程序,從最高水位采樣通道向下執(zhí)行,并不斷將每次采樣結(jié)果與系統(tǒng)設(shè)定的門限值比較(采樣結(jié)果如果小于門限值,說明電平低,即電容兩極同時(shí)沒于水中,水位已經(jīng)超過該電極)當(dāng)檢測(cè)到水位超過某一對(duì)電極時(shí),則退出采樣程序。接下來判斷水位是否越限,若是則點(diǎn)亮相應(yīng)的報(bào)警燈,否則使報(bào)警燈熄滅。然后調(diào)用數(shù)據(jù)轉(zhuǎn)換子程序,將水位采樣結(jié)果轉(zhuǎn)化為相應(yīng)數(shù)碼管和LED顯示段碼值存入

31、顯示數(shù)據(jù)緩沖寄存器。由于PIC單片機(jī)的中斷矢量只有一個(gè),而本設(shè)計(jì)中用到兩個(gè)中斷(TMR1和TMR0),故而在中斷服務(wù)程序入口處,需要對(duì)中斷源進(jìn)行判斷,這是通過判斷相應(yīng)的中斷標(biāo)志寄存器來實(shí)現(xiàn)的。TMR1中斷服務(wù)程序流程圖如圖4.1所示。 設(shè)置TMR1定時(shí)器分頻比為1:8,采用部時(shí)鐘源,系統(tǒng)采用2M晶振。那么TMR1的時(shí)鐘脈沖周期為2s,由于分頻比為1:8,則每16s計(jì)數(shù)一次,1s需要計(jì)數(shù)62500次,即從計(jì)時(shí)開始到62500個(gè)計(jì)數(shù)周期后,TMR1寄存器達(dá)到上限65536并溢出,所以TMR1寄存器初始值65536-62500=3036,即0BDCH。下面對(duì)流程圖中的關(guān)鍵部分進(jìn)行簡(jiǎn)單說明:關(guān)于ADC

32、控制寄存器ADCON0的設(shè)置:AD轉(zhuǎn)換時(shí)鐘選擇位Bit76置位01,選擇系統(tǒng)時(shí)鐘,頻率為fosc/8,模擬輸入通道選擇位Bit53置位000,選擇通道0(RA0/AN0)。關(guān)于ADC控制器ADCON1的設(shè)置:A/D轉(zhuǎn)換結(jié)果格式選擇位(Bit7)清零,A/D轉(zhuǎn)換結(jié)果左對(duì)齊,ADRESH有效,ADRESL的低六位為0,A/D端口控制位(Bit30)置位1110,選擇RA0口為模擬輸入口采樣開始部分,要先關(guān)閉A/D轉(zhuǎn)換器(Bit0=0),令其退出工作狀態(tài),等待采樣值穩(wěn)定后在重新開啟A/D轉(zhuǎn)換器(Bit0=1),開始采樣。并通過檢測(cè)A/D轉(zhuǎn)換狀態(tài)位GO/DONE(Bit2)是否為0,確定采樣是否結(jié)束。

33、圖4.1 TMR1中斷服務(wù)程序流程圖4.2.2 TMR0中斷服務(wù)程序TMR0中斷用于數(shù)碼管與LED顯示,每次中斷將兩個(gè)字節(jié)的數(shù)據(jù)串行發(fā)送發(fā)送至以為寄存器,后經(jīng)74LS244驅(qū)動(dòng)一組LED和1個(gè)數(shù)碼管發(fā)光。由于每個(gè)LED或數(shù)碼管兩次被選通的時(shí)間最大不能燒過100ms(利用人的視覺暫留現(xiàn)象,否則就會(huì)出現(xiàn)閃爍),加之TMR1中斷可能占用的時(shí)間,所以每次TMR0中斷溢出時(shí)間不能太長(zhǎng);兩一方面,TMR0中斷溢出時(shí)間又不能太短,必須保證串行發(fā)送正常發(fā)送完畢。綜合兩方面因素,將TMR0溢出時(shí)間設(shè)定為10ms。TMR0中斷服務(wù)程序流程圖如圖4.2所示。設(shè)置TMR0定時(shí)器分頻比為1:128,采用部時(shí)鐘源,系統(tǒng)采

34、用2M晶振。那么TMR0的時(shí)鐘脈沖周期為1s,由于分頻比為1:128,則每256s計(jì)數(shù)一次,10ms需要計(jì)數(shù)39次,即從計(jì)時(shí)開始到39個(gè)計(jì)數(shù)周期后,TMR0寄存器達(dá)到上限256并產(chǎn)生溢出,所以TMR0寄存器初始值256-39=217,即0D9H。圖4.2 TMR0中斷服務(wù)程序流程圖下面對(duì)流程圖中的關(guān)鍵部分進(jìn)行簡(jiǎn)單說明:發(fā)送的兩個(gè)字節(jié),根據(jù)硬件電路原理可知,先發(fā)送的字節(jié)經(jīng)過移位寄存器74LS164與數(shù)據(jù)緩沖器74LS244驅(qū)動(dòng)一組LED;后發(fā)送的字節(jié)經(jīng)過移位寄存器74LS164與數(shù)據(jù)緩沖器74LS244驅(qū)動(dòng)一個(gè)數(shù)碼顯示管。發(fā)送字節(jié)過程中,需清74LS244使能位,暫時(shí)禁止數(shù)據(jù)輸出顯示,待發(fā)送完畢

35、后,置74LS244使能位,允許數(shù)據(jù)輸出顯示。當(dāng)使用SPI來進(jìn)行數(shù)據(jù)發(fā)送時(shí),采用軟件對(duì)標(biāo)志位查詢的方式來完成。關(guān)于同步串口控制寄存器SSPCON的設(shè)置:同步串行口允許位SSPEN(Bit5)置位,允許串口工作;同步串行口工作模式選擇位SSPM30(Bit30)置位0000,選擇SPI主控模式,并且時(shí)鐘頻率為系統(tǒng)時(shí)鐘的1/4。4.3 數(shù)據(jù)轉(zhuǎn)換子程序在進(jìn)行水位檢測(cè)后,會(huì)產(chǎn)生一個(gè)水位的高度值(設(shè)置為HEIGHT),但它并不是一個(gè)真實(shí)的水位值,只是一個(gè)標(biāo)識(shí)水位高度的通道號(hào),其值為015中的某個(gè)數(shù),分別表示沒有水以與15種水位高度共16種情況。故而需要將其轉(zhuǎn)化為L(zhǎng)ED和數(shù)碼管的實(shí)際顯示段碼值。表4列出了

36、高度值HEIGHT、LED段碼值LED1LED4和數(shù)碼管顯示數(shù)據(jù)SEG1SEG4的對(duì)應(yīng)關(guān)系,表5則為數(shù)碼管的七段碼值遇顯示符號(hào)的對(duì)應(yīng)關(guān)系。表4 高度值與顯示段碼對(duì)照表HEIGHTLED1LED2LED3LED4SEG1SEG2SEG3SEG400F0H0F0H0F0H0F0H-10E1H0F0H0F0H0F0H-24020C3H0F0H0F0H0F0H-160387H0F0H0F0H0F0H-12040FH0F0H0F0H0F0H-8050FH0E1H0F0H0F0H-5060FH0C300F0H0F0H-2570FH87H0F0H0F0H-1080FH0FH0F0H0F0H090FH0FH0

37、E1H0F0H10100FH0FH0C3H0F0H25110FH0FH87H0F0H50120FH0FH0FH0F0H80130FH0FH0FH0E1H120140FH0FH0FH0C3H160150FH0FH0FH87H240表5 數(shù)碼管七段碼顯示符號(hào)共陽極七段碼共陰極七段碼顯示符號(hào)共陽極七段碼共陰極七段碼00C0H3FH682H7DH10F9H06H70F8H07H20A4H5BH880H7FH30B0H4FH990H6FH499H66H-0BFH40H592H6DH全滅FFH00H有三種方法對(duì)LED和數(shù)碼管顯示緩沖寄存器寫入數(shù)據(jù):第一種是采用查表的方法,將各個(gè)高度值對(duì)應(yīng)的數(shù)據(jù)預(yù)先存入一塊

38、緩沖區(qū),通過對(duì)指令指針賦值來訪問特定數(shù)據(jù)單位,返回轉(zhuǎn)換后的數(shù)值;第二種是采用逐個(gè)比較的方法,將采樣結(jié)果與115的數(shù)逐個(gè)比較,若相等則向緩沖區(qū)賦相應(yīng)值;第三種方法是根據(jù)表的特征來賦值,很顯然,第二、三種方法比較費(fèi)時(shí)間,第一種方法雖然程序代碼最大,但執(zhí)行起來速度快,本設(shè)計(jì)采用第一種方法,具體可參見查表子程序的程序代碼。結(jié)束語由于許多數(shù)據(jù)采集、顯示的實(shí)時(shí)性要求不是很高,因此單片機(jī)的執(zhí)行速度相對(duì)于這些過程要快得多,若分時(shí)選通各個(gè)采樣或顯示通道,雖然單片機(jī)對(duì)各個(gè)通道的處理是依次進(jìn)行的,但是只要這一過程達(dá)到一定速度,總的看來幾乎同時(shí)執(zhí)行,不斷重復(fù)這一過程,就產(chǎn)生了循環(huán)掃描的思想,它在單片機(jī)系統(tǒng)設(shè)計(jì)中得到了

39、廣泛的應(yīng)用。本設(shè)計(jì)中的水位采樣通道設(shè)計(jì)以與數(shù)碼管、LED顯示都是基于這一思想。主要是通過移位的方法,用74LS164芯片將每個(gè)通道的串行數(shù)據(jù)轉(zhuǎn)化為并行方式,在通過數(shù)據(jù)緩沖器74LS244輸出,用CD4051循環(huán)對(duì)每個(gè)通道選通,從而實(shí)現(xiàn)對(duì)數(shù)碼管的驅(qū)動(dòng)。串行通信上則利用PIC的CCP模塊,采用硬件SPI方式進(jìn)行串行通信。軟件上采用了兩個(gè)中斷程序分別進(jìn)行采樣和顯示。致 本次畢業(yè)設(shè)計(jì)歷時(shí)兩個(gè)多月,從選題、開題答辯到設(shè)計(jì)的完成,設(shè)計(jì)的完稿。其間每一過程都得到指導(dǎo)教師王靈矯老師的悉心指導(dǎo),在此表達(dá)我對(duì)他的深深的敬意和由衷的感! 同時(shí),我要向我的家人表達(dá)我深深的感激!在我的求學(xué)生涯中,他們給了我最無私的關(guān)懷

40、和鼓勵(lì)。如果沒有他們無限的支持和幫助,我也不能在我的學(xué)習(xí)之路上勇往直前。最后,我要感一同學(xué)習(xí)了4年的同學(xué)們和所有關(guān)心我的朋友們,他們給予了我大量的幫助和支持,在我猶豫和困惑的時(shí)候,他們的支持幫我堅(jiān)定了目標(biāo),走出了困境,他們是我一生的財(cái)富。參考文獻(xiàn)1史云.我國(guó)地下水監(jiān)測(cè)儀器的現(xiàn)狀與發(fā)展電子文獻(xiàn):地質(zhì)環(huán)境信息網(wǎng),2005年 2恢先、黃輝先.單片機(jī)原理與應(yīng)用M.:人民郵電,2006年 3羅翼、宏偉.PIC單片機(jī)應(yīng)用系統(tǒng)開發(fā)典型實(shí)例M.:中國(guó)電力出版,2005年 4學(xué)海. PIC單片機(jī)實(shí)用教程-基礎(chǔ)篇M. :航空航天大學(xué)出版設(shè),2007年 5學(xué)海. PIC單片機(jī)實(shí)用教程-提高篇M. :航空航天大學(xué)出版

41、設(shè),2007年. 6學(xué)海.PIC單片機(jī)原理M:航空航天大學(xué),2004年 7樹生.PIC單片機(jī)原理與應(yīng)用M機(jī)械工業(yè),2002年 8圣.PIC系列單片機(jī)的原理與實(shí)踐M:中國(guó)科學(xué)技術(shù)大學(xué),2003 9啟中、榮正等.PIC單片機(jī)原理與應(yīng)用M.:航空航天大學(xué),2003 10閻石.數(shù)字電子技術(shù)基礎(chǔ)M.:高等教育,2005年 11科技. PIC單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航M. :人民郵電,2005年附錄附錄 程序清單與注釋LIST P=16F877INCLUDE P16F877.INCSTATUS EQU 03H;定義狀態(tài)寄存器地址PCL EQU 02H ;定義程序計(jì)數(shù)器低8位指針地址PORTA EQU 05

42、H;定義端口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的方向控制寄存器地址TRISC EQU 87H;定義端口RC的方向控制寄存器地址TRISD EQU 88H;定義端口RD的方向控制寄存器地址TRISE EQU 89H;定義端口RE的方向控制寄存器地址INTCON EQU 0BH;定義中斷控制寄存器地址T1CON EQU 10H ;定義TMR1中斷控制寄存器TMR0 EQU 01H;定義TMR0寄存器地

43、址PIR1 EQU 0CH;定義第一外設(shè)中斷標(biāo)志寄存器地址PIE1 EQU 8CH ;定義第一外設(shè)中斷屏蔽寄存器地址ADRESH EQU 1EH;定義ADC結(jié)果寄存器高字節(jié)地址ADCON0 EQU 1FH ;定義ADC控制寄存器0地址ADCON1 EQU 9FH;定義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 ;定

44、義同步串口狀態(tài)寄存器地址OPTION_REG EQU 81H ;定義選項(xiàng)寄存器;=變量聲明=TEMP EQU 20H ;定義暫存寄存器HEIGHT EQU 22H ;定義采樣結(jié)果寄存器,用以標(biāo)識(shí)水位高度SELECT_COUNT EQU 23H ;定義翻轉(zhuǎn)計(jì)數(shù)器,用以標(biāo)識(shí)選通的顯示通道AD_COUNT EQU 24H ;定義翻轉(zhuǎn)計(jì)數(shù)器,用以標(biāo)識(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 E

45、QU 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é)寄存器初始值 (定時(shí)1秒)TMR1HB EQU 0BH ;定義TMR1高字節(jié)寄存器初始值TMR0B EQU 0D9H ;定義TMR0寄存器初始值(定時(shí)10毫秒)GATE_VALUE EQU 07FH ;定義采樣結(jié)果門檻值,用以區(qū)分水和空氣

46、阻值; *復(fù)位矢量和中斷矢量* ORG 000H ;復(fù)位矢量 NOP GOTO MAIN ORG 004H ;中斷矢量;*中斷服務(wù)程序*BTFSC PIR1,0 ;檢測(cè)是否是TMR1中斷 GOTO TMR1_INT ;是,則轉(zhuǎn)TMR1中斷 BTFSC INTCON,2 ;否,檢測(cè)是否是TMR0中斷 GOTO TMR0_INT ;是,則轉(zhuǎn)TMR0中斷 RETFIE ;否,中斷返回;=TMR1中斷服務(wù)程序=TMR1_INT BCF PIR1,0 ;清TMR1中斷標(biāo)志位 BCF STATUS,5 MOVLW 0FH ;水位檢測(cè)通道為15個(gè) MOVWF AD_COUNT ;通道數(shù)送翻轉(zhuǎn)計(jì)數(shù)器TEST_

47、LOOP DECF AD_COUNT,0 IORLW 0F0H ;屏蔽高4位 ANDWF PORTD,1 ;輸出到CD4051通道譯碼端,以選通某一采樣通道 BSF STATUS,5 MOVLW 0EH MOVWF ADCON1 ;AD采樣結(jié)果左對(duì)齊,選擇RA0口為模擬量輸入口 BCF STATUS,5 MOVLW 41H MOVWF ADCON0 ;選擇系統(tǒng)時(shí)鐘8分頻,通道0,關(guān)閉AD啟動(dòng)位 NOP ;等待采樣值穩(wěn)定 NOP ;等待采樣值穩(wěn)定 NOP ;等待采樣值穩(wěn)定 BSF ADCON0,2 ;啟動(dòng)AD采樣AD_LOOP NOP BTFSC ADCON0,2 ;檢測(cè)采樣是否結(jié)束 GOTO

48、AD_LOOP ;否,繼續(xù)檢測(cè) MOVF ADRESH,0 ;是,讀取采樣結(jié)果高8位 MOVWF TEMP ;采樣結(jié)果送暫存寄存器TEMP MOVF AD_COUNT,0 MOVWF HEIGHT ;將當(dāng)前通道數(shù)送HEIGHT DECFSZ AD_COUNT,1 ;當(dāng)前通道數(shù)減1后是否為0 GOTO TMR1_NEXT1 ;否,將采樣結(jié)果與門限值比較 MOVLW 00H ;是,置水位高度為0 MOVWF HEIGHT GOTO TMR1_NEXT2 ;退出采樣循環(huán)TMR1_NEXT1 MOVF TEMP SUBWF GATE_VALUE,0 ;門限值減去采樣結(jié)果 BTFSC STATUS,0

49、;檢測(cè)是否產(chǎn)生借位 GOTO TEST_LOOP ;否,繼續(xù)進(jìn)行下一個(gè)通道采樣TMR1_NEXT2 BCF PORTD,4 ;是,熄滅下限報(bào)警燈 BCF PORTD,5 ;熄滅上限報(bào)警燈 BCF STATUS,0 ;清借位標(biāo)志位 MOVLW 15H SUBWF HEIGHT ;采樣結(jié)果與上限值比較 BTFSS STATUS,0 ;檢測(cè)借位標(biāo)志位是否為1 GOTO TMR1_NEXT3 ;否,轉(zhuǎn)下限檢測(cè) BSF PORTD,5 ;是,點(diǎn)亮上限報(bào)警燈TMR1_NEXT3 BCF STATUS,2 ;清零標(biāo)志位 MOVLW 00H SUBWF HEIGHT ;采樣結(jié)果與下限值比較 BTFSS STA

50、TUS,2 ;檢測(cè)零標(biāo)志位是否為1 GOTO TMR1_NEXT4 ;否,轉(zhuǎn)采樣結(jié)果轉(zhuǎn)換 BSF PORTD,4 ;是,點(diǎn)亮下限報(bào)警燈TMR1_NEXT4 CALL ADRES_CON ;調(diào)轉(zhuǎn)采樣結(jié)果轉(zhuǎn)換子程序 MOVLW 04H MOVWF SELECT_COUNT ;將顯示通道選擇翻轉(zhuǎn)計(jì)數(shù)器賦初值 MOVLW TMR1LB MOVWF TMR1L ;寫入TMR1寄存器低字節(jié)數(shù) MOVLW TMR1HB MOVWF TMR1H ;寫入TMR1寄存器高字節(jié)數(shù) RETFIE ;中斷返回;=TMR0中斷服務(wù)程序=TMR0_INT BCF INTCON,2 ;清TMR0中斷標(biāo)志位 BCF STATU

51、S,0 DECF SELECT_COUNT,0 MOVWF TEMP ;將翻轉(zhuǎn)計(jì)數(shù)器容減1送TEMP寄存器 RLF TEMP,0 ;TEMP寄存器容乘以2,作為查詢顯示數(shù)據(jù);的地址偏移量 ADDWF PCL,1 ;將地址偏移量與程序計(jì)數(shù)器值疊加 MOVF LED1 GOTO TMR0_NEXT1 MOVF LED2 GOTO TMR0_NEXT1 MOVF LED3 GOTO TMR0_NEXT1 MOVF LED4TMR0_NEXT1 MOVWF TX_LED ;將本次顯示的LED數(shù)據(jù)送LED發(fā)送寄存器 RLF TEMP ;TEMP寄存器容乘以2,作為查詢顯示數(shù)據(jù) ;的地址偏移量 ADDWF

52、 PCL,1 ;將地址偏移量與程序計(jì)數(shù)器值疊加 MOVF SEG1 GOTO TMR0_NEXT2 MOVF SEG2 GOTO TMR0_NEXT2 MOVF SEG3 GOTO TMR0_NEXT2 MOVF SEG4TMR0_NEXT2 MOVWF TX_DATA ;將本次顯示的數(shù)碼管數(shù)據(jù)送數(shù)碼管發(fā)送寄存器 BCF PORTD,7 ;清74LS244使能位,暫時(shí)禁止數(shù)據(jù)輸出顯示 BSF STATUS,5 CLRF SSPSTAT ;SPI方式清SMP位、CKE位和BF位,在脈沖上 ;沿移位輸出數(shù)據(jù)跳 MOVLW 30H MOVWF SSPCON ;允許串口工作,時(shí)鐘頻率為系統(tǒng)時(shí)鐘的1/4

53、 MOVF TX_LED,0 ;將第一個(gè)待發(fā)送的字節(jié)送緩沖寄存器 CALL SPI_TX ;調(diào)發(fā)送完成查詢子程序 MOVF TX_DATA,0 ;將第二個(gè)待發(fā)送的字節(jié)送緩沖寄存器 CALL SPI_TX ;調(diào)發(fā)送完成查詢子程序 DECF SELECT_COUNT,0 ;通道寄存器減1 MOVWF PORTE ;選通待顯示的通道 BSF PORTD,7 ;置74LS244使能位,允許數(shù)據(jù)輸出顯示 DECFSZ SELECT_COUNT,1 ;通道寄存器減1,并檢測(cè)是否為0 GOTO TMR0_NEXT3 ;否,轉(zhuǎn)TMR0_NEXT3 MOVLW 04H ;是,重新對(duì)通道寄存器賦初值 MOVWF

54、SELECT_COUNTTMR0_NEXT3 MOVLW TMR0B MOVWF TMR0 ;TMR0寄存器賦初值 RETFIE ;中斷返回;*主程序*MAIN BSF STATUS,5 MOVLW 01H MOVWF TRISA ;置RA0口為輸入方式 MOVLW 00H MOVWF TRISC ;置RC口為輸出方式 MOVWF TRISD ;置RD口為輸出方式 MOVWF TRISE ;置RE口為輸出方式;=TMR0初始化= MOVLW 07H MOVWF OPTION_REG ;分頻器給TMR0,分頻比1:128,選用系統(tǒng)時(shí)鐘 BCF STATUS,5 MOVLW 0E0H MOVWF

55、INTCON ;開全局中斷,允許響應(yīng)TMR0與第二梯隊(duì)中斷 ;請(qǐng)求(TMR1中斷),TM0中斷標(biāo)志位清零 MOVLW TMR0B MOVWF TMR0 ;TMR0寄存器賦初值;=TMR1初始化= BSF STATUS,5 MOVLW 01H MOVWF PIE1 ;允許TMR1中斷 BCF STATUS,5 MOVLW 00H MOVWF PIR1 ;TMR1中斷標(biāo)志位清零 MOVLW 30H MOVWF T1CON ;分頻比為1:8,選用部時(shí)鐘源 MOVLW TMR1LB MOVWF TMR1L ;TMR1寄存器低字節(jié)賦初值 MOVLW TMR1HB MOVWF TMR1H ;TMR1寄存器

56、高字節(jié)賦初值 BSF T1CON,0 ;啟動(dòng)TMR1定時(shí) MOVLW 04H MOVWF SELECT_COUNT ;顯示通道寄存器賦初值MAIN_LOOP GOTO MAIN_LOOP;*SPI發(fā)送完成查詢子程序*SPI_TX MOVWF SSPBUF BCF STATUS,6SPI_LOOP BSF STATUS,5 BTFSS SSPSTAT,0 ;查詢發(fā)送受否完成 GOTO SPI_LOOP ;否,繼續(xù)查詢 BCF STATUS,5 ;是,選擇BANK0 MOVF SSPBUF ;將緩沖寄存器的數(shù)據(jù)讀出,不管數(shù)據(jù)是否有用 RETURN ;子程序返回;*數(shù)據(jù)轉(zhuǎn)換子程序*ADRES_CON;=LED1賦值= MOVF HEIGHT,0 CALL LED1_CON MOVWF LED1;=LED2賦值= MOVF HEIGHT,0 CALL LED2_CON MOVW

溫馨提示

  • 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. 人人文庫(kù)網(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)論