目 錄 第1節 引言……………………………………………………………2
- 數字頻率計概述…………………………………………………………………………2
- 頻率測量儀的設計思路與頻率的計算…………………………………………………2
- 基本設計原理……………………………………………………………………………3
第2節 數字頻率計(低頻)的硬件結構設計…………………………4 2.1系統硬件的構成…………………………………………………………………………4 2.2系統工作原理圖…………………………………………………………………………4 2.3AT89C51單片機及其引腳說明 …………………………………………………………5 2.4信號調理及放大整形模塊………………………………………………………………7 2.5時基信號產生電路………………………………………………………………………7 2.6顯示模塊…………………………………………………………………………………8 第3節軟件設計………………………………………………………12 3.1 定時計數 ………………………………………………………………………………12 3.2 量程轉換 ………………………………………………………………………………12 3.3 BCD轉換…………………………………………………………………………………12 3.4 LCD顯示…………………………………………………………………………………12 第4節 結束語………………………………………………………13 參考文獻………………………………………………………………14 附錄 匯編源程序代碼…………………………………………………15 基于51單片機的數字頻率計 第1節 引言 本應用系統設計的目的是通過在“單片機原理及應用”課堂上學習的知識,以及查閱資料,培養一種自學的能力。并且引導一種創新的思維,把學到的知識應用到日常生活當中。在設計的過程中,不斷的學習,思考和同學間的相互討論,運用科學的分析問題的方法解決遇到的困難,掌握單片機系統一般的開發流程,學會對常見問題的處理方法,積累設計系統的經驗,充分發揮教學與實踐的結合。全能提高個人系統開發的綜合能力,開拓了思維,為今后能在相應工作崗位上的工作打下了堅實的基礎。 1.1數字頻率計概述 數字頻率計是計算機、通訊設備、音頻視頻等科研生產領域不可缺少的測量儀器。它是一種用十進制數字顯示被測信號頻率的數字測量儀器。它的基本功能是測量正弦信號,方波信號及其他各種單位時間內變化的物理量。在進行模擬、數字電路的設計、安裝、調試過程中,由于其使用十進制數顯示,測量迅速,精確度高,顯示直觀,經常要用到頻率計。 本數字頻率計將采用定時、計數的方法測量頻率,采用一個1602A LCD顯示器動態顯示6位數。測量范圍從1Hz—10kHz的正弦波、方波、三角波,時基寬度為1us,10us,100us,1ms。用單片機實現自動測量功能。 基本設計原理是直接用十進制數字顯示被測信號頻率的一種測量裝置。它以測量周期的方法對正弦波、方波、三角波的頻率進行自動的測量。 1.2頻率測量儀的設計思路與頻率的計算 頻率測量儀的設計思路主要是:對信號分頻,測量一個或幾個被測量信號周期中已知標準頻率信號的周期個數,進而測量出該信號頻率的大小,其原理如右圖1所示。 若被測量信號的周期為,分頻數m1,分頻后信號的周期為T,則:T=m1Tx 。由圖可知: T=NTo (注:To為標準信號的周期,所以T為分頻后信號的周期,則可以算出被測量信號的頻率f。) 由于單片機系統的標準頻率比較穩定,而是系統標準信號頻率的誤差,通常情況下很小;而系統的量化誤差小于1,所以由式T=NTo可知,頻率測量的誤差主要取決于N值的大小,N值越大,誤差越小,測量的精度越高。 1.3 基本設計原理 基本設計原理是直接用十進制數字顯示被測信號頻率的一種測量裝置。它以測量周期的方法對正弦波、方波、三角波的頻率進行自動的測量。 所謂“頻率”,就是周期性信號在單位時間(1s)內變化的次數。若在一定時間間隔T內測得這個周期性信號的重復變化次數N,則其頻率可表示為f=N/T。其中脈沖形成電路的作用是將被測信號變成脈沖信號,其重復頻率等于被測頻率fx。時間基準信號發生器提供標準的時間脈沖信號,若其周期為1s,則門控電路的輸出信號持續時間亦準確地等于1s。閘門電路由標準秒信號進行控制,當秒信號來到時,閘門開通,被測脈沖信號通過閘門送到計數譯碼顯示電路。秒信號結束時閘門關閉,計數器停止計數。由于計數器計得的脈沖數N是在1秒時間內的累計數,所以被測頻率fx=NHz。
第2節 數字頻率計(低頻)的硬件結構設計
2.1 系統硬件的構成 本頻率計的數據采集系統主要元器件是單片機AT89C51,由它完成對待測信號頻率的計數和結果顯示等功能,外部還要有分頻器、顯示器等器件。可分為以下幾個模塊:放大整形模塊、秒脈沖產生模塊、換檔模擬轉換模塊、單片機系統、LCD顯示模塊。各模塊關系圖如圖2所示: 圖2 數字頻率計功能模塊
2.2 系統工作原理圖 
該系統工作的總原理圖如圖3所示:
圖3 數字頻率計系統工作原理圖 2.3AT89C51單片機及其引腳說明 89C51是一種高性能低功耗的采用CMOS工藝制造的8位微控制器,它提供下列標準特征:4K字節的程序存儲器,128字節的RAM,32條I/O線,2個16位定時器/計數器, 一個5中斷源兩個優先級的中斷結構,一個雙工的串行口, 片上震蕩器和時鐘電路。 引腳說明: ·VCC:電源電壓 ·GND:地 ·P0口:P0口是一組8位漏極開路型雙向I/O口,作為輸出口用時,每個引腳能驅動8個TTL邏輯門電路。當對0端口寫入1時,可以作為高阻抗輸入端使用。 當P0口訪問外部程序存儲器或數據存儲器時,它還可設定成地址數據總線復用的形式。在這種模式下,P0口具有內部上拉電阻。 在EPROM編程時,P0口接收指令字節,同時輸出指令字節在程序校驗時。程序校驗時需要外接上拉電阻。 ·P1口:P1口是一帶有內部上拉電阻的8位雙向I/O口。P1口的輸出緩沖能接受或輸出4個TTL邏輯門電路。當對P1口寫1時,它們被內部的上拉電阻拉升為高電平,此時可以作為輸入端使用。當作為輸入端使用時,P1口因為內部存在上拉電阻,所以當外部被拉低時會輸出一個低電流(IIL)。 ·P2口:P2是一帶有內部上拉電阻的8位雙向的I/O端口。P2口的輸出緩沖能驅動4個TTL邏輯門電路。當向P2口寫1時,通過內部上拉電阻把端口拉到高電平,此時可以用作輸入口。作為輸入口,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出電流(IIL)。 P2口在訪問外部程序存儲器或16位地址的外部數據存儲器(例如MOVX @ DPTR)時,P2口送出高8位地址數據。在這種情況下,P2口使用強大的內部上拉電阻功能當輸出1時。當利用8位地址線訪問外部數據存儲器時(例MOVX @R1),P2口輸出特殊功能寄存器的內容。 當EPROM編程或校驗時,P2口同時接收高8位地址和一些控制信號。 ·P3口:P3是一帶有內部上拉電阻的8位雙向的I/O端口。P3口的輸出緩沖能驅動4個TTL邏輯門電路。當向P3口寫1時,通過內部上拉電阻把端口拉到高電平,此時可以用作輸入口。作為輸入口,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出電流(IIL)。 P3口同時具有AT89C51的多種特殊功能,具體如下表1所示: | | | | | | |  (外部中斷0) | |  (外部中斷1) | | | | | |  (外部數據存儲器寫選通) | |  (外部數據存儲器都選通) |
表1 P3口的第二功能 ·RST:復位輸入。當振蕩器工作時,RST引腳出現兩個機器周期的高電平將使單片機復位。 ·ALE/ :當訪問外部存儲器時,地址鎖存允許是一輸出脈沖,用以鎖存地址的低8位字節。當在Flash編程時還可以作為編程脈沖輸出( )。 一般情況下,ALE是以晶振頻率的1/6輸出,可以用作外部時鐘或定時目的。但也要注意,每當訪問外部數據存儲器時將跳過一個ALE脈沖。 · :程序存儲允許時外部程序存儲器的讀選通信號。當AT89C52執行外部程序存儲器的指令時,每個機器周期 兩次有效,除了當訪問外部數據存儲器時, 將跳過兩個信號。 · /VPP:外部訪問允許。為了使單片機能夠有效的傳送外部數據存儲器從0000H到FFFH單元的指令, 必須同GND相連接。需要主要的是,如果加密位1被編程,復位時EA端會自動內部鎖存。 當執行內部編程指令時, 應該接到VCC端。 ·XTAL1:振蕩器反相放大器以及內部時鐘電路的輸入端。 ·XTAL2:振蕩器反相放大器的輸出端。 在本次設計中,采用89C51作為CPU處理器,充分利用其硬件資源,結合D觸發器CD4013,分頻器CD4060,模擬轉換開關CD4051,計數器74LS90等數字處理芯片,主要控制兩大硬件模塊,量程切換以及顯示模塊。下面還將詳細說明。 2.4 信號調理及放大整形模塊
放大整形系統包括衰減器、跟隨器、放大器、施密特觸發器。它將正弦輸入信號Vx整形成同頻率方波Vo,幅值過大的被測信號經過分壓器分壓送入后級放大器,以避免波形失真。由運算放大器構成的射級跟隨器起阻抗變換作用,使輸入阻抗提高。同相輸入的運算放大器的放大倍數為(R1+R2)/R1,改變R1的大小可以改變放大倍數。系統的整形電路由施密特觸發器組成,整形后的方波送到閘門以便計數。 
由于輸入的信號幅度是不確定、可能很大也有可能很小,這樣對于輸入信號的測量就不方便了,過大可能會把器件燒毀,過小可能器件檢測不到,所以在設計中采用了這個信號調理電路對輸入的波形進行阻抗變換、放大限幅和整形,信號調理部分電路具體實現電路原理圖和參數如下圖4所示:
圖42.5 時基信號產生電路: CD4013------雙上升沿D觸發器 ,引腳及功能見如下圖5: 

CD4013 由兩個相同的、相互獨立的數據型觸發器構成。每個觸發器有獨立的數據置位復位時鐘輸入和 Q及Q非輸出。此器件可用作移位寄存器,且通過將Q非輸出連接到數據輸入,可用作計數器和觸發器。在時鐘上升沿觸發時,加在D 輸入端的邏輯電平傳送到Q輸出端。置位和復位或復位線上的高電平完成。圖5 CD4013芯片引腳用功能圖 CD4060------14位二進制串行計數器,引腳及功能見如下圖6: CD4060 由一震蕩器和14極二進制串行計數器位組成,震蕩器的結構可以是RC或晶振電路。CR為高電平時,計數器清零且振蕩器使用無效,所有的計數器位均為主從觸發器 CP1非(和 CP0)的下降沿計數器以二進制進行計數,在時鐘脈沖線上使用施密特觸發器對時鐘上升和下降時間無限制。 圖6 CD4060芯片引腳用功能圖 時基信號的產生原理: 本電路采用32768HZ晶體震蕩器,利用CD4060芯片經過14級分頻得到2HZ的信號(32768/214),在經過CD4013雙D觸發器經過二分頻得到0.5HZ的方波,即輸出秒脈沖信號使單片機進行計數。 圖七 秒脈沖產生電路原理圖 1602基本技術: 1)、主要功能 A、 40通道點陣LCD 驅動; B、 可選擇當作行驅動或列驅動; C、 輸入/輸出信號:輸出,能產生20×2個LCD驅動波形;輸入,接受控制器送出的串行數據和控制信號,偏壓(V1∽V6); D、 通過單片機控制將所測的頻率信號讀數顯示出來。 2)、技術參數 2.1)極限參數表 2.2) 電參數表 3)、時序特性表 4)、引腳和指令功能 4.1)模塊引腳功能表 4.2)寄存器選擇功能表 (注:忙標志為"1"時,表明正在進行內部操作,此時不能輸入指令或數據,要等內部操作結束,即忙標志為"0"時。) 4.3) 指令功能 格式:RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 共11種指令:清除,返回,輸入方式設置,顯示開關,控制,移位,功能設置,CGRAM地址設 置,DDRAM地址設置,讀忙標志,寫數據到CG/DDRAM,讀數據由CG/DDRAM。 5)、顯示位與DD RAM 地址的對應關系 | | | | 00 01 02 03 04 ..………….. 27 | | 40 41 42 43 44 …………….. 67 |
6)、初始化方法 用戶所編的顯示程序,開始必須進行初始化,否則模塊無法正常顯示,下面介紹兩種初始化方法; 6.1利用內部復位電路進行初始化 下面指令是在初始化過程中執行的。 - 清屏(DISPLAY CLEAR);
- 功能設置(FUNCTION SET);
DL = 1: 8Bit 接口數據; N = 0: 1行顯示; F = 0:5×7dot字形; - 顯示開/關控制(DISPLAY ON/OFF CONTROL)
D = 0: 顯示關; C = 0: 光標關; B = 0: 消隱關 I/D = 1:(增量): S = 0: 無移位: 6.2) 軟件復位 如果電路電源不能滿足復位電路的要求的話,那么初始化就要用軟件來實現,過程如下: 八位接口初始化流程圖 

↓
↓ ↓等待>4.1ms 

↓等待>100us
↓檢查忙標志或延時40us
↓檢查忙標志或延時40us
↓檢查忙標志或延時40 us
↓檢查忙標志或延時1.64
↓檢查忙標志或延時40 第3節 軟件設計 主要能過編寫軟件來控制硬件完成以下各模塊的功能: 3.1定時讀數 3.2量程轉換 3.3 BCD轉換 3.4LCD顯示的功能 單片機當C/T=1時為計數方式,多路開關與定時器的外部引腳連通,外部計數脈沖由引腳輸入。當外部信號由1至0跳變時,計數器加1,此時T0成為外部事件的計數器。由于確認一次由1至0的跳變要用24個振蕩器周期,所以計數器的計數頻率為單片機內部計數器頻率的1/24。 當C/T=0時為定時方式,對單片機內部計數器進行m2分頻后,計數器的實際計數頻率為單片機內部頻率凡的1/m2, 當GATE=0時,反相器輸出為1,或門輸出為1,打開與門,使定時器的啟動僅受TRO端信號電平的控制。 在此種情況下,INT0引腳的電平變化對或門不起作用。TRO=1時接通控制開關,計數脈沖加到計數器上,每來一個計數脈沖,計數器加1,只有當TRO=0時,控制開關斷開,計數器停止計數。 當GATA=0時,若TRO=1,或門、與門全部打開,外部信號電平通過INTO引腳直接控制定時器的啟動和關閉。輸人高電平時允許計數,否則停止計數。 根據定時器的結構原理,若我們將GATE位、TR0均設為‘1’,INT0端輸人被測頻率信號,當被測信號的高電平到來時,開始計數;當被測信號的低電平到來時,計數器停止計數,此時TL0、TH0的數據就是相應的N值。
結束語
數字頻率計是計算機、通訊設備、音頻視頻等科研生產領域不可缺少的測量儀器。在進行模擬、數字電路的設計、安裝、調試過程中,由于其使用十進制數顯示,測量迅速,精確度高,顯示直觀,會被經常使用到。 通過本次課程的設計,不但加深我對在課程上所學到的單片機理論知識的認識和理解,重新讓自己認識到了這門學科的在應用方面的廣闊前景,并且通過知識與應用于實踐的結合更加豐富了自己的知識。擴展了知識面,不但掌握了本專業的相關知識,而且對其他專業的知識也有所了解,而且較系統的掌握單片機應用系統的開發過程,因而自身的綜合素質有了全面的提高 。 經過這次一個較完整的產品設計和制作過程,對于認識到自己在知識方面存在的不足,明確今后的學習方向是非常有益的,為將來的的就業提前打了下堅實的基礎。在設計過程中,得到了我的指導老師的悉心指導與幫助,還有其他老師和同學的大力支持和協助,在此一并表示衷心的感謝。
參考文獻
[1]李光飛 ,樓苗然主編.51系列單片機.北京:北京航空航天大學出版社,2003 [2]黃正瑾編著.CPLD系統設計技術入門與應用. 北京: 電子工業出版社, 2002 [3]謝自美編著.電子線路設計·實驗·測試.華中理工大學出版社,2002 [4]陳永甫編著.電子電路智能化設計.實例與應用.北京:電子工業出版,2002.8 [5]康華光主編.電子技術 基礎(第四版).北京:高等教育出版社,1999
附錄 匯編源程序代碼
- RS BIT P2.0 ;P3.4腳接RS端
- RW BIT P2.1 ;P3.5腳接R_W端
- E BIT P2.2 ;P3.3腳接E端
- ORG 0000H
-
- LJMP MAIN
- ORG 002BH
- LJMP IT1
- MAIN:
- MOV P0,#01H ;清除屏幕
- ACALL ENABLE
- MOV P0,#01H ;清除屏幕
- ACALL ENABLE
- MOV P0,#01H ;清除屏幕
- ACALL ENABLE
- MOV P0,#38H ;8位點陣方式
- ACALL ENABLE
- MOV P0,#0cH ;開顯示
- ACALL ENABLE
- MOV P0,#06H ;移動光標
- ACALL ENABLE
- MOV P0,#80H ;顯示位置
- ACALL ENABLE
- mov p0,#80h ;第一行的位置
- call enable
- mov dptr,#date
- call write3
- mov p0,#0c0h ;第二行的位置
- call enable
- MOV SP,#7FH
- CLR CY
- mov r6,#00
- mov r2,#00
- MOV R3,#00
- MOV TMOD,#15H
- MOV TL0,#00H
- MOV TH0,#00H
- mov th1,#high(65536-50000)
- mov tl1,#low(65536-50000) ;setb ET1
- cha1: SETB TR1 ;LCALL XIANSHI
- SETB TR0
- mov 27h,#00h
- CLR C
- MOV C,P1.6
- MOV 27H.0,C
- CLR C
- MOV C,P1.7
- MOV 27H.1,C
- mov a,27h
- ANL A,#03H
- MOV 17H,A
- CHA: JBC TF1,JINWEI ;益處進位
- JMP CHA
- JINWEI:CLR TR1
- mov th1,#high(65536-50000)
- mov tl1,#low(65536-50000)
- SETB TR1
- INC R3
- MOV A,R3 ;JNB P3.2,$
- CJNE A,#20,CHA
- CLR TR0
- CLR TR1
- MOV R3,#00
- MOV R2,TH0
- MOV R6,TL0
- lcall zhuan
- LCALL write1
- MOV TL0,#00H
- MOV TH0,#00H
- jmp cha1
- ZHUAN:
- MOV A,R2
- CLR C
- MOV 20H,#00H
- MOV 21H,#00H
- MOV 22H,#00H
- MOV 24H,#00H
- MOV 25H,#00H
- MOV R3,#10H
- NEXT: RLC A
- MOV R2,A
- MOV A,20H
- ADDC A,20H
- DA A
- MOV 20H,A
- MOV A,21H
- ADDC A,21H
- DA A
- MOV 21H,A
- MOV A,22H
- ADDC A,22H
- DA A
- MOV 22H,A
- MOV A,R2
- DJNZ R3,NEXT
- MOV A,R6
- clr c
- MOV R3,#08H
- NEXT1: RLC A
- MOV R6,A
- MOV A,24H
- ADDC A,24H
- DA A
- MOV 24H,A
- MOV A,25H
- ADDC A,25H
- DA A
- MOV 25H,A
- mov a,r6
- DJNZ R3,NEXT1
- clr c
- mov a,24h
- addc a,20h
- da a
- mov 20h,a
- mov a,25h
- addc a,21h
- da a
- mov 21h,a
- mov a,22h
- addc a,#00h
- da a
- mov 22h,a
- mov a,22h
- anl a,#0fh
- mov 31h,a
- mov a,22h
- anl a,#0f0h
- swap a
- mov 30h,a
- mov a,21h
- anl a,#0f0h
- swap a
- mov 32h,a
- mov a,21h
- anl a,#0fh
- mov 33h,a
- mov a,20h
- anl a,#0f0h
- swap a
- mov 34h,a
- mov a,20h
- anl a,#0fh
- mov 35h,a
- ret
- ;**************
- ;LCD顯示
- ;**************
-
- ENABLE:
- CLR RS
- CLR RW
- CLR E
- ACALL DELAY
- SETB E
- RET
-
- write1: ;寫數據
- MOV 10H,#00H
- MOV 11H,#00H
- MOV 12H,#00H
- MOV 13H,#00H
- MOV 14H,#00H
- MOV 15H,#00H
- MOV 16H,#00H
- mov p0,#0ch
- call enable
- mov p0,#0c0h ;第二行的位置
- call enable
- MOV A,17H
- XRL A,#02H
- JNZ XIAN1
- MOV 40H,#00H
- MOV 41H,#00H
- MOV 42H,#00H
- MOV 43H,30H
- MOV 44H,31H
- MOV 45H,32H
- JMP XIAN
-
- XIAN1:MOV A,17H
- XRL A,#01H
- JNZ XIAN2
- MOV 40H,#00H
- MOV 41H,#00H
- MOV 42H,30H
- MOV 43H,31H
- MOV 44H,32H
- MOV 45H,33H
- JMP XIAN
-
- XIAN2:MOV A,17H
- XRL A,#00H
- JNZ XIAN3
- MOV 40H,#00H
- MOV 41H,30H
- MOV 42H,31H
- MOV 43H,32H
- MOV 44H,33H
- MOV 45H,34H
- JMP XIAN
-
- XIAN3:MOV A,17H
- XRL A,#03H
- JNZ XIAN
- MOV 40H,30H
- MOV 41H,31H
- MOV 42H,32H
- MOV 43H,33H
- MOV 44H,34H
- MOV 45H,35H
- XIAN:mov r0,#40h
- mov a, @r0
- JZ L20
- MOV 10H,#0FFH
- MOV 15H,#0FFH
- mov dptr,#date1
- movc a,@a+dptr
- call write2
-
- L20:INC R0
- MOV A, 10H
- CJNE A, #00H,PP
- mov a, @r0
- JZ L21
- PP: MOV 11H,#0FFH
- MOV 15H,#0FFH
- mov a, @r0
- mov dptr,#date1
- movc a,@a+dptr
- call write2
-
-
- L21:INC R0
- MOV A, 11H
- CJNE A, #00H,PP2
- mov a, @r0
- JZ L22
- PP2: MOV 12H,#0FFH
- MOV 15H,#0FFH
- mov a, @r0
- mov dptr,#date1
- movc a,@a+dptr
- call write2
- MOV A, 15H
- CJNE A,#0FFH,L22
- MOV A,#00H
- mov dptr,#XIAOSHUDIAN
- movc a,@a+dptr
- call write2
- L22:
- INC R0
- MOV A, 12H
- CJNE A, #00H,PP3
- mov a, @r0
- JZ L23
- PP3: MOV 13H,#0FFH
- mov a, @r0
- mov dptr,#date1
- movc a,@a+dptr
- call write2
-
- L23:INC R0
- MOV A, 13H
- CJNE A, #00H,PP4
- mov a, @r0
- JZ L24
- PP4: MOV 14H,#0FFH
- mov a, @r0
- mov dptr,#date1
- movc a,@a+dptr
- call write2
-
- L24:INC R0
- mov a, @r0
- mov dptr,#date1
- movc a,@a+dptr
- call write2
- MOV A,15H
- CJNE A, #00H,KHZ
- MOV A,#00H
- MOV dptr,#DANWEI1
- JMP QUSHU
- KHZ:MOV dptr,#DANWEI2
- QUSHU:movc a,@a+dptr
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整的Word格式文檔51黑下載地址:
基于51單片機的數字頻率計資料.doc
(360 KB, 下載次數: 32)
2018-3-14 10:25 上傳
點擊文件名下載附件
基于51單片機的數字頻率計資料 下載積分: 黑幣 -5
|