




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、5.6 頻率計(jì)的設(shè)計(jì) 5.6 頻率計(jì)的設(shè)計(jì)5.6.1任務(wù)介紹頻率計(jì)在教學(xué)、科研、測量儀器、工業(yè)控制等方面都有廣泛的應(yīng)用。在單片機(jī)應(yīng)用系統(tǒng)中,經(jīng)常需要對一個(gè)連續(xù)脈沖的頻率(周期)進(jìn)行測量。在實(shí)際應(yīng)用中,對于轉(zhuǎn)速、位移、速度、流量等物理量的測量,一般也是先由傳感器轉(zhuǎn)換成脈沖信號(hào),然后再測量頻率的方式來實(shí)現(xiàn)。本節(jié)的任務(wù)要求是:開發(fā)板上有一個(gè)頻率發(fā)生器,能夠產(chǎn)生250Hz256KHz的方波。利用單片機(jī)的定時(shí)器測量方波的頻率或者周期。5.6.2知識(shí)準(zhǔn)備1、測頻法頻率的定義為:單位時(shí)間內(nèi)完成周期性變化的次數(shù),是描述周期運(yùn)動(dòng)頻繁程度的量。單片機(jī)要完成周期信號(hào)的頻率測量,根據(jù)頻率的定義,初學(xué)者首先能想到的方法
2、是利用51單片機(jī)的1個(gè)定時(shí)/計(jì)數(shù)器產(chǎn)生單位時(shí)間,然后在單位時(shí)間內(nèi)利用利用另外1個(gè)定時(shí)/計(jì)數(shù)器對外界脈沖進(jìn)行計(jì)數(shù)。這種方法稱為“測頻法”。但測頻法不是萬能的,適合測量高頻信號(hào)。圖5.6.1說明了測頻的原理及誤差產(chǎn)生的原因。時(shí)基信號(hào)待測信號(hào) 計(jì)到7個(gè)脈沖比實(shí)際多出了0.X個(gè)脈沖.丟失(少計(jì)一個(gè)脈沖) 圖5.6.1 測頻法誤差來源在圖5.6.1中,假設(shè)時(shí)基信號(hào)為1Hz,則用此法測得的待測信號(hào)為7Hz。但從圖中可以看出,待測信號(hào)的頻率應(yīng)為為7.7Hz,誤差約有7/7.7=9.1%。這個(gè)誤差是比較大的。實(shí)際上,測量的脈沖個(gè)數(shù)的誤差會(huì)在±1之間。假設(shè)測得的脈沖個(gè)數(shù)為N,則測量頻率的誤差最大為=1
3、/(N-1)×100%。顯然,減少誤差的方法,就是增大N。舉個(gè)例子,假設(shè)測頻精度為0.1%,所測信號(hào)的頻率為10Hz,為了達(dá)到測量的準(zhǔn)確度,時(shí)基信號(hào)的長度超過100S,顯然這是不可行的。因此得出一個(gè)初步的結(jié)論:測頻法只適合于測量高頻信號(hào)。2、測周法測頻法不適用于低頻信號(hào)的測量,低頻信號(hào)的測量通常采用測周法。測周法顧名思義就是測量脈沖信號(hào)的周期,周期與頻率呈倒數(shù)的關(guān)系,求得脈沖信號(hào)的周期,頻率也就求出來了。51單片機(jī)測量脈沖信號(hào)的周期,也需要用到2個(gè)定時(shí)/計(jì)數(shù)器,其中1個(gè)定時(shí)/計(jì)數(shù)器用來對脈沖信號(hào)進(jìn)行計(jì)數(shù),另外一個(gè)定時(shí)/計(jì)數(shù)器用來測量計(jì)數(shù)時(shí)間內(nèi)的時(shí)間長度。舉個(gè)例子:定時(shí)/計(jì)數(shù)器0對外接
4、脈沖計(jì)數(shù),方式2,自動(dòng)重裝模式,TL0=246,每來10個(gè)脈沖,定時(shí)/計(jì)數(shù)器0溢出一次。另外一個(gè)定時(shí)/計(jì)數(shù)器從溢出后開始計(jì)量時(shí)間,到下一次溢出后停止計(jì)量時(shí)間,這是時(shí)間差值就是10個(gè)脈沖的周期,然后再除以10,就是一個(gè)脈沖的周期。有了對測頻法誤差來源的分析,就不難得到測周法誤差的來源。脈沖頻率越低,周期越長,則測周法的精度越高。3、頻率發(fā)生器開發(fā)板上的固定脈沖信號(hào)是由數(shù)字芯片CD4060產(chǎn)生的。CD4060是14位二進(jìn)制串行計(jì)數(shù)器/分頻器。開發(fā)板中CD4060的晶振是4.096MHz,經(jīng)過14級(jí)分頻后,輸出10路分頻信號(hào)(Q4Q14)。開發(fā)板只引出了6路分頻信號(hào)(125Hz、500Hz、2KHz
5、、8KHz、64KHz、128KHz),電路如圖5.6.2所示。 圖5.6.2 CD4060構(gòu)成的頻率發(fā)生器5.6.3 任務(wù)實(shí)施任務(wù)實(shí)施中分別給出測頻法的實(shí)現(xiàn)程序和測周法的實(shí)現(xiàn)程序。1、 測頻法程序?qū)崿F(xiàn)測頻法程序的工程結(jié)構(gòu)圖如圖5.6.3所示。Seg7Display.c負(fù)責(zé)將測量的頻率在數(shù)碼管上顯示,共6位數(shù)碼管。FreqMeasure.c是頻率測量模塊。5.6.3 測頻程序工程結(jié)構(gòu)圖(1) 主函數(shù)Main.c:#include<reg52.h>#include "MicroDefine.h"#include "Seg7Display.h"#
6、include "FreqMeasure.h"/*函數(shù)名稱:main()*功能 :主函數(shù)*入口參數(shù):*出口參數(shù):*說明 :*/void main() uint Cnt1Ms; /1ms計(jì)數(shù)器 DelayMs(200); TimerInit(); /定時(shí)器初始化 while(1) if(FlagSystem1Ms=1) FlagSystem1Ms=0; Seg7Display(); /掃描數(shù)碼管 if(+Cnt1Ms>=1000) /刷新顯示緩沖區(qū) Cnt1Ms=0; FreqToBuffer(Freq); (2) 測頻模塊FreqMeasure.h:#ifndef _
7、FREQMEASURE_H_#define _FREQMEASRUE_H_#include <reg52.h>#include "MicroDefine.h"#include "Seg7Display.h"/變量聲明extern bit FlagSystem1Ms; /1ms時(shí)標(biāo)信號(hào)extern long int Freq; /測量頻率值extern bit FlagMeasureOk; /頻率測量成功標(biāo)志位/函數(shù)聲明extern void FreqToBuffer(long int Num); /頻率值更新到緩沖區(qū) extern void
8、TimerInit(void); /定時(shí)器初始化#endif FreqMeasure.c#include"FreqMeasure.h"bit FlagSystem1Ms=0; /系統(tǒng)1ms時(shí)標(biāo)信號(hào)uchar T0OverflowCnt=0; /定時(shí)器0溢出次數(shù)計(jì)數(shù)器long int Freq=0; /被測信號(hào)頻率值bit FlagMeasureOk=0; /頻率測量成功標(biāo)志位/*函數(shù)名稱:TimerInit()*功能 :定時(shí)器初始化*入口參數(shù):無*出口參數(shù):無*說明 :定時(shí)器0用作計(jì)數(shù),定時(shí)器1用作定時(shí)*/void TimerInit(void) TMOD=0x25; /定
9、時(shí)器1:0010,定時(shí),方式2;定時(shí)器0:0101,計(jì)數(shù),方式1 TH0=TL0=0x00; /定時(shí)器0初值 TH1=TL1=56; /定時(shí)器1初值 ET0=ET1=EA=1; /開定時(shí)器中斷 TR0=TR1=1; /開定時(shí)器/*函數(shù)名稱:Num_To_DispBuff()*功能 :待顯示值傳遞給顯示緩沖區(qū)*入口參數(shù):待顯示值*出口參數(shù):無*說明 :*/void FreqToBuffer(long int Num)uchar i,j=5; for(i=0;i<6;i+) DispBufferj-i=Num%10; Num=Num/10; /*函數(shù)名稱:Timer0_Isr()*功能 :定
10、時(shí)器0中斷函數(shù)*入口參數(shù):無*出口參數(shù):無*說明 :計(jì)算定時(shí)器0溢出次數(shù)*/void Timer0Isr() interrupt 1 static uchar Cnt200us=0; /200us計(jì)數(shù)器 static uint Cnt1Ms=0; /1ms計(jì)數(shù)器 uint Timer0Value; /定時(shí)器0暫存值 if(+Cnt200us>=4) /1ms到 Cnt200us=0; FlagSystem1Ms=1; if(+Cnt1Ms>=1000) /1s到 Cnt1Ms=0; Timer0Value=TH0<<8+TL0; /取定時(shí)器0的計(jì)數(shù)值 TH0=TL0=0
11、x00; /定時(shí)器0清空 Freq=T0OverflowCnt<<16+Timer0Value; /計(jì)算頻率值 T0OverflowCnt=0; /定時(shí)器0溢出次數(shù)清零 FlagMeasureOk=1; /頻率測量成功 程序解釋: 測頻程序用到了2個(gè)定時(shí)/計(jì)數(shù)器,定時(shí)/計(jì)數(shù)器0用來對脈沖計(jì)數(shù),16位計(jì)數(shù)器,方式1模式;定時(shí)/計(jì)數(shù)器1用來產(chǎn)生時(shí)基信號(hào)(1秒),8位定時(shí)器,方式2。 在定時(shí)/計(jì)數(shù)器0的中斷函數(shù)中,記錄溢出次數(shù),如果1S內(nèi)外接脈沖個(gè)數(shù)超過65536,則定時(shí)/計(jì)數(shù)器0會(huì)溢出。定時(shí)/計(jì)數(shù)器1主要用于產(chǎn)生1秒的時(shí)基信號(hào),1秒到,則一次測頻完成。定時(shí)/計(jì)數(shù)器0的初值為0,如果定時(shí)
12、/計(jì)數(shù)器0在1S內(nèi)沒有溢出,則外接脈沖的個(gè)數(shù)=TH0*256+TL0。如果溢出了,則外接脈沖的個(gè)數(shù)=溢出次數(shù)*65536+TH0*256+TL0。計(jì)算出頻率值后,定時(shí)/計(jì)數(shù)器0的初值和溢出次數(shù)要重新置0,為下一次測頻做準(zhǔn)備,同時(shí)頻率測量成功標(biāo)志位置1。 刷新緩沖區(qū)函數(shù)中,頻率值的分解和以前的寫法不一樣,初學(xué)者自己分析。2、 測周法程序?qū)崿F(xiàn)測周法的程序和測頻法的程序結(jié)構(gòu)一樣,功能模塊包括數(shù)碼管掃描和周期測量。數(shù)碼管掃描省略。(1)主函數(shù)Main.c:#include<reg52.h>#include"MicroDefine.h"#include"Meas
13、urePeriod.h"#include"Seg7Display.h" /*函數(shù)名稱:main()*功能 :主函數(shù)*入口參數(shù):無*出口參數(shù):無*說明 :*/void main() unsigned long int Freq; DelayMs(200); TimerInit(); /定時(shí)器初始化 while(1) if(FlagMeasureOk=1) /測量成功 FlagMeasureOk=0; Freq=(unsigned long int)T1Cnt*100+(T1Num-156); /100個(gè)脈沖的周期 Freq=1000000000/Freq; /換算成
14、頻率 FreqToBuffer(Freq); /刷新緩沖區(qū) 程序解釋:在主函數(shù)中,完成100個(gè)脈沖的周期計(jì)算,換算成頻率,并更新緩沖區(qū)。周期的計(jì)算在周期測量模塊詳細(xì)解釋。(2) 周期測量模塊MeasurePeriod.h#ifndef _MEASUREPERIOD_H_#define _MEASUREPERIOD_H_#include <reg52.h>#include "MicroDefine.h"#include "Seg7Display.h"/變量聲明extern uchar T1Num; /定時(shí)器1低八位暫存值extern uint
15、T1Cnt; /定時(shí)器1溢出次數(shù)暫存值extern bit FlagMeasureOk; /周期測量完成標(biāo)志位extern bit FlagSystem1Ms; /1ms時(shí)標(biāo)信號(hào)/函數(shù)聲明extern void FreqToBuffer(unsigned long int Num); /緩沖區(qū)刷新extern void TimerInit(); /定時(shí)器初始化#endifMeasruePeriod.c:#include "MeasurePeriod.h" uint T1OverflowCnt=0; /定時(shí)器1溢出次數(shù)uchar T1Num=0; /定時(shí)器1低八位暫存值uin
16、t T1Cnt=0; /定時(shí)器1溢出次數(shù)暫存值bit FlagMeasureOk=0; /周期測量完成標(biāo)志位bit FlagSystem1Ms=0; /系統(tǒng)時(shí)標(biāo)信號(hào)/*函數(shù)名稱:TimerInit()*功能 :定時(shí)器初始化*入口參數(shù):無*出口參數(shù):無*說明 :定時(shí)器0用作計(jì)數(shù),定時(shí)器1用作定時(shí)*/void TimerInit() TMOD=0x26; /高四位:0010,定時(shí)器1,定時(shí)模式,自動(dòng)重裝 /低四位:0110,定時(shí)器0,計(jì)數(shù)模式,自動(dòng)重裝 TH0=TL0=156; /定時(shí)器0計(jì)數(shù)100次溢出 TH1=TL1=156; /定時(shí)器1 100us溢出一次 ET0=ET1=1; EA=1;
17、TR0=TR1=1;/*函數(shù)名稱:FreqToBuffer()*功能 :待顯示值傳遞給顯示緩沖區(qū)*入口參數(shù):待顯示值*出口參數(shù):無*說明 :*/void FreqToBuffer(unsigned long int Num)uchar i,j=5; for(i=0;i<6;i+) DispBufferj-i=Num%10; Num=Num/10; /*函數(shù)名稱:Timer0Isr()*功能 :定時(shí)器0中斷服務(wù)函數(shù)*入口參數(shù):無*出口參數(shù):無*說明 :每100個(gè)脈沖,定時(shí)器0中斷,記錄定時(shí)器1的溢出次數(shù)和計(jì)數(shù)值*/void Timer0Isr() interrupt 1 T1Num=TL1
18、; /記錄定時(shí)器1的計(jì)數(shù)值 TL1=156; /定時(shí)器1賦初值 T1Cnt=T1OverflowCnt; /記錄定時(shí)器1的溢出次數(shù) T1OverflowCnt=0; /溢出次數(shù)清零 FlagMeasureOk=1; /周期測量完成標(biāo)志位/*函數(shù)名稱:Timer1Isr()*功能 :定時(shí)器1中斷服務(wù)函數(shù)*入口參數(shù):無*出口參數(shù):無*說明 :100us溢出1次*/void Timer1_Isr() interrupt 3 static uchar Cnt100us=0; /100us計(jì)數(shù)器 T1OverflowCnt+; /記錄定時(shí)器1的溢出次數(shù) if(+Cnt100us>=10) /1ms到 Cnt100us=0; Seg7Display(); /數(shù)碼管掃描 程序解釋: 測周法與測頻法一樣,都用到了2個(gè)定時(shí)/計(jì)數(shù)器。這兩個(gè)定時(shí)/計(jì)數(shù)器都配置為自動(dòng)重裝模式,初值都為156,不同的是定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 丁香欖企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 輕奢餐飲企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 硫酸鋅(皓礬)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 機(jī)場貴賓休息室運(yùn)營企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 仿古銅工藝品批發(fā)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 絨線企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 網(wǎng)羽運(yùn)動(dòng)鞋企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 堅(jiān)果類罐頭企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 生產(chǎn)線及配套設(shè)備數(shù)智化改造項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 2025年造紙化學(xué)品:制漿助劑項(xiàng)目建議書
- 《弱電知識(shí)培訓(xùn)》課件
- 丹麥地理課件
- 住宅小區(qū)供配電設(shè)施建設(shè)和改造技術(shù)標(biāo)準(zhǔn)
- 勞動(dòng)合同(模版)4篇
- 100道公安基礎(chǔ)知識(shí)題目訓(xùn)練含答案
- 2024年重慶市中考道德與法治試卷(AB合卷)附答案
- 口腔耗材采購合同范本
- JBT 14682-2024 多關(guān)節(jié)機(jī)器人用伺服電動(dòng)機(jī)技術(shù)規(guī)范(正式版)
- 胃腸鏡健康宣教胃腸鏡檢查注意事項(xiàng)適應(yīng)癥與禁忌癥宣傳課件
- 2024-2030年中國射頻集成電路(RFIC)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報(bào)告
- 黑龍江省九年義務(wù)教育地方教材生命教育三年級(jí)(下)
評論
0/150
提交評論