2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

4、式能實現(xiàn)脈沖的檢測計算,頻率實時顯示在數(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è)計4</p><p>  2.1 總體設(shè)計4</p><p>  2.2 主控制模塊的方案選擇與設(shè)計4</p><p>  2.3 芯片介紹4

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

10、13</p><p>  3.2程序設(shè)計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 延時函

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>  參考文獻26</b></p><p><b>  附件27</b></

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

41、;/p><p><b>  選項寄存器:</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的時鐘源觸發(fā)邊沿選擇位。</p><p>  1 = 外部時鐘T0CKI下降沿觸發(fā)TMR0遞增。</p><p>  0 = 外部時鐘T0CKI上升沿觸發(fā)TMR0遞增。</p><p>  T0CS:TMR0的時鐘源選擇位。</p&g

43、t;<p>  1 = 外部脈沖信號作為TMR0的時鐘源。</p><p>  0 = 內(nèi)部指令周期作為TMR0的時鐘源。</p><p><b>  中斷控制寄存器</b></p><p>  T0IF:TMR0溢出標志位。</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)的只有一個比特位。由于TMR0模塊的外部輸入信號T0CKI與端口引腳RA4是復(fù)合在同一根腳上的。當(dāng)TMR0工作于計數(shù)器模式的時候,要求該引腳必須設(shè)定為輸入方式

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

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

48、p><p>  與TMR1相關(guān)的寄存器共有6個,如表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鐘與系統(tǒng)時鐘同步控制位。</p><p>  1 = 工作于計數(shù)器方式時,T

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

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

52、了相關(guān)事件,則單片機將發(fā)生事件的時刻TMR1值復(fù)制到CCPRXH、CCPRXL中。</p><p>  與CCP捕捉模式相關(guān)的寄存器,</p><p>  與CCP捕捉模式相關(guān)的寄存器工有15個,如表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腳送入的每一個脈沖下降沿。</p><p>  0101 = 捕捉模式,捕捉CCPX腳送入的每一個脈沖上升沿。</p><p>  0110 = 捕捉模式,捕捉CCPX腳

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

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

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

57、示電路設(shè)計</p><p>  為了增大此脈沖計數(shù)電路的應(yīng)用范圍所以采用了六位共陽8段數(shù)碼管可以顯示頻率的最大范圍為0 ~ 999999,數(shù)碼管顯示方式為動態(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è)計</p><p>  本設(shè)計采用Protel99SE[6-9]對電路進行原理圖設(shè)計。Protel99SE是一款應(yīng)用于Windows9X/2000/NT操作系統(tǒng)下的EDA設(shè)計軟件,采用設(shè)計庫管理模式,可以進行聯(lián)網(wǎng)設(shè)計,具有很強的數(shù)據(jù)交換能力和開放性及3D模擬功能,是一個32位的設(shè)計軟件,可以完成電路原理圖設(shè)計,印制電路板設(shè)計和可編程邏輯器件設(shè)計等工作,可以設(shè)計32個

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

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

61、僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。與匯編語言相比較,它更容易讓人理解,編寫速度快,兼容性好。</p><p><b>  3.2程序設(shè)計</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è)計采用LED動態(tài)顯示,選用六位一體的共陽數(shù)碼管。程序中啟動了兩個中斷:CCP2捕捉中斷與TMR0中斷,CCP2作為捕捉方式,捕捉脈沖時間,TMR0作為LED動態(tài)顯示刷新之用,時間間隔為2ms。</p><p>  

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

64、令FUN=1,并將CCP2改成每16個上升沿中斷。</p><p>  在時刻2,CCP2中斷(每16個上升沿中斷),得到了16個脈沖的時間間隔CCPR2H,CCPR2L,據(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>  動態(tài)顯示中,設(shè)置為沒2ms刷新一次,可得到TMR0 的分頻系數(shù)為1:8,延時常數(shù)為6.在TMR0中斷顯示程序中,通過switch語句,判斷全局變量D1的值確定當(dāng)前要顯示的是哪一位。</p><p>  在時刻3,動態(tài)顯示次數(shù)已到,令FUN = 0,回到初始狀態(tài)。</p>&l

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

88、機C語言與PROTUES仿真技能實訓(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單片機實用教程一提高篇[M].北京:北京航空航天大學(xué)出版社,2002.</p><p>  江和. PIC16系列單片機C語言程序設(shè)計與PROTEUS仿真[M].北京:北京航空航天大學(xué)出版社,2010.</p><p><b>  附件</b></p>&l

91、t;p>  //CCP2模塊的捕捉功能,設(shè)置為每16個上升沿捕捉一次,相當(dāng)于平均濾波,</p><p>  //目的是為了減小誤差</p><p>  //TMR1計數(shù)的分頻系數(shù)計算:假設(shè)電源為50Hz,即一個周期為20ms,16個周期為320ms</p><p>  //320ms=320000us,單片機用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ù),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ù)表示</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ù)組,實際上是以查表方式存于程序存儲器</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時才加1</p><p>  if (FUN==1)//

100、第1次CCP2中斷,開始TMR0計數(shù)</p><p>  {TMR1L=0;TMR1H=0;</p><p>  CCP2CON=0;</p><p>  CCP2CON=0b00000111;//每16個上升沿中斷</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中斷,計算周期</p><p>  {TTZ=(CCPR2H<<8)|CCPR2L;</p>

102、<p>  //將雙字節(jié)數(shù)成為整型數(shù),TTZ為頻率計算用</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;//準備顯示頻率</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://顯示個位</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分別顯示十萬位,萬位,千位,百位,十位,個位</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,以造成閃動效果</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個上升沿中斷</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個上升沿中斷</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)換為十進制數(shù)十萬位-個位: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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論