水位檢測(cè)儀設(shè)計(jì)畢業(yè)設(shè)計(jì)
《水位檢測(cè)儀設(shè)計(jì)畢業(yè)設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《水位檢測(cè)儀設(shè)計(jì)畢業(yè)設(shè)計(jì)(29頁(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é)束語 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顯示 第1章 引言 1.1 水位檢測(cè)儀器的現(xiàn)狀和發(fā)展前景
4、隨著科學(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)的最新研究成果,使我國(guó)儀器研制和在用儀器改造的升級(jí),邁上了一個(gè)新的臺(tái)階,而就功能設(shè)
5、置與軟件編輯來說,更適合我國(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è)并顯示水位的儀器----水位監(jiān)測(cè)儀 1.2 本文的結(jié)構(gòu)安排 本文主要分三個(gè)章節(jié)介紹水位監(jiān)測(cè)
6、儀的開發(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ù)碼管顯示出來,并通過雙色發(fā)光二極管LED陣列對(duì)水位高度進(jìn)行模擬顯示。 (1) 水位檢測(cè):在0mm、10mm,20mm、30mm共點(diǎn)的基礎(chǔ)上,檢測(cè)水位偏離零點(diǎn)的大小。 (2) 水位顯示:將上一步檢測(cè)結(jié)果
7、用數(shù)碼管顯示出來,顯示值以比實(shí)際水位小的最近點(diǎn)為準(zhǔn),同時(shí)用7個(gè)豎直排列的雙色LED陣列直觀地模擬當(dāng)前水位高度,當(dāng)水位沒有達(dá)到某點(diǎn)時(shí)相應(yīng)的LED顯示紅色、達(dá)到或超過則顯示綠色。當(dāng)水位低于-30mm時(shí)報(bào)警燈顯示綠色,高于30mm是報(bào)警燈顯示紅色,當(dāng)水位恢復(fù)正常時(shí)報(bào)警燈熄滅。 2.2 整體架構(gòu) 水位監(jiān)測(cè)儀主要由三部分組成:水位檢測(cè)與數(shù)據(jù)采集電路、PIC16F877單片機(jī)以及數(shù)碼管與LED顯示電路。整體框圖如圖xa2.1所示。 電源 數(shù)碼管及LED顯示電路 PIC16F877 水位數(shù)據(jù)采集電路 圖2.1 水位監(jiān)測(cè)儀整體構(gòu)架框圖 水位數(shù)據(jù)采集電路將采集到的數(shù)據(jù)通過采樣
8、通道輸入口傳輸給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è)方法,在每一個(gè)預(yù)定水位檢測(cè)點(diǎn)處,將兩個(gè)電極安裝在容器壁,使其一端能夠與沒過該點(diǎn)的水充分接觸,另一端引出到容器外面同檢測(cè)電路相連接,兩個(gè)電極等高度并間隔一定距離。當(dāng)水位沒有
9、達(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ù)碼管),兩個(gè)8位的移位寄存器74LS164級(jí)聯(lián),將單片機(jī)送出的2個(gè)字節(jié)串行數(shù)據(jù)轉(zhuǎn)化為16位并行數(shù)據(jù),分別送選通的LED和數(shù)碼管。在不同時(shí)刻,系統(tǒng)對(duì)4組LE
10、D和數(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)檢測(cè)來實(shí)現(xiàn)數(shù)據(jù)采集。 CD4051是一種雙向8通道的多路開關(guān),可以8路選通輸入,
11、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 9 0
12、 1 2 3 4 5 6 7 8 4 6 OUT/IN 7 5 INH VEE VSS IN/OUT IN/OUT 圖3.2 CD4051引腳圖 表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
13、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è)。另一方面,空氣電阻也不是無窮大的,也跟其成分有關(guān),例如飽和蒸汽的組織大概有1M歐左右。所以,不能通過判斷單片機(jī)的數(shù)據(jù)采集引腳輸入電平高低來判斷水位是否到達(dá)某點(diǎn),否則介于高低電平之間的電平狀態(tài)就無法做出判斷,而這種情況可能存在。 一個(gè)可靠的方法就是對(duì)輸入引腳的數(shù)據(jù)進(jìn)
14、行采樣,然后將結(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ì)較低;若沒有上升到電極高度,那么上拉電阻將會(huì)把采樣值箝位到+5V。通過判斷采樣電壓的高低,就可以判斷選通的通道是否沒于水中,進(jìn)而判斷水位高度,RA0口作為A/D采樣的通道輸入口。POLE0~14為15對(duì)模擬水位高度的電
15、極。 圖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等。這些專用芯片使用方便,功能較強(qiáng),但價(jià)格偏高。本設(shè)計(jì)中采用循環(huán)掃描的方式,充分利用單片機(jī)快速的處理能力對(duì)各顯示單元分時(shí)選通,只需普通的串行移位芯片,就可以達(dá)到顯示驅(qū)動(dòng)的目的。 3.2.1 相關(guān)芯片的介紹 顯示部分用到的芯片包括移位寄存器
16、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ù)輸出端,CLK為外部時(shí)鐘輸入端,CLR為清零端。當(dāng)清除端CLEAR為低電平時(shí),輸出端(QA~QH)均為低電平。串行數(shù)據(jù)輸入端(A、B)可控制數(shù)據(jù),當(dāng)A、B任意一個(gè)為低電平,則禁止新數(shù)據(jù)輸入,在時(shí)鐘端(CLOCK)脈沖上升沿
17、作用下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 QB0 QH0 H ↑ H H H QAn QGn H ↑ L X L QAn QGn H ↑ X L L QAn QGn 注: QA0、 QB0、
18、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ù)碼管和二極管可以正常工作。 74LS244緩沖器常用作三態(tài)緩沖或總線驅(qū)動(dòng),+5V供電,其高電平時(shí)輸出最大電流可達(dá)15mA,低電平輸出時(shí)最大電流可達(dá)24mA,足以驅(qū)動(dòng)數(shù)碼管和LED工作。74LS244共8個(gè)輸入輸出通道,通過門控端1G
19、和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 顯示部分工作原理 首先介紹一下雙色二極管的功能和用法。如圖3.6所示,1個(gè)雙色二極管有3個(gè)引腳,引腳1,2均為信號(hào)“+”端,引腳3為GND端(信號(hào)“-”端)。引腳電平(TTL電平)與LED顯示顏色如表3所示。 圖
20、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ù)輸出端,與74LS164的數(shù)據(jù)輸入端相連,當(dāng)單片機(jī)輸出的串行數(shù)據(jù)輸入74LS164;RC3口作為串行數(shù)據(jù)的同步時(shí)鐘端,與74LS164的時(shí)鐘同步輸入端相連。兩片移位寄存器74LS164的并行數(shù)據(jù)輸出端則分別與兩片數(shù)據(jù)緩沖器
21、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)的“地”相連。RE0~RE1口作為地址譯碼輸出端口,用于多路開關(guān)CD4051的4路通道選擇,每一時(shí)刻只有一組共4個(gè)二極管和一個(gè)數(shù)碼
22、管被選通,其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ā)光顯示。利用人的視覺暫留現(xiàn)象,每個(gè)LED或數(shù)碼管兩次被選通的時(shí)間間隔不能大于100ms。 另外由一個(gè)雙色二極管作為報(bào)警燈,RD5口與二極管引腳1相連,作為上限報(bào)警燈;RD4口與二極管的引腳2相連,作為上限報(bào)警燈。
23、 第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)的報(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端
24、口方向控制寄存器 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è)置為輸出方式 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溢出中斷屏蔽位
25、TMR1IE(Bit0)置位。 l 通過TMR1中斷控制寄存器T1CON(地址為10H)設(shè)置時(shí)鐘及分頻比等。 即:①時(shí)鐘源選擇位TMR1CS(Bit1)清零,選擇內(nèi)部時(shí)鐘源 ②分頻比選擇位T1CKPS0~T1CKPS1(Bit5~4)置位11,選擇分頻比1:8 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(Bit
26、6)置位,開放第二級(jí)別的外圍中斷 4.1.3 TMR0初始化 TMR0初始化步驟如下: n 通過選項(xiàng)寄存器OPTION_REG(地址為81H)設(shè)置TMR0的分頻比及時(shí)鐘 即:①時(shí)鐘選擇位T0CS(Bit5)清零,由內(nèi)部提供的指令周期信號(hào)作為時(shí)鐘源 ②分頻器分配為PSA(Bit3)清零,分頻器分配給TMR0 ③分頻器分頻比選擇位PS2~PS0(Bit2~0)置位111,選擇分頻比1:128 n 將INTCON寄存器(地址為0BH)中的TMR0中斷標(biāo)志位T0IF(Bit2)清零并將中斷屏蔽位T0IE(Bit5)置位
27、 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í)/計(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)。PIC16F87
28、X系列單片機(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ù)器,附帶一個(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ù)
29、器 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í)基振蕩器信號(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 可以
30、由用戶軟件關(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é)果與系統(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ù)
31、緩沖寄存器。由于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晶振。那么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)單說明
32、: (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é)果左對(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)位
33、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ù)碼管兩次被選通的時(shí)間最大不能燒過100ms(利用人的視覺暫留現(xiàn)象,否則就會(huì)出現(xiàn)閃爍),加之TMR1中斷可能占用的時(shí)間,所以每次TMR0中斷溢出時(shí)間不能太長(zhǎng);兩一方面,TMR0中斷溢出時(shí)間又不能太短,必須保證串行發(fā)送正常發(fā)送完畢。綜合兩方面因素,將TMR0溢出時(shí)間設(shè)定為10ms。TMR0中斷服務(wù)程
34、序流程圖如圖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寄存器初始值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及
35、數(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è)置:同步串行口允許位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í)的
36、水位值,只是一個(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ì)應(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 -
37、 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 - 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
38、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 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
39、 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和數(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ù)表的特征來賦值,很顯然,第二、三種方法
40、比較費(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ì)中得到了廣泛的應(yīng)用。 本設(shè)計(jì)中的水位采樣通道設(shè)計(jì)以及數(shù)碼管、LED顯示都是基于這一思想。主要是通過移位的方法,用74LS164芯片將每個(gè)通
41、道的串行數(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)懷和鼓勵(lì)。如果沒有他們無限的支持和幫助,我也
42、不能在我的學(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年
43、 [4]李學(xué)海. PIC單片機(jī)實(shí)用教程-基礎(chǔ)篇[M]. 北京:北京航空航天大學(xué)出版設(shè),2007年 [5]李學(xué)海. PIC單片機(jī)實(shí)用教程-提高篇[M]. 北京:北京航空航天大學(xué)出版設(shè),2007年.
44、 [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].
45、 北京:人民郵電出版社,2005年 附錄 附錄 程序清單及注釋 LIST P=16F877 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 0
46、8H ;定義端口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 1
47、0H ;定義TMR1中斷控制寄存器 TMR0 EQU 01H ;定義TMR0寄存器地址 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
48、 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 ;定義選項(xiàng)寄存器
49、 ;=====================變量聲明=========================== 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
50、數(shù)據(jù)串行發(fā)送暫存寄存器 TX_DATA EQU 26H ;數(shù)碼管數(shù)據(jù)串行發(fā)送暫存寄存器 LED1 EQU 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ù)
51、寄存器1 SEG2 EQU 34H ;數(shù)碼管顯示數(shù)據(jù)寄存器2 SEG3 EQU 35H ;數(shù)碼管顯示數(shù)據(jù)寄存器3 SEG4 EQU 36H ;數(shù)碼管顯示數(shù)據(jù)寄存器4 ;====================常量聲明========================= TMR1LB EQU 0DCH ;定義TMR1低字節(jié)寄存器初始值 (定時(shí)1秒) TMR1HB EQU 0BH ;定義TMR1高字節(jié)寄存器初始值 TM
52、R0B EQU 0D9H ;定義TMR0寄存器初始值(定時(shí)10毫秒) GATE_VALUE EQU 07FH ;定義采樣結(jié)果門檻值,用以區(qū)分水和空氣阻值 ; ***************復(fù)位矢量和中斷矢量***************** ORG 000H ;復(fù)位矢量 NOP GOTO MAIN ORG 004H ;中斷矢量 ;****************中斷服務(wù)程序***************
53、****** 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
54、PIR1,0 ;清TMR1中斷標(biāo)志位 BCF STATUS,5 MOVLW 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通道譯碼端,以選通某一采樣通道
55、 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
56、 ;等待采樣值穩(wěn)定 NOP ;等待采樣值穩(wěn)定 BSF 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
57、 ;采樣結(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
58、 GOTO TMR1_NEXT2 ;退出采樣循環(huán) TMR1_NEXT1 MOVF TEMP 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
59、 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)警燈 T
60、MR1_NEXT3 BCF STATUS,2 ;清零標(biāo)志位 MOVLW 00H 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
61、 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ù)
62、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寄存器 RLF TEMP,0
63、 ;TEMP寄存器內(nèi)容乘以2,作為查詢顯示數(shù)據(jù) ;的地址偏移量 ADDWF PCL,1 ;將地址偏移量與程序計(jì)數(shù)器值疊加 MOVF LED1 GOTO TMR0_NEXT1 MOVF LED2 GOTO TMR0_NEXT1 MOVF LED3 GOTO TMR0_NEXT1 MO
64、VF LED4 TMR0_NEXT1 MOVWF TX_LED ;將本次顯示的LED數(shù)據(jù)送LED發(fā)送寄存器 RLF TEMP ;TEMP寄存器內(nèi)容乘以2,作為查詢顯示數(shù)據(jù) ;的地址偏移量 ADDWF PCL,1 ;將地址偏移量與程序計(jì)數(shù)器值疊加 MOVF SEG1 GOTO TMR0_NEXT2
65、 MOVF SEG2 GOTO TMR0_NEXT2 MOVF SEG3 GOTO TMR0_NEXT2 MOVF SEG4 TMR0_NEXT2 MOVWF TX_DATA ;將本次顯示的數(shù)碼管數(shù)據(jù)送數(shù)碼管發(fā)送寄存器 BCF PORTD,7 ;清74LS244使能位,暫時(shí)禁止數(shù)據(jù)輸出顯示 BSF STATUS,5
66、 CLRF SSPSTAT ;SPI方式清SMP位、CKE位和BF位,在脈沖上 ;沿移位輸出數(shù)據(jù)跳 MOVLW 30H MOVWF SSPCON ;允許串口工作,時(shí)鐘頻率為系統(tǒng)時(shí)鐘的1/4 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 ;選通待顯示的通道
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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.乳化液泵工理論考試試題含答案