水位檢測(cè)儀設(shè)計(jì)畢業(yè)設(shè)計(jì)1
《水位檢測(cè)儀設(shè)計(jì)畢業(yè)設(shè)計(jì)1》由會(huì)員分享,可在線閱讀,更多相關(guān)《水位檢測(cè)儀設(shè)計(jì)畢業(yè)設(shè)計(jì)1(34頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、目 錄 摘要 1 1 引言 2 1.1水位檢測(cè)儀器的現(xiàn)狀和發(fā)展前景 2 1.2 本文的結(jié)構(gòu)安排 2 2 水位監(jiān)測(cè)儀的基本原理 3 2.1功能說明 3 2.2整體架構(gòu) 3 3 硬件設(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 顯示部分工作原理 9 4 系統(tǒng)軟件設(shè)計(jì) 12 4.1 初始化程序 12 4.1.1 I/O端口方向控制寄存器 12 4.1.2 TMR1初始化 12
2、 4.1.3 TMR0初始化 13 4.2 定時(shí)/計(jì)數(shù)器 13 4.2.1 TMR1中斷服務(wù)程序 14 4.2.2 TMR0中斷服務(wù)程序 15 4.3 數(shù)據(jù)轉(zhuǎn)換子程序 17 結(jié)束語(yǔ) 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)體
3、系結(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ù)采集裝置,是一個(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 Meter Abstra
4、ct: 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 focuses on the design and implementation of data acquisition system for the water level,and its main funct
5、ion 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 accomplish the acquisition system with simple structure using PIC16F877 single-chip as the core,it can
6、 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 design is a low-power water-level data acquisition device based on single-chip technology,its a practical
7、 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 water level auto-detection. Keywords:PIC Single-chip Computer; Water level detection; LED display
8、 第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ó)外進(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)的
9、最新研究成果,使我國(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ó)內(nèi)消化吸收,建立既適合我國(guó)國(guó)情又盡可能與國(guó)際接軌的監(jiān)測(cè)方法。在地下水監(jiān)測(cè)儀器的研制中,要在多品種和提高技術(shù)水平上下功夫,真正做到能準(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è)并顯示水位的儀
10、器----水位監(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)分析。 第2章 水位監(jiān)測(cè)儀的基本原理 2.1 功能說明 對(duì)偏離零點(diǎn)的水位進(jìn)行檢測(cè),然后將帶符號(hào)的水位置(低于或高于零點(diǎn))用數(shù)碼管顯示出來,并通過雙色發(fā)光二極管LED陣列對(duì)水位高度進(jìn)行模擬顯示。 (1) 水位檢測(cè):在0mm、10mm,2
11、5mm、50mm、80mm、120mm、160mm、240mm共15點(diǎn)的基礎(chǔ)上,檢測(cè)水位偏離零點(diǎn)的大小。 (2) 水位顯示:將上一步檢測(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ù)碼管與LED顯示電路。整體框圖如圖2.1所示。 電源 數(shù)碼管及L
12、ED顯示電路 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ù)這一掃描過程,就可以完成無(wú)間隔數(shù)據(jù)采集和無(wú)閃爍顯示。 水位檢測(cè)與數(shù)據(jù)采集電路部分采用電接點(diǎn)水位檢測(cè)方法,在每一個(gè)預(yù)定水位檢測(cè)
13、點(diǎn)處,將兩個(gè)電極安裝在容器壁,使其一端能夠與沒過該點(diǎn)的水充分接觸,另一端引出到容器外面同檢測(cè)電路相連接,兩個(gè)電極等高度并間隔一定距離。當(dāng)水位沒有達(dá)到該檢定點(diǎn)是,兩個(gè)電極間電阻為無(wú)窮大;而一旦水位上升到該點(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ù)碼管),兩
14、個(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è)電極
15、是否導(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)檢測(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、 16 15 14 13 12 11 10 9 0 1 2 3 4 5 6 7 8 4 6 OUT/IN 7 5 INH VEE VSS IN/OUT IN/OUT 圖3.2 CD4051引腳圖
17、 表1 CD4051真值表 選通通道 輸入狀態(tài) INHIBIT C B A 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 NONE 1 * * * 盡管水位檢測(cè)原理簡(jiǎn)單,但應(yīng)用時(shí)卻不能僅僅用每路的通斷來判斷水位時(shí)否沒過該路的點(diǎn)擊。實(shí)際上水的電阻因水的所含成分不同有很大的差異,例如蒸餾水就不到點(diǎn),就不能用這種方法來檢測(cè)。另一方面,空氣電阻也不是無(wú)窮大的,也跟其成分有關(guān),例如
18、飽和蒸汽的組織大概有1M歐左右。所以,不能通過判斷單片機(jī)的數(shù)據(jù)采集引腳輸入電平高低來判斷水位是否到達(dá)某點(diǎn),否則介于高低電平之間的電平狀態(tài)就無(wú)法做出判斷,而這種情況可能存在。 一個(gè)可靠的方法就是對(duì)輸入引腳的數(shù)據(jù)進(jìn)行采樣,然后將結(jié)果與一個(gè)閥值電壓進(jìn)行比較,從而得出結(jié)論。 根據(jù)這個(gè)原理設(shè)計(jì)的水位檢測(cè)儀數(shù)據(jù)采集部分的電路如圖3.3所示。從圖中可以看出,RD3口是地址擴(kuò)展口,其與一個(gè)非門連接,結(jié)合INH引腳,將2個(gè)8路選通開關(guān)擴(kuò)展為一個(gè)16路選通開關(guān)。通過RD0~3口進(jìn)行采樣通道地址譯碼,在不同時(shí)刻選通15個(gè)通道中的1個(gè),循環(huán)掃描15個(gè)通道。當(dāng)水位上升到某一對(duì)電極高度時(shí),相應(yīng)通道的采樣電壓將會(huì)較低;
19、若沒有上升到電極高度,那么上拉電阻將會(huì)把采樣值箝位到+5V。通過判斷采樣電壓的高低,就可以判斷選通的通道是否沒于水中,進(jìn)而判斷水位高度,RA0口作為A/D采樣的通道輸入口。POLE0~14為15對(duì)模擬水位高度的電極。 圖3.3 數(shù)據(jù)采集原理圖 3.2 數(shù)碼管與LED顯示 鍵盤和顯示器是單片機(jī)系統(tǒng)中人機(jī)對(duì)話不可缺少的一部分。在許多智能儀表的設(shè)計(jì)中,多用LED數(shù)碼管來顯示。這是因?yàn)長(zhǎng)ED數(shù)碼管驅(qū)動(dòng)簡(jiǎn)單,成本較低并且能適應(yīng)惡劣的環(huán)境。用于數(shù)碼管顯示驅(qū)動(dòng)的芯片有很多種,常見的有MAX7219、MAX7221、ZLG7290、ICM7218B以及8279等。這些專用芯片使用方便,功能較
20、強(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)單介紹。 (1) 移位寄存器 74LS164。74LS164引腳定義如圖3.4所示,起真值表如表2所示,其功能是將外部輸入的串行數(shù)據(jù)轉(zhuǎn)化為8位的并行數(shù)據(jù)輸出,+5V供電,串行傳輸?shù)念l率由外部時(shí)鐘控制,其數(shù)據(jù)輸出具有鎖存功能。A,B端為穿行數(shù)據(jù)輸入端,QA~QH為并行數(shù)據(jù)輸出端,C
21、LK為外部時(shí)鐘輸入端,CLR為清零端。當(dāng)清除端CLEAR為低電平時(shí),輸出端(QA~QH)均為低電平。串行數(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的真值表 輸入 輸出 CLEAR CLOCK A B QA QB QH L X X X L L L H L X X QA0 Q
22、B0 QH0 H ↑ H H H QAn QGn H ↑ L X L QAn QGn H ↑ X L L QAn QGn 注: QA0、 QB0、QH0為在穩(wěn)態(tài)輸入條件建立之前QA 、QB 和QH相應(yīng)的電平;QAn 、QGn 為 在最近的時(shí)鐘↑轉(zhuǎn)換前QA或QG的電平,表示移1位。 (2) 數(shù)據(jù)緩沖器74LS244。由于74LS164在高電平輸出時(shí),其輸出最大電流為0.4mA;低電平輸出時(shí),起輸出最大電流為8mA,不足以驅(qū)動(dòng)數(shù)碼管或發(fā)光二極管正常工作,所以在本設(shè)計(jì)中外加數(shù)據(jù)緩沖器以增大驅(qū)動(dòng)能力,使數(shù)碼管和二極管可以正常工作。
23、 74LS244緩沖器常用作三態(tài)緩沖或總線驅(qū)動(dòng),+5V供電,其高電平時(shí)輸出最大電流可達(dá)15mA,低電平輸出時(shí)最大電流可達(dá)24mA,足以驅(qū)動(dòng)數(shù)碼管和LED工作。74LS244共8個(gè)輸入輸出通道,通過門控端1G和2G來選擇其通斷,其引腳圖如圖3.5所示。 圖3.5 74LS244內(nèi)部結(jié)構(gòu)及引腳圖 從圖中可以看出,當(dāng)引腳1G為低電平時(shí),輸入通道1A1~1A4與輸出通道1Y1~1Y4連通;當(dāng)引腳1G為高電平時(shí)則截止。當(dāng)引腳2G為低電平時(shí),輸入通道2A1~2A4與輸出通道2Y1~2Y4連通;當(dāng)引腳2G為高電平時(shí),輸入通道2A1~2A4與輸出通道2Y1~2Y4截止。 3.2.2 顯示部分
24、工作原理 首先介紹一下雙色二極管的功能和用法。如圖3.6所示,1個(gè)雙色二極管有3個(gè)引腳,引腳1,2均為信號(hào)“+”端,引腳3為GND端(信號(hào)“-”端)。引腳電平(TTL電平)與LED顯示顏色如表3所示。 圖3.6 雙色二極管外觀圖 表3 雙色二極管的功能表 引腳1 引腳2 二極管狀態(tài) 0 0 熄滅 0 1 綠色 1 0 紅色 1 1 混合顏色 數(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ù)輸出端,與
25、74LS164的數(shù)據(jù)輸入端相連,當(dāng)單片機(jī)輸出的串行數(shù)據(jù)輸入74LS164;RC3口作為串行數(shù)據(jù)的同步時(shí)鐘端,與74LS164的時(shí)鐘同步輸入端相連。兩片移位寄存器74LS164的并行數(shù)據(jù)輸出端則分別與兩片數(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ù)輸出端相連,每組二極
26、管和數(shù)碼管的GND端都與CD4051的1個(gè)輸入通道相連,CD4051的輸出端與系統(tǒng)的“地”相連。RE0~RE1口作為地址譯碼輸出端口,用于多路開關(guān)CD4051的4路通道選擇,每一時(shí)刻只有一組共4個(gè)二極管和一個(gè)數(shù)碼管被選通,其GND端同系統(tǒng)的“地”構(gòu)成通路,其他的二極管與數(shù)碼管則不能構(gòu)成通路。 每向74LS164傳送完2個(gè)字節(jié)共16位數(shù)據(jù),通過RD7口使能74LS244,將數(shù)據(jù)送到二極管和數(shù)碼管的輸入口,然后通過RE0~RE1口打開一條通道,則被選通的數(shù)碼管和二極管就會(huì)按照接收的數(shù)據(jù)進(jìn)行相應(yīng)的顯示。不斷的發(fā)送新數(shù)據(jù)并利用CD4051循環(huán)的掃描4個(gè)通道,則所有的二極管和數(shù)碼管就會(huì)持續(xù)的發(fā)光顯示。
27、利用人的視覺暫留現(xiàn)象,每個(gè)LED或數(shù)碼管兩次被選通的時(shí)間間隔不能大于100ms。 另外由一個(gè)雙色二極管作為報(bào)警燈,RD5口與二極管引腳1相連,作為上限報(bào)警燈;RD4口與二極管的引腳2相連,作為上限報(bào)警燈。 第4章 系統(tǒng)軟件設(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)的
28、報(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端口方向控制寄存器 u RA0端口用于將采集到的數(shù)據(jù)輸入,故將A/D端口RA0設(shè)置為輸入方式 u 串行數(shù)據(jù)同步端口RC3,設(shè)置為輸出方式 u 串行數(shù)據(jù)輸出端口RC5,設(shè)置為輸入方式 u 采樣通道地址譯碼端口RD0~RD3,設(shè)置為輸出方式 u 顯示部分地址譯碼端口RE0~RE1,設(shè)置為輸出方式
29、u 報(bào)警輸出端口RD4~RD5,設(shè)置為輸出 4.1.2 TMR1初始化 TMR1初始化步驟如下: l 將第一外設(shè)中斷標(biāo)志寄存器PIR1(地址為0CH)中的TRM1溢出中斷標(biāo)志位TMR1IF(Bit0)清零。 l 將第一外設(shè)中斷屏蔽寄存器PIE1(地址為8CH)中的TMR1溢出中斷屏蔽位TMR1IE(Bit0)置位。 l 通過TMR1中斷控制寄存器T1CON(地址為10H)設(shè)置時(shí)鐘及分頻比等。 即:①時(shí)鐘源選擇位TMR1CS(Bit1)清零,選擇內(nèi)部時(shí)鐘源 ②分頻比選擇位T1CKPS0~T1CKPS1(Bit5~4)置位11,選擇分頻比1:8
30、 l 給TMR1計(jì)數(shù)器TMR1H(地址為0FH)、TMR1L(地址為0EH)賦初值 l 將中斷控制寄存器INTCON(地址為0BH)中的全局中斷屏蔽位GIE(Bit7)置位,響應(yīng)所有外圍設(shè)備模塊產(chǎn)生的中斷請(qǐng)求 l 將中斷控制寄存器INTCON(地址為0BH)中的外設(shè)中斷屏蔽位PEIE(Bit6)置位,開放第二級(jí)別的外圍中斷 4.1.3 TMR0初始化 TMR0初始化步驟如下: n 通過選項(xiàng)寄存器OPTION_REG(地址為81H)設(shè)置TMR0的分頻比及時(shí)鐘 即:①時(shí)鐘選擇位T0CS(Bit5)清零,由內(nèi)部提供的指令周期信號(hào)作為時(shí)鐘源
31、②分頻器分配為PSA(Bit3)清零,分頻器分配給TMR0 ③分頻器分頻比選擇位PS2~PS0(Bit2~0)置位111,選擇分頻比1:128 n 將INTCON寄存器(地址為0BH)中的TMR0中斷標(biāo)志位T0IF(Bit2)清零并將中斷屏蔽位T0IE(Bit5)置位 n 將中斷控制寄存器INTCON(地址為0BH)中的全局中斷屏蔽位GIE(Bit7)置位,響應(yīng)所有外圍設(shè)備模塊產(chǎn)生的中斷請(qǐng)求 n 將中斷控制寄存器INTCON(地址為0BH)中的外設(shè)中斷屏蔽位PEIE(Bit6)置位,開放第二級(jí)別的外圍中斷 n 給TMR0計(jì)數(shù)器賦初值 4.2定時(shí)/計(jì)數(shù)器 定時(shí)
32、/計(jì)數(shù)器其功能都是靠寄存器計(jì)數(shù)值的累積來實(shí)現(xiàn)的,PIC單片機(jī)采用遞增方式,計(jì)數(shù)值累加到上限后會(huì)產(chǎn)生溢出,相應(yīng)的會(huì)在溢出中斷標(biāo)志位上反映出來。計(jì)數(shù)值的累加又是靠時(shí)鐘來觸發(fā)的,它可以是單片機(jī)內(nèi)部時(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í)基振蕩器,不僅可以
33、用來計(jì)數(shù),還可與CCP模塊一起實(shí)現(xiàn)輸入捕捉與輸出比較功能。TMR2也是一個(gè)8位寬的定時(shí)/計(jì)數(shù)器,附帶一個(gè)可編程的預(yù)分頻器,一個(gè)可編程的后分頻器,一個(gè)周期寄存器和比較器,只能用于定時(shí),不能用于計(jì)時(shí),可與CCP模塊一起實(shí)現(xiàn)PWM功能(即產(chǎn)生脈寬調(diào)制信號(hào))。 TMR0的特點(diǎn): u 8位寬定時(shí)/計(jì)數(shù)器 u 計(jì)數(shù)器TMR0內(nèi)容可讀可寫 u 8位軟件可編程預(yù)分頻器 u 內(nèi)部/外部時(shí)鐘可選,外部時(shí)鐘觸發(fā)邊沿可選 u 溢出中斷功能 TMR1的特點(diǎn): u 16位寬定時(shí)/計(jì)數(shù)器 u 計(jì)數(shù)器TMR1內(nèi)容可讀可寫 u 3位軟件可編程預(yù)分頻器 u 累加計(jì)數(shù)信號(hào)源可選內(nèi)部時(shí)鐘、外部觸發(fā)信號(hào)或自帶時(shí)基
34、振蕩器信號(hào) u 溢出中斷功能 TMR2的的特點(diǎn): u 8位寬的定時(shí)器 u 計(jì)數(shù)器TMR2內(nèi)容可讀可寫 u 2位軟件可編程與預(yù)分頻器,4位軟件可編程后分頻器 u 累加計(jì)數(shù)信號(hào)源可選內(nèi)部時(shí)鐘信號(hào),因此只能工作在定時(shí)器模式 u 8位周期寄存器 u 溢出次數(shù)經(jīng)過分頻后溢出中斷 u 可以由用戶軟件關(guān)閉退出定時(shí) 本設(shè)計(jì)應(yīng)用到了TRM0和TMR1 4.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é)果與系
35、統(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顯示段碼值存入顯示數(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,采用內(nèi)部時(shí)鐘源,系統(tǒng)采用2M晶振
36、。那么TMR1的時(shí)鐘脈沖周期為2μs,由于分頻比為1:8,則每16μs計(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)單說明: (1) 關(guān)于ADC控制寄存器ADCON0的設(shè)置:AD轉(zhuǎn)換時(shí)鐘選擇位Bit7~6置位01,選擇系統(tǒng)時(shí)鐘,頻率為fosc/8,模擬輸入通道選擇位Bit5~3置位000,選擇通道0(RA0/AN0)。 (2) 關(guān)于ADC控制器ADCON1的設(shè)置:A/D轉(zhuǎn)換結(jié)果格式選擇位(Bit7)清零,A/D轉(zhuǎn)換結(jié)果
37、左對(duì)齊,ADRESH有效,ADRESL的低六位為0,A/D端口控制位(Bit3~0)置位1110,選擇RA0口為模擬輸入口 (3) 采樣開始部分,要先關(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é)束。 圖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ù)
38、碼管兩次被選通的時(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,采用內(nèi)部時(shí)鐘源,系統(tǒng)采用2M晶振。那么TMR0的時(shí)鐘脈沖周期為1μs,由于分頻比為1:128,則每256μs計(jì)數(shù)一次,10ms需要計(jì)數(shù)39次,即從計(jì)時(shí)開始到39個(gè)計(jì)數(shù)周期后,TMR0寄存器達(dá)到上限256并產(chǎn)生溢出,所以TMR0寄存器初始值
39、256-39=217,即0D9H。 圖4.2 TMR0中斷服務(wù)程序流程圖 下面對(duì)流程圖中的關(guān)鍵部分進(jìn)行簡(jiǎn)單說明: (1) 發(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ù)碼顯示管。 (2) 發(fā)送字節(jié)過程中,需清74LS244使能位,暫時(shí)禁止數(shù)據(jù)輸出顯示,待發(fā)送完畢后,置74LS244使能位,允許數(shù)據(jù)輸出顯示。 (3) 當(dāng)使用SPI來進(jìn)行數(shù)據(jù)發(fā)送時(shí),采用軟件對(duì)標(biāo)志位查詢的方式來完成。 (4) 關(guān)于同步串口控制寄存器SSPCON的設(shè)置
40、:同步串行口允許位SSPEN(Bit5)置位,允許串口工作;同步串行口工作模式選擇位SSPM3~0(Bit3~0)置位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),其值為0~15中的某個(gè)數(shù),分別表示沒有水以及15種水位高度共16種情況。故而需要將其轉(zhuǎn)化為L(zhǎng)ED和數(shù)碼管的實(shí)際顯示段碼值。表4列出了高度值HEIGHT、LED段碼值LED1~LED4和數(shù)碼管顯示數(shù)據(jù)SEG1~SEG4的對(duì)應(yīng)關(guān)系,表5則為數(shù)碼管的七段碼值遇顯示符號(hào)的對(duì)
41、應(yīng)關(guān)系。 表4 高度值與顯示段碼對(duì)照表 HEIGHT LED1 LED2 LED3 LED4 SEG1 SEG2 SEG3 SEG4 0 0F0H 0F0H 0F0H 0F0H - - - - 1 0E1H 0F0H 0F0H 0F0H - 2 4 0 2 0C3H 0F0H 0F0H 0F0H - 1 6 0 3 87H 0F0H 0F0H 0F0H - 1 2 0 4 0FH 0F0H 0F0H 0F0H - 8 0 5 0FH 0E1H 0F0H 0F0H -
42、 5 0 6 0FH 0C30 0F0H 0F0H - 2 5 7 0FH 87H 0F0H 0F0H - 1 0 8 0FH 0FH 0F0H 0F0H 0 9 0FH 0FH 0E1H 0F0H 1 0 10 0FH 0FH 0C3H 0F0H 2 5 11 0FH 0FH 87H 0F0H 5 0 12 0FH 0FH 0FH 0F0H 8 0 13 0FH 0FH 0FH 0E1H 1 2 0 14 0FH
43、 0FH 0FH 0C3H 1 6 0 15 0FH 0FH 0FH 87H 2 4 0 表5 數(shù)碼管七段碼 顯示符號(hào) 共陽(yáng)極七段碼 共陰極七段碼 顯示符號(hào) 共陽(yáng)極七段碼 共陰極七段碼 0 0C0H 3FH 6 82H 7DH 1 0F9H 06H 7 0F8H 07H 2 0A4H 5BH 8 80H 7FH 3 0B0H 4FH 9 90H 6FH 4 99H 66H - 0BFH 40H 5 92H 6DH 全滅 FFH 00H 有三種方法對(duì)LED和
44、數(shù)碼管顯示緩沖寄存器寫入數(shù)據(jù):第一種是采用查表的方法,將各個(gè)高度值對(duì)應(yīng)的數(shù)據(jù)預(yù)先存入一塊緩沖區(qū)內(nèi),通過對(duì)指令指針賦值來訪問特定數(shù)據(jù)單位,返回轉(zhuǎn)換后的數(shù)值;第二種是采用逐個(gè)比較的方法,將采樣結(jié)果與1~15的數(shù)逐個(gè)比較,若相等則向緩沖區(qū)賦相應(yīng)值;第三種方法是根據(jù)表的特征來賦值,很顯然,第二、三種方法比較費(fèi)時(shí)間,第一種方法雖然程序代碼最大,但執(zhí)行起來速度快,本設(shè)計(jì)采用第一種方法,具體可參見查表子程序的程序代碼。 結(jié)束語(yǔ) 由于許多數(shù)據(jù)采集、顯示的實(shí)時(shí)性要求不是很高,因此單片機(jī)的執(zhí)行速度相對(duì)于這些過程要快得多,若分時(shí)選通各個(gè)采樣
45、或顯示通道,雖然單片機(jī)對(duì)各個(gè)通道的處理是依次進(jìn)行的,但是只要這一過程達(dá)到一定速度,總的看來幾乎同時(shí)執(zhí)行,不斷重復(fù)這一過程,就產(chǎn)生了循環(huán)掃描的思想,它在單片機(jī)系統(tǒng)設(shè)計(jì)中得到了廣泛的應(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)行采樣和顯示。
46、 致謝 本次畢業(yè)設(shè)計(jì)歷時(shí)兩個(gè)多月,從選題、開題答辯到設(shè)計(jì)的完成,設(shè)計(jì)的完稿。其間每一過程都得到指導(dǎo)教師王靈矯老師的悉心指導(dǎo),在此表達(dá)我對(duì)他的深深的敬意和由衷的感謝! 同時(shí),我要向我的家人表達(dá)我深深的感激!在我的求學(xué)生涯中,他們給了我最無(wú)私的關(guān)懷和鼓勵(lì)。如果沒有他們無(wú)限的支持和幫助,我也不能在我的學(xué)習(xí)之路上勇往直前。 最后,我要感謝一同學(xué)習(xí)了4年的同學(xué)們和所有關(guān)心我的朋友們,他們給予了我大量的幫助和支持,在我猶豫和困惑的時(shí)候,他們的支持幫我堅(jiān)定了目標(biāo),走出了困境,他們是我一生的財(cái)富。
47、 參考文獻(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
48、]. 北京:北京航空航天大學(xué)出版設(shè),2007年 [5]李學(xué)海. PIC單片機(jī)實(shí)用教程-提高篇[M]. 北京:北京航空航天大學(xué)出版設(shè),2007年. [6]李學(xué)海.PIC單片機(jī)原理[M]北京:北京航空航天大學(xué)出版社,2004年 [7]彭樹生.PIC單片機(jī)原理及應(yīng)用[M]機(jī)械工業(yè)出版社,200
49、2年 [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=16F87
50、7 INCLUDE P16F877.INC STATUS EQU 03H ;定義狀態(tài)寄存器地址 PCL EQU 02H ;定義程序計(jì)數(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
51、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寄存器地址 PIR1 EQU
52、 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
53、 EQU 0FH ;定義TMR1高字節(jié)地址 SSPBUF EQU 13H ;定義SPI收發(fā)緩沖寄存器地址 SSPCON EQU 14H ;定義同步串口控制寄存器地址 SSPSTAT EQU 94H ;定義同步串口狀態(tài)寄存器地址 OPTION_REG EQU 81H ;定義選項(xiàng)寄存器 ;=====================變量聲明=========================== TEMP EQU 20H
54、 ;定義暫存寄存器 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
55、29H ;發(fā)光二極管顯示數(shù)據(jù)寄存器1 LED2 EQU 30H ;發(fā)光二極管顯示數(shù)據(jù)寄存器2 LED3 EQU 31H ;發(fā)光二極管顯示數(shù)據(jù)寄存器3 LED4 EQU 32H ;發(fā)光二極管顯示數(shù)據(jù)寄存器4 SEG1 EQU 33H ;數(shù)碼管顯示數(shù)據(jù)寄存器1 SEG2 EQU 34H ;數(shù)碼管顯示數(shù)據(jù)寄存器2 SEG3 EQU 35H
56、 ;數(shù)碼管顯示數(shù)據(jù)寄存器3 SEG4 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
57、 ;定義采樣結(jié)果門檻值,用以區(qū)分水和空氣阻值 ; ***************復(fù)位矢量和中斷矢量***************** ORG 000H ;復(fù)位矢量 NOP GOTO MAIN ORG 004H ;中斷矢量 ;****************中斷服務(wù)程序********************* BTFSC PIR1,0 ;檢測(cè)是否是TMR1中斷 GOTO TMR1_INT ;
58、是,則轉(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
59、0FH ;水位檢測(cè)通道為15個(gè) MOVWF AD_COUNT ;通道數(shù)送翻轉(zhuǎn)計(jì)數(shù)器 TEST_LOOP DECF AD_COUNT,0 IORLW 0F0H ;屏蔽高4位 ANDWF PORTD,1 ;輸出到CD4051通道譯碼端,以選通某一采樣通道 BSF STATUS,5 MOVLW 0EH MOVWF ADCON1
60、 ;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
61、 ADCON0,2 ;啟動(dòng)AD采樣 AD_LOOP NOP BTFSC ADCON0,2 ;檢測(cè)采樣是否結(jié)束 GOTO AD_LOOP ;否,繼續(xù)檢測(cè) MOVF ADRESH,0 ;是,讀取采樣結(jié)果高8位 MOVWF TEMP ;采樣結(jié)果送暫存寄存器TEMP MOVF AD_COUNT,0 MOVWF
62、 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
63、 SUBWF GATE_VALUE,0 ;門限值減去采樣結(jié)果 BTFSC STATUS,0 ;檢測(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)志位
64、 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
65、 SUBWF HEIGHT ;采樣結(jié)果與下限值比較 BTFSS STATUS,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 MO
66、VWF 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 STATUS,0 DECF SELECT_COUNT,0 MOVWF TEMP ;將翻轉(zhuǎn)計(jì)數(shù)器內(nèi)容減1送TEMP寄存器
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點(diǎn)美食推薦
- XX國(guó)有企業(yè)黨委書記個(gè)人述責(zé)述廉報(bào)告及2025年重點(diǎn)工作計(jì)劃
- 世界濕地日濕地的含義及價(jià)值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)人到場(chǎng)心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點(diǎn)節(jié)后常見的八大危險(xiǎn)
- 廈門城市旅游介紹廈門景點(diǎn)介紹廈門美食展示
- 節(jié)后開工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓(xùn)
- 深圳城市旅游介紹景點(diǎn)推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)勿忘安全本心人人講安全個(gè)個(gè)會(huì)應(yīng)急
- 預(yù)防性維修管理
- 常見閥門類型及特點(diǎn)
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案