基于單片機89C51制作的頻率計的設計方法,
當上述測量判斷過(guò)程直到計數閘門(mén)寬度達到1 s(對應的頻率測量范圍為100~999 Hz)時(shí)測量結果仍不具有3位有效數字,頻率計則使用定時(shí)方法測量待測信號的周期。定時(shí)/計數器的工作被設置為定時(shí)器方式,定時(shí)/計數器的計數寄存器清0,在判斷待測信號的上跳沿到來(lái)后,運行控制位TR置為1,以單片機工作周期為單位進(jìn)行計數,直至信號的下跳沿到來(lái),運行控制位TR清0,停止計數。16位定時(shí)/計數器的最高計數值為65 535,當待測信號的頻率較低時(shí),定時(shí)/計數器將發(fā)生溢出。產(chǎn)生溢出時(shí),程序進(jìn)入定時(shí)器中斷服務(wù)程序,對溢出次數進(jìn)行計數。待測信號的周期由3個(gè)字節組成:定時(shí)/計數器溢出次數、定時(shí)/計數器的高8位和低8位。信號的頻率f與信號的周期T之間的關(guān)系為: f=1/T
完成信號的周期測量后,需要做一次倒數運算才能獲得信號的頻率。為提高運算精度,采用浮點(diǎn)數算術(shù)運算。浮點(diǎn)數由3個(gè)字節組成:第1字節最高位為數符,其余7位為階碼;第2字節為尾數的高字節;第3字節為尾數的低字節。待測信號周期的3個(gè)字節定點(diǎn)數通過(guò)截取高16位、設置數符和計算階碼轉換為上述格式的浮點(diǎn)數。然后浮點(diǎn)數算術(shù)運算對其進(jìn)行處理,獲得用浮點(diǎn)數格式表達的信號頻率值。再通過(guò)浮點(diǎn)數到BCD碼轉換模塊把用浮點(diǎn)數格式表達的信號頻率值變換成本頻率計的顯示格式,送到顯示模塊顯示待測信號的頻率值。完成顯示后,頻率計都開(kāi)始下一次信號的頻率測量。系統軟件流程圖如圖2所示。
系統軟件設計采用模塊化設計方法。整個(gè)系統由初始化模塊、顯示模塊和信號頻率頻率測量模塊等各種功能模塊組成。上電后,進(jìn)入系統初始化模塊,系統軟件開(kāi)始運行。在執行過(guò)程中,根據運行流程分別調用各個(gè)功能模塊完成頻率測量、量程自動(dòng)切換、周期測量和測量結果顯示。
5 實(shí)測結果和誤差分析
為了衡量這次設計的頻率計的工作情況和測量精度,我們對系統進(jìn)行了試驗。以南京電訊儀器廠(chǎng)制造的E312B型通用計數器為基準,用這次設計的頻率計對信號源進(jìn)行了測量,測量數據如表1所示。
如圖1信號預處理電路所示,待測信號在進(jìn)入單片機之前經(jīng)過(guò)了10×2次分頻。頻率計以進(jìn)入單片機時(shí)的信號頻率=100 Hz為基準(即待測信號頻率為2 kHz),大于此頻率采用頻率測量,小于此頻率采用周期測量。由表1頻率測量對比表可以看出,頻率測量的測量精度大于周期測量的測量精度。
采用計數法實(shí)現頻率測量,誤差來(lái)源主要有計數誤差和閘門(mén)誤差2部分。誤差表達式為:
其中:N為計數值,t為閘門(mén)時(shí)間。
閘門(mén)時(shí)間相對誤差dt/t主要取決于單片機晶振的頻率穩定度,選擇合適的石英晶體和振蕩電路,誤差一般可<10-6。當僅顯示3位有效數字時(shí),該項誤差可以忽略。對于dN/N部分,無(wú)論閘門(mén)時(shí)間長(cháng)短,計數法測頻總存在1個(gè)單位的量化誤差。在表1中,待測信號頻率>2 kHz時(shí)的誤差就來(lái)源于計數誤差。增加顯示的有效數字位數可降低該項誤差的影響。
當待測信號頻率<2 kHz時(shí),直接測量的是信號的周期。周期測量的誤差表達式為:
其中:dN/N為量化誤差,dτ0/τ0為單片機晶振的頻率穩定度。
進(jìn)行周期測量時(shí)進(jìn)入單片機的信號頻率<100 Hz,使用12 MHz時(shí)鐘時(shí)的最小計數值為10 000。當僅顯示3位有效數字時(shí),該項誤差現在也可以忽略。待測信號的周期測量值通過(guò)浮點(diǎn)數運算變換成頻率值,這時(shí)的誤差來(lái)源于浮點(diǎn)數運算和數制轉換所帶來(lái)的誤差。
6 結 語(yǔ)
介紹了一種基于單片機89C51制作的頻率計的設計方法,所制作的頻率計需要外圍器件較少,適宜用于嵌入式系統。該頻率計應用周期測量和相應的數學(xué)處理實(shí)現低頻段的頻率測量,因此很容易擴展實(shí)現信號的周期測量和占空比測量。該頻率計被應用于筆者設計的“高頻實(shí)驗裝置”之中,用來(lái)對LC振蕩器和RC振蕩器輸出信號的頻率穩定度進(jìn)行測量,取得良好的應用效果。
評論