單片機(jī)脈沖計(jì)數(shù)電路設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b>  (2012屆)</b></p><p> 題 目單片機(jī)脈沖計(jì)數(shù)電路設(shè)計(jì)</p><p> 學(xué) 院理學(xué)院</p><p> 專 業(yè)應(yīng)用物理專業(yè)</p><p> 班 級(jí)<

2、;/p><p> 學(xué) 號(hào)</p><p> 學(xué)生姓名</p><p> 指導(dǎo)教師</p><p> 完成日期</p><p><b>  摘 要</b></p><p>  隨著單片機(jī)技術(shù)和電子技術(shù)的不斷發(fā)展(單片機(jī)在醫(yī)學(xué)儀器領(lǐng)域得到廣泛應(yīng)用,其在生物醫(yī)學(xué)信號(hào)處理和控制

3、中發(fā)揮著越來越重要的作用。各種生物醫(yī)學(xué)信號(hào)經(jīng)過放大、濾波等處理后(可將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)送到單片機(jī)處理(此外還可以通過單片機(jī)根據(jù)處理結(jié)果對醫(yī)療儀器進(jìn)行控制)??梢愿_簡單便攜的檢測脈搏、心跳、血壓等數(shù)據(jù)。因此本論文所做脈沖計(jì)數(shù)系統(tǒng)采用了以單片機(jī)(PIC16F877A)為核心,結(jié)合相關(guān)的外圍元器件例如六位8段數(shù)碼管、復(fù)位電路,再配以相應(yīng)的軟件,達(dá)到制作簡易脈沖計(jì)數(shù)器的目的。以C語言為程序設(shè)計(jì)的基礎(chǔ),利用PIC單片機(jī)獨(dú)有的CCP捕捉模

4、式能實(shí)現(xiàn)脈沖的檢測計(jì)算,頻率實(shí)時(shí)顯示在數(shù)碼管上。</p><p>  關(guān)鍵詞: PIC16F877A;CCP捕捉模式;脈沖;C語言</p><p><b>  ABSTRACT</b></p><p>  With the single chip microcomputer technology and electronic technolog

5、y development of microcomputer in the medical instrument (was widely used in the, in the biomedical signal processing and control a more and more important role in biological medicine. Various signal amplified, filtering

6、 processing (analog signal after can be converted to digital signals to SCM processing (also can through the MCU according to deal with the results of the medical instrument control). It will be more accurate, </p>

7、<p>  Keywords: PIC16F877A;CCP Capture mode;Pulse;C Language</p><p><b>  目 錄</b></p><p><b>  引 言1</b></p><p>  第一章 方案選擇2</p><p>  1.1

8、脈沖檢測方案2</p><p>  1.2 顯示方案2</p><p>  1.3 編程語言選擇方案2</p><p>  第一章 系統(tǒng)設(shè)計(jì)4</p><p>  2.1 總體設(shè)計(jì)4</p><p>  2.2 主控制模塊的方案選擇與設(shè)計(jì)4</p><p>  2.3 芯片介紹4

9、</p><p>  2.3.1 基本介紹4</p><p>  2.4 主控模塊電路10</p><p>  2.5數(shù)碼管顯示電路設(shè)計(jì)11</p><p>  2.6 Protel99SE設(shè)計(jì)11</p><p>  第三章 軟件設(shè)計(jì)13</p><p>  3.1 編程語言的選擇

10、13</p><p>  3.2程序設(shè)計(jì)13</p><p>  3.2.1程序流程圖13</p><p>  3.2.2 CPP捕捉中斷函數(shù)14</p><p>  3.2.3 初始化函數(shù)14</p><p>  3.2.4 BCD轉(zhuǎn)化函數(shù)17</p><p>  3.2.5 延時(shí)函

11、數(shù)18</p><p>  第四章 選材及應(yīng)用軟件20</p><p>  4.1 制作選材20</p><p>  4.1.1 硬件選材20</p><p>  4.1.2 電路制作20</p><p>  4.2源程序編譯與軟件調(diào)試21</p><p>  4.2.1 MPLAB

12、和HI-TECH PICC軟件簡介21</p><p><b>  第五章 總結(jié)23</b></p><p><b>  致 謝25</b></p><p><b>  參考文獻(xiàn)26</b></p><p><b>  附件27</b></

13、p><p><b>  引 言</b></p><p>  單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。單片機(jī)作為微型計(jì)算

14、機(jī)的一種,它具有如下的特點(diǎn):(1)具有優(yōu)異的性能價(jià)格比;(2)集成度高,體積小,可靠性高;(3)控制功能強(qiáng),開發(fā)應(yīng)用方便;(4)低電壓,低功耗[1]。</p><p>  在核輻射的測量中可以用單位時(shí)間的脈沖數(shù)來表示輻射強(qiáng)弱。而核輻射測量儀器主要是用在工作現(xiàn)場與室外,又要小巧輕便操作簡單、功耗低、可靠性高等。所以基于單片機(jī)的脈沖計(jì)數(shù)裝置是首選。</p><p>  傳統(tǒng)的測試儀在對電子元件

15、的RCL等參數(shù)的測量時(shí),往往需要反復(fù)的多次調(diào)節(jié)才能完成,而且對外部環(huán)境因素要求較高,同時(shí)技術(shù)水平、制作工藝的時(shí)代因素導(dǎo)致測試儀具有內(nèi)部硬件電路復(fù)雜、精確度低、攜帶笨重、操作程序多而復(fù)雜等弊端,大大影響測試工作的效率和精度。傳統(tǒng)的RCL測試儀主要對電子元件的模擬量進(jìn)行采集和處理,系統(tǒng)誤差受元件工況特性影響較大,而且是靜態(tài)測試。已不能滿足現(xiàn)代高精度動(dòng)態(tài)檢測系統(tǒng)發(fā)展的要求。成熟的單片機(jī)形成智能數(shù)字化的RCL(電阻、電容、電感)測試系統(tǒng)已經(jīng)在智

16、能測最領(lǐng)域中得到廣泛的應(yīng)用。PIC單片機(jī)將RCL參數(shù)的模擬信號(hào)轉(zhuǎn)換為頻率數(shù)字信號(hào),并采用軟件邏輯控制命令,實(shí)現(xiàn)了數(shù)字化的動(dòng)態(tài)測量,有效取代了傳統(tǒng)測試儀的復(fù)雜硬件電路,實(shí)現(xiàn)了電子元件參數(shù)的自動(dòng)化測最:采集、分析和收集,從而獲得可靠性高、精度高動(dòng)態(tài)數(shù)字化的、功能儀表測量的RCL。數(shù)據(jù),對電子線路設(shè)計(jì)、選型等具有較大的工程實(shí)際意義。</p><p>  單片機(jī)在現(xiàn)代工業(yè)自動(dòng)化控制和科學(xué)研究中有廣泛的應(yīng)用,在日常生活上可

17、用于定時(shí)、報(bào)警、小型控制等諸多方面,應(yīng)用門控可測量照相機(jī)快門打開時(shí)間。電影院門口設(shè)置的檢測裝置等都能用到單片機(jī)的計(jì)數(shù)裝置[2,3]。</p><p>  隨著單片機(jī)技術(shù)和電子技術(shù)的不斷發(fā)展(單片機(jī)在醫(yī)學(xué)儀器領(lǐng)域得到廣泛應(yīng)用,其在生物醫(yī)學(xué)信號(hào)處理和控制中發(fā)揮著越來越重要的作用。各種生物醫(yī)學(xué)信號(hào)經(jīng)過放大、濾波等處理后(可將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)送到單片機(jī)處理(此外還可以通過單片機(jī)根據(jù)處理結(jié)果對醫(yī)療儀器進(jìn)行控制??梢愿?/p>

18、精確的,簡單的,便攜的,檢測脈搏,心跳,血壓等數(shù)據(jù)。因此,研究單片機(jī)脈沖計(jì)數(shù)及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。因此本論文所做的脈沖計(jì)數(shù)器采用了以單片機(jī)(PIC16F877A)為核心,結(jié)合相關(guān)的外圍元器件例如六位8段數(shù)碼管、復(fù)位電路,再配以相應(yīng)的軟件,達(dá)到制作簡易脈沖計(jì)數(shù)器的目的,能實(shí)現(xiàn)實(shí)時(shí)顯示脈沖的。</p><p><b>  第一章 方案選擇</b></p><p&g

19、t;<b>  1.1脈沖檢測方案</b></p><p>  PIC單片機(jī)中有許多的自帶模塊可以用來進(jìn)行脈沖的檢測,比如:A/D轉(zhuǎn)換模塊,CCP捕捉模塊和比較模塊等,所以比較了一下各個(gè)模塊的優(yōu)缺點(diǎn),最終選擇一個(gè)精度高,適合的方案用于脈沖的檢測。</p><p>  方案一:采用A/D轉(zhuǎn)換模塊,A/D轉(zhuǎn)換模塊是單片機(jī)中應(yīng)用最廣泛的模塊,但是每做一次轉(zhuǎn)換都要使用一定的時(shí)

20、鐘周期,會(huì)造成時(shí)鐘時(shí)間的占用過大,由于單片機(jī)的計(jì)算功能有限所以會(huì)造成時(shí)間計(jì)算不準(zhǔn),結(jié)果誤差太大,可以在程序中人為的進(jìn)行誤差的修改,但是由于涉及到晶振的時(shí)鐘,轉(zhuǎn)換的次數(shù),等一系列的因素的限制,使程序過于繁瑣,同時(shí)修改誤差效果不是十分理想,所以此方法不用[4]。 </p><p>  方案二:采用CCP比較模塊。CCP比較模塊電路設(shè)計(jì)相對比較復(fù)雜,再加以比較模式會(huì)有一個(gè)比較值,但是由于脈沖的幅值是不確定的,所以不能確

21、定比較值的大小,在設(shè)計(jì)上有比較大的困難,此方法不用。</p><p>  方案三:采用CCP捕捉模塊。CCP捕捉模塊電路復(fù)雜程度不是很大,由于檢測捕捉的是脈沖的上升沿或下降沿,在頻率檢測上比比較模塊更具有優(yōu)勢,又是PIC單片機(jī)特有的模塊,精度非常高,所以選擇此種方式。</p><p>  綜上所述,選擇方案三,CCP捕捉模塊用作為脈沖的檢測。</p><p><

22、;b>  1.2 顯示方案</b></p><p>  方案一:采用多位8段LED數(shù)碼管顯示,雖然每增加一位的顯示,增加了單片機(jī)的計(jì)算工作量,但是在此設(shè)計(jì)中,最多六位已經(jīng)足夠。顯示時(shí)的計(jì)算不影響脈沖的檢測和精度,同時(shí)數(shù)碼管反應(yīng)快速,對于數(shù)字的顯示直觀,性價(jià)比比較高,價(jià)格便宜,都是不容忽視的優(yōu)點(diǎn)。實(shí)驗(yàn)儀器上多用數(shù)碼管顯示,所以數(shù)碼管顯示是首選。</p><p>  方案二:

23、采用點(diǎn)陣式數(shù)碼管顯示。點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,而在本課題設(shè)計(jì)中的顯示數(shù)字較多字符較少,而且此種方案耗能多,不符合現(xiàn)代的節(jié)能理念,所以不用此種作為顯示。</p><p>  方案三:采用LCD液晶顯示器顯示。LCD液晶顯示有耗能少,能夠顯示漢字等復(fù)雜字形,在顯示方面更加靈活,易于電路的功能擴(kuò)展。電路的軟件設(shè)計(jì)簡單,設(shè)計(jì)硬件簡潔,等特點(diǎn),但是本設(shè)計(jì)中不用顯示復(fù)雜的字形,只是數(shù)字

24、,還有就是LCD顯示反應(yīng)時(shí)間長,顯示沒有數(shù)碼管直觀清晰,也不太適用于太高頻率的顯示。</p><p>  通過比較,選擇第一種方案,采用六位8段數(shù)碼管作為顯示器件。</p><p>  1.3 編程語言選擇方案</p><p>  方案一:采用匯編語言。匯編語言(Assembly Language)是一種面向機(jī)器的程序設(shè)計(jì)語言。匯編語言又被稱為符號(hào)語言。在匯編語中,

25、用助記符(Memoni)代替操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替地址碼。這樣用符號(hào)代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。匯編語言需要翻譯成機(jī)器語言后,才能被機(jī)器識(shí)別。它的優(yōu)點(diǎn)是能夠直接訪問與硬件相關(guān)的存儲(chǔ)器或I/O端口,對生成的二進(jìn)制代碼進(jìn)行完全的控制,不會(huì)因?yàn)槭艿骄幾g器的限制而出現(xiàn)問題,能夠?qū)﹃P(guān)鍵代碼進(jìn)行十分準(zhǔn)確的控制,避免因線程共同訪問或者硬件設(shè)備共享從而引起死鎖,能夠根據(jù)特定的應(yīng)用對代碼做最佳的

26、優(yōu)化,提高運(yùn)行速度,能夠最大限度地發(fā)揮硬件的功能。缺點(diǎn)是編寫的代碼非常難懂,維護(hù)困難,十分容易產(chǎn)生bug,不方便調(diào)試,并且只能針對特定的體系結(jié)構(gòu)和處理器進(jìn)行優(yōu)化,開發(fā)效率很低。</p><p>  方案二:采用C語言。C語言是Combined Language(組合語言)的中英混合簡稱。它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,最大的特

27、點(diǎn)是編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍非常廣泛,不僅僅是在軟件開發(fā)這一方向,也用在機(jī)器開發(fā)的方向上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。與匯編語言相比,它更容易讓人理解,編寫速度快,兼容性好,應(yīng)用方便。</p><p>  通過以上比較,最終本設(shè)計(jì)采用了單片機(jī)自帶的CCP捕捉模塊,六位8段數(shù)碼管顯示,C語言編程的方案。</p><p><

28、;b>  第一章 系統(tǒng)設(shè)計(jì)</b></p><p><b>  2.1 總體設(shè)計(jì)</b></p><p>  本設(shè)計(jì)以單片機(jī)作為主控核心,與復(fù)位電路,數(shù)碼管顯示等輔助硬件電路相結(jié)合,利用軟件實(shí)現(xiàn)對脈沖的檢測,采集,計(jì)算,顯示等功能。重點(diǎn):搭建單片機(jī)及外圍電路,設(shè)計(jì)要求:MPLAB軟件編程</p><p>  主要分為兩個(gè)個(gè)模

29、塊:單片機(jī)系統(tǒng),顯示模塊。 如圖一所示:</p><p><b>  圖1 系統(tǒng)的模塊圖</b></p><p>  2.2 主控制模塊的方案選擇與設(shè)計(jì)</p><p>  主控模塊可采用數(shù)字電路實(shí)現(xiàn),也可采用單片機(jī)來完成。采用數(shù)字電路的方案,則設(shè)計(jì)出來的電路十分復(fù)雜,需要十幾片數(shù)字集成塊,功能主要依賴數(shù)字電路的各功能模塊的相互組合來實(shí)現(xiàn)。這就

30、是以往的脈沖計(jì)數(shù)電路的缺點(diǎn)。而采用單片機(jī)的方案,由于單片機(jī)的功能主要通過軟件編程來實(shí)現(xiàn),這樣就降低了硬件電路的復(fù)雜性,而且方便更多功能的升級(jí)與增加。本課題設(shè)計(jì)的是一個(gè)脈沖計(jì)數(shù)器,通過分析研究,只要用一般的單片機(jī)就可以滿足,因此我選用了性價(jià)比相對較高的低端PIC16F877A單片機(jī)。</p><p><b>  2.3 芯片介紹 </b></p><p>  2.3.1

31、 基本介紹</p><p>  本論文主要采用PIC16F877單片機(jī),PIC16F877單片機(jī)采用40引腳雙列直插DPIP封裝形式,其中有5個(gè)端口,分別為RA、RB、RC、RD、RE,每個(gè)都有第二甚至第三功能復(fù)用。內(nèi)部集成4頁8k字節(jié)可反復(fù)擦寫的Flash、只讀存儲(chǔ)器容量8k。文件寄存器RAM總共有512個(gè)字節(jié)(00fh~1FFh),分4個(gè)體,每個(gè)體有 128字節(jié)。每個(gè)體的前半部分是特殊寄存器,具有特殊用途,后

32、半部分是通用寄存器,作為一般的寄存用。器件采用高密度、非易失性存儲(chǔ)的技術(shù),有非常好的兼容性。PIC16F877是一款低電壓,高性能CMOS 8位單片機(jī),采用精簡指令集、哈佛總線結(jié)構(gòu)、流水線取指的方式,抗干擾能力強(qiáng),性價(jià)比很高,他的功能強(qiáng)大,能用于許多復(fù)雜的控制系統(tǒng)中。PIC16F877的PDIP管腳封裝如圖2所示:</p><p>  圖2 PIC16F877的PDIP管腳封裝</p><p&

33、gt;  PIC16F877的核心主要就是寄存器,狀態(tài)寄存器STATUS是及時(shí)的反映運(yùn)算結(jié)果的一些算術(shù)狀態(tài)得寄存器,比如是否產(chǎn)生進(jìn)位、借位、全零等;其中最經(jīng)常用到的寄存器是工作寄存器W,W寄存器是一個(gè)很重要的工作寄存器,它是很多指令操作過程的中轉(zhuǎn)站。PIC單片機(jī)有比其他的單片機(jī)有更要強(qiáng)大許多的數(shù)據(jù)存儲(chǔ)器,RAM寄存器,除了具備普通的存儲(chǔ)功能外,還能實(shí)現(xiàn)移位、置位、清零、位測試等一系列(只有“寄存器”才能實(shí)現(xiàn)的)復(fù)雜的操作。PIC16F8

34、77 除了CPU、POM、RAM、等基本構(gòu)造外,還包括以下各種功能模塊(內(nèi)部功能結(jié)構(gòu)圖如圖3所示),各個(gè)簡介如下:</p><p>  (1)A/D轉(zhuǎn)換器:用來將外部的模擬物理量變換為單片機(jī)內(nèi)部處理的數(shù)字量。是具有8</p><p>  位輸入通道和10位分辨率的模數(shù)轉(zhuǎn)換器;</p><p>  (2)捕捉/比較/脈沖調(diào)制CCP1和CCP2:CCP1和CCP2是兩個(gè)

35、幾乎完全相同的CCP模塊,與TMR1和TMR2配合可以實(shí)現(xiàn)輸入捕捉、輸出比較/脈寬調(diào)制輸出功能。輸入捕捉功能可以用于測量信號(hào)的周期、頻率、脈寬等;輸出比較可用于產(chǎn)生脈寬不同的正、負(fù)方波脈沖信號(hào)。脈寬調(diào)制輸出功能用來產(chǎn)生周期和脈寬可調(diào)的周期性方波信號(hào)。</p><p>  (3)定時(shí)器TMR0,TMR1,TMR2:三個(gè)定時(shí)器都是可編程的。其中只有TMR1是16位寬的。TMR0和TMR2是8位寬的。只有TMR2不可以

36、作為計(jì)數(shù)器。TMR0和TMR1可作為計(jì)數(shù)器。TMR2和TMR1與CCP模塊配合實(shí)現(xiàn)捕捉和比較功能; </p><p>  (4)通用同步/異步收發(fā)器UASRT模塊:用于實(shí)現(xiàn)二線式串行通信,可以定義為全雙工異步方式和半雙工同步方式兩種方法;</p><p>  圖3 PIC16F877 內(nèi)部功能結(jié)構(gòu)圖</p><p>  (5)主同步串行端口MSSP:用來與具有SPI

37、和I2C串行端口的外接器件或者其他單片機(jī)進(jìn)行通信,具有SPI和兩種工作模式;</p><p>  (6)EEPROM數(shù)據(jù)存儲(chǔ)器模塊:是256×8的電可擦寫的存儲(chǔ)器,存儲(chǔ)的內(nèi)容掉電也不會(huì)丟失;</p><p>  (7)并行從動(dòng)端口PSP模塊:可用來與其他具有開放總線的單片機(jī)、數(shù)字信號(hào)處理器或者和微處理器的并行數(shù)據(jù)總線連接,進(jìn)行高速的數(shù)據(jù)傳輸和交換。并行數(shù)據(jù)總線的控制權(quán)由與PIC單

38、片機(jī)通信的另一方掌控。</p><p>  2.3.2 著重介紹</p><p>  以下著重詳細(xì)的介紹本設(shè)計(jì)中所用到的PIC16F877A的相關(guān)功能。</p><p>  2.3.2.1 定時(shí)器TMR0</p><p>  定時(shí)器TMR0特性:</p><p>  定時(shí)器TMR0模塊的定時(shí)器/計(jì)數(shù)器具有如下特性<

39、;/p><p>  ●8位定時(shí)器/計(jì)數(shù)器;</p><p><b>  ●可讀可寫;</b></p><p>  ●內(nèi)部或外部時(shí)鐘選擇;</p><p>  ●對外部時(shí)鐘邊沿選擇;</p><p>  ●8個(gè)軟件可編程預(yù)分頻器;</p><p>  ●計(jì)數(shù)溢出中斷從FFh—00

40、h。</p><p>  與TMR0相關(guān)的寄存器:</p><p>  在PIC16F877X單片機(jī)的RAM數(shù)據(jù)存儲(chǔ)區(qū)域,與TMR0模塊相關(guān)的特殊功能寄存器共有4個(gè),分別是8位寬的累加計(jì)數(shù)寄存器TMR0、中斷控制寄存器INTCON、選項(xiàng)寄存器OPTION_REG和端口RA方向控制寄存器TRISA,如表1所示。</p><p>  表1 與TMR0相關(guān)的寄存器表<

41、;/p><p><b>  選項(xiàng)寄存器:</b></p><p>  PS2—PS0:分頻器分頻比選擇位,如表2所示:</p><p><b>  表2 分頻比示意圖</b></p><p>  PSA:分頻器分配位。</p><p>  1 = 分頻器分配給WDT。</p

42、><p>  0 = 分頻器分配給TMR0。</p><p>  T0SE:TMR0的時(shí)鐘源觸發(fā)邊沿選擇位。</p><p>  1 = 外部時(shí)鐘T0CKI下降沿觸發(fā)TMR0遞增。</p><p>  0 = 外部時(shí)鐘T0CKI上升沿觸發(fā)TMR0遞增。</p><p>  T0CS:TMR0的時(shí)鐘源選擇位。</p&g

43、t;<p>  1 = 外部脈沖信號(hào)作為TMR0的時(shí)鐘源。</p><p>  0 = 內(nèi)部指令周期作為TMR0的時(shí)鐘源。</p><p><b>  中斷控制寄存器</b></p><p>  T0IF:TMR0溢出標(biāo)志位。</p><p>  1 = TMR0發(fā)生溢出。</p><p

44、>  0 = TMR0未發(fā)生溢出。</p><p>  T0IE:TMR0溢出中斷使能位。</p><p>  1 = 允許TMR0溢出后產(chǎn)生中斷。</p><p>  0 = 屏蔽TMR0溢出后產(chǎn)生中斷。</p><p>  GIE:全局中斷使能位。</p><p>  1 = 允許CPU響應(yīng)外圍設(shè)備模塊產(chǎn)生的

45、中斷請求。</p><p>  0 = 禁止CPU響應(yīng)外圍設(shè)備模塊產(chǎn)生的中斷請求。</p><p><b>  端口RA方向寄存器</b></p><p>  TRISA4:與TMR0有關(guān)的只有一個(gè)比特位。由于TMR0模塊的外部輸入信號(hào)T0CKI與端口引腳RA4是復(fù)合在同一根腳上的。當(dāng)TMR0工作于計(jì)數(shù)器模式的時(shí)候,要求該引腳必須設(shè)定為輸入方式

46、。</p><p><b>  定時(shí)器TMR1</b></p><p>  定時(shí)器TMR1的特性。</p><p>  核心是16位寬的有時(shí)鐘信號(hào)上升沿觸發(fā)的循環(huán)累加計(jì)數(shù)器“寄存器對”TMR1L:TMR1H。</p><p>  TMR1L和TMR1H也是RAM中統(tǒng)一編址的寄存器,地址為0EH和0FH.</p>

47、;<p>  可用軟件方式直接讀出或?qū)懭隩MR1“寄存器對”的內(nèi)容。</p><p>  具有一個(gè)可選用的3位可編程預(yù)分頻器。</p><p>  即可工作于定時(shí)器模式用可工作于計(jì)數(shù)器模式。</p><p><b>  具有溢出中斷功能。</b></p><p>  與定時(shí)器TMR1相關(guān)的寄存器。</

48、p><p>  與TMR1相關(guān)的寄存器共有6個(gè),如表3所示:</p><p>  表3 與TMR1相關(guān)的寄存器表</p><p>  TMR1控制寄存器:</p><p>  T1CKPS1和T1CKPS0:分頻器分頻比選擇位,如表4所示:</p><p><b>  表4 分頻比示意圖</b><

49、;/p><p>  T1OSCEN:TMR1自帶振蕩器使能位。</p><p>  1 = 允許TMR1振蕩器起振。</p><p>  0 = 禁止TMR1振蕩器起振,令非門的輸出端呈高阻態(tài)。</p><p>  T1SYNC:TMR1外部駛?cè)霑r(shí)鐘與系統(tǒng)時(shí)鐘同步控制位。</p><p>  1 = 工作于計(jì)數(shù)器方式時(shí),T

50、MR1的外部輸入時(shí)鐘和系統(tǒng)時(shí)鐘不保持同步</p><p>  0 =工作于計(jì)數(shù)器方式時(shí),TMR1的外部輸入時(shí)鐘和系統(tǒng)時(shí)鐘保持同步</p><p>  TMR1CS:時(shí)鐘源選擇位。</p><p>  1 = 選擇外部時(shí)鐘源。</p><p>  0 = 選擇內(nèi)部時(shí)鐘源。</p><p>  TMR1ON:TMR1使能控

51、制位。</p><p>  1 = 啟用TMR1,使TMR2進(jìn)入活動(dòng)狀態(tài)。</p><p>  0 = 關(guān)閉TMR1,是TMR2退出活動(dòng)狀態(tài)。</p><p>  2.3.2.3 CCP捕捉模式</p><p>  CCP捕捉模式概述:</p><p>  所謂捕捉,指的是TMR1在工作狀態(tài)下,如果相應(yīng)的CCPX發(fā)生

52、了相關(guān)事件,則單片機(jī)將發(fā)生事件的時(shí)刻TMR1值復(fù)制到CCPRXH、CCPRXL中。</p><p>  與CCP捕捉模式相關(guān)的寄存器,</p><p>  與CCP捕捉模式相關(guān)的寄存器工有15個(gè),如表5所示:</p><p>  表5 與CCP捕捉模式相關(guān)的寄存器表</p><p>  CCPX控制寄存器:</p><p&

53、gt;  CCPXM3—CCPXM0:CCPX工作模式選擇位。</p><p>  0000 = 關(guān)閉CCPX模塊。</p><p>  0100 = 捕捉模式,捕捉CCPX腳送入的每一個(gè)脈沖下降沿。</p><p>  0101 = 捕捉模式,捕捉CCPX腳送入的每一個(gè)脈沖上升沿。</p><p>  0110 = 捕捉模式,捕捉CCPX腳

54、送入的每4個(gè)脈沖上升沿。</p><p>  0111 = 捕捉模式,捕捉CCPX腳送入的每16個(gè)脈沖上升沿。</p><p>  10xx = 比較模式,。</p><p>  11xx = 脈寬調(diào)制PWM模式。</p><p>  2.4 主控模塊電路</p><p>  單片機(jī)的最小系統(tǒng)由電源、復(fù)位、晶振組成,下

55、面介紹每一個(gè)組成部分。</p><p>  1.電源引腳(VCC,11,32號(hào)腳,電源端;GND,12,31號(hào)腳,接地端)</p><p>  它的工作電壓為5V。 </p><p>  2.外接晶體引腳(XTAL1,13號(hào)腳;XTAL2,14號(hào)腳);晶振電路如下圖所示:</p><p><b>  圖4 晶振連接圖</b&g

56、t;</p><p>  3. 復(fù)位(RST,1號(hào)腳)</p><p>  單片機(jī)的復(fù)位電路有很多種,因本實(shí)驗(yàn)對復(fù)位電路要求不高所以我選擇了一個(gè)最簡單的上電復(fù)位電路。</p><p>  復(fù)位電路如下圖所示:</p><p><b>  圖5 復(fù)位電路圖</b></p><p>  2.5數(shù)碼管顯

57、示電路設(shè)計(jì)</p><p>  為了增大此脈沖計(jì)數(shù)電路的應(yīng)用范圍所以采用了六位共陽8段數(shù)碼管可以顯示頻率的最大范圍為0 ~ 999999,數(shù)碼管顯示方式為動(dòng)態(tài)掃描。所以用(D2~D7)腳控制數(shù)碼管(1,2,3,4,5,6)位的亮滅,用(B0~B7)腳控制數(shù)碼管的(a,b,c,d,e,f,g,dp)亮滅。電路圖如圖所示:</p><p>  圖6 數(shù)碼管顯示電路圖</p>&l

58、t;p>  2.6 Protel99SE設(shè)計(jì)</p><p>  本設(shè)計(jì)采用Protel99SE[6-9]對電路進(jìn)行原理圖設(shè)計(jì)。Protel99SE是一款應(yīng)用于Windows9X/2000/NT操作系統(tǒng)下的EDA設(shè)計(jì)軟件,采用設(shè)計(jì)庫管理模式,可以進(jìn)行聯(lián)網(wǎng)設(shè)計(jì),具有很強(qiáng)的數(shù)據(jù)交換能力和開放性及3D模擬功能,是一個(gè)32位的設(shè)計(jì)軟件,可以完成電路原理圖設(shè)計(jì),印制電路板設(shè)計(jì)和可編程邏輯器件設(shè)計(jì)等工作,可以設(shè)計(jì)32個(gè)

59、信號(hào)層,16個(gè)電源--地層和16個(gè)機(jī)加工層。它是當(dāng)今使用最普遍,功能強(qiáng)大,使用簡單的一款電路設(shè)計(jì)軟件。所以在本設(shè)計(jì)中,我采用了Protel99SE作為我的設(shè)計(jì)工具。</p><p>  通過軟件庫選擇需要的部件,按照一定的方式進(jìn)行排布組合,完成自己的設(shè)計(jì)。原理圖如下:</p><p><b>  圖7 系統(tǒng)原理圖</b></p><p><

60、;b>  第三章 軟件設(shè)計(jì)</b></p><p>  3.1 編程語言的選擇</p><p>  C語言是Combined Language(組合語言)的中英混合簡稱。是一種計(jì)算機(jī)程序設(shè)計(jì)語言。它既具有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不

61、僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。與匯編語言相比較,它更容易讓人理解,編寫速度快,兼容性好。</p><p><b>  3.2程序設(shè)計(jì)</b></p><p>  3.2.1程序流程圖</p><p><b>  圖8 程序流程圖</b></p><

62、;p>  3.2.2 CPP捕捉中斷函數(shù)</p><p>  CPP捕捉[10,11]中斷函數(shù)是程序中最重要的一塊,也是流程最復(fù)雜的一部分,期中包含數(shù)碼管的顯示部分 ,本設(shè)計(jì)采用LED動(dòng)態(tài)顯示,選用六位一體的共陽數(shù)碼管。程序中啟動(dòng)了兩個(gè)中斷:CCP2捕捉中斷與TMR0中斷,CCP2作為捕捉方式,捕捉脈沖時(shí)間,TMR0作為LED動(dòng)態(tài)顯示刷新之用,時(shí)間間隔為2ms。</p><p>  

63、程序中使用了一個(gè)表示功能碼的變量FUN,根據(jù)FUN的值確定程序的走向及中斷的使能與禁止,如圖所示:</p><p>  圖9 程序執(zhí)行過程示意圖</p><p>  在程序的初始化后,F(xiàn)UN=0,允許CCP2中斷,此時(shí)為每個(gè)上升沿中斷。</p><p>  在時(shí)刻1,CCP2中斷(每個(gè)上升沿中斷),得到要捕捉時(shí)刻的起始點(diǎn),此時(shí)對TMR1清零(TMR1始終在計(jì)數(shù)中),

64、令FUN=1,并將CCP2改成每16個(gè)上升沿中斷。</p><p>  在時(shí)刻2,CCP2中斷(每16個(gè)上升沿中斷),得到了16個(gè)脈沖的時(shí)間間隔CCPR2H,CCPR2L,據(jù)此可以計(jì)算出頻率,在隔離TMR1采用1:8分頻,設(shè)CCPR2的16次捕捉為TTZ,則有:</p><p>  f = 1 000 000 / (TTZ*8/16) = 2 000 000 / TTZ</p>

65、<p>  因此程序中要用到長整形X來存放常數(shù)2 000 000.</p><p>  動(dòng)態(tài)顯示中,設(shè)置為沒2ms刷新一次,可得到TMR0 的分頻系數(shù)為1:8,延時(shí)常數(shù)為6.在TMR0中斷顯示程序中,通過switch語句,判斷全局變量D1的值確定當(dāng)前要顯示的是哪一位。</p><p>  在時(shí)刻3,動(dòng)態(tài)顯示次數(shù)已到,令FUN = 0,回到初始狀態(tài)。</p>&l

66、t;p><b>  程序如下所示:</b></p><p>  3.2.3 初始化函數(shù)</p><p>  初始化函數(shù)的主要作用是設(shè)置好單片機(jī)的寄存器的初始工作狀態(tài),為后續(xù)的工作做下準(zhǔn)備,期中包括單片機(jī)的腳的輸入輸出狀態(tài),定時(shí)器的初始設(shè)定,全局變量的初始化,CCP捕捉模式寄存器的初始化等。程序如下所示:</p><p>  3.2.4 B

67、CD轉(zhuǎn)化函數(shù)</p><p>  BCD碼又稱二/十進(jìn)制碼,即二進(jìn)制編碼的十進(jìn)制碼。在單片機(jī)內(nèi)部用的都是二進(jìn)制。但是人們還是習(xí)慣用十進(jìn)制數(shù),因此,要把相關(guān)內(nèi)容顯示給用戶看的時(shí)候,通常要用十進(jìn)制數(shù)。因此,就需要把二進(jìn)制轉(zhuǎn)化為十進(jìn)制數(shù)。BCD轉(zhuǎn)換算法有移位、減法、除法等。但是由于單片機(jī)的計(jì)算能力有限,所以從轉(zhuǎn)化所占用的時(shí)間方向來考慮,采用BCD減法轉(zhuǎn)換算法。程序如下:</p><p>  3.

68、2.5 延時(shí)函數(shù)</p><p>  由于本程序兩個(gè)地方需要延時(shí),分別是數(shù)碼管動(dòng)態(tài)顯示需要延時(shí)和中斷程序需要延時(shí),為了使兩個(gè)延時(shí)不相互沖突所以寫了兩個(gè)延時(shí)函數(shù),程序如下:</p><p>  第四章 選材及應(yīng)用軟件</p><p><b>  4.1 制作選材</b></p><p>  4.1.1 硬件選材</p

69、><p>  首先對整個(gè)設(shè)計(jì)進(jìn)行系統(tǒng)的分析,基本確定設(shè)計(jì)有單片機(jī)、晶振電路數(shù)碼管顯示電路,三個(gè)部分組成。</p><p>  然后根據(jù)各個(gè)部分的要求確定元器件的種類以及數(shù)目等,電阻、電容、晶振的規(guī)格以及印制板的板材和腐蝕劑以及轉(zhuǎn)印紙等,最重要的是PIC單片機(jī)內(nèi)部集成的就能滿足設(shè)計(jì)的要求。根據(jù)設(shè)計(jì)的要求需要使用6位的數(shù)碼管才能達(dá)到要求,電阻以及電容和晶振根據(jù)電路的需求購買,主要通過網(wǎng)購(淘寶網(wǎng))

70、以及電子時(shí)代廣場的采購。 </p><p>  4.1.2 電路制作</p><p>  確定完這些元器件后通過軟件繪制原理圖及印刷板電路圖。在繪制印刷版電路和自己做印刷板電路的時(shí)候,多次進(jìn)行了實(shí)驗(yàn)和修改。以求印刷版的可用性和穩(wěn)定性。在這個(gè)過程中,繪制印刷板電路多次調(diào)整了元器件的尺寸及布線的合理性,合理布局以及布線時(shí)盡可能將線的寬度放大,因?yàn)樽约褐谱鞯挠≈瓢逶诳涛g的時(shí)候很容易出現(xiàn)問題,由于

71、設(shè)備的局限性,刻蝕印刷版電路并沒有成功,最后選擇了采用萬用板焊接電路。但是,繪制電路圖這步依舊重要,是焊接電路板的參照。</p><p>  PROTEL軟件是目前流行最廣的電路繪圖軟件,這款軟件使繪圖操作更加簡單、方便。早期的PROTEL主要作為印制板自動(dòng)布線工具使用,運(yùn)行在DOS環(huán)境,對硬件的要求很低,在無硬盤286機(jī)的1M內(nèi)存下就能運(yùn)行,但它的功能也較少,只有電路原理圖繪制與印制板設(shè)計(jì)功能,其印制板自動(dòng)布線

72、的布通率也低,而現(xiàn)今的PROTEL已發(fā)展到DXP 2004,是個(gè)龐大的EDA軟件,完全安裝有200多M,它工作在WINDOWS95以上的環(huán)境下,是個(gè)完整的板級(jí)全方位電子設(shè)計(jì)系統(tǒng),它包含了電路原理圖繪制、模擬電路與數(shù)字電路混合信號(hào)仿真、多層印制電路板設(shè)計(jì)(包含印制電路板自動(dòng)布線)、可編程邏輯器件設(shè)計(jì)、圖表生成、電子表格生成、支持宏操作等功能,并具有Client/Server(客戶/服務(wù)器)體系結(jié)構(gòu),同時(shí)還兼容一些其它設(shè)計(jì)軟件的文件格式,如

73、ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動(dòng)布線可實(shí)現(xiàn)高密度PCB的100%布通率。在國內(nèi)PROTEL軟件較易買到,有關(guān)PROTEL軟件和使用說明的書也有很多,這為它的普及提供了基礎(chǔ)。我用的是PROTEL 99SE具有更強(qiáng)大的功能。Protel 99SE具有豐富的設(shè)計(jì)</p><p>  畫好電路圖之后,用萬用板焊好電路。即可以調(diào)試了。由于指導(dǎo)老師事先已購買了PIC單片機(jī)開發(fā)板,利用開發(fā)板燒寫程

74、序進(jìn)去,然后再把單片機(jī)放到電路上調(diào)試驗(yàn)證。電路板如圖所示:</p><p><b>  圖10 電路板背面</b></p><p><b>  圖11 電路板正面</b></p><p>  4.2源程序編譯與軟件調(diào)試</p><p>  本設(shè)計(jì)采用MPLAB[12]和HI-TECH PICC軟件對

75、源程序進(jìn)行編譯、調(diào)試和燒寫。</p><p>  4.2.1 MPLAB和HI-TECH PICC軟件簡介</p><p>  MPLAB集成開發(fā)環(huán)境(IDE)是Microchip公司免費(fèi)提供的,專用于其單片機(jī)的開發(fā)的綜合編輯器、項(xiàng)目管理和設(shè)計(jì)平臺(tái),MPLAB IDE 功能豐富,是開發(fā)單片機(jī)的一個(gè)很簡單明了又易于學(xué)習(xí)的軟件開發(fā)平臺(tái),內(nèi)置源代碼編輯器,支持源程序的在線匯編、編譯和鏈接等,同時(shí)

76、能編譯匯編語言和C語言源程序;通過使用內(nèi)置模擬器觀察程序流程調(diào)試可執(zhí)行邏輯或使用MPLAB ICD2在線調(diào)試器實(shí)時(shí)調(diào)試可執(zhí)行邏輯。 </p><p><b>  第五章 總結(jié)</b></p><p>  單片機(jī)的基礎(chǔ)知識(shí)在大二時(shí)期就有初步的了解,會(huì)實(shí)現(xiàn)一些簡單的功能,但是在做畢業(yè)設(shè)計(jì)期間我才是真正的詳細(xì)的去了解單片機(jī),和單片機(jī)的開發(fā)環(huán)境。才真正的去應(yīng)用PIC單片機(jī)特有

77、的CCP模塊。對于單片機(jī)的掌握更加系統(tǒng)化,在此期間,我又學(xué)到了很多東西,同時(shí)也發(fā)現(xiàn)了許多未解決的問題。</p><p>  本畢業(yè)設(shè)計(jì)所取得的結(jié)論主要為以下幾個(gè)方面:</p><p>  對此設(shè)計(jì)得測試結(jié)果是,在低頻率計(jì)數(shù)很準(zhǔn)誤差很小基本為0(0hz~5000hz),但是高頻率的時(shí)候誤差能達(dá)到百分之五(5000hz~20000hz),初步分析有可能是受單片機(jī)的計(jì)算能力和晶振的大小有關(guān)系。所

78、以以后想用16位單片機(jī)再改進(jìn)一下。應(yīng)該會(huì)適用于更廣的頻率范圍。</p><p>  此設(shè)計(jì)由于是簡單的原理性的實(shí)驗(yàn),所以功能太過于簡單,以后需要改進(jìn)的地方很多,比如:增加按鍵電路有多種精確度的切換,或是由于受實(shí)際情況的影響,檢測到的頻率會(huì)像函數(shù)信號(hào)發(fā)生器一樣穩(wěn)定,所以就應(yīng)該以多次檢測求平均值來降低誤差,程序還要有很多改進(jìn)的地方。</p><p>  程序設(shè)計(jì)的基礎(chǔ)是明確思路繪制流程圖,但設(shè)

79、計(jì)的最主要的工作是編程。C語言是我們本科生普遍熟悉的編程語言,相對于匯編語言,C語言在性能、結(jié)構(gòu)性、可讀性、可維護(hù)性上有很明顯的優(yōu)勢,而且容易使用?,F(xiàn)在普遍應(yīng)用C語言來對基礎(chǔ)硬件進(jìn)行編程操作。在設(shè)計(jì)中,程序的總體思路明了。是非常重要的,所以經(jīng)過這次設(shè)計(jì),我知道了養(yǎng)成一個(gè)良好的編程習(xí)慣是非常有必要的。</p><p>  本設(shè)計(jì)采用的MPLAB編譯系統(tǒng)是Microchip公司為其單片機(jī)提供的編譯系統(tǒng)。MPLAB I

80、DE是一個(gè)集成的開發(fā)環(huán)境,功能非常的強(qiáng)大,MPLAB編譯系統(tǒng)可以與Proteus聯(lián)合使用,使得虛擬開發(fā)成為現(xiàn)實(shí)。但是開發(fā)環(huán)境的建立的重要性是不容忽視的,在開發(fā)中開發(fā)環(huán)境的配置一定要精細(xì)到每個(gè)細(xì)節(jié),稍有不慎就會(huì)出現(xiàn)很難找到錯(cuò)誤的問題。曾經(jīng)就因?yàn)橐粋€(gè)小小的配置位沒有弄好,結(jié)果是查了兩天的問題,才知道是為什么。</p><p>  印制板的設(shè)計(jì)使用PROTEL 99 SE ,這個(gè)軟件雖然在專業(yè)課里有學(xué)過,但是在實(shí)際使用

81、時(shí)還是會(huì)遇到很多的問題,比如原理圖到PCB板的制作中要注意的一些問題,比如封裝引腳、線路是否導(dǎo)通、網(wǎng)絡(luò)標(biāo)號(hào)的使用等,在使用時(shí)才會(huì)理解到一個(gè)細(xì)節(jié)的不小心就會(huì)導(dǎo)致整個(gè)工程的失敗。在制作PCB板時(shí),一定要注意導(dǎo)線的寬度,寬度比較小時(shí),可能會(huì)在刻蝕的時(shí)候刻蝕掉而使電路不能導(dǎo)通,還有布局的時(shí)候需要晶振盡可能的靠近。</p><p>  本文從硬件電路到單片機(jī)控制器再到微處理器程序進(jìn)行了一系列的設(shè)計(jì),最終將各模塊整合制作成電

82、路板。各部分的設(shè)計(jì)都具有各自的特點(diǎn),在硬件電路設(shè)計(jì)中需要的是電工電子的理論和知識(shí);系統(tǒng)的軟件設(shè)計(jì)要求C語言編程能力;系統(tǒng)的調(diào)試則需要熟練應(yīng)用MPLAB IDE開發(fā)環(huán)境和ICD 2的使用。由此可見本系統(tǒng)的設(shè)計(jì)綜合應(yīng)用了各方面的理論和知識(shí),是對已學(xué)知識(shí)掌握程度的檢驗(yàn)以及對全新知識(shí)的學(xué)習(xí)和掌握能力的考驗(yàn)。</p><p><b>  致 謝</b></p><p>  在本

83、論文完成之際,我要感謝關(guān)心、幫助和支持我的人。</p><p>  首先,我衷心感謝我的導(dǎo)師蔡本曉老師。本論文是在蔡老師的精心指導(dǎo)下完成的,論文從選題到撰寫,自始自終都得到蔡老師的悉心指導(dǎo)。自從大三組件單片機(jī)團(tuán)隊(duì)開始,蔡本曉老師就一直在我們的身邊給予我們細(xì)心的教導(dǎo),給了我們很多鍛煉的機(jī)會(huì)。他對我今后的生活、學(xué)習(xí)和工作都會(huì)產(chǎn)生深遠(yuǎn)的影響。在此,我向蔡老師表示誠摯的感謝和崇高的敬意!</p><p

84、>  再次,我也要感謝我們一起奮斗的同學(xué),韋布桃、許駿,在我們一起努力、奮斗、探討,互相幫助,相互促進(jìn),在大學(xué)的最后的日子里,雖然天氣寒冷,但是在我們的團(tuán)隊(duì)中依然感覺到溫暖。</p><p>  感謝參加我的論文答辯的全體老師,你們辛勤的工作和誠懇的建議使我的論文更加完善。</p><p>  向所有在我大學(xué)四年中給予我關(guān)心和幫助的同學(xué)、老師和朋友們,致以我最真摯的謝意! </

85、p><p>  最后,我要感謝我的父母,是他們多年來的培養(yǎng)、教育和關(guān)心,才使我有了今天的成績,在我二十年的求學(xué)生涯中,他們給予了最無私的愛。在此,我對所有人說一句:謝謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  李學(xué)海.PIC單片機(jī)實(shí)用教程--基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2002.</p>&

86、lt;p>  竇振中,汪立森.PIC系列單片機(jī)應(yīng)用設(shè)計(jì)與實(shí)例[M].北京:北京航空航天大學(xué)出版社,2002.</p><p>  公茂法,黃鶴松,楊學(xué)蔚. MCS-51/52單片機(jī)原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2009.</p><p>  李玲等.單片機(jī)串行數(shù)據(jù)采集/傳輸模塊的設(shè)計(jì)[M].西安電子科技大學(xué)出版社,2004.</p><p>

87、  李林功.單片機(jī)原理與應(yīng)用:基于實(shí)例驅(qū)動(dòng)和Proteus仿真[M].科學(xué)出版社, 2011.</p><p>  鄧奕,馬雙寶,謝龍漢.Protel 99 SE原理圖與PCB設(shè)計(jì)[M].人民郵電出版社,2011.</p><p>  王雅芳.Protel 99 SE電路設(shè)計(jì)與制版從入門到提高[M]. 北京:機(jī)械工業(yè)出版社,2011.</p><p>  劉娟.單片

88、機(jī)C語言與PROTUES仿真技能實(shí)訓(xùn)[M]. 北京:中國電力出版社,2010.</p><p>  Tianyi Xu, Xiang Gen Xia. On Space-Time Code Design With a Conditional PIC Group Decoding [J]. Information Theory, IEEE Transactions on ,2011.</p><

89、p>  Xiaohan Zhao, Xiaoxiao Song, Xiao Wang, Yang Chen, Beixing Deng and Xing Li. Attacks against Network Coordinate System: Vulnerable PIC [J]. Computer Science and its Applications, 2008. CSA '08. International S

90、ymposium on, 2008. </p><p>  李學(xué)海.PIC單片機(jī)實(shí)用教程一提高篇[M].北京:北京航空航天大學(xué)出版社,2002.</p><p>  江和. PIC16系列單片機(jī)C語言程序設(shè)計(jì)與PROTEUS仿真[M].北京:北京航空航天大學(xué)出版社,2010.</p><p><b>  附件</b></p>&l

91、t;p>  //CCP2模塊的捕捉功能,設(shè)置為每16個(gè)上升沿捕捉一次,相當(dāng)于平均濾波,</p><p>  //目的是為了減小誤差</p><p>  //TMR1計(jì)數(shù)的分頻系數(shù)計(jì)算:假設(shè)電源為50Hz,即一個(gè)周期為20ms,16個(gè)周期為320ms</p><p>  //320ms=320000us,單片機(jī)用4MHz晶振,指令周期為1us,設(shè)TMR1的分頻系

92、數(shù)為</p><p>  //K:65536×K=320000</p><p>  //得K=4.88,取K=8,即TMR1的預(yù)分頻系數(shù)設(shè)為1:8</p><p>  #include<PIC.H></p><p>  __CONFIG (0x3F71);</p><p>  #define T

93、0_2MS6//TMR0的2ms延時(shí)常數(shù),8分頻</p><p>  #define LED_TWRD7//分別用來表示數(shù)碼管的位數(shù)輸出</p><p>  #define LED_WWRD6</p><p>  #define LED_QWRD5</p><p>  #define LED_BWRD4</p>

94、<p>  #define LED_SWRD3</p><p>  #define LED_GWRD2</p><p><b>  //全局變量定義</b></p><p>  char WWW,TW,WW,QW,BW,SW,GW;//BCD轉(zhuǎn)換時(shí)用到的位數(shù)表示</p><p>  char FUN,D1

95、,A;</p><p>  unsigned int TTZ,T0N;</p><p>  void CSH(void);</p><p>  void BCD(unsigned int);</p><p>  void interrupt INT_ISR(void);</p><p>  void DELAY

96、(unsigned int);</p><p>  void DELAY_I(unsigned int);</p><p>  //定義常數(shù)數(shù)組,實(shí)際上是以查表方式存于程序存儲(chǔ)器</p><p><b>  //顯示代碼</b></p><p>  const char LED_CODE[17]={0xc0,0xf9,0

97、xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};</p><p>  voidmain(void)</p><p><b>  {</b></p><p>  DELAY(10);</p><p><b>  CSH(

98、);</b></p><p><b>  while(1);</b></p><p><b>  }</b></p><p>  void interrupt INT_ISR(void)</p><p><b>  {long X;</b></p>

99、<p>  unsigned long Y;</p><p>  if (CCP2IF==1 && CCP2IE==1)</p><p>  {CCP2IF=0;</p><p>  if (FUN<2) FUN++;//只在FUN<3時(shí)才加1</p><p>  if (FUN==1)//

100、第1次CCP2中斷,開始TMR0計(jì)數(shù)</p><p>  {TMR1L=0;TMR1H=0;</p><p>  CCP2CON=0;</p><p>  CCP2CON=0b00000111;//每16個(gè)上升沿中斷</p><p><b>  CCP2IF=0;</b></p><p> 

101、 PORTD=0x0;//關(guān)閉顯示</p><p>  PORTB=0xFF;</p><p><b>  }</b></p><p>  else if (FUN==2)//第2次CCP2中斷,計(jì)算周期</p><p>  {TTZ=(CCPR2H<<8)|CCPR2L;</p>

102、<p>  //將雙字節(jié)數(shù)成為整型數(shù),TTZ為頻率計(jì)算用</p><p>  CCP2CON=0;</p><p><b>  CCP2IE=0;</b></p><p><b>  PEIE=0;</b></p><p>  X=2000000;</p><p&

103、gt;<b>  X=X/TTZ;</b></p><p><b>  Y=X;</b></p><p>  BCD(Y);//做BCD轉(zhuǎn)換</p><p>  D1=T0N=0;//準(zhǔn)備顯示頻率</p><p><b>  T0IE=1;</b></p

104、><p><b>  FUN=3;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (T0IF==1 && T0IE==1)</p><p><b>  {T0IF

105、=0;</b></p><p>  if (FUN==3)</p><p>  {TMR0=T0_2MS;</p><p>  PORTD=0X0;//關(guān)閉顯示</p><p>  PORTB=0xFF;</p><p>  switch (D1)</p><p>  {ca

106、se0://顯示十萬位</p><p>  PORTB=LED_CODE[TW];</p><p><b>  LED_TW=1;</b></p><p><b>  break;</b></p><p>  case1://顯示萬位</p><p>  PORTB=

107、LED_CODE[WW];</p><p><b>  LED_WW=1;</b></p><p><b>  break;</b></p><p>  case2://顯示千位</p><p>  PORTB=LED_CODE[QW];</p><p><b>

108、;  LED_QW=1;</b></p><p><b>  break;</b></p><p>  case3://顯示百位</p><p>  PORTB=LED_CODE[BW];</p><p><b>  LED_BW=1;</b></p><p>

109、;<b>  break;</b></p><p>  case4://顯示十位</p><p>  PORTB=LED_CODE[SW];</p><p><b>  LED_SW=1;</b></p><p><b>  break;</b></p>&l

110、t;p>  case5://顯示個(gè)位</p><p>  PORTB=LED_CODE[GW];</p><p><b>  LED_GW=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p>&

111、lt;p>  D1=D1+1;//DT=1,2,3,4,5,6分別顯示十萬位,萬位,千位,百位,十位,個(gè)位</p><p>  if (D1>5) D1=0;</p><p>  T0N=T0N+1;</p><p>  if (T0N>=200)</p><p>  {T0N=D1=FUN=0;//顯示次數(shù)到&

112、lt;/p><p>  PORTD=0x0;//關(guān)閉顯示</p><p>  PORTB=0xFF;</p><p>  DELAY_I(500);//滅500ms,以造成閃動(dòng)效果</p><p><b>  PIR2=0;</b></p><p><b>  PEIE=1;<

113、;/b></p><p><b>  CCP2IE=1;</b></p><p>  CCP2CON=0;</p><p>  CCP2CON=0b00000101;//每1個(gè)上升沿中斷</p><p><b>  CCP2IF=0;</b></p><p>  I

114、NTCON=0b11000000;//允許外圍中斷 </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

115、><b>  //初始化程序</b></p><p>  void CSH(void)</p><p><b>  {</b></p><p>  OPTION=0b10000010;//TMR0分頻系數(shù)1:8</p><p>  TRISB= 0b00000000;//RD口全部為輸

116、出</p><p>  TRISC= 0b00000010;//RC口除RC1/CCP2外全為輸出</p><p>  TRISD= 0b00000000;//RD口全為輸出</p><p>  T0N=D1=FUN=0;</p><p><b>  PIR2=0;</b></p><p&g

117、t;<b>  PEIE=1;</b></p><p>  CCP2IE=1;//允許捕捉中斷</p><p>  CCPR2H=CCPR2L=0;</p><p>  CCP2CON=0;</p><p>  CCP2CON=0b00000101;//每1個(gè)上升沿中斷</p><p>

118、;  TMR1H=TMR1L=0;</p><p>  T1CON= 0b00110001;//TMR1分頻比為1:8</p><p>  INTCON=0b11000000;//允許外圍中斷</p><p><b>  }</b></p><p>  //從R1雙字節(jié)數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)十萬位-個(gè)位:WWW,TW,

119、WW,QW,BW,SW,GW</p><p>  void BCD(unsigned int R1)</p><p><b>  {</b></p><p>  WWW=0,TW=0,WW=0;QW=0;BW=0;SW=0;GW=0;</p><p>  while(R1>=1000000)</p>

溫馨提示

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

最新文檔

評論

0/150

提交評論