摘要
在當(dāng)代電子設(shè)備中運(yùn)用中,經(jīng)常要測(cè)量一個(gè)波形的頻率,然后對(duì)其進(jìn)行分析研究。為了測(cè)量頻率,就要用到頻率計(jì)。在傳統(tǒng)的電子測(cè)量?jī)x器中,示波器在進(jìn)行頻率測(cè)量時(shí)測(cè)量精度較低,誤差較大。頻譜儀可以準(zhǔn)確的測(cè)量頻率并顯示被測(cè)信號(hào)的頻譜,但測(cè)量速度較慢,無(wú)法實(shí)時(shí)快速的跟蹤捕捉到被測(cè)信號(hào)頻率的變化。正是由于頻率計(jì)能夠快速準(zhǔn)確的捕捉到被測(cè)信號(hào)頻率的變化,因此,頻率計(jì)擁有非常廣泛的應(yīng)用范圍。 數(shù)字頻率計(jì)的設(shè)計(jì)包括時(shí)基電路、整形電路、控制電路和計(jì)數(shù)顯示電路四部分組成。 由時(shí)基電路產(chǎn)生一標(biāo)準(zhǔn)時(shí)間信號(hào)控制閥門(mén),調(diào)節(jié)時(shí)基電路中的電阻可產(chǎn)生需要的標(biāo)準(zhǔn)時(shí)間信號(hào)。信號(hào)輸入整形電路中,經(jīng)過(guò)整形,輸出一方波,通過(guò)閥門(mén)后,計(jì)時(shí)器對(duì)其計(jì)數(shù)。當(dāng)計(jì)數(shù)完畢,時(shí)基電路輸出一個(gè)上升沿,使鎖存器打開(kāi),計(jì)數(shù)器計(jì)數(shù)結(jié)果輸入譯碼器,從而讓顯示器顯示,達(dá)到測(cè)量頻率的目的。
目錄
設(shè)計(jì)原理及方案選擇
1.1、設(shè)計(jì)原理
1.2、方案選擇
程序設(shè)計(jì)及原理圖
2.1、原理圖設(shè)計(jì)
2.2、程序設(shè)計(jì)
3、仿真結(jié)果
4、實(shí)物調(diào)試
4.1、調(diào)試結(jié)果
4.2、調(diào)試中遇到的問(wèn)題
5、設(shè)計(jì)小結(jié)
1.1、設(shè)計(jì)原理 頻率就是周期性信號(hào)在單位時(shí)間(1s)內(nèi)變化的次數(shù)。若在一定時(shí)間間隔T內(nèi)測(cè)得這個(gè)周期性信號(hào)的重復(fù)變化次數(shù)為N,則其頻率可表示為f=N/T。其中f為被測(cè)信號(hào)的頻率,N為計(jì)數(shù)器所累計(jì)的脈沖個(gè)數(shù),T為N個(gè)脈沖所產(chǎn)生的時(shí)間。計(jì)數(shù)器所記錄的結(jié)果就是被測(cè)信號(hào)的頻率計(jì)數(shù)法又稱(chēng)測(cè)頻法,是將被測(cè)信號(hào)通過(guò)一個(gè)定時(shí)閘門(mén)加到計(jì)數(shù)器進(jìn)行計(jì)數(shù)的方法,如果閘門(mén)打開(kāi)的時(shí)間為T(mén),計(jì)數(shù)器得到的計(jì)數(shù)值為N1,則被測(cè)頻率為f=N1/T。改變時(shí)間T,則可改變測(cè)量頻率范圍。設(shè)在T期間,計(jì)數(shù)器的精確計(jì)數(shù)值應(yīng)為N,根據(jù)計(jì)數(shù)器的計(jì)數(shù)特性可知,N1的絕對(duì)誤差是N1=N+1,N1的相對(duì)誤差為ΔN1=(N1-N)/N=1/N。由N1的相對(duì)誤差可知,N的數(shù)值愈大,相對(duì)誤差愈小,成反比關(guān)系。因此,在f以確定的條件下,為減少N的相對(duì)誤差,可通過(guò)增大T的方法來(lái)降低測(cè)量誤差。當(dāng)T為某確定值時(shí)(通常取1s),則有f1=N1,而f=N,故有f1的相對(duì)誤差:Δf1=(f1-f)/f=1/f 從上式可知f1的相對(duì)誤差f成反比關(guān)系,即信號(hào)頻率越高,誤差越;而信號(hào)頻率越低,則測(cè)量誤差越大。因此測(cè)頻法適合用于對(duì)高頻信號(hào)的測(cè)量,頻率越高,測(cè)量精度也越高。 1.2、方案選擇 計(jì)時(shí)法又稱(chēng)為測(cè)周期法,測(cè)周期法使用被測(cè)信號(hào)來(lái)控制閘門(mén)的開(kāi)閉,而將標(biāo)準(zhǔn)時(shí)基脈沖通過(guò)閘門(mén)加到計(jì)數(shù)器,閘門(mén)在外信號(hào)的一個(gè)周期內(nèi)打開(kāi),這樣計(jì)數(shù)器得到的計(jì)數(shù)值就是標(biāo)準(zhǔn)時(shí)基脈沖外信號(hào)的周期值,然后求周期值的倒數(shù),就得到所測(cè)頻率值。但由于用計(jì)時(shí)法所獲得的信號(hào)周期數(shù)據(jù),還需要求倒數(shù)運(yùn)算才能得到信號(hào)頻率,而求倒數(shù)運(yùn)算用中小規(guī)模數(shù)字集成電路較難實(shí)現(xiàn),因此,計(jì)時(shí)法不適合本實(shí)驗(yàn)要求。 計(jì)數(shù)法則適合于對(duì)較高頻信號(hào)的測(cè)量。測(cè)頻法的測(cè)量誤差與信號(hào)頻率成反比,信號(hào)頻率越低,測(cè)量誤差就越大,信號(hào)頻率越高,其誤差就越小。但用測(cè)頻法所獲得的測(cè)量數(shù)據(jù),在閘門(mén)時(shí)間為一秒時(shí),不需要進(jìn)行任何換算,計(jì)數(shù)器所計(jì)數(shù)據(jù)就是信號(hào)頻率。根據(jù)本設(shè)計(jì)要求的性能與技術(shù)指標(biāo),首先需要確定能滿(mǎn)足這些指標(biāo)的頻率測(cè)量方法。因此,本實(shí)驗(yàn)所用的頻率測(cè)量方法是測(cè)頻法。 

圖1.1原理框圖及其波形圖
2.1原理圖設(shè)計(jì) 
圖2.1 proteus電路圖 2.2 程序設(shè)計(jì) 
圖2.2 程序流程圖 3、仿真結(jié)果 利用proteus和Keil軟件,將程序編譯正確后,并且生成HEX文件,然后用protest仿真。修改發(fā)射頻率,觀察結(jié)果。 



圖3.1仿真結(jié)果 4、實(shí)物調(diào)試 4.1調(diào)試結(jié)果 當(dāng)信號(hào)發(fā)射器輸入的頻率為2kHz方波時(shí),LCD顯示屏顯示也為2k,發(fā)射頻率為3kHz時(shí),顯示屏顯示3k,由此可得,實(shí)物實(shí)現(xiàn)了功能,并且達(dá)到了相應(yīng)的精度。


4.1實(shí)物調(diào)試 4.2調(diào)試中遇到的問(wèn)題 由于我們需要將編譯好的程序燒錄進(jìn)入我們的板子,所以當(dāng)時(shí)不是很清楚燒錄程序的用法,所以開(kāi)始出現(xiàn)LCD沒(méi)有任何顯示,我們一直以為是板子和顯示屏的問(wèn)題,所以浪費(fèi)了很多時(shí)間。后來(lái)在了解清楚程序的使用方法后,我們成功的燒錄進(jìn)去了程序,然后連接好我們之前焊接好的局部程序電路板,實(shí)行調(diào)試,取得了最后的成功。
5、設(shè)計(jì)總結(jié) 本次設(shè)計(jì)讓我體會(huì)到設(shè)計(jì)程序,連接原理圖,調(diào)試的苦與甜,設(shè)計(jì)是我們必須得技能,而這次實(shí)習(xí)恰恰給了我們一個(gè)很好的實(shí)際操作的機(jī)會(huì),從圖書(shū)館找資料設(shè)計(jì)程序、連接原理圖,在這個(gè)過(guò)程中我學(xué)到了很多新的知識(shí),并且對(duì)keil和proteus的應(yīng)用更加的嫻熟,感受到了這些軟件的強(qiáng)大功能,當(dāng)調(diào)試成功的時(shí)候感覺(jué)很神奇,很不可思議,同時(shí)更加深了我對(duì)這些知識(shí)的印象。 在設(shè)計(jì)過(guò)程中,因?yàn)槲覀冊(cè)O(shè)置定時(shí)器為計(jì)數(shù)模式。所以最高計(jì)數(shù)頻率為時(shí)鐘頻率(44.2368MHz)的1/4(11.0592MHz),但是我們又100分頻了的,所以最終只能測(cè)得110kHz。由于顯示器的問(wèn)題,前面固定字符已經(jīng)占了很多位,所以只能到9999Hz。 在設(shè)計(jì)過(guò)程中,不能急躁,設(shè)計(jì)和調(diào)試要一步一步來(lái),這次在設(shè)計(jì)過(guò)程中,由于剛開(kāi)始對(duì)LPC2138的管腳功能不熟,設(shè)計(jì)過(guò)程中老是混淆,經(jīng)過(guò)查資料認(rèn)真學(xué)習(xí)才辨別清楚,特別是程序修改的時(shí)候,一定不能馬虎,一個(gè)字母不對(duì)都編譯失敗,在最后的調(diào)試過(guò)程中,因?yàn)榉抡娼Y(jié)果已經(jīng)準(zhǔn)確無(wú)誤,所以調(diào)試不出結(jié)果讓人特別心急,還耽擱了了時(shí)間,建議能多一些好的開(kāi)發(fā)板,若不是因?yàn)殚_(kāi)發(fā)板和顯示器有問(wèn)題,也許我們的進(jìn)度能更快一些。
LPC2138源程序:
- #include"LPC213x.h"
- #define uint unsigned int
- #define uchar unsigned char
- int g_sample_cnt;
- #define RS 1<<5
- #define RW 1<<6
- #define EN 1<<7
- #define KEY_MC (1<<31)
- #define KEY_RST (1<<30)
- #define KEY_NIGHT (1<<29)
- uchar num,i;
- uchar table1[]={"frequency: hz "};
- uchar table2[]={" "};
- uint HZ[]={ 0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x00, 0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00,
- 0x0F,0x09,0x09,0x0F,0x09,0x09,0x0F,0x00};
- void DelayNs(uint NS)
- { uint i;
- for(;NS>0;NS--)
- for(i=0;i<500;i++);
- }
- void writecom(uint com)
- {
- IO0CLR=RS;
- IO0PIN=(IO0PIN&0X00FF)+(com<<8);
- DelayNs(1);
- IO0SET=EN;
- IO0CLR=EN;
- }
- void writedata( uint data)
- {
- IO0SET=RS;
- IO0PIN=(IO0PIN&0X00FF)+(data<<8); //P0=data;
- DelayNs(1);
- IO0SET=EN;
- IO0CLR=EN;
- }
- void init()
- {
- PINSEL0=0X00000000;
- IO0DIR =0XFFFF;
- IO0CLR=RW;
- IO0CLR=EN;
- writecom(0x38);
- writecom(0x0c);
- writecom(0x06);
- writecom(0x01);
- }
- int mile=0,premile=0;
- int night=0;
- int lowmode=0;
- int price=0;
- int lowmodefirsttime=0;
- int price_low=0;
- static int lowmodetime=0;
- void __irq IRQ_Timr0(void)
- {
-
- table1[10]=g_sample_cnt/1000%10+'0'; table1[11]=g_sample_cnt/100%10+'0';
- table1[12]=g_sample_cnt/10%10+'0';
- table1[13]=g_sample_cnt%10+'0';
- writecom(0x80);
- for(num=0;num<21;num++)
- {
- writedata(table1[num]);
- DelayNs(1);
- }
- writecom(0x80+0x40);
- for(num=0;num<21;num++)
- {
- writedata(table2[num]);
- }
- g_sample_cnt=0;
- T0IR = 0x01;
- VICVectAddr = 0x00;
- }
-
- /**********************************************************
- void Timer0Init(void)
- {
- //Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
- //Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
- T0PR = 99; // 設(shè)置定時(shí)器0分頻為100分頻,得110592Hz
- T0MCR = 0x03; // 匹配通道0匹配中斷并復(fù)位T0TC
- T0MR0 = 150350; // 比較值(1S定時(shí)值)
- T0TCR = 0x03; // 啟動(dòng)并復(fù)位T0TC
- T0TCR = 0x01;
- VICIntSelect = 0x00;
- VICVectCntl0 = 0x20|4;
- VICVectAddr0 = (unsigned long)IRQ_Timr0;
- VICIntEnable = 1<<4;
- }
- void main()
- {
- init();
- writecom(0x80);
- DelayNs(100);
- Timer0Init();
- for(num=0;num<19;num++)
- {
- writedata(table1[num]);
- DelayNs(1);
- }
- //writecom(0x40);
- // for(num=0;num<24;num++)
- // {
- // writedata(HZ[num]);
- // }
- writecom(0x80+0x40);
- for(num=0;num<19;num++)
- {
- writedata(table2[num]);
- }
-
- PINSEL1 &=0x00ffffff;
- //IODIR =0xe83fffff;
- IO1DIR |=0xff000000;
- //writedata(0x00);
- //writedata('4');
- //writedata(0x01);
- //writedata('2');
- //writedata('6');
- //writedata(0x02);
- IO1DIR&=~KEY_MC;
- IO1DIR&=~KEY_RST;
- IO1DIR&=~KEY_NIGHT;
- mile=325400;
- lowmodetime=lowmodefirsttime=price=premile=mile=0;
- while(1)
- {
- #if 1
- if((IO1PIN&KEY_MC)==0)
- {
- g_sample_cnt+=1;
- //DelayNs(1);
- while((IO1PIN&KEY_MC)==0);
- }
- #endif
- }
-
- }
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
簡(jiǎn)易數(shù)字頻率計(jì)的設(shè)計(jì).docx
(498.7 KB, 下載次數(shù): 55)
2018-10-31 15:43 上傳
點(diǎn)擊文件名下載附件
|