基于51單片機(jī)的頻率計的設(shè)計_第1頁
基于51單片機(jī)的頻率計的設(shè)計_第2頁
基于51單片機(jī)的頻率計的設(shè)計_第3頁
基于51單片機(jī)的頻率計的設(shè)計_第4頁
基于51單片機(jī)的頻率計的設(shè)計_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于51單片機(jī)的頻率計的設(shè)計指導(dǎo)老師:曹新亮通信12級王妍靜一.方案的設(shè)計與比較1.方案一:本設(shè)計是基于MCS-51單片機(jī)的頻率計。被測信號經(jīng)過信號轉(zhuǎn)換電路從而將其轉(zhuǎn)換成同頻率的方波信號,當(dāng)頻率過大時將進(jìn)行分頻處理,利用單片機(jī)控制數(shù)據(jù)選擇模塊進(jìn)行數(shù)據(jù)選擇,最終將結(jié)果顯示在1602液晶顯示屏上2.方案二:本方案采用單片機(jī)程序處理輸入信號并且將結(jié)果直接送往液晶顯示,為了提高系統(tǒng)的穩(wěn)定性,輸入信號前進(jìn)行放大整形,在通過A/D轉(zhuǎn)換器輸入單片機(jī)系統(tǒng),采用這種方法可大大提高測試頻率的精度和靈活性,并且能極大的減少外部干擾,采用VDHL編程設(shè)計實現(xiàn)的數(shù)字頻率計,除被測信號的整形部分、鍵輸入部分和數(shù)碼顯示部分

2、以外,其余全部在一片F(xiàn)PGA芯片上實現(xiàn),整個系統(tǒng)非常精簡,而且具有靈活的現(xiàn)場可更改性。3.方案三:采用頻率計專用模塊,即大規(guī)模集成電路將計數(shù)器、鎖存器、譯碼、位和段驅(qū)動,量程及小數(shù)點選擇等電路集成在一塊芯片中,該方案在技術(shù)上是可行的,可以簡化電路的設(shè)計,當(dāng)對于設(shè)計要求中的某些指標(biāo),采用專用模塊來完成比較困難,即擴(kuò)展極為不便。 以上三種方案比較:第一種方案具有設(shè)計復(fù)雜度小、電路簡潔、功能實用且成本低廉等特點,其穩(wěn)定性較好基本能滿足設(shè)計要求。方案二采用單片機(jī)處理能較高要求,但成本提高且設(shè)計復(fù)雜。方案三采用專用頻率計設(shè)計模塊固然設(shè)計簡單且穩(wěn)定但系統(tǒng)可擴(kuò)展性能較差。 綜上所述,本課題采用第一種設(shè)計方案

3、。 二.設(shè)計原理與總體方案 測量一個信號的頻率有兩種方法:第一種是計數(shù)法,用基準(zhǔn)信號去測量被測信號的高電平持續(xù)的時間,然后轉(zhuǎn)換成被測信號的頻率。第二種是計時法,計算在基準(zhǔn)信號高電平期間通過的被測信號個數(shù)。 根據(jù)設(shè)計要求測量10HZ100MHZ的正弦波信號,首先要將正弦信號通過過零比較轉(zhuǎn)換成方波信號。如果用第一種方法,當(dāng)信號頻率超過1KHZ的時候測量精度將超出測量極限要求,所以當(dāng)被測信號的頻率高于1KHZ的時候需要將被測信號進(jìn)行分頻處理。如果被測信號頻率很高需要將被測信號進(jìn)行多次分頻直到達(dá)到設(shè)計的精度要求。根據(jù)設(shè)計要求用單片機(jī)的內(nèi)部定時器0產(chǎn)生基準(zhǔn)信號,由INTO輸入被測信號,通過定時方式計算被

4、測信號的高電平持續(xù)時間。并通過單片機(jī)計算得出結(jié)果,最后由1062液晶顯示器顯示測量結(jié)果。 頻率計的系統(tǒng)設(shè)計框架如下圖所示 AT89C51液晶顯示被測信號信 號 轉(zhuǎn) 換(過零比較)分頻處理數(shù) 據(jù) 選 擇器三.硬件設(shè)計 硬件電路主要分為信號轉(zhuǎn)換電路、分頻電路、數(shù)據(jù)選擇電路、單片機(jī)系統(tǒng)和顯示電路五部分。其總體電路圖如下圖所示 3.1 電平轉(zhuǎn)換電路:電平轉(zhuǎn)換電路:要將正弦信號轉(zhuǎn)換成方波信號可以用過零比較電路實現(xiàn)。正弦信號通過LM833N與零電平比較,電壓大于零的時候輸出LM833N的正電源+5V,電壓小于零的時候輸出負(fù)電源0V。具體電路如下圖所示 3.2 分頻電路:分頻電路:分頻電路采用十進(jìn)制的計數(shù)器

5、74HC4017來分頻,當(dāng)被測信號脈沖個數(shù)達(dá)到10個時74HC4017產(chǎn)生溢出,C0端輸出頻率為輸入頻率的1/10,達(dá)到十分頻的作用。如果當(dāng)頻率很高時需要多次分頻只需將多片74HC4017級聯(lián)就可以了74HC4017時序圖如下圖所示系統(tǒng)分頻電路如下圖所示 3.3數(shù)據(jù)選擇電路:數(shù)據(jù)選擇電路: 根據(jù)設(shè)計要求,要根據(jù)計數(shù)脈沖個數(shù)來選擇分頻次數(shù),可以用74151來選擇分頻次數(shù),74151的選擇控制信號由單片機(jī)的I/O口來控制。數(shù)據(jù)選擇電路如下圖所示。3.4單片機(jī)系統(tǒng):單片機(jī)系統(tǒng): 單片機(jī)采用AT89C51,采用12MHZ的晶振頻率。單片機(jī)的P3.2口接被處理后的被測信號,P0口接液晶顯示器的數(shù)據(jù)輸入端

6、,ALE,RD,WR,P0.0,P0.1通過外接控制電路接液晶顯示器的控制端。單片機(jī)系統(tǒng)的電路如下圖所示。3.5顯示電路:顯示電路: 顯示電路由1602組成,其電路如下圖所示四. 軟件設(shè)計:頻率計的軟件設(shè)計主要由主程序、分頻選擇程序、液晶顯示程序組成。 4.1 頻率計的算法設(shè)計:頻率計的算法設(shè)計:根據(jù)設(shè)計要求頻率范圍是10HZ100MHZ,當(dāng)頻率為10HZ時,T=100000us,高電平為50000us,0.1%的誤差為100us,由單片機(jī)產(chǎn)生的基準(zhǔn)頻率為1MHZ,T0=1us,最大誤差為1us,計數(shù)個數(shù)為50000(方式1),滿足設(shè)計要求。當(dāng)頻率增加到1KHZ時,產(chǎn)生的誤差剛剛能達(dá)到設(shè)計要求

7、,這時計數(shù)個數(shù)為500。當(dāng)頻率大于1KHZ時(即計數(shù)個數(shù)小于500)就需要將被測頻率分頻后再測量,如當(dāng)頻率為10KHZ時,先計算計得的脈沖數(shù)等于50,小于了500,所以將10KHZ的信號10分頻得到1KHZ,這時就滿足要求了。最后得到的頻率 其中n為計得的脈沖個數(shù),i為分頻的次數(shù)。inF1021064.2主程序主程序主程序首先對系統(tǒng)環(huán)境初始化,設(shè)置分頻選通信號P2=0 x00,選通0通道。設(shè)置T0工作方式,采用硬件啟動方式,GATE=1,當(dāng)INT0和TR0同時為1時啟動計時,計數(shù)方式為方式1(16位),TH0和TL0都置零。當(dāng)外部中斷INT0=1時等待,當(dāng)外部中斷為0時啟動T0即TR0=1,當(dāng)

8、INT0一直為0時就等待,一旦INT0=1就啟動計數(shù)同時等待,當(dāng)INT0為0時跳出并關(guān)閉T0即TR0=0。這樣就計得高電平期間基準(zhǔn)脈沖個數(shù),當(dāng)脈沖個數(shù)小于500時就選擇10分頻信號,即P2自加1,同時記錄分頻一次;如果分頻后脈沖個數(shù)還小于500則再次分頻,直到計數(shù)個數(shù)大于500 其計數(shù)工作示意圖如下圖所示被測脈沖INT0基準(zhǔn)脈沖T0等待啟 動 T 0 ,TR0=1啟動計數(shù)停止計數(shù),讀出計數(shù)個數(shù)N個脈沖主程序流程圖如下圖所示開始初始化數(shù)據(jù)選擇信號系統(tǒng)初始化讀出計數(shù)個數(shù)n其計數(shù)工作示意圖如下圖所示 n=500變換數(shù)據(jù)選擇通道,計算分頻次數(shù)iY顯示結(jié)果N主程序:主程序:#include /頭文件#i

9、nclude#include#includesbit p32=P32; /P32作為信號輸入端main() unsigned int period,k,j,i=0; / period,為定時器計數(shù)總值,i是分頻次數(shù) float f,m; /浮點變量 char buff30; init_LCD(); /初始化LCD P2=0 x00; /選通D0路信號 while(1) TMOD=0X09; /配置定時器0為工作方式1,即16位定時器,并硬件啟動 TH0=0; /裝定時器初值為0 TL0=0; while(p32=1); /執(zhí)行完這條語句后信號電平狀態(tài)為低電平 TR0=1; /使能TR0; wh

10、ile(p32=0); /等待信號高電平到來,如果高電平來了則定時器開始計時,如果沒來,則繼續(xù)循環(huán)等待。 while(p32=1); /等待信號高電平結(jié)束后,如果低電平,則定時器停止計時 TR0=0; /關(guān)閉定時器 period=TH0*256+TL0; /計算定時器裝的總值 while(period=500) /*判斷是否分頻及計算分頻次數(shù)*/ 即頻率是否大于1KHZ P2+;i+;period=period*10; if(i=6)P2=0 x00;break; k=pow(10,i); /* 10的i次方*/ f=(1000000.0/(2*period)*k; if(f1000) spr

11、intf(buff,f=%5.2fHZ,f); else m=f/1000.0; sprintf(buff,f=%5.2fKHZ,m); lcdprintf(0,0,buff); 顯示子程序:顯示子程序:#include char code CGRAM_TABLE=0 x08,0 x0F,0 x12,0 x0F,0 x0A,0 x1F,0 x02,0 x02,/ ;年0 x0F,0 x09,0 x0F,0 x09,0 x0F,0 x09,0 x11,0 x00,/;月0 x0F,0 x09,0 x09,0 x0F,0 x0,0 x09,0 x0F,0 x00; /;日void delay()

12、/延時子程序 unsigned char i; for(i=0;i250;i+);void init_LCD() /初始化LCD unsigned char i; WR_COM=0 x38; /設(shè)置為8位數(shù)據(jù)總線,16*2,5*7點陣 for(i=0;i100;i+) delay(); WR_COM=0 x01; /清屏幕 for(i=0;i50;i+) delay(); WR_COM=0 x06; /光標(biāo)移動,顯示區(qū)不移動,讀寫操作后AC加1 for(i=0;i50;i+) delay(); WR_COM=0 x0c; for(i=0;i50;i+) delay();/* /void init_c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論