摘 要:設(shè)計一種以單片機(jī)AT89C51為核心的數(shù)字頻率計,介紹了單片機(jī)、數(shù)字譯碼和顯示單元的組成及工作原理。測量時,將被測輸入信號送給單片機(jī),通過程序控制計數(shù),結(jié)果送譯碼器74LS145與移位寄存器74LS164,驅(qū)動LED數(shù)碼管顯示頻率值。通過測量結(jié)果對比,分析了測量誤差的來源,提出了減小誤差應(yīng)采取的措施。頻率計具有電路結(jié)構(gòu)簡單、成本低、測量方便、精度較高等特點(diǎn),適合測量低頻信號。
關(guān)鍵詞:單片機(jī);數(shù)字頻率計;測頻;譯碼
中圖分類號:TP274文獻(xiàn)標(biāo)識碼:A
文章編號:1004-373X(2010)01-090-03
Design of Digital Frequency Meter Based on Single Chip Mircrocomputer
LIU Zhuqin,BAI Zesheng
(Physics and Electronic Information College,Yan′an,716000,China)
Abstract:A digital frequency meter based on AT89C51 is designed,the composition and working principle of single chip microcompter,digital decoder and display unit are introduced.The measured input signal should be given to single chip microcomputer,through the counting process control,the results are sent to decoder 74 LS145 and shift register 74 LS164,driven LED digital display of frequency value.By comparing results,the source of measurement error is analysed,the measures are proposed for reducing errors.The frequency meter has characteristics of simple circuit,low cost,easy measurement and high precision,it fits for measuring low-frequency signals.
Keywords:single chip microcomputer;digital frequency meter;frequency measurement;decoder
在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此頻率計在教學(xué)、科研、測量儀器、工業(yè)控制等方面都有較廣泛的應(yīng)用。測量頻率的方法有多種,其中電子計數(shù)測量頻率具有精度高、使用方便、測量迅速,以及便于實(shí)現(xiàn)測量自動化等優(yōu)點(diǎn)[1],是頻率測量的重要手段之一。本設(shè)計就是用計數(shù)的方法,以單片機(jī)AT89C51為控制核心,充分利用其軟硬件資源,設(shè)計并制作了頻率計的計數(shù)、顯示部分。
1 測頻設(shè)計原理
頻率計測頻原理方框圖如圖1所示。被測輸入信號通過脈沖形成電路進(jìn)行放大與整形(可由放大器與門電路組成),然后送到單片機(jī)入口,單片機(jī)計數(shù)脈沖的輸入個數(shù),計數(shù)結(jié)果經(jīng)LED數(shù)碼管顯示,從而得到被測信號頻率。
圖1 頻率計原理方框圖
2 元器件選擇與使用
2.1 單片機(jī)
選擇單片機(jī)AT89C51[2]是因?yàn)橛芯幊天`活、易調(diào)試的特點(diǎn),而且AT89C51的引腳較多,利于電路的擴(kuò)展。它集成了CPU,RAM,ROM,定時器/計數(shù)器和多功能I/O口等一臺計算機(jī)所需的基本功能部件,有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含兩個外中斷口,兩個16位可編程定時計數(shù)器,兩個全雙工串行通信口。其片內(nèi)集成了4 KB的FLASH PEROM用來存放應(yīng)用程序,這個FLASH程序存儲器除允許一般的編程器離線編程外,還允許在應(yīng)用系統(tǒng)中實(shí)現(xiàn)在線編程,并且還提供了對程序進(jìn)行三級加密保護(hù)的功能。AT89C51的另一個特點(diǎn)是工作速度更高,晶振頻率可高達(dá)24 MHz,一個機(jī)器周期僅為500 ms,比MCS-51系列單片機(jī)快了一倍。
其具體使用方法如下:
P1.0口與寄存器74LS164的A,B端口連接,串行輸出待顯示的數(shù)據(jù)。
P1.1口接移位寄存器74LS164的CLK(第8引腳),輸出時鐘信號。
P1.5,P1.6,P1.7口分別與譯碼器74LS145的A,B,C端口連接,輸出位控制信號。
P3.5口(即T1)輸入脈沖信號。
XTAL1與XTAL2管腳接兩個30 pF電容和12 MHz晶振構(gòu)成時鐘電路。
RST管腳接1 kΩ,10 kΩ電阻,20 μF電容及復(fù)位開關(guān)構(gòu)成開關(guān)復(fù)位電路。
2.2 顯示譯碼單元
顯示部分采用譯碼器74LS145與移位寄存器74LS164[3],主要是考慮了性價比的原因。比如,此處可以采用HARRIS公司推出的ICM7218B共陰極數(shù)碼管驅(qū)動芯片,它集BCD譯碼器、多路掃描器、段驅(qū)動和位驅(qū)動于一體[4]。用此驅(qū)動可使電路相對簡單,顯示部分的軟件設(shè)計也比較簡單,但由于其價位相對較高,故采用譯碼器74LS145與移位寄存器74LS164。
2.3 數(shù)字顯示單元
LED顯示器采用動態(tài)顯示方式[5]。顯示時將所有位的段選線相應(yīng)的并聯(lián)在一起,由一個8位I/O口控制,形成段選線的多路復(fù)用。譯碼器74LS145是位選部分,移位寄存器74LS164是段選部分。由于各位的段選線并聯(lián),段選碼的輸出對各位來說都是相同的。同一時刻,如果各位選線都處于選通狀態(tài)的話,六位的LED將顯示相同的字符。要各位LDE能夠顯示出與本位相應(yīng)的顯示字符,就須采用掃描顯示方式。即在同一時刻,只讓某一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時,段選線上輸出相應(yīng)位要顯示字型碼,這樣同一時刻,六位LED中只有選通的那一位顯示出字符,而其他五位則是熄滅的。而在下一時刻,只讓下一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),在段選線上輸出相應(yīng)位將要顯示字符的字符碼。
這樣循環(huán)下去,就可以使各位顯示出將要顯示的字符,雖然這些字符是在不同時刻出現(xiàn)的,而且同一時刻,只有一位顯示,其他各位熄滅,但由于人眼有視覺殘留現(xiàn)象,只要每位顯示間隔足夠短,則可造成多位同時亮的效果。
3 硬件設(shè)計
電路原理圖如圖2所示。以單片機(jī)AT89C51為核心,由譯碼器74LS145與移位寄存器74LS164實(shí)現(xiàn)串行輸出顯示,其中74LS164輸出段選信號,74LS145輸出位選信號。
具體連接方法是將P1.0口與寄存器74LS164的A,B端口連接,P1.1口與移位寄存器74LS164的CLK連接,P1.5,P1.6,P1.7口分別與譯碼器74LS145的A,B,C端口連接,在P3.5口(即T1)輸入脈沖信號[6]。
電路實(shí)現(xiàn)的關(guān)鍵是設(shè)法取得準(zhǔn)確的一秒定時,并讓計數(shù)器只計數(shù)一秒,這樣計數(shù)結(jié)果則為頻率值。實(shí)現(xiàn)的方法是利用單片機(jī)內(nèi)的16位定時/計數(shù)器,用定時器/計數(shù)器0作為定時器,實(shí)現(xiàn)一秒定時;用定時器/計數(shù)器1作為計數(shù)器,對輸入的脈沖進(jìn)行計數(shù)。當(dāng)按動開關(guān)時,開始定時及計數(shù),時間到停止計數(shù),計數(shù)值通過LED顯示,得到頻率值。再次按動開關(guān)又進(jìn)行定時計數(shù)。
圖2 電路原理圖
4 軟件設(shè)計
4.1 實(shí)現(xiàn)一秒定時
采用12 MHz的晶體振蕩器的情況下,一秒的定時已超過了定時器可提供的最大定時值。為了實(shí)現(xiàn)一秒的定時,采用定時和計數(shù)相結(jié)合的方法實(shí)現(xiàn)[7]。選用定時/計數(shù)器T0作定時器,工作于方式1產(chǎn)生50 ms的定時,再用軟件計數(shù)方式對它計數(shù)20次,就可得到一秒的定時。
4.2 計數(shù)部分
將定時器/計數(shù)器的方式寄存器TMOD,用軟件賦初值51H,即01010001B。這時定時器/計數(shù)器1采用工作方式1,方式選擇位C/T設(shè)為1,即設(shè)T1為16位計數(shù)器。定時器/計數(shù)器0采用工作方式1,C/T設(shè)為0,即設(shè)T0為16位定時器。
計算計數(shù)初值:設(shè)計數(shù)初值為X,本設(shè)計采用12 MHz的晶振。機(jī)器周期=12×(1/晶振頻率)=12×(1/12×106)=1×10-6,(216-X)×1×10-6=50×10-3,X=15 536。
所以計數(shù)初值為15 536,用十六進(jìn)制表示為3CB0H。
當(dāng)定時器/計數(shù)器T1設(shè)定為計數(shù)方式時,其計數(shù)脈沖是來源T1端口的外部事件。當(dāng)T1端口上出現(xiàn)由“1”(高電平)到“0”(低電平)的負(fù)跳變脈沖時,計數(shù)器則加1計數(shù)。計算機(jī)是在每個機(jī)器周期的S5P2狀態(tài)時采樣T1端口,當(dāng)前一個機(jī)器周期采樣為1且后一個機(jī)器周期采樣為0時,計數(shù)器加1計數(shù)。計算機(jī)需用兩個機(jī)器周期來識別1次計數(shù),因而最大計數(shù)速率為振蕩頻率的1/24。在采用12 MHz晶振的情況下,單片機(jī)最大計數(shù)速度為0.5 MHz即500 kHz。
另外,此處對外部事件計數(shù)脈沖的占空比(即脈沖的持續(xù)寬度)無特殊要求,但必須保證所給出的高電平在其改變之前至少被采樣1次,即至少保持1個完整的機(jī)器周期。由此可見,從T1口輸入脈沖信號,T1可實(shí)現(xiàn)對脈沖個數(shù)的計數(shù)。
4.3 程序流程圖[8]
計時采用定時T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序。主程序流程如圖3所示。
5 測量結(jié)果及誤差分析
5.1 測量結(jié)果
給電路加+5 V電壓,輸入信號,按動開關(guān),即可得到頻率值。將所測頻率值與示波器測量結(jié)果比較,如表1所示。
圖3 主程序流程圖
表1 測量誤差對照表
測量頻率范圍 /kHz誤差范圍 /Hz
0.01~1小于1
1~9小于2
10~99小于20
100~400小于80
480以上超出測量范圍
5.2 誤差來源分析
(1) 單片機(jī)計數(shù)速率的限制引起誤差。從表1測量數(shù)據(jù)可以看出被測信號頻率越高,測量誤差越大,且所測信號頻率不能超過480 kHz。這是因?yàn)椴捎玫氖?2 MHz的晶振,單片機(jī)最大計數(shù)速度為500 kHz,所以當(dāng)被測信號越接近500 kHz時,測量結(jié)果與實(shí)際頻率的誤差就越大。而當(dāng)被測信號大于500 kHz時,頻率計將測不出信號頻率。
(2) 原理上存在±1誤差。由于該設(shè)計是在計數(shù)門限時間一秒內(nèi)的頻率信號脈沖數(shù),所以定時開始時的第一個脈沖和定時時間到時的最后一個脈沖信號是否被記錄,存在隨機(jī)性。這種誤差對測量頻率低的信號影響較大。其誤差原理示意圖如圖4所示。
圖4 脈沖計數(shù)誤差示意圖
(3) 晶振的準(zhǔn)確度會影響一秒定時的準(zhǔn)確度,從而引起測量結(jié)果誤差。
5.3 減小誤差措施
(1) 選用頻率較高和穩(wěn)定性好的晶振。如選24 kHz的晶振可使測量范圍擴(kuò)大,穩(wěn)定性好的晶振可以減小誤差。
(2) 測量頻率低的信號時,可適當(dāng)調(diào)整程序,延長門限時間,減少原理上±1的相對誤差。
(3) 測量頻率較高的信號時,可先對信號進(jìn)行分頻,再進(jìn)行測量。
6 結(jié) 語
基于單片機(jī)設(shè)計的數(shù)字頻率計具有原理簡單、易于調(diào)試和測量方便等優(yōu)點(diǎn),主要用來測量低頻信號的頻率。由于其測量范圍會受單片機(jī)計數(shù)速率的限制,其測量量程較小,所以可以從原理上進(jìn)行改進(jìn)以提高其測頻范圍,比如通過增加分頻電路[9],就可實(shí)現(xiàn)對高頻信號的測量。
參考文獻(xiàn)
[1]司佑全.基于單片機(jī)的數(shù)字頻率計設(shè)計與制作[J].湖北師范學(xué)院學(xué)報,2005(2):2-3.
[2]孫育才.MCS-51系列單片微型計算機(jī)及其應(yīng)用[M].南京:東南大學(xué)出版社,2004.
[3]白澤生.一種基于振弦式傳感器測頻方法的實(shí)現(xiàn)[J].傳感器與微系統(tǒng),2007(8):81-83.
[4]王團(tuán)部,李向全,馬剛.數(shù)碼管驅(qū)動電路ICM7218及其應(yīng)用[J].現(xiàn)代電子技術(shù),2006,29(21):106-107.
[5]熊軍鋒,陳霞.制作高精度數(shù)字頻率計[J].無線電,2004(12):36-37.
[6]張仕斌.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2003.
[7]彭華,譚洪濤,康小平.一種改進(jìn)的實(shí)用型頻率計設(shè)計方法[J].現(xiàn)代電子技術(shù),2005,28(22):22-23.
[8]王法能.單片機(jī)原理及應(yīng)用[M].北京:科學(xué)出版社,2004.
[9]潘明.基于復(fù)雜可編程邏輯器件的數(shù)字頻率計設(shè)計[J].廣西科學(xué)院學(xué)報,2002(4):244-247.