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

下載本文檔

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

文檔簡(jiǎn)介

1、 摘要對(duì)偏離零點(diǎn)的水位進(jìn)行檢測(cè),然后將帶符號(hào)的水位值(低于或高于零點(diǎn))用數(shù)碼管顯示出來(lái),并通過(guò)雙色二極管LED陣列對(duì)水位高度進(jìn)行模擬顯示利用水位監(jiān)測(cè)模擬傳感器以測(cè)得水位的狀況,通過(guò)單片機(jī)和顯示系統(tǒng)在水位現(xiàn)場(chǎng)以LED的方式顯示出來(lái),并通過(guò)與之相連的GSM模塊將水位信息以一種無(wú)線的方式發(fā)送給遠(yuǎn)程終端,起到檢測(cè)的作用。在終端通過(guò)仿人工智能控制算法在大慣性、純滯后系統(tǒng)中的應(yīng)用,可克服傳統(tǒng)PID控制的相位滯后、積分飽和,解決控制系統(tǒng)的穩(wěn)定性及準(zhǔn)確性的矛盾。在每一個(gè)預(yù)定水位檢測(cè)點(diǎn)處,將兩個(gè)電極安裝在容器壁,使其一端能夠與沒(méi)過(guò)該點(diǎn)的水充分接觸,另一端引出到容器外面同檢測(cè)電路相連,兩個(gè)電極等高度并間隔一定距離

2、。當(dāng)水位沒(méi)有達(dá)到該檢定點(diǎn)時(shí),兩個(gè)電極間電阻為無(wú)窮大;而一旦水位上升到該點(diǎn)高度,則兩個(gè)電極同時(shí)沒(méi)于水中,由于水的導(dǎo)電性,兩個(gè)電極導(dǎo)通。通過(guò)檢測(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ì)各通道循環(huán)檢測(cè)來(lái)實(shí)現(xiàn)數(shù)據(jù)采集。系統(tǒng)的軟件的核心是兩個(gè)不斷循環(huán)執(zhí)行的中斷程序:TMR0中斷用于驅(qū)動(dòng)數(shù)碼管和LED顯示:TMR1中斷用于采集水位值并且將采集結(jié)果送緩沖寄存器供顯示部分讀取,同時(shí)對(duì)采集結(jié)果進(jìn)行簡(jiǎn)單的分析,判斷其是否超過(guò)水位上限或下限,若超過(guò)則點(diǎn)亮相應(yīng)的報(bào)警燈。整個(gè)軟件部分大體可分為 初始化程序、TMR1中斷服務(wù)程序、數(shù)據(jù)轉(zhuǎn)化

3、子程序、TMR0中斷服務(wù)程序4個(gè)部分。該系統(tǒng)還設(shè)計(jì)了報(bào)警系統(tǒng),因?yàn)樗粰z測(cè)和顯示儀表裝置在工業(yè)上有著廣泛的應(yīng)用而本設(shè)計(jì)采用的是一種低成本的數(shù)碼管顯示驅(qū)動(dòng)方案。所以在對(duì)成本較敏感的小型系統(tǒng)中,該方案有著一定的參考價(jià)值。關(guān)鍵字: 單片機(jī) 水位檢測(cè) 應(yīng)用前言在當(dāng)今社會(huì),水在人們正常生活和生產(chǎn)中起著非常重要的作用。給水工程往往成為高層建筑或工礦企業(yè)中最重要的基礎(chǔ)設(shè)施之一。任何時(shí)候都能提供足夠的水量、平穩(wěn)的水壓、合格的水質(zhì)是對(duì)給水系統(tǒng)提出的基本要求。就目前而言,多數(shù)工業(yè)、生活供水系統(tǒng)都采用水塔、層頂水箱等作為基本儲(chǔ)水設(shè)備,由一級(jí)或二級(jí)水泵從地下市政水管補(bǔ)給。因此,如何建立一個(gè)可靠安全、又易于維護(hù)的給水系

4、統(tǒng)是值得我們研究的課題。本設(shè)計(jì)介紹一種利用水位監(jiān)測(cè)模擬傳感器以測(cè)得水位的狀況,通過(guò)單片機(jī)和顯示系統(tǒng)在水位現(xiàn)場(chǎng)以LED的方式顯示出來(lái),并通過(guò)與之相連的GSM模塊將水位信息以一種無(wú)線的方式發(fā)送給遠(yuǎn)程終端,起到檢測(cè)的作用。在終端通過(guò)仿人工智能控制算法在大慣性、純滯后系統(tǒng)中的應(yīng)用,可克服傳統(tǒng)PID控制的相位滯后、積分飽和,解決控制系統(tǒng)的穩(wěn)定性及準(zhǔn)確性的矛盾。將控制算法應(yīng)用到水位控制,取得了較好的控制效果。 在社會(huì)經(jīng)濟(jì)飛速發(fā)展的今天,水在人們正常生活和生產(chǎn)中起著越來(lái)越重要的作用。一旦斷了水,輕則給人民生活帶來(lái)極大的不便,重則可能造成嚴(yán)重的生產(chǎn)事故及損失。因此給水工程往往成為高層建筑或工礦企業(yè)中最重要的基

5、礎(chǔ)設(shè)施之一.任何時(shí)候都能提供足夠的水量,平穩(wěn)的水壓,合格的水質(zhì)是對(duì)給水系統(tǒng)提出的基本要求.就目前而言,多數(shù)工業(yè),生活供水系統(tǒng)都采用水塔,層頂水箱等作為基本儲(chǔ)水設(shè)備,由一級(jí)或二級(jí)水泵從地下市政水管補(bǔ)給。因此,如何建立一個(gè)可靠安全,又易于維護(hù)的給水系統(tǒng)是值得我們研究的課題。 水位控制在日常生活及工業(yè)領(lǐng)域中應(yīng)用相當(dāng)廣泛,比如水塔,地下水,水電站等情況下的水位控制。而以往水位的檢測(cè)是由人工完成的,值班人員全天候地對(duì)水位的變化進(jìn)行監(jiān)測(cè),用有線電話及時(shí)把水位變化情況報(bào)知主控室。然后主控室再開動(dòng)電機(jī)進(jìn)行給排水.很顯然上述重復(fù)性的工作無(wú)論從人員,時(shí)間和資金上都將造成很大的浪費(fèi)。同時(shí)也容易出差錯(cuò)。因此急需一種能

6、自動(dòng)檢測(cè)水位,并根據(jù)水位變化的情況自動(dòng)調(diào)節(jié)的自動(dòng)控制系統(tǒng),我所研究的就是這方面的課題。目 錄1系統(tǒng)總體設(shè)計(jì)11.1系統(tǒng)主要功能11.2系統(tǒng)工作原理12系統(tǒng)硬件電路設(shè)計(jì)22.1單片機(jī)系統(tǒng)22.1.1單片機(jī)簡(jiǎn)介2.1.2單片機(jī)發(fā)展概述2.1.3單片機(jī)內(nèi)部結(jié)構(gòu)2.2水位檢測(cè)與數(shù)據(jù)采集2.2.1PLC16F877芯片介紹2.2.2CD4051芯片介紹2.2.3水位檢測(cè)電路2.3數(shù)碼管與LED顯示2.3.1相關(guān)芯片介紹2.3.2顯示部分工作原理2.4報(bào)警電路3系統(tǒng)軟件程序設(shè)計(jì)3.1初始化程序3.2TMR1中斷服務(wù)程序3.3數(shù)據(jù)轉(zhuǎn)換子程3.4TMR0中斷服務(wù)程序3.5程序清單及注釋4 結(jié)論 致 謝參考文獻(xiàn)

7、1 系統(tǒng)總體設(shè)計(jì)水位檢測(cè)和顯示儀表裝置在工業(yè)上有著廣泛的應(yīng)用。本設(shè)計(jì)采用的是一種低成本的數(shù)碼管顯示驅(qū)動(dòng)方案。在對(duì)成本較敏感的小型系統(tǒng)中,該方案有著一定的參考價(jià)值。1.1系統(tǒng)主要功能對(duì)偏離零點(diǎn)的水位進(jìn)行檢測(cè),然后將帶符號(hào)的水位值(低于或高于零點(diǎn))用數(shù)碼管顯示出來(lái),并通過(guò)雙色二極管LED陣列對(duì)水位高度進(jìn)行模擬顯示。整個(gè)裝置主要包含水位檢測(cè)和顯示兩個(gè)部分,現(xiàn)將每部分功能說(shuō)明如下:(1)水位檢測(cè):在0mm、±10 mm、±25 mm、±50 mm、±80 mm、±120 mm、±160 mm、±240 mm共15點(diǎn)基礎(chǔ)上,檢測(cè)水位偏

8、離零點(diǎn)的大小。(2)水位顯示:將上一步檢測(cè)結(jié)果用數(shù)碼管顯示出來(lái),顯示值以比實(shí)際水位小的最近點(diǎn)為準(zhǔn),例如:水位實(shí)際高度為35 mm,則數(shù)碼管顯示25 mm。同時(shí),用15個(gè)豎直排列的雙色LED陣列直觀的模擬當(dāng)前水位高度,當(dāng)水位沒(méi)有達(dá)到某點(diǎn)相應(yīng)的LED顯示紅色,達(dá)到或超過(guò)則顯示綠色。當(dāng)水位低于240 mm時(shí)報(bào)警燈顯示綠色,高于240 mm時(shí)報(bào)警燈顯示紅色,當(dāng)水位恢復(fù)正常值時(shí)報(bào)警燈熄滅。1.2系統(tǒng)工作原理本設(shè)計(jì)采用電接點(diǎn)水位檢測(cè)方法,在每一個(gè)預(yù)定水位檢測(cè)點(diǎn)處,將兩個(gè)電極安裝在容器壁,使其一端能夠與沒(méi)過(guò)該點(diǎn)的水充分接觸,另一端引出到容器外面同檢測(cè)電路相連,兩個(gè)電極等高度并間隔一定距離。當(dāng)水位沒(méi)有達(dá)到該檢

9、定點(diǎn)時(shí),兩個(gè)電極間電阻為無(wú)窮大;而一旦水位上升到該點(diǎn)高度,則兩個(gè)電極同時(shí)沒(méi)于水中,由于水的導(dǎo)電性,兩個(gè)電極導(dǎo)通。通過(guò)檢測(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ì)各通道循環(huán)檢測(cè)來(lái)實(shí)現(xiàn)數(shù)據(jù)采集。本系統(tǒng)由水箱、檢測(cè)元件、多路開關(guān)、單片機(jī)系統(tǒng)、數(shù)碼顯示和報(bào)警六大部分組成。如下圖所示:檢測(cè)元件多路開關(guān)單片機(jī)系統(tǒng)數(shù)碼顯示報(bào)警水箱圖1.1 系統(tǒng)組成框圖2系統(tǒng)硬件電路設(shè)計(jì)2.1單片機(jī)系統(tǒng) 2.1.1單片機(jī)簡(jiǎn)介單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一

10、臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。可以說(shuō),二十世紀(jì)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)入的電腦時(shí)代。不過(guò),這種電腦,通常是指?jìng)€(gè)人計(jì)算機(jī),簡(jiǎn)稱PC機(jī)。它由主機(jī)、鍵盤顯示器等組成。還有一類計(jì)算機(jī),大多數(shù)人卻不怎么熟悉。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的單片機(jī)(亦稱微控制器)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn)行簡(jiǎn)單運(yùn)算和控制。因?yàn)樗w積小,通常都藏在被控機(jī)械的“肚子”里。它在整個(gè)裝置中,起著有如人類頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F(xiàn)在,這種單片機(jī)的使用領(lǐng)域已十

11、分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品、升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞“智能型”,如智能型洗衣機(jī)等?,F(xiàn)在有些工廠的技術(shù)人員或其它業(yè)余電子開發(fā)者搞出來(lái)的某些產(chǎn)品,不是電路太復(fù)雜,就是功能太簡(jiǎn)單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機(jī)或其它可編程邏輯器件上。2.1.2單片機(jī)發(fā)展趨勢(shì)1946年第一臺(tái)電子計(jì)算機(jī)誕生至今,只有50年的時(shí)間,依靠微電子技術(shù)和半導(dǎo)體技術(shù)的進(jìn)步,從電子管晶體管集成電路大規(guī)模集成電路,現(xiàn)在一塊芯片上完全可以集成幾百萬(wàn)甚至上千萬(wàn)只晶體管,使得計(jì)算機(jī)體積更小,功能更強(qiáng)。特別是近20年時(shí)間里,計(jì)算機(jī)技

12、術(shù)獲得飛速的發(fā)展,計(jì)算機(jī)在工農(nóng)業(yè),科研,教育,國(guó)防和航空航天領(lǐng)域獲得了廣泛的應(yīng)用,計(jì)算機(jī)技術(shù)已經(jīng)是一個(gè)國(guó)家現(xiàn)代科技水平的重要標(biāo)志。單片機(jī)誕生于20世紀(jì)70年代,所謂單片機(jī)是利用大規(guī)模集成電路技術(shù)把中央處理單元(Center Processing Unit,也即常稱的CPU)和數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM)及其他I/O通信口集成在一塊芯片上,構(gòu)成一個(gè)最小的計(jì)算機(jī)系統(tǒng),而現(xiàn)代的單片機(jī)則加上了中斷單元,定時(shí)單元及A/D轉(zhuǎn)換等更復(fù)雜、更完善的電路,使得單片機(jī)的功能越來(lái)越強(qiáng)大,應(yīng)用更廣泛。20世紀(jì)70年代,微技術(shù)正處于發(fā)展階段,集成電路屬于中規(guī)模發(fā)展時(shí)期,各種新材料新工藝尚未成熟,單片機(jī)仍處

13、在初級(jí)的發(fā)展階段,元件集成規(guī)模還比較小,功能比較簡(jiǎn)單,一般均把CPU、RAM有的還包括了一些簡(jiǎn)單的I/O口集成到芯片上,它還需配上外圍的其他處理電路方才構(gòu)成完整的計(jì)算系統(tǒng)。1976年INTEL公司推出了MCS-48單片機(jī),這個(gè)時(shí)期的單片機(jī)才是真正的8位單片微型計(jì)算機(jī),并推向市場(chǎng)。它以體積小,功能全,價(jià)格低贏得了廣泛的應(yīng)用,為單片機(jī)的發(fā)展奠定了基礎(chǔ),成為單片機(jī)發(fā)展史上重要的里程碑。在MCS-48的帶領(lǐng)下,其后,各大半導(dǎo)體公司相繼研制和發(fā)展了自己的單片機(jī)。到了80年代初,單片機(jī)已發(fā)展到了高性能階段。此外,日本的著名電氣公司NEC和HITACHI都相繼開發(fā)了具有自己特色的專用單片機(jī)。80年代,世界各

14、大公司均競(jìng)相研制出品種多功能強(qiáng)的單片機(jī),約有幾十個(gè)系列,300多個(gè)品種,此時(shí)的單片機(jī)均屬于真正的單片化,大多集成了CPU、RAM、ROM、數(shù)目繁多的I/O接口、多種中斷系統(tǒng),甚至還有一些帶A/D轉(zhuǎn)換器的單片機(jī),功能越來(lái)越強(qiáng)大,RAM和ROM的容量也越來(lái)越大,尋址空間甚至可達(dá)64kB,可以說(shuō),單片機(jī)發(fā)展到了一個(gè)全新階段,應(yīng)用領(lǐng)域更廣泛,許多家用電器均走向利用單片機(jī)控制的智能化發(fā)展道路。1982年以后,16位單片機(jī)問(wèn)世,代表產(chǎn)品是INTEL公司的MCS-96系列,16位單片機(jī)比起8位機(jī),數(shù)據(jù)寬度增加了一倍,實(shí)時(shí)處理能力更強(qiáng),主頻更高,集成度達(dá)到了12萬(wàn)只晶體管,RAM增加到了232字節(jié),ROM則達(dá)

15、到了8kB,并且有8個(gè)中斷源,同時(shí)配置了多路的A/D轉(zhuǎn)換通道,高速的I/O處理單元,適用于更復(fù)雜的控制系統(tǒng)。90年代以后,單片機(jī)獲得了飛速的發(fā)展,世界各大半導(dǎo)體公司相繼開發(fā)了功能更為強(qiáng)大的單片機(jī)。美國(guó)Microchip公司發(fā)布了一種完全不兼容MCS-51的新一代PIC系列單片機(jī),引起了業(yè)界的廣泛關(guān)注,特別它的產(chǎn)品只有33條精簡(jiǎn)指令集吸引了不少用戶,使人們從INTEL的111條復(fù)雜指令集中走出來(lái)。PIC單片機(jī)獲得了快速的發(fā)展,在業(yè)界中占有一席之地。隨后,熟悉單片機(jī)的人士都比較清楚了,更多的單片機(jī)種蜂擁而至,MOTOROLA公司相繼發(fā)布了MC68HC系列單片機(jī),日本的幾個(gè)著名公司都研制出了性能更強(qiáng)

16、的產(chǎn)品,但日本的單片機(jī)一般均用于專用系統(tǒng)控制,例如NEC公司生產(chǎn)的uCOM87系列單片機(jī),其代表作uPC7811是一種性能相當(dāng)優(yōu)異的單片機(jī)。MOTOROLA公司的MC68HC05系列其高速低價(jià)等特點(diǎn)贏得了不少用戶。1990年美國(guó)INTEL公司推出了80960超級(jí)32位單片機(jī)引起了計(jì)算機(jī)界的轟動(dòng),產(chǎn)品相繼投放市場(chǎng),成為單片機(jī)發(fā)展史上又一個(gè)重要的里程碑。此期間,單片機(jī)園地里,單片機(jī)品種異彩紛呈,爭(zhēng)奇斗艷。有8位、16位甚至32位機(jī),但8位單片機(jī)仍以它的價(jià)格低廉、品種齊全、應(yīng)用軟件豐富、支持環(huán)境充分、開發(fā)方便等特點(diǎn)而占著主導(dǎo)地位。而INTEL公司憑著他們雄厚的技術(shù),性能優(yōu)秀的機(jī)型和良好的基礎(chǔ),目前仍

17、是單片機(jī)的主流產(chǎn)品。只不過(guò)是九十年代中期,INTEL公司忙著開發(fā)他們個(gè)人電腦微處理器,已沒(méi)有足夠的精力繼續(xù)發(fā)展自己創(chuàng)導(dǎo)的單片機(jī)技術(shù),而由PHILIPS等公司繼續(xù)發(fā)展C51系列單片機(jī)。2.1.3單片機(jī)的內(nèi)部結(jié)構(gòu)單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說(shuō)明:1.中央處理器:中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。2. 數(shù)據(jù)存儲(chǔ)

18、器(RAM): 8051內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問(wèn),而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。3. 程序存儲(chǔ)器(ROM):8051共有4096個(gè)8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。4. 定時(shí)/計(jì)數(shù)器(ROM):8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。5. 并行輸入輸出(I/O)口: 8051共有4組8位I/O口(P0、 P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。6.

19、全雙工串行口:8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。7. 中斷系統(tǒng):8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。8. 時(shí)鐘電路: 8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。2.2水位檢測(cè)與數(shù)據(jù)采集2.2.1PLC16F877芯片介紹PIC16F877單片機(jī)有雙列直插式40引腳及表面貼裝式44引腳等幾種封裝形式。PIC16F877單片機(jī)是目前世界上片內(nèi)集成外圍模

20、塊最多,功能最強(qiáng)的單片機(jī)品種之一。所有接口引腳除具有輸入/輸出功能以外。一般都設(shè)計(jì)有第2功能,甚至第3功能。它采用引腳復(fù)用技術(shù),以便即使增加功能但卻不增大體積及引腳數(shù)量。為了便于記憶可將PIC16F877單片機(jī)引腳分成兩大類。即7個(gè)系統(tǒng)配置引腳和33個(gè)輸入/輸出功能引腳。1.系統(tǒng)配置引腳(1)電源和接地引腳(均配置2組) :正電源端 :接地端(2)時(shí)鐘復(fù)位引腳OSC1/CLKIN: 時(shí)鐘振蕩器晶體連接端1/外部時(shí)鐘源輸入端OSC2/CLKOUT:時(shí)鐘振蕩器晶體連接端2/外部時(shí)鐘源輸出端(3)主復(fù)位引腳/:人工復(fù)位輸入端(低電平有效)編程電壓輸入端2.輸入/輸出功能引腳PIC16F877單片機(jī)配

21、置有5個(gè)端口,多達(dá)33個(gè)雙向輸入/輸出引腳。每個(gè)引腳都具有較強(qiáng)的對(duì)外電路驅(qū)動(dòng)能力。都可以獨(dú)立設(shè)置成所需要的輸入/輸出狀態(tài)。(1) 端口A是一個(gè)雙向輸入/輸出可編程端口,只有當(dāng)對(duì)ADCON1進(jìn)行設(shè)置后才能用作為數(shù)字量輸入/輸出引腳。端口A的引腳還有第2、3功能。RA0/AN0 RA0/第0路模擬信號(hào)輸入端RA1/AN1 RA0/第1路模擬信號(hào)輸入端RA2/AN2/ RA2/第2路模擬信號(hào)輸入端/負(fù)參考電壓端RA3/AN3/ RA3/第3路模擬信號(hào)輸入端/正參考電壓端RA4/TOCKI RA4/定時(shí)器0時(shí)鐘輸入端RA5/AN4/ RA5/第4路模擬信號(hào)輸入端/SPI通信從動(dòng)選擇(2) 端口B 引腳

22、端口B是一個(gè)雙向輸入/輸出可編程端口。當(dāng)其用作輸入時(shí),內(nèi)部有可編程的弱上拉電路,此外,端口B的引腳還有第2、第3功能??紤]到MPLAB-IDE集成開發(fā)環(huán)境借用RB端口的3個(gè)引腳。一般在擴(kuò)展外圍電路中應(yīng)避免使用RB3、RB6和RB7。如果必須要用,則應(yīng)采取相應(yīng)的措施。RB0/INT RB0 /外部中斷輸入端RB1 RB1RB2 RB2RB3/PGM RB3 /低電平電壓編程輸入端RB4 RB4 (具有電壓變化中斷功能)RB5 RB5 (具有電壓變化中斷功能)RB6/PGC RB6 (具有電壓變化中斷功能)/在線調(diào)試輸入端和串行編程時(shí)鐘輸入端RB7/PGD RB7 (具有電壓變化中斷功能)/在線調(diào)

23、試輸入端和串行編程數(shù)據(jù)輸入端(3) 端口C引腳端口C是一個(gè)雙向輸入/輸出可編程端口。該引腳主要投入有兩大類功能:捕捉/比較/脈寬調(diào)制/模塊CCP和各類串行通信模塊。RC0/T10SO/T1CKI RC0/定時(shí)器1的振蕩器輸出端/定時(shí)器1時(shí)鐘輸入端RC1/T10SI/CCP2 RC1/定時(shí)器1的振蕩器輸入端/捕捉器2輸入端或比較器2輸出端或脈寬調(diào)制器PWM2的輸出端RC2/CCP1 RC2/捕捉器/輸入端或比較器1輸出端或脈寬調(diào)制器PWM1的輸出端RC3/SCK/SCL RC3/SPI 和C串行口的同步時(shí)鐘輸入或輸出端RC4/SDI/SDA RC4/SPI 串行口的數(shù)據(jù)輸入端和C串行口的數(shù)據(jù)輸入

24、或輸出端RC5/SD0 RC5/SPI 串行口的數(shù)據(jù)輸出端RC6/TX/CK RC6/USART全雙工異步發(fā)送端/ USART半雙工同步傳送時(shí)鐘端RC7/RX/DT RC7/USART全雙工異步接受端/ USART半雙工同步傳送數(shù)據(jù)端(4) 端口D引腳 端口D是一個(gè)雙向輸入/輸出可編程端口。其全部引腳都有第2功能,RD0RD7/PSP0PSP7:RD0RD7/作從動(dòng)并行口與其他微處理器總線連接。(5) 端口E引腳端口E是一個(gè)雙向輸入/輸出可編程端口,只有當(dāng)對(duì)ADCON1進(jìn)行設(shè)置后,才能用作為數(shù)字量輸入/輸出引腳。RE0/AN5 RE0/并行口讀出控制端/第5路模擬信號(hào)輸入端RE1/AN6 RE

25、1/并行口寫入控制端/第6路模擬信號(hào)輸入端RE2/AN7 RE2/并行口片選控制端/第7路模擬信號(hào)輸入端2.2.2 CD4051芯片的介紹本設(shè)計(jì)采用電接水位檢測(cè)方法,在每一個(gè)預(yù)定水位檢測(cè)點(diǎn)處,將兩個(gè)電極安裝在電容壁,使其一端能夠與沒(méi)過(guò)該點(diǎn)的水充分接觸,另一端引出到容器外面同檢測(cè)電路相連,兩個(gè)電極等高度并間隔一定距離。當(dāng)水位沒(méi)有達(dá)到該檢定點(diǎn)時(shí),兩個(gè)電極間電阻為無(wú)窮大;而一旦水位上升到該點(diǎn)高度,則兩個(gè)電極同時(shí)沒(méi)于水中,由于水的導(dǎo)電性兩個(gè)電極導(dǎo)通。通過(guò)檢測(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ì)各通道循環(huán)檢測(cè)來(lái)實(shí)現(xiàn)數(shù)

26、據(jù)采集。多路開關(guān)的主要用途是把模擬信號(hào)分時(shí)地送入A/D轉(zhuǎn)換器,或者把經(jīng)計(jì)算機(jī)處理后的數(shù)據(jù)由D/A轉(zhuǎn)換器轉(zhuǎn)換成的模擬信號(hào),按一定的順序輸出到不同的控制回路中去。前者稱為多路開關(guān),完成多到一的轉(zhuǎn)換;后者稱為反多路開關(guān)或多路分配器,完成一到多的轉(zhuǎn)換。CD4051是雙向8通道多路開關(guān),其內(nèi)部結(jié)構(gòu)如圖所示。它由電平轉(zhuǎn)換、譯碼/驅(qū)動(dòng)和開關(guān)電路三部分組成,其中電平轉(zhuǎn)換可實(shí)現(xiàn)CMOS到TTL邏輯電平的轉(zhuǎn)換,因此,加到通道選擇輸入端的控制信號(hào)的電平幅度可為3V-20V。同時(shí),最大模擬量信號(hào)的峰值可達(dá)20V。CD4051帶有三個(gè)通道選擇輸入端A,B,C和一個(gè)禁止端INH。當(dāng)CBA為000-111B時(shí),可產(chǎn)生8選1

27、控制信號(hào),使8路通道中的某一通道的輸入與輸出接通。當(dāng)INH為0 時(shí),允許通道接通;當(dāng)INH為1時(shí),禁止通道接通。其真值表如表所示。IN/OUT0-7 及OUT/IN的傳遞方向,可用做多路開關(guān)和反多路開關(guān)。CD4051具有低接通電阻和低關(guān)斷電流的特點(diǎn),其引腳定義如圖2.1所示,真值表如表2.1所示:圖2.1  CD4051引腳圖表2.1  CD4051真值表INHC B A接通通道號(hào)0000IN00001IN10010IN20011IN30100IN40101IN50110IN60111IN71XXX_使用禁止端INH,可以很方便地實(shí)現(xiàn)通道數(shù)的擴(kuò)展。例如使用兩片CD4051可

28、組成16路的多路開關(guān)。當(dāng)通道選擇碼D3D2D1D0取00001111B之一時(shí),便惟一的選中這16路通道中的某一通道。2.2.3水位檢測(cè)電路盡管水位檢測(cè)原理簡(jiǎn)單,但應(yīng)用時(shí)卻不能僅僅用每路的通段來(lái)判斷水位是否沒(méi)過(guò)該路的電極。實(shí)際上,水的電阻因水中所含成分不同有很大的差異,例如蒸餾水就不導(dǎo)電,就不能用這種方法來(lái)檢測(cè),而本設(shè)計(jì)所應(yīng)用的場(chǎng)合經(jīng)試驗(yàn)測(cè)得水阻在幾歐到幾十歐不等;另一方面,空氣電阻也不是無(wú)窮大,也跟其成分有關(guān),例如飽和蒸汽的阻值就大概在1歐左右。所以不能通過(guò)判斷單片機(jī)的數(shù)據(jù)采集引腳輸入水平高低來(lái)判斷水位是否到達(dá)某點(diǎn),否則,對(duì)介于高低水平之間的電平狀態(tài)就無(wú)法做出判斷,而這種情況是可能存在的。一個(gè)

29、可靠的方法是對(duì)輸入引腳的數(shù)據(jù)進(jìn)行采樣,然后將采樣結(jié)果與一個(gè)閾值進(jìn)行比較,從而得出正確的結(jié)論。根據(jù)這個(gè)原理設(shè)計(jì)的水位檢測(cè)電路如圖2.2所示:圖2.2 水位檢測(cè)電路圖從圖中可以看出,通過(guò)RD0RD3口進(jìn)行采樣通道地址譯碼,在不同時(shí)刻選通16通道中的1個(gè)。當(dāng)水位上升到某一對(duì)電極高度時(shí),相應(yīng)通道的采樣電壓將會(huì)降低;若水位沒(méi)有上升到電極高度,那么上拉電阻將會(huì)把采樣值鉗位到+5v。RA0口作為A/D采樣通道輸入口。 2.3 數(shù)碼管與LED顯示模擬水位高度由15個(gè)雙色發(fā)光二極管(LED)來(lái)完成,共分為4組。在某一特定時(shí)刻,每組LED與一個(gè)數(shù)碼管一起被選通(4組LED對(duì)應(yīng)4個(gè)數(shù)碼管),兩個(gè)8為的移位寄存器74

30、LS164級(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)掃描,就完成了面板顯示的功能。2.3.1 相關(guān)芯片介紹顯示部分用到的芯片包括移位寄存器74LS164、數(shù)據(jù)緩沖器74LS244以及多路開關(guān)CD4051。下面就74位寄存器。移位寄存器根據(jù)移位情況的不同可分單向移位寄存器和雙向移位寄存器。8位單向移位寄存器74LS164為串行輸入/串行(并行)輸出,其引腳排列如圖所示:圖2.3 74LS164引腳圖 移位寄存器74LS164狀態(tài)表1 數(shù)據(jù)緩沖器74LS24474LS244 緩沖器常用作三態(tài)緩沖或總線驅(qū)動(dòng),+

31、5V供電,其高電平時(shí)輸出最大電流可達(dá)15mA,低電平輸出時(shí)最大電流可達(dá)24mA,足以驅(qū)動(dòng)數(shù)碼管和LED工作。74LS244共8個(gè)輸入輸出通道,通過(guò)門控端G1和G2來(lái)選擇其通斷,其功能原理及引腳如圖2.4所示: 圖2.4 74LS244內(nèi)部結(jié)構(gòu)及引腳圖從圖中可以看出,當(dāng)引腳1G為低電平時(shí),輸入通道1A1A4與輸出通道1Y11Y4連通;當(dāng)引腳1G為高電平時(shí)則截止。同理引腳2G控制著輸入通道2A12A4與輸出通道2Y12Y4的通斷。2.3.2 顯示部分工作原理發(fā)光二極管是一種利用正偏時(shí)PN結(jié)兩側(cè)的多子(N區(qū)的電子、P區(qū)的空穴)直接復(fù)合釋放出光能的光發(fā)射器件,是另一種特殊的二極管,這種管子通

32、過(guò)電流時(shí)能發(fā)出光。發(fā)光二極管是由磷、砷、鎵等半導(dǎo)體化合物制作的,發(fā)光二發(fā)光二極管簡(jiǎn)稱極管有可見(jiàn)光、不可見(jiàn)光和激光等類型。其中可見(jiàn)光LED的發(fā)光顏色有紅、黃、綠、橙等。光的顏色取決于制造時(shí)所使用的材料。不可見(jiàn)光LED常將的是紅外LED;而激光二極管具有良好的串色性。由于發(fā)光二極管體積小、工作電壓低、壽命長(zhǎng)、單色性好和響應(yīng)速度快,因此應(yīng)用很廣。如電平指示器、指示燈、七段數(shù)字顯示器等。 首先介紹一下雙色二極管的功能和用法。如圖2.5所示,1個(gè)雙色二極管有3個(gè)引腳,引腳1、2均為信號(hào)“”端,引腳3為GND端(信號(hào)“”)。引腳電平(TTL電平)與LED顯示顏色如表2.5所示:圖2.5 雙色二極管外觀圖表

33、2.5雙色二極管功能表引腳1引腳2二極管狀態(tài)00熄滅01綠色10紅色11混合色2 LED顯示器LED即發(fā)光二極管。LED顯示器有單個(gè)、七段和點(diǎn)陣式等幾種類型。單個(gè)LED顯示器常用于顯示儀器的狀態(tài)。儀器內(nèi)微處理器經(jīng)數(shù)據(jù)總線D0D7,輸出待顯示的代碼,送至輸出接口,當(dāng)其輸出端Q0為低電平時(shí),LED顯示器正向?qū)úl(fā)亮,反之則熄滅。七段LED顯示器由數(shù)個(gè)LED組成一個(gè)陣列,并封裝于一個(gè)標(biāo)準(zhǔn)的外殼中。為適用于不同的驅(qū)動(dòng)電路,有共陽(yáng)極和共陰極兩種結(jié)構(gòu)。用七段LED顯示器可組成09數(shù)字和多種字母。為了適應(yīng)個(gè)中裝置的需要,這種顯示中還提供有一個(gè)小數(shù)點(diǎn),所以實(shí)際共有八段。為了顯示某個(gè)數(shù)或字符,就要點(diǎn)亮對(duì)應(yīng)的段

34、,這就需要譯碼。譯碼有硬件譯碼和軟件譯碼之分。硬件譯碼電路的優(yōu)點(diǎn)是計(jì)算機(jī)時(shí)間的開銷比較小,但是硬件開支大。與硬件電路相比,軟件譯碼顯示電路省去硬件譯碼器,其BCD碼轉(zhuǎn)換為對(duì)應(yīng)的段碼這項(xiàng)工作由軟件來(lái)完成。共陽(yáng)極和共陰極顯示器的段碼互為反碼。微處理器有較強(qiáng)的邏輯控制能力,采用軟件譯碼并不復(fù)雜。采用軟件譯碼不僅可使硬件電路簡(jiǎn)化,而且其譯碼邏輯可隨編程設(shè)定,不受硬件邏輯的限制。所以智能儀器使用較多的是軟件譯碼方式。七段LED顯示器只能顯示數(shù)字和部分字符,并且字符顯示的形狀與印刷體相差很大,識(shí)別比較困難。點(diǎn)陣式LED顯示器是以點(diǎn)陣格式進(jìn)行顯示的,因而顯示的符號(hào)比較逼真。這是點(diǎn)陣式顯示器的優(yōu)越之處。點(diǎn)陣式

35、顯示器電路不足之處是接口電路及控制程序較復(fù)雜。點(diǎn)陣式顯示器的格式一般有4×7,5×7,7×9等幾種,最常用的是5×7點(diǎn)陣。5×7點(diǎn)陣字符顯示器由35只LED顯示單元排成5列×7行矩陣格式。3.數(shù)碼管及LED顯示電路數(shù)碼管及LED顯示電路如圖2.3所示,RC5口作為串行數(shù)據(jù)的同步時(shí)鐘端,與74LS164的數(shù)據(jù)輸入端相連;RC3口作為串行數(shù)據(jù)的同步時(shí)鐘端,與74LS164的數(shù)據(jù)輸出端均與SPI方式時(shí)端口一樣;實(shí)際應(yīng)用中,若不用SPI方式,而用模擬數(shù)據(jù)串行口,可以用任何普通I/O斷口代替。兩片移位寄存器74LS164的并行數(shù)據(jù)輸出端則分別與

36、兩片數(shù)據(jù)緩沖器74LS244的輸入端相連,RD7口作為數(shù)據(jù)緩沖器74LS244的門控信號(hào)輸出端,控制74LS244的通斷。每4個(gè)雙色二極管和1個(gè)數(shù)碼管一組,二極管的8個(gè)信號(hào)“”端,分別與第一片74LS244的8位數(shù)據(jù)輸出端相連,數(shù)碼管的8位數(shù)據(jù)輸入端,分別與第二片74LS244的8位數(shù)據(jù)輸入端相連,每組二極管和數(shù)碼管的GND端都與CD405的1個(gè)輸入通道相CD4051的輸出端與系統(tǒng)的“地”相連。RE0RE1口作為地址譯碼輸出端口,用于多路開關(guān)CD4051的4路通道選擇,每一時(shí)刻只有一組共4個(gè)二極管和1個(gè)數(shù)碼管被選通,其GND端同系統(tǒng)的“地”構(gòu)成通路,其他的二極管與數(shù)碼管則不能構(gòu)成通路。每向74

37、LS164傳送兩個(gè)字節(jié)共16位數(shù)據(jù),通過(guò)RD7口使能74LS244,將數(shù)據(jù)送到二極管和數(shù)碼管的輸入口,然后通過(guò)RE0RE1口打開一條通道,則被選通的數(shù)碼管和二極管就會(huì)按照接收的數(shù)據(jù)進(jìn)行相應(yīng)的顯示。不斷地發(fā)送新數(shù)據(jù)并利用CD4051循環(huán)的掃描4個(gè)通道,則所有的二極管和數(shù)碼管就會(huì)持續(xù)的發(fā)光顯示。2.4報(bào)警電路用一個(gè)雙色二極管作為報(bào)警燈,RD5口與二極管的引腳1相連,RD4口與二極管的引腳2相連。3系統(tǒng)軟件程序設(shè)計(jì)本系統(tǒng)的軟件的核心是兩個(gè)不斷循環(huán)執(zhí)行的中斷程序:TMR0中斷用于驅(qū)動(dòng)數(shù)碼管和LED顯示:TMR1中斷用于采集水位值并且將采集結(jié)果送緩沖寄存器供顯示部分讀取,同時(shí)對(duì)采集結(jié)果進(jìn)行簡(jiǎn)單的分析,判

38、斷其是否超過(guò)水位上限或下限,若超過(guò)則點(diǎn)亮相應(yīng)的報(bào)警燈。整個(gè)軟件部分大體可分為 初始化程序、TMR1中斷服務(wù)程序、數(shù)據(jù)轉(zhuǎn)化子程序、TMR0中斷服務(wù)程序4個(gè)部分,以下分別加以描述。3.1初始化程序初始1.I/O端口方向控制寄存器A/D輸入口RAD設(shè)置為輸入方式,串行時(shí)鐘及串行數(shù)據(jù)輸出端口RC,采樣通道地地址碼端口RD、顯示部分地址譯碼幾報(bào)警輸出端口RE均設(shè)置為輸出方式。2.TMR1初始化TMR1初始化程序步驟如下:將第一位外設(shè)中斷標(biāo)志寄存器PIRI中的中斷標(biāo)志位TMR1IF清零。將第一位外設(shè)中斷屏蔽寄存器PIE1中的中斷允許位TMR1IE置位。通過(guò)TMR1中斷控制器I1CON設(shè)置時(shí)鐘及分頻比等。給

39、TMR1計(jì)數(shù)器TMR1H、TMR1L賦初值。將中斷控制寄存器INTCON中的全局中斷屏蔽位GIE置位。將外設(shè)中斷屏蔽位PEIE置位。3. TIMR0初始化 TIMR0初始化步驟如下:通過(guò)選項(xiàng)寄存器OPTIONREG設(shè)置TMR0的分頻比及時(shí)鐘。將INTCON寄存器中的TMR0中斷標(biāo)志位清零并將中斷屏蔽位置位。給TMR0計(jì)數(shù)器賦初值。設(shè)計(jì)系統(tǒng)的水位值刷新時(shí)間為1s,即單片機(jī)每秒對(duì)采樣通道一遍A/D轉(zhuǎn)換。軟件上則設(shè)定TMR1定時(shí)器每秒產(chǎn)生一次中斷,執(zhí)行數(shù)據(jù)采樣程序,從最高水位采樣通道向下執(zhí)行,并不斷將每次采樣結(jié)果與系統(tǒng)設(shè)定的門限值比較,當(dāng)檢測(cè)到水位超過(guò)某一對(duì)電極時(shí),則退出采樣程序。接下來(lái)判斷水位是否

40、越限,若是則點(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è)中斷,故而在中斷服務(wù)程序入口處,需要對(duì)中斷源進(jìn)行判斷,這是通過(guò)判斷相應(yīng)的中斷標(biāo)志寄存器實(shí)現(xiàn)的。設(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并產(chǎn)生溢出,所以TMR1寄存器初始值為65536-62500=303

41、6,即0BDCH。TMR1中斷服務(wù)程序流程圖如圖3.1所示:圖3.1 TMR1 中斷服務(wù)程序流程圖3.3數(shù)據(jù)轉(zhuǎn)換子程序在進(jìn)行水位檢測(cè)后,會(huì)產(chǎn)生一個(gè)水位的高度值(設(shè)為HEIGHT),但它并不是一個(gè)真實(shí)的水位值,只是一個(gè)標(biāo)志水位高度的通道號(hào),其值為0-15中的某個(gè)數(shù),分別表示沒(méi)有水以及15種水位高度共16種情況。故而需要將其轉(zhuǎn)化為L(zhǎng)ED和數(shù)碼管顯示數(shù)據(jù)SEG1-SEG4d的對(duì)應(yīng)關(guān)系,表3.2則為數(shù)碼管的七段碼值與顯示符號(hào)對(duì)應(yīng)關(guān)系。表3.2 高度值與顯示段碼對(duì)照表HEIGHTLED1LED2LED3LED4SEG1SEG2SEG3SEG400F0H0F0H0F0H0F0H10E1H0F0H0F0H0

42、F0H24620C3H0F0H0F0H0F0H160387H0F0H0F0H0F0H12040FH0F0H0F0H0F0H8050FH0E1H0FH0FH5060FH0C3H0FH0FH2070FH87H0FH0FH1080FH0FH0FH0FH090FH0FH0E1H0FH10100FH0FH0C3H0FH25110FH0FH87H0FH50120FH0FH0FH0FH80130FH0FH0FH0E1H120140FH0FH0FH0C3H160150FH0FH0FH87H240注 :空白處表示不顯示任何數(shù)據(jù)表3.3 數(shù)碼管七段碼顯示符號(hào)共陽(yáng)極七段碼共陰極七段碼顯示符號(hào)共陽(yáng)極七段碼共陰極七段碼

43、00C0H3FH682H7DH10F9H06H70F8H07H20A4H5BH880H7FH30B0H4FH990H6FH499H66H0BFH40H592H6DH全滅FFH00H有3種方法對(duì)LED和數(shù)碼管顯示緩沖寄存器寫入數(shù)據(jù):第一種是采用查表方法,將各個(gè)高度值對(duì)應(yīng)的數(shù)據(jù)預(yù)先存入一塊緩沖區(qū)內(nèi),通過(guò)對(duì)指令指針賦值來(lái)訪問(wèn)特定數(shù)據(jù)單元,返回轉(zhuǎn)換后的數(shù)值;第二種是采用逐個(gè)比較的方法,將采樣結(jié)果與015的數(shù)逐個(gè)比較,若相等則向緩沖區(qū)賦相應(yīng)的值;第三種是根據(jù)表的特征來(lái)賦值,例如當(dāng)HEIGHT8時(shí),LED1的值為0FFH時(shí),SEG2沒(méi)有顯示。 3.4 TMR0中斷服務(wù)程序TMR0中斷用于數(shù)碼管及LED顯示

44、,每次中斷將兩個(gè)字節(jié)的數(shù)據(jù)串行發(fā)送至移位寄存器,后經(jīng)74LS244驅(qū)動(dòng)1組LED和1個(gè)數(shù)碼管發(fā)光。出于每個(gè)LED或數(shù)碼管兩次被選通的時(shí)間最大不能超過(guò)100 (利用人的視覺(jué)暫留現(xiàn)象,否則就會(huì)出現(xiàn)閃爍),加之TMR1中斷可能占用的時(shí)間,所以每次TMR0中斷溢出時(shí)間不能太長(zhǎng);另一方面,TMR0中斷溢出時(shí)間又不能太短,必須保證串行發(fā)送完畢。綜合這兩個(gè)方面因素,將TMR0溢出時(shí)間設(shè)為10 。TMR0寄存器初始值計(jì)算方法與TMR1初始值計(jì)算方法類似,只是分頻比設(shè)為1:128,計(jì)算結(jié)果為0D9H。如圖3.4所示:清溢出標(biāo)志位TOIF根據(jù)當(dāng)前顯示通道數(shù)查詢待發(fā)送字節(jié)TX-LED根據(jù)當(dāng)前顯示通道送待發(fā)字節(jié)數(shù)查詢

45、TX-LED關(guān)閉輸出緩沖器74LS244,禁止數(shù)據(jù)輸出發(fā)送字節(jié)計(jì)數(shù)器賦初值2選通待顯示通道輸出緩沖器74LS244允許輸出數(shù)通道計(jì)器減1通道計(jì)數(shù)器=0?通道計(jì)數(shù)器賦初值4TMR0賦初值返回回待發(fā)送字節(jié)TX-LED送暫存寄存器TEMP待發(fā)送字節(jié)TX-LED送暫存寄存器TEMP發(fā)送位計(jì)數(shù)器賦初值8時(shí)鐘端置低電平串行數(shù)據(jù)輸出端置低電平串行數(shù)據(jù)輸出端置高電平時(shí)鐘端置高電平發(fā)送數(shù)據(jù)移一位發(fā)送位計(jì)數(shù)器減1發(fā)送計(jì)數(shù)器=0?發(fā)送位計(jì)數(shù)器減1發(fā)送計(jì)數(shù)器=0?TEMP第七為0?TMR0中斷子程序 圖3.4 TMR0中斷服務(wù)程序流程圖3.5程序清單及注釋*LIST P=16F877INCLUDE P=16F877.

46、INCSTATUSEQU03H;定義狀態(tài)寄存器地址PLCEQU02H;定義程序計(jì)數(shù)器低8位指針地址PORTAEQU05H;定義端口RA的數(shù)據(jù)寄存器地址PORTCEQU07H;定義端口RC的數(shù)據(jù)寄存器地址PORTDEQU08H;定義端口RC的數(shù)據(jù)寄存器地址PORTEEQU09H;定義端口RC的數(shù)據(jù)寄存器地址TRISAEQU85H;定義端口RA的方向控制寄存器地址TRISDEQU87H;定義端口RC的方向控制寄存器地址TRISEEQU88H;定義端口RC的方向控制寄存器地址INTCONEQU89H;定義中斷控制寄存器地址TICIONEQU10H;定義TRM1中斷控制寄存器TMR0EQU01H;定義

47、TMR0寄存器地址PIR1EQU0CH;定義第一外設(shè)中斷標(biāo)志寄存器地址PIE1EQU8CH;定義第一外設(shè)中斷屏蔽寄存器地址;ADRESHEQU1EH;定義ADC結(jié)果寄存器高子節(jié)地址ADCON0EQU1FH;定義ADC控制寄存器0地址ADCON1EQU9FH;定義ADC控制寄存器地址T1CONEQU10H;定義TMR1控制寄存器地址TMR1LEQU0EH;定義TMR1低字節(jié)地址TMR1HEQU0FH;定義TMR1高字節(jié)地址SSPBUFEQU13H;定義SPISSPCONEQU14H;定義同步控制串口寄存器地址SSPSREQU94H;定義同步串口狀態(tài)寄存器地址;= = = = = = = = =

48、= = = = = = = = = = 變量 = = = = = = = = = = = = = = = = TEMPEQU20H;定義暫存寄存器HEIGHTEQU22H;定義采樣結(jié)果寄存器,用以標(biāo)志水位高度SELECT_COUNTEQU 23H;定義翻轉(zhuǎn)計(jì)數(shù)器,用以標(biāo)志選通的顯示通道AD_COUNT EQU24H;定義翻轉(zhuǎn)計(jì)數(shù)器,用以標(biāo)志通的采樣通道TX_LEDEQU25H;LED數(shù)據(jù)串行發(fā)送暫存寄存器TX_DATAEQU6H;數(shù)碼管數(shù)據(jù)串行發(fā)送暫存寄存器LED1EQU29H;發(fā)光二極管顯示數(shù)據(jù)寄存器1LED2EQU30H;發(fā)光二極管顯示數(shù)據(jù)寄存器2LED3EQU31H;發(fā)光二極管顯示數(shù)據(jù)寄

49、存器3LED4EQU32H;發(fā)光二極管顯示數(shù)據(jù)寄存器4SEG1EQU33H;數(shù)碼管顯示數(shù)據(jù)寄存器1SEG2EQU34H;數(shù)碼管顯示數(shù)據(jù)寄存器2SEG3EQU35H;數(shù)碼管顯示數(shù)據(jù)寄存器3SEG4EQU36H;數(shù)碼管顯示數(shù)據(jù)寄存器4;= = = = = = = = = = = = = = = = = = = = = = 常量= = = = = = = = = = = = = = TMR1LBEQU0DCH;定義TMR1低字節(jié)寄存器初始值(定時(shí)1s)TMR1HBEQU0BH;定義TMR1高字節(jié)寄存器初始值TMR0BEQU0D9H;定義TMR0寄存器初始值(定時(shí)10ms)GATE_VALUE EQU

50、07FH;定義采樣結(jié)果門檻值,用以區(qū)分水和空氣阻值;*復(fù)位矢量和中斷矢量* ORG 000HNOPGOTOMAINORG004HBTFSCPIR1, 0 ;檢測(cè)是否是TMR1中斷GOTO TMR1_INT ;是,則轉(zhuǎn)TMR1;= = = = = = = = = = = = = = = =TMR1中斷服務(wù)程序= = = = = = = = = = = = = = 水位值刷新時(shí)間為1s,即單片機(jī)每秒對(duì)采樣通道一遍A/D轉(zhuǎn)換。軟件上則設(shè)定TMR1定時(shí)器每秒產(chǎn)生一次中斷,執(zhí)行數(shù)據(jù)采樣程序,從最高水位采樣通道向下執(zhí)行,并不斷將每次采樣結(jié)果與系統(tǒng)設(shè)定的門限值比較,當(dāng)檢測(cè)到水位超過(guò)某一對(duì)電極時(shí),則退出采樣程序。接下來(lái)判斷水位是否越限,若是則點(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ī)的中

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論