欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      基于51單片機的數(shù)字頻率計的設(shè)計概要

      時間:2019-05-14 02:04:33下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《基于51單片機的數(shù)字頻率計的設(shè)計概要》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《基于51單片機的數(shù)字頻率計的設(shè)計概要》。

      第一篇:基于51單片機的數(shù)字頻率計的設(shè)計概要

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書 前言

      頻率測量是電子學(xué)測量中最為基本的測量之一。由于頻率信號抗干擾性強,易于傳輸,因此可以獲得較高的測量精度。隨著數(shù)字電子技術(shù)的發(fā)展,頻率測量成為一項越來越普遍的工作,測頻原理和測頻方法的研究正受到越來越多的關(guān)注。

      1.1頻率計概述

      數(shù)字頻率計是計算機、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測量儀器。它是一種用十進制數(shù)字顯示被測信號頻率的數(shù)字測量儀器。它的基本功能是測量正弦信號、方波信號及其他各種單位時間內(nèi)變化的物理量。在進行模擬、數(shù)字電路的設(shè)計、安裝、調(diào)試過程中,由于其使用十進制數(shù)顯示,測量迅速,精確度高,顯示直觀,經(jīng)常要用到頻率計。傳統(tǒng)的頻率計采用測頻法測量頻率,通常由組合電路和時序電路等大量的硬件電路組成,產(chǎn)品不但體積大,運行速度慢而且測量低頻信號不準確。本次采用單片機技術(shù)設(shè)計一種數(shù)字顯示的頻率計,測量準確度高,響應(yīng)速度快,體積小等優(yōu)點。

      1.2頻率計發(fā)展與應(yīng)用

      在我國,單片機已不是一個陌生的名詞,它的出現(xiàn)是近代計算機技術(shù)的里程碑事件。單片機作為最為典型的嵌入式系統(tǒng),它的成功應(yīng)用推動了嵌入式系統(tǒng)的發(fā)展。單片機已成為電子系統(tǒng)的中最普遍的應(yīng)用。單片機作為微型計算機的一個重要分支,其應(yīng)用范圍很廣,發(fā)展也很快,它已成為在現(xiàn)代電子技術(shù)、計算機應(yīng)用、網(wǎng)絡(luò)、通信、自動控制與計量測試、數(shù)據(jù)采集與信號處理等技術(shù)中日益普及的一項新興技術(shù),應(yīng)用范圍十分廣泛。其中以AT89S52為內(nèi)核的單片機系列目前在世界上生產(chǎn)量最大,派生產(chǎn)品最多,基本可以滿足大多數(shù)用戶的需要。

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書 系統(tǒng)總體設(shè)計

      2.1測頻的原理

      測頻的原理歸結(jié)成一句話,就是“在單位時間內(nèi)對被測信號進行計數(shù)”。被測信號,通過輸入通道的放大器放大后,進入整形器加以整形變?yōu)榫匦尾ǎ⑺腿胫鏖T的輸入端。由晶體振蕩器產(chǎn)生的基頻,按十進制分頻得出的分頻脈沖,經(jīng)過基選通門去觸發(fā)主控電路,再通過主控電路以適當(dāng)?shù)木幋a邏輯便得到相應(yīng)的控制指令,用以控制主門電路選通被測信號所產(chǎn)生的矩形波,至十進制計數(shù)電路進行直接計數(shù)和顯示。若在一定的時間間隔T內(nèi)累計周期性的重復(fù)變化次數(shù)N,則頻率的表達式為式:

      Nfx=

      TN頻率計數(shù)器嚴格地按照f=公式進行測頻。由于數(shù)字測量的離散性,被測頻率在計數(shù)

      T器中所記進的脈沖數(shù)可有正一個或負一個脈沖的?1量化誤差,在不計其他誤差影響的情況下,測量精度將為:

      ?(fA)?1N

      應(yīng)當(dāng)指出,測量頻率時所產(chǎn)生的誤差是由N和T倆個參數(shù)所決定的,一方面是單位時間內(nèi)計數(shù)脈沖個數(shù)越多時,精度越高,另一方面T越穩(wěn)定時,精度越高。為了增加單位時間內(nèi)計數(shù)脈沖的個數(shù),一方面可在輸入端將被測信號倍頻,另一方面可增加T來滿足,為了增加T的穩(wěn)定度,只需提高晶體振蕩器的穩(wěn)定度和分頻電路的可靠性就能達到。

      上述表明,在頻率測量時,被測信號頻率越高,測量精度越高。

      2.2總體思路

      頻率計是我們經(jīng)常會用到的實驗儀器之一,頻率的測量實際上就是在單位時間內(nèi)對信號進行計數(shù),計數(shù)值就是信號頻率。本文介紹了一種基于單片機AT89S52 制作的頻率計的設(shè)計方法,所制作的頻率計測量比較高的頻率采用外部十分頻,測量較低頻率值時采用單片機直接計數(shù),不進行外部分頻。該頻率計實現(xiàn)10HZ~2MHZ的頻率測量,而且可以實現(xiàn)量程自動切換功能,四位共陽極動態(tài)顯示測量結(jié)果,可以測量正弦波、三角波及方波等各種波形的頻率值。

      2.3具體模塊

      根據(jù)上述系統(tǒng)分析,頻率計系統(tǒng)設(shè)計共包括五大模塊:單片機控制模塊、電源模塊、放大整形模塊、分頻模塊及顯示模塊。各模塊作用如下:

      1、單片機控制模塊:以AT89C51單片機為控制核心,來完成它待測信號的計數(shù),譯

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      碼,和顯示以及對分頻比的控制。利用其內(nèi)部的定時/計數(shù)器完成待測信號周期/頻率的測量。

      2、電源模塊:為整個系統(tǒng)提供合適又穩(wěn)定的電源,主要為單片機、信號調(diào)理電路以及分頻電路提供電源,電壓要求穩(wěn)定、噪聲小及性價高的電源。

      3、放大整形模塊:放大電路是對待測信號的放大,降低對待測信號幅度的要求。整形電路是對一些不是方波的待測信號轉(zhuǎn)化成方波信號,便于測量。

      4、分頻模塊:考慮單片機外部計數(shù),使用12 MHz時鐘時,最大計數(shù)速率為500 kHz,因此需要外部分頻。分頻電路用于擴展單片機頻率測量范圍,并實現(xiàn)單片機頻率測量使用統(tǒng)一信號,可使單片機測頻更易于實現(xiàn),而且也降低了系統(tǒng)的測頻誤差。

      5、顯示模塊:顯示電路采用四位共陽極數(shù)碼管動態(tài)顯示,為了加大數(shù)碼管的亮度,使用4個PNP三極管進行驅(qū)動,便于觀測。

      綜合以上頻率計系統(tǒng)設(shè)計有單片機控制模塊、電源模塊、放大整形模塊、分頻模塊及顯示模塊等組成,頻率計的總體設(shè)計框圖如圖2所示。

      信號放大整形分頻電路微控制器AT89S52數(shù)碼管顯示驅(qū)動電路5V電源

      圖2.1 頻率計總體設(shè)計框圖

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書 系統(tǒng)硬件設(shè)計

      3.1 AT89C51主控制器模塊

      3.1.1 AT89C51的介紹

      AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS 8位微處理器,俗稱單片機。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。

      AT89C51引腳如下圖所示。

      圖3.1 AT89C51引腳圖

      3.1.2 復(fù)位電路

      復(fù)位電路是維持單片機最小系統(tǒng)運行的基本模塊。復(fù)位電路如下圖所示。

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      圖3.2 復(fù)位電路

      高頻率的時鐘有利于程序更快的運行,也有可以實現(xiàn)更高的信號采樣率,從而實現(xiàn)更多的功能。但是告訴對系統(tǒng)要求較高,而且功耗大,運行環(huán)境苛刻??紤]到單片機本身用在控制,并非高速信號采樣處理,所以選取合適的頻率即可。合適頻率的晶振對于選頻信號強度準確度都有好處,本次設(shè)計單片機實物具有11.0592M的晶振頻率。AT89C51單片機最小系統(tǒng)如下圖所示。

      圖3.3 單片機最小系統(tǒng)原理圖

      3.2 分頻設(shè)計模塊

      分頻電路用于擴展單片機頻率測量范圍,并實現(xiàn)單片機頻率和周期測量使用統(tǒng)一信號,可使單片機測頻更易于實現(xiàn),而且也降低了系統(tǒng)的測頻誤差。

      本頻率計的設(shè)計以AT89C51單片機為核心,利用他內(nèi)部的定時/計數(shù)器完成待測信號

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      周期/頻率的測量。單片機AT89C51內(nèi)部具有2個16位定時計數(shù)器,定時/計數(shù)器的工作可以由編程來實現(xiàn)定時、計數(shù)和產(chǎn)生計數(shù)溢出時中斷要求的功能。在定時器工作方式下,在被測時間間隔內(nèi),每來一個機器周期,計數(shù)器自動加1(使用12 MHz時鐘時,每1μs加1),這樣以機器周期為基準可以用來測量時間間隔。在計數(shù)器工作方式下,加至外部引腳的待測信號發(fā)生從1到0的跳變時計數(shù)器加1,這樣在計數(shù)閘門的控制下可以用來測量待測信號的頻率。外部輸入在每個機器周期被采樣一次,這樣檢測一次從1到0的跳變至少需要2個機器周期(24個振蕩周期),所以最大計數(shù)速率為時鐘頻率的1/24(使用12 MHz時鐘時,最大計數(shù)速率為500 kHz),因此采用74LS161進行外部十分頻使測頻范圍達到2MHz。為了測量提高精度,當(dāng)被測信號頻率值較低時,直接使用單片機計數(shù)器計數(shù)測得頻率值;當(dāng)被測信號頻率值較高時采用外部十分頻后再計數(shù)測得頻率值。這兩種情況使用74LS151進行通道選擇,由單片機先簡單測得被測信號是高頻信號還是低頻信號,然后根據(jù)信號頻率值的高低進行通道的相應(yīng)導(dǎo)通,繼而測得相應(yīng)頻率值。

      3.3 顯示模塊

      顯示模塊由頻率值顯示電路和量程轉(zhuǎn)換指示電路組成。頻率值顯示電路采用四位共陽極數(shù)碼管動態(tài)顯示頻率計被測數(shù)值,使用三極管8550進行驅(qū)動,使數(shù)碼管亮度變亮,便于觀察測量。量程轉(zhuǎn)換指示電路由紅、黃、綠三個LED分別指示Hz、KHz及MHz檔,使讀數(shù)簡單可觀。

      3.3.1 數(shù)碼管介紹

      常見的數(shù)碼管由七個條狀和一個點狀發(fā)光二極管管芯制成,叫七段數(shù)碼管,根據(jù)其結(jié)構(gòu)的不同,可分為共陽極數(shù)碼管和共陰極數(shù)碼管兩種。根據(jù)管腳資料,可以判斷使用的是何種接口類型。

      LED數(shù)碼管中各段發(fā)光二極管的伏安特性和普通二極管類似,只是正向壓降較大,正向電阻也較大。在一定范圍內(nèi),其正向電流與發(fā)光亮度成正比。由于常規(guī)的數(shù)碼管起輝電流只有1~2 mA,最大極限電流也只有10~30 mA,所以它的輸入端在5 V電源或高于TTL高電平(3.5 V)的電路信號相接時,一定要串加限流電阻,以免損壞器件。

      3.3.2 頻率值顯示電路

      數(shù)碼管電路設(shè)計不加三極管驅(qū)動時,數(shù)碼管顯示數(shù)值看不清,不便于頻率值的測量與調(diào)試。因此加入三極管8550進行驅(qū)動數(shù)碼管。使用4位數(shù)碼管進行頻率值顯示,如果選擇共陰極數(shù)碼管顯示,則需要8個三極管進行驅(qū)動,而采用共陽極數(shù)碼管則需要4個三極

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      管驅(qū)動,為了節(jié)約成本,因此選用共陽極數(shù)碼管進行動態(tài)顯示,具體數(shù)碼管設(shè)計電路如圖所示。

      圖3.4 數(shù)碼管顯示電路

      3.3.3 檔位轉(zhuǎn)換指示電路

      根據(jù)設(shè)計要求,采用紅、黃、綠三個LED分別指示Hz、KHz及MHz檔,根據(jù)被測信號的頻率值大小,可以自動切換量程單位,無需手動切換,便于測量和讀數(shù),簡單方便。具體設(shè)計的檔位轉(zhuǎn)換LED指示電路如圖所示。

      圖3.5 LED檔位指示電路

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書 系統(tǒng)軟件設(shè)計

      系統(tǒng)軟件設(shè)計主要采用模塊化設(shè)計,敘述了各個模塊的程序流程圖,并介紹了軟件Keil和Proteus的使用方法和調(diào)試仿真。

      4.1 軟件模塊設(shè)計

      系統(tǒng)軟件設(shè)計采用模塊化設(shè)計方法。整個系統(tǒng)由初始化模塊,信號頻率測量模塊,自動量程轉(zhuǎn)換和顯示模塊等模塊組成。系統(tǒng)軟件流程如圖所示。

      頻率計開始工作或者完成一次頻率測量,系統(tǒng)軟件都進行測量初始化。測量初始化模塊設(shè)置堆棧指針(SP)、工作寄存器、中斷控制和定時/計數(shù)器的工作方式。定時/計數(shù)器的工作首先被設(shè)置為計數(shù)器方式,即用來測量信號頻率。

      開始系統(tǒng)初始化頻率測量頻率是否超過1KHzY硬件十分頻N計數(shù)器計數(shù)測頻率值測量數(shù)據(jù)顯示

      圖4.1 系統(tǒng)軟件流程總圖

      首先定時/計數(shù)器的計數(shù)寄存器清0,運行控制位TR置1,啟動對待測信號的計數(shù)。計數(shù)閘門由軟件延時程序?qū)崿F(xiàn),從計數(shù)閘門的最小值(即測量頻率的高量程)開始測量,計數(shù)閘門結(jié)束時TR清0,停止計數(shù)。計數(shù)寄存器中的數(shù)值經(jīng)過數(shù)制轉(zhuǎn)換程序從十六進制數(shù)轉(zhuǎn)換為十進制數(shù)。判斷該數(shù)的最高位,若該位不為0,滿足測量數(shù)據(jù)有效位數(shù)的要求,測量值和量程信息一起送到顯示模塊;若該位為0,將計數(shù)閘門的寬度擴大10倍,重新對待測信號的計數(shù),直到滿足測量數(shù)據(jù)有效位數(shù)的要求。定時/計數(shù)器的工作被設(shè)置為定時器方式,定時/計數(shù)器的計數(shù)寄存器清0,在判斷待測信號的上跳沿到來后,運行控制位TR

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      置為1,以單片機工作周期為單位進行計數(shù),直至信號的下跳沿到來,運行控制位TR清0,停止計數(shù)。16位定時/計數(shù)器的最高計數(shù)值為65535,當(dāng)待測信號的頻率較低時,定時/計數(shù)器可以對被測信號直接計數(shù),當(dāng)被測信號的頻率較高時,先由硬件十分頻后再有定時/計數(shù)器對被測信號計數(shù),加大測量的精度和范圍。

      4.2 應(yīng)用軟件簡介

      此設(shè)計需要在Keil軟件平臺上完成程序的調(diào)試,在Proteus軟件平臺上完成仿真顯示。因此介紹如何使用Keil和Proteus進行軟件的仿真。

      4.2.1 Keil簡介

      Keil軟件是目前最流行開發(fā)系列單片機的軟件,Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。而Proteus與其它單片機仿真軟件不同的是,它不僅能仿真單片機CPU的工作情況,也能仿真單片機外圍電路或沒有單片機參與的其它電路的工作情況。因此在仿真和程序調(diào)試時,關(guān)心的不再是某些語句執(zhí)行時單片機寄存器和存儲器內(nèi)容的改變,而是從工程的角度直接看程序運行和電路工作的過程和結(jié)果。對于這樣的仿真實驗,從某種意義上講,是彌補了實驗和工程應(yīng)用間脫節(jié)的矛盾和現(xiàn)象[16]。

      4.2.2 protues簡介

      protues是Labcenter公司出品的電路分析、實物仿真系統(tǒng),而KEIL是目前世界上最好的51單片機匯編和C語言的集成開發(fā)環(huán)境。他支持匯編和C的混合編程,同時具備強大的軟件仿真和硬件仿真功能[17]。Protues能夠很方便的和KEIL、Matlab IDE等編譯模擬軟件結(jié)合。Proteus提供了大量的元件庫有RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件,它可以仿真單片機和周邊設(shè)備,可以仿真51系列、AVR,PIC等常用的MCU,與keil和MPLAB不同的是它還提供了周邊設(shè)備的仿真,只要給出電路圖就可以仿真。

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書 系統(tǒng)仿真

      5.1 系統(tǒng)總電路圖

      根據(jù)課程設(shè)計任務(wù)書的要求,本次課設(shè)設(shè)計的系統(tǒng)總電路圖如下圖所示。

      圖5.1 系統(tǒng)總電路圖

      5.2 系統(tǒng)仿真結(jié)果

      系統(tǒng)仿真結(jié)果圖如下圖所示,由圖中可以看出,LCD顯示的值為900Hz,LED顯示的值為886Hz,在誤差允許的范圍內(nèi),二者近似相等,符合課設(shè)任務(wù)書要求。

      圖5.2 系統(tǒng)仿真結(jié)果圖

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書 系統(tǒng)硬件調(diào)試

      6.1頻率計的測試 如圖6.1為頻率計的測試實物拍攝圖。其中函數(shù)信號發(fā)生器輸出頻率為1000Hz、幅值為5V的方波信號時,數(shù)字頻率計測得的頻率為996Hz,在誤差允許的范圍內(nèi),二者相等,符合課設(shè)任務(wù)書要求。

      圖6.1 頻率計測試的實物拍攝圖

      6.2 低頻方波信號發(fā)生器的測試

      圖6.2 低頻信號發(fā)生器測試的實物拍攝圖

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      如圖6.2為低頻信號發(fā)生器測試的實物拍攝圖。其中低頻方波信號發(fā)生器輸出頻率的LED顯示值為400Hz,經(jīng)過示波器檢測得到幅值為4.88V,頻率為396.2Hz,在誤差允許的范圍內(nèi),二者相等,符合課設(shè)任務(wù)書要求。

      6.3 低頻方波信號發(fā)生器、數(shù)字頻率計的綜合測試

      如圖6.3為低頻方波信號發(fā)生器檢測頻率計的實物拍攝圖。其中低頻方波信號發(fā)生器輸出頻率的LED顯示值為300Hz,經(jīng)過數(shù)字頻率計檢測得到頻率的LCD顯示值為297Hz,在誤差允許的范圍內(nèi),二者相等,符合課設(shè)任務(wù)書要求。

      圖6.3 低頻方波信號發(fā)生器檢測頻率計的實物拍攝圖

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書 心得體會

      本次設(shè)計的過程和結(jié)果都給了我很多感觸。初次拿到課程設(shè)計的題目時,只是對頻率有一定的理解,至于怎么設(shè)計,幾乎沒有什么想法。在同學(xué)的指導(dǎo)和講解下,對頻率計的介紹有了一定的了解。后來通過不斷的學(xué)習(xí)和查閱資料,終于清楚的知道了頻率計的基本情況和設(shè)計的方案有了一定的理解。通過對各種性能的比較和所學(xué)知識能實現(xiàn)的狀況,對本次課程設(shè)計進行了設(shè)計,最后進行的是課設(shè)報告的撰寫。

      通過本次設(shè)計,讓我學(xué)會了從系統(tǒng)的高度來考慮設(shè)計的方方面面,對電路的設(shè)計和研究有了更深刻的體會;讓我了解到軟件的設(shè)計是建立在對硬件了解的基礎(chǔ)上的,特別是對單片機的功能,引腳定義和內(nèi)部結(jié)構(gòu)要有較為詳細的了解,此外對電路板中所用到的各個芯片的引腳和功能,也要進行了解;在編寫程序時,進行模塊化設(shè)計,以嚴謹?shù)膽B(tài)度進行編程,避免出現(xiàn)低級錯誤,養(yǎng)成為程序添加注釋和說明的好習(xí)慣,以便自己的修改和閱讀者輕松的了解程序的各部分及整體的功能。

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      參考文獻

      [1]李華.單片機實用接口技術(shù)[M].航空航天大學(xué)出版社.2006.[2]張鵬.王雪梅.單片機原理與應(yīng)用實例教程[M].海軍出版社.2007.[3]赫建國等.單片機在電子電路設(shè)計中的應(yīng)用[M].清華大學(xué)出版社.2005.[4]康華光.電子技術(shù)基礎(chǔ)(模擬部分)[M].高等教育出版社.1998. [5]吳清平.單片機原理與應(yīng)用實例教程[M].海軍出版社.2008.武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      #include #define uint unsigned int #define uchar unsigned char signed long count=0;int i=0, x=0;sbit RS=P1^0;sbit RW=P1^1;sbit E=P2^5;sbit dula=P2^6;sbit wela=P2^7;unsigned int shu[]={0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39};//數(shù)字的ASCII碼放在數(shù)組中

      uchar code table[]=“made by Li Houmin”;uchar num;

      void delay(int count){ int p;

      //延時

      while(count--)for(p=0;p<110;p++);}

      void write_com(unsigned int n){

      RS=0;P0=n;delay(5);

      //寫指令

      E=1;delay(5);

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      E=0;}

      void write_data(unsigned char t){ RS=1;P0=t;delay(5);

      //寫數(shù)據(jù)

      E=1;delay(5);E=0;}

      void time1_int(void)interrupt 3 { TH1=TL1=0;TR1=1;x++;}

      void time0_int(void)interrupt 1 { TH0=(65535-50000)/256;//裝初值,定時50ms TL0=(65535-50000)%256;i++;

      if(i==20){ i=0;//1s時間已到

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      TR1=0;//關(guān)閉計數(shù)器1 count=65536*x+256*TH1+TL1;x=0;//重新裝初值 //重新啟動計數(shù)器器1 TH1=TL1=0;TR1=1;} }

      void show(){

      write_com(0x85);write_data(shu[count/100000]);delay(5);

      //在第一行第五列顯示十萬位

      write_com(0x86);write_data(shu[(count/10000)%10]);delay(5);write_com(0x87);write_data(shu[(count/1000)%10]);delay(5);write_com(0x88);write_data(shu[(count/100)%10]);delay(5);write_com(0x89);write_data(shu[(count/10)%10]);delay(5);write_com(0x8a);write_data(shu[count%10]);delay(5);

      //顯示萬位 //顯示千位 //顯示百位

      //顯示十位

      //顯示個位

      write_com(0x83);write_data(0x66);delay(5);//顯示頻率表示的字符f write_com(0x84);write_data(0x3d);delay(5);//顯示字符= write_com(0x8b);write_data(0x48);delay(5);//顯示字母H write_com(0x8c);write_data(0x7a);delay(5);//顯示字母z write_com(0x80+0x40);

      }

      void main()

      //第二行顯示

      for(num=0;num<17;num++){ write_data(table[num]);delay(5);}

      武漢理工大學(xué)《單片機原理與應(yīng)用》課程設(shè)計說明書

      { TMOD=0x51;

      //T1計數(shù)、T2定時,且都工作在方式1 TH1=0x00;TL1=0x00;TH0=(65535-50000)/256;//裝初值,定時50ms TL0=(65535-50000)%256;EA=1;

      ET0=1;ET1=1;

      TR0=1;TR1=1;

      dula=0;wela=0;RW=0;E=0;write_com(0x01);write_com(0x38);write_com(0x0c);write_com(0x06);while(1){ show();

      delay(5);} }

      //開總中斷

      //中斷允許

      //啟動定時器

      //顯示清零,數(shù)據(jù)指針清零

      //設(shè)置16X2顯示5X7點陣,8位數(shù)據(jù)口

      //設(shè)置開顯示,顯示光標(biāo)且閃爍

      //寫一個字符后地址指針加1

      第二篇:簡單單片機數(shù)字頻率計設(shè)計

      課程設(shè)計報告

      簡易頻率計的設(shè)計

      電子科學(xué)XX學(xué)院

      姓名:專業(yè):通信工程學(xué)號:2013

      2015年12月

      摘要 本系統(tǒng)基于單片機來實現(xiàn)核心的頻率計數(shù)功能,并能夠?qū)崿F(xiàn)測量中的量程自動切換。實現(xiàn)了對1Hz~1MHz的正弦波、方波以及脈寬不小于100?s的脈沖信號頻率測量,以及系統(tǒng)的自校功能??紤]到不同的測量方法對于不同頻率測量帶來的誤差,對于頻率為1Hz~1KHz的信號使用測頻法,對于頻率1KHz~1MHz的信號采用測周法,用單片機實現(xiàn)功能自動轉(zhuǎn)換。放大整形電路使用了基本的晶體管放大模塊,結(jié)合施密特觸發(fā)器74HC132,使輸出信號為TTL電平信號。此外本頻率計實現(xiàn)了刷新時間1~10S連續(xù)可調(diào),步進值為1S,最終單片機在7段數(shù)碼管上顯示測量的頻率值。系統(tǒng)設(shè)計達到了各項目標(biāo)要求。

      關(guān)鍵詞:頻率測量;等精度測量;放大整形電路

      目錄

      一、引言...................................................................................3

      二、系統(tǒng)方案...........................................................................4

      1.方案選擇...........................................................................4 2.方案確定...........................................................................6

      三、理論分析與設(shè)計...............................................................6

      四、電路與程序設(shè)計...............................................................8

      五、設(shè)計總結(jié)..............................................................................9

      六、參考文獻...........................................錯誤!未定義書簽。

      一、引言 頻率的測量在電子測量技術(shù)中是一項重要的內(nèi)容。數(shù)字頻率計是一種用十進制數(shù)字顯示被測信號頻率的數(shù)字測量儀器,其基本功能是測量正弦波、方波、脈沖等周期信號的頻率并將其顯示出來,用途十分廣泛。頻率計的設(shè)計需要結(jié)合模擬電路、數(shù)字電路來綜合搭建一個簡單的電子系統(tǒng),要求功能完全、測量準確。對于方案的選擇、實際電路的調(diào)試提出了一定挑戰(zhàn)。

      二、系統(tǒng)方案

      頻率的測量方法可分為模擬測量法和數(shù)字測量法。

      模擬測量法利用諧振特性進行測量,與標(biāo)準頻率信號比較形成的李薩如圖形進行測量。但是其系統(tǒng)較為復(fù)雜,且諧振電路較為復(fù)雜,精度難以保證。

      現(xiàn)在的頻率測量方法都是基于數(shù)字測量,具有較高的精度。基本的頻率測量方法有測頻法和測周法。

      1.方案選擇

      1)測頻法

      頻率的定義為單位時間內(nèi)周期信號發(fā)生的次數(shù)。依據(jù)這一定義,要測量頻率,即可以通過對一段時間Ts內(nèi)信號發(fā)生的次數(shù)N計數(shù)得到。測量時間基準可以用單片機來產(chǎn)生,計數(shù)也可以通過單片機的運算功能實現(xiàn)。測頻法的原理電路如圖1所示。被測信號經(jīng)整形變換得到周期為Tx的被測脈沖串,電平轉(zhuǎn)換為TTL電平,送入單片機中。利用標(biāo)準時鐘信號分頻得到的時間基準信號控制門控電路,在閘門開啟的有效時間Ts內(nèi)允許被測脈沖串通過閘門電路進行計數(shù),則被測信號頻率fx可以表示為:

      fx?N/Ts

      分析考慮誤差公式:

      ?fx?N?fs?? fxNfs4 UsOTxtUaOTt

      圖1測頻法原理圖

      不考慮單片機產(chǎn)生的時間基準的精度對頻率測量的影響。根據(jù)這一測量原理,閘門信號開啟和關(guān)閉這一時間段Ts內(nèi)N的計數(shù)可能會帶來誤差?N,其最大值為?1。當(dāng)誤差減小時,閘門時間即基準頻率自身的準確度對測量結(jié)果的影響是不可忽略的??紤]頻率較低的情形(如1Hz時),某一閘門開啟的時間段內(nèi)經(jīng)變換后與信號等頻率的脈沖串沒有經(jīng)過閘門,則計數(shù)值少1。若要減少?N/N帶來誤差,就必須增大N,在被測信號頻率較低的情況下,則要求閘門開放時間很長(即在fs不變的條件下,要求分頻系數(shù)大)。若被測頻率很低,為達到一定的測量精度,就要求閘門開放時間大得難以忍受,即一次測量過程的時間很長,失去了使用意義。

      例如若被測頻率為10Hz,精度要求為?0.01%,則最短閘門開放時間為

      N??Nfx/?f?1/0.0001?10000

      Ts?N/fx?1000s

      像這樣的測量周期是根本不可能接受的,可見頻率測量法不適用于低頻信號的測量,在同樣精度下10MHz的測量僅需要1ms,即對于高頻信號適宜用此方法測量。

      2)測周法

      測周法的基本結(jié)構(gòu)與測頻法是相同的,只是把晶體震蕩產(chǎn)生的基準信號與被測信號的位置互換了一下。由此得

      T?N/Mf??NT?/M

      計數(shù)值N與被測信號的周期成正比,N反映了M個信號周期的平均值。利用周期測量的方法在一定信號頻率范圍內(nèi),通過調(diào)節(jié)分頻系數(shù)M,可以較好地解決測量精度與實時性的矛盾。由上式可得 ?T/T??N/N??T?/T???N/TMf???T?/T?

      第二項誤差取決于晶體穩(wěn)定度,第一項為計數(shù)器的量化誤差,故該項主要取決于N的大小。在平均周期測量法中,N值得大小與測量時間的長短成正比,可根據(jù)測量精度要求而定。假定?N/N的允許誤差為?0.001%,則N?105,在T?選定測量時間為105T?,若T??2?s,則測量時間為0.2s。對于不同范圍的被測周期信號,可以通過調(diào)節(jié)分頻系數(shù)M的大小,達到相近的測量精度,也就是有相近的測量時間,且不會太長。

      當(dāng)然,對于高頻信號,周期法就需要很大分頻系數(shù)M,增加了硬件及軟件的復(fù)雜性,不宜采用。

      2.方案確定

      以上兩種種方法中,測頻法和測周法分別表現(xiàn)出在低頻和高頻情況下的明顯不足。因此我們考慮將兩種方法相結(jié)合,利用分段法分別進行測頻和測周。這就要求我們找到一個合適的臨界頻率fM,使得fx?fM時用測周法測量,fx?fM用測頻法測量。這里我們選定fM?1KHz。

      圖2系統(tǒng)總體設(shè)計框圖

      三、理論分析與設(shè)計

      根據(jù)題目要求,我們將簡易頻率要完成的設(shè)計目標(biāo)分成以下幾個功能模塊:

      1)輸入信號的放大整形; 2)單片機對信號頻率的測量; 3)單片機的自校功能; 4)測量方式的設(shè)定功能。下面分別對這些功能模塊進行理論分析:

      1)輸入信號的放大整形: 要求我們對輸入信號類型為正弦波、方波、脈沖波三種信號(幅度變化范 圍:0.5V~5V,頻率變化范圍:1Hz~1MHz,脈沖信號的脈沖寬度:大

      于100μs)進行放大整形,得到與原信號同頻率的方波信號或脈沖信號。同時進行TTL電平轉(zhuǎn)換,以備下一步輸入單片機的I/O口進行頻率的測量。常用的放大整形模塊有多種。這里我們的輸入信號其幅度已經(jīng)較大了,所以不用考慮對微小信號的放大,一般的放大電路足以滿足要求。另外輸入信號的頻率變化范圍也不是很高,現(xiàn)在常用的放大元件(集成運放,三極管等)都能達到要求。

      2)單片機對信號頻率的測量;

      由之前的分析,不論是測頻法還是測周法,單片機核心的功能就是一個計數(shù)器的功能,在閘門時間內(nèi)對所測信號上升沿進行計數(shù),經(jīng)過計算,得到頻率測量值,同時進行輸出顯示。這一過程用軟件語言來編寫,思路上是比較容易的。51單片機提供的兩個定時器計數(shù)器T0,T1即可完成設(shè)計。具體來說,可以用用定時器T1產(chǎn)生時間基準信號,用計數(shù)器T0作為被測信號的計數(shù)器。由于被測信號已經(jīng)被整形為符合TTL電平要求的脈沖,所以我們可以用中斷處理的方法,讓T0工作在下邊沿中斷計數(shù)的模式下。用T1來產(chǎn)生25ms的定時,用軟件計數(shù)的方法實現(xiàn)閘門信號的產(chǎn)生。

      顯示鍵盤單片機輸入信號中斷口T0計數(shù)T1定時計算頻率 圖3單片機工作框圖

      3)單片機的自校功能

      自校是在時基單元提供的閘門時間內(nèi),對時標(biāo)信號(頻率較高的標(biāo)準頻率信號)進行計數(shù)的一種功能,用以檢查頻率計的整機邏輯功能是否正常。由于這時的閘門信號和時標(biāo)信號由同一個晶振的標(biāo)準信號經(jīng)過分頻得到,這時的計數(shù)結(jié)果是已知的。通過測量頻率,如果顯示出來的頻率和這一時標(biāo)信號的頻率是一致的,那么說明整機的功能達到了要求,可以工作。

      另外,在自校狀態(tài)下,由于閘門信號與時標(biāo)信號是同一晶振產(chǎn)生的,同步關(guān)系始終成立,所以頻率計不存在量化誤差(?1誤差)。

      題目要求單片機用1MHz進行自校,但是這里由于我們采用了兩個頻率段的測量,也就是采用了兩個閘門時間,因此要用兩個時標(biāo)信號來進行自校。實現(xiàn)的原理如圖X。

      自校功能選定產(chǎn)生時標(biāo)信號測量頻率頻率與時標(biāo)信號相等否顯示自校結(jié)果為ERROR是顯示自校結(jié)果為OK結(jié)束 圖4自校功能原理框圖

      3)測量方式的設(shè)定功能

      系統(tǒng)設(shè)計的要求之一是要滿足顯示方式為十進制數(shù)字顯示,顯示刷新時 間1~10秒連續(xù)可調(diào)。也就是說單片機輸出顯示的信號要滿足顯示功能可 以設(shè)定,刷新時間可以調(diào)控。這里我們在頻率計系統(tǒng)設(shè)計中加入一個測量 方式的控制按鍵,按鍵后用鍵盤設(shè)置刷新時間值。這樣的功能用單片機程 序來編寫是比較容易實現(xiàn)的,在此不做過多討論。

      四、電路與程序設(shè)計

      (1)放大整形電路設(shè)計

      VDDXFG15V1.0uF0R42k|?2C20VDD5VVDDR120k|?C1624VDDXSC1Ext Trig+_A+_+B_03718U3U141AVCC1B4A1Y4B2A4Y2B3A2Y3BGND3Y11.0uFVEEVEER620k|?OP37AH3-5VR220k|?0074LS00D5 圖5放大整形電路圖 由于輸入信號最低幅值為0.5V,所以要對其先進行放大,再整形。頻率計的對輸入阻抗的要求比較高。因此第一步信號輸入要求輸入阻抗很大以降低對信號源內(nèi)阻的要求。故采用OP37運算放大器構(gòu)成反向輸入比例放大電路對信號進行放大。

      后級采通過74LS00與非門對輸入電平取非,進行放大信號的整形,得到一個可符合單片機測頻要求電平的矩形波。(2)單片機程序流程設(shè)計

      初始化功能設(shè)定測量頻率自檢測周法測量顯示自檢結(jié)果測定頻率范圍在1Hz~1KHz否測頻法測量是顯示輸出 圖6單片機流程圖

      五、設(shè)計結(jié)果

      經(jīng)過方案的不斷調(diào)整,我們最終按照設(shè)計方案進行了硬件電路的焊接、單片機程序的編寫,分別對放大整形電路的性能、單片機測頻率的功能實現(xiàn)進行了調(diào)試,兩部分均能滿足題目要求之后,進行了系統(tǒng)聯(lián)調(diào)。

      在單片機功能實現(xiàn)的調(diào)試過程中,我們用實驗室的DDS信號源產(chǎn)生滿足TTL電平要求的方波,輸入進單片機的P3.4口進行程序部分的驗證。調(diào)整方波的幅值和頻率,可以看出,從0.5V到1V,1Hz到1MHz,單片機均可以實現(xiàn)頻率測量,測量精度在高頻區(qū)略有下降,但能達到百分之一以內(nèi)的精度,我們認為是可以接受的。

      刷新時間可調(diào)和自校這一功能由于我們時間上不太充足,雖然有所嘗試但最 終沒有實現(xiàn)。我們對刷新時間的理解就是改變的是閘門信號。因為程序默認是定1S的閘門寬度,而刷新時間可調(diào)就可以使得閘門寬度變寬,使得低頻測量不會產(chǎn)生正負1的誤差。我們的思路是把定時器T1軟件計數(shù)的值設(shè)為可以由按鍵控制的變量,通過按鍵改變這一變量,使得閘門寬度得到改變。

      在對放大整形電路的測試過程中,我們發(fā)現(xiàn)在1MHz的情況下,OP37運算放大器由于增益帶寬積不足,電壓放大倍數(shù)銳減為3——4倍左右,當(dāng)輸入電壓為0.5V放大倍數(shù)時不能越過四與非74LS00芯片的判定閾值,無法實現(xiàn)整形的效果。于是,我們組根據(jù)關(guān)永峰老師的建議,采用對直流電源分壓的方式抬高電平,如圖端點4處,將此處的電壓抬升了2.5V左右,達到74LS00的閾值(約3.2V),從而實現(xiàn)了對信號的整形的作用。

      我們組采用了比較易于獲取的器件,受限于器件的參數(shù),我們采用了電容的濾波、隔直來保證波形的穩(wěn)定,盡量減少噪聲的影響。圖中電容C1起隔直作用,以濾除信號中不穩(wěn)定的直流分量,也便于下一步設(shè)定抬升電壓的大小。電容C2濾除電源噪聲。

      最終驗收測試的數(shù)據(jù)如下: 0.5——5V的輸入下,在正弦波輸入的條件下,測頻范圍80Hz——1.1MHz。在方波輸入的條件下,測頻范圍1Hz——1.5MHz。

      系統(tǒng)在正弦波作為輸入信號時的低頻部分(1~80Hz)無法實現(xiàn)準確測頻,測出頻率均在1kHz以上。用示波器觀察放大整形信號可以看出,在低頻部分的輸出信號含有較多的噪聲,輸出的矩形波前出現(xiàn)一撮高頻、高幅度的噪聲,該段噪聲無法通過電容濾波濾除,當(dāng)頻率提高時,該段噪聲的幅度明顯減小,我們組認為該噪聲是器件內(nèi)部噪聲,是器件本身的局限性造成的,因此要提高頻率計的性能就要改用性能更好的放大器和整形器件。

      六、設(shè)計總結(jié)

      在本次實驗的過程中,我們通過簡單常見器件的匹配和調(diào)整,基本實現(xiàn)了題目要求的參數(shù),較好的完成了實驗指標(biāo)。實驗過程中存在的不足是由于時間和個人能力的限制,未能在軟件部分完成自校功能,硬件方面也沒有嘗試先前設(shè)計報告中性能更好的高速運算放大器、高速施密特觸發(fā)器,采用了比較簡單易的常用器件。在此次實驗的過程中,我們組分工明確,一人負責(zé)總體設(shè)計、一人軟件編程、一人硬件焊接,因此在實驗中效率很高,很快完成了設(shè)計、調(diào)試和驗收過程。在最開始的方案設(shè)計中中,我們借鑒了一個龐大的整形放大電路,但在實現(xiàn)的過程遇到了較大的困難,一方面是對電路理解的欠缺,一方面是調(diào)試上存在極大的困難。在實驗的過程中,我們深刻體會到了設(shè)計要基于題目要求和指標(biāo),不能好高騖遠,要基于自己的理解,廣泛查閱資料,進而不斷改進完善。在本次實驗中,我們組觀察到了硬件和軟件的相互匹配關(guān)系,即從放大整形電路到單片機編程計數(shù)測算頻率,最后在數(shù)碼管上觀察到輸出結(jié)果,在軟硬件的相互配合中實現(xiàn)功能,讓我們體會了軟硬件協(xié)調(diào)配合的過程和通過電路實現(xiàn)具體功能的過程,同時,在電路調(diào)試過程中也學(xué)會很多調(diào)試方法,收獲了很多電路方面的經(jīng)驗。

      七、參考文獻

      [1]劉菊榮庫錫樹主編《電子技術(shù)實驗教程教程》,電子工業(yè)出版社,198~200.[2]黃虎,奚大順主編《電子系統(tǒng)設(shè)計——專題篇》,電子工業(yè)出版社,32~33.

      第三篇:單片機課程設(shè)計報告——智能數(shù)字頻率計

      單片機原理課程設(shè)計報告

      題目:智能數(shù)字頻率計設(shè)計

      專業(yè): 信息工程 班級:信息111 學(xué)號:*** 姓名:*** 指導(dǎo)教師:***

      北京工商大學(xué)計算機與信息工程學(xué)院

      1、設(shè)計目的

      (1)了解和掌握一個完整的電子線路設(shè)計方法和概念;

      (2)通過電子線路設(shè)計、仿真、安裝和調(diào)試,了解和掌握電子系統(tǒng)研發(fā)產(chǎn)品的一個基本流程。

      (3)了解和掌握一些常見的單元電路設(shè)計方法和在電子系統(tǒng)中的應(yīng)用: 包括放大器、濾波器、比較器、計數(shù)和顯示電路等。

      (4)通過編寫設(shè)計文檔與報告,進一步提高學(xué)生撰寫科技文檔的能力。

      2、設(shè)計要求

      (1)基本要求

      設(shè)計指標(biāo):

      1.頻率測量:0~250KHz; 2.周期測量:4mS~10S; 3.閘門時間:0.1S,1S;

      4.測量分辨率:5位/0.1S,6位/1S; 5.用圖形液晶顯示狀態(tài)、單位等。

      充分利用單片機軟、硬件資源,在其控制和管理下,完成數(shù)據(jù)的采集、處理和顯示等工作,實現(xiàn)頻率、周期的等精度測量方案。在方案設(shè)計中,要充分估計各種誤差的影響,以獲得較高的測量精度。

      (2)擴展要求

      用語音裝置來實現(xiàn)頻率、周期報數(shù)。

      (3)誤差測試

      調(diào)試無誤后,可用數(shù)字示波器與其進行比對,記錄測量結(jié)果,進行誤差分析。

      (4)實際完成的要求及效果

      1.測量范圍:0.1Hz~4MHz,周期、頻率測量可調(diào); 2.閘門時間:0.05s~10s可調(diào); 3.測量分辨率:5位/0.01S,6位/0.1S; 4.用圖形液晶顯示狀態(tài)、單位(Hz/KHz/MHz)等。

      3、硬件電路設(shè)計

      (1)總體設(shè)計思路 本次設(shè)計的智能數(shù)字頻率計可測量矩形波、鋸齒波、三角波、方波等信號的頻率。系統(tǒng)共設(shè)計包括五大模塊: 主芯片控制模塊、整形模塊、分頻模塊、檔位選擇模塊、和顯示模塊。設(shè)計的總的思想是以AT89S52單片機為核心,將被測信號送到以LM324N為核心的過零比較器,被測信號轉(zhuǎn)化為方波信號,然后方波經(jīng)過由74LS161構(gòu)成的分頻模塊進行分頻,再由74LS153構(gòu)成的四選一選擇電路控制檔位,各部分的控制信號以及頻率的測量主要由單片機計數(shù)及控制,最終將測得的信號頻率經(jīng)LCD1602顯示。

      各模塊作用如下: 1.主芯片控制模塊: 單片機AT89S52 內(nèi)部具有2個16位定時/計數(shù)器T0、T1,定時/計數(shù)器的工作可以由編程來實現(xiàn)定時、計數(shù)和產(chǎn)生計數(shù)溢出時中斷要求的功能。利用單片機的計數(shù)器和定時器的功能對被測信號進行計數(shù)。以AT89S52 單片機為控制核心,來完成對各種被測信號的精確計數(shù)、顯示以及對分頻比的控制。利用其內(nèi)部的定時/計數(shù)器完成待測信號周期/頻率的測量。

      2.整形模塊:整形電路是將一些不是方波的待測信號轉(zhuǎn)化成方波信號,便于測量。本設(shè)計使用運放器LM324連接成過零比較器作為整形電路。

      3.分頻模塊: 考慮單片機利用晶振計數(shù),使用11.0592MHz 時鐘時,最大計數(shù)速率將近500 kHz,因此需要外部分頻。分頻電路用于擴展單片機頻率測量范圍,并實現(xiàn)單片機頻率測量使用統(tǒng)一信號,可使單片機測頻更易于實現(xiàn),而且也降低了系統(tǒng)的測頻誤差。本設(shè)計使用的分頻芯片是74LS161實現(xiàn)4分頻及16分頻。

      4.檔位選擇模塊:控制74LS161不分頻、4分頻 或者 16分頻,控制芯片是74LS153。5.顯示模塊:編寫相應(yīng)的程序可以使單片機自動調(diào)節(jié)測量的量程,并把測出的頻率數(shù)據(jù)送到顯示電路顯示,本設(shè)計選用LCD1602。

      (2)測頻基本設(shè)計原理

      所謂“頻率”,就是周期性信號在單位時間(1s)內(nèi)變化的次數(shù)。若在一定時間間隔T內(nèi)測得這個周期性信號的重復(fù)變化次數(shù)N,則其頻率可表示為f=N/T(右圖3-1所示)。其中脈沖形成電路的作用是將被測信號變成脈沖信號,其重復(fù)頻率等于被測頻率fx。利用單片機的定時/計數(shù)T0、T1的定時、計數(shù)功能產(chǎn)生周期為1s的時間脈沖信號,則門控電路的輸出信號持 圖3-1 續(xù)時間亦準確地等于1s。閘門電路由標(biāo)準的秒脈沖信號進行控制,當(dāng)秒脈沖信號來到時,閘門開通,被測脈沖信號通過閘門送到計數(shù)譯碼顯示電路。秒脈沖信號結(jié)束時閘門關(guān)閉,計數(shù)器停止計數(shù)。由于計數(shù)器計得的脈沖數(shù)N是在1秒時間內(nèi)的累計數(shù),所以被測頻率fx=NHz。

      (2)系統(tǒng)框圖

      本智能數(shù)字頻率計系統(tǒng)框圖如圖3-2所示

      圖3-2智能數(shù)字頻率計系統(tǒng)框圖

      (3)單片機部分

      P0口經(jīng)上拉后做LCD數(shù)據(jù)接口 P2.1~P2.3作為LCD控制端口 P2.4~P2.5作為分頻選擇端口 P3.5作為被測信號輸入端口

      P3.2~P3.4作為開關(guān)控制端口(對應(yīng)電路圖中K1,K2,SET)

      圖3-3 89D52單片機部分電路

      (4)分頻部分

      74HC161與74ls161功能兼容,是常用的四位二進制可預(yù)置的同步加法計數(shù)器,他可以靈活的運用在各種數(shù)字電路,以及單片機系統(tǒng)中實現(xiàn)分頻器等很多重要的功能。

      其管腳圖如圖3-4所示:

      圖3-4 74HC161 圖3-5 74HC153管腳圖

      74HC153是一個雙4選1數(shù)據(jù)選擇器,其管腳圖如圖3-5所示:

      74LS161對整形后的防波信號進行分頻,Q1為四分頻輸出,Q3為16分頻輸出。未經(jīng)分頻、經(jīng)過四分頻和經(jīng)過16分頻的三路信號作為74LS153的一個4選1數(shù)據(jù)選擇器低三位輸入,由單片機控制選擇分頻數(shù),然后再送單片機內(nèi)部計數(shù)器T1(如圖3-6)。

      圖3-6 分頻、選擇分頻檔位電路圖

      (5)LCD顯示部分

      LCD顯示,1602的八位數(shù)據(jù)I/O口與單片機的P0口相連,讀寫控制端接P2.0-P2.2口。三個按鍵中,設(shè)置鍵接P3.2單片機按外部中斷0接口,當(dāng)按鍵按下后,置P3.2口低電平,單片機中斷。S1、S2為頻率/周期、閘門時間加/減選擇按鍵(如圖3-7)。

      圖3-7 LCD顯示部分電路圖

      4、軟件設(shè)計

      (1)主程序流程圖設(shè)計

      本次程序設(shè)計采用的是C語言程序設(shè)計,其設(shè)計流程圖4-1所示:

      圖4-1主程序流程圖

      (2)子程序流程圖設(shè)計

      <1>顯示程序:

      LCD顯示程序設(shè)計流程如圖4-2所示:

      圖4-2顯示程序流程圖 <2>頻率測量程序框圖:

      頻率測量程序的整體架構(gòu)如圖4-3所示:

      圖4-3頻率測量框架圖

      (3)中斷服務(wù)流程圖

      INT0中斷流程圖如圖4-4所示:

      圖4-4INT0中斷流程圖

      (4)程序代碼

      #include #include #include #include float f;

      //頻率 float p;

      //周期 float sj;

      //閘門時間 char idata buff[20];char flag=0;

      //頻率、周期選擇標(biāo)志位

      char xs=0;//設(shè)置閘門時間結(jié)束后是否顯示結(jié)果的標(biāo)志位

      unsigned char m=0,n=0,yichu=0,fenpin;

      //m定時中斷次數(shù) n計數(shù)中斷次數(shù) yichu判斷是定時

      //器還是計數(shù)器溢出

      #define Key_Set P3 #define K1 0xf7

      //11110111

      P33 #define K2 0xef

      //11101111

      P34 #define NO_Set 0xff #define Freq 0 #define Peri 1

      sbit B153=P2^4;sbit A153=P2^3;sbit P17=P3^4;sbit P16=P3^3;sbit P35=P3^5;sbit Set=P3^2;unsigned char LCD_Wait(void);void LCD_Write(bit style, unsigned char input);void LCD_SetDisplay(unsigned char DisplayMode);void LCD_SetInput(unsigned char InputMode);void LCD_Initial();void GotoXY(unsigned char x, unsigned char y);void Print(unsigned char *str);void C52_Initial();void Delay(unsigned int t);void display(float f);void cepin();void panduan();void timedisplay(float sj);void Time_Set1();void Time_Set2();void t0();void t1();

      /*****模塊名稱 LCD1602顯示程序******/

      /***********************端口定義 ***********************************/

      sbit LcdRs= P2^0;sbit LcdRw= P2^1;sbit LcdEn= P2^2;sfr DBPort= 0x80;

      //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口 /************************內(nèi)部等待函數(shù)********************************/

      unsigned char LCD_Wait(void){

      LcdRs=0;

      //寄存器選擇輸入端 1:數(shù)據(jù) 0:指令

      LcdRw=1;

      _nop_();//RW:為0:寫狀態(tài);為1:讀狀態(tài);

      LcdEn=1;

      _nop_();

      //使能輸入端,讀狀態(tài),高電平有效;寫狀態(tài),下降沿有效

      LcdEn=0;

      return DBPort;

      } /**********************向LCD寫入命令或數(shù)據(jù)***************************/

      #define LCD_COMMAND 0

      // Command #define LCD_DATA 1

      // Data #define LCD_CLEAR_SCREEN

      0x01

      // 清屏 #define LCD_HOMING

      0x02

      // 光標(biāo)返回原點 void LCD_Write(bit style, unsigned char input){

      LcdEn=0;

      LcdRs=style;

      LcdRw=0;

      _nop_();

      DBPort=input;

      _nop_();//注意順序

      LcdEn=1;

      _nop_();//注意順序

      LcdEn=0;

      _nop_();

      LCD_Wait();} /********************設(shè)置顯示模式*********************************/

      #define LCD_SHOW

      0x04

      //顯示開 #define LCD_HIDE

      0x00

      //顯示關(guān)

      #define LCD_CURSOR

      0x02

      //顯示光標(biāo)

      #define LCD_NO_CURSOR

      0x00

      //無光標(biāo)

      #define LCD_FLASH

      0x01

      //光標(biāo)閃動 #define LCD_NO_FLASH

      0x00

      //光標(biāo)不閃動 void LCD_SetDisplay(unsigned char DisplayMode){

      LCD_Write(LCD_COMMAND, 0x08|DisplayMode);

      } /*********************設(shè)置輸入模式***********************************/ #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00

      // default #define LCD_MOVE 0x01

      // 畫面可平移 #define LCD_NO_MOVE 0x00

      //default void LCD_SetInput(unsigned char InputMode){

      LCD_Write(LCD_COMMAND, 0x04|InputMode);} /******************初始化LCD**************************************/

      void LCD_Initial(){

      LcdEn=0;

      LCD_Write(LCD_COMMAND,0x38);

      //8位數(shù)據(jù)端口,2行顯示,5*7點陣

      LCD_Write(LCD_COMMAND,0x38);

      LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);

      //開啟顯示, 無光標(biāo)

      LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);

      //清屏

      LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);

      //AC遞增, 畫面不動 }

      /************************************************************************/ void GotoXY(unsigned char x, unsigned char y){ if(y==0)

      LCD_Write(LCD_COMMAND,0x80|x);if(y==1)

      LCD_Write(LCD_COMMAND,0x80|(x-0x40));} void Print(unsigned char *str){

      while(*str!='