數(shù)字頻率計(51單片機)_第1頁
數(shù)字頻率計(51單片機)_第2頁
數(shù)字頻率計(51單片機)_第3頁
數(shù)字頻率計(51單片機)_第4頁
數(shù)字頻率計(51單片機)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上自動化與電子工程學(xué)院單片機課程設(shè)計報告課程名稱:單片機原理與應(yīng)用 學(xué) 院:自動化與電子工程院 專業(yè)班級: 學(xué)生姓名: 完成時間: 報告成績: 評閱意見: 評閱教師 日期 目 錄專心-專注-專業(yè)第1章 數(shù)字頻率計概述 1.1數(shù)字頻率計概述數(shù)字頻率計又稱為數(shù)字頻率計數(shù)器,是一種專門對被測信號頻率進(jìn)行測量的電子測量儀器,是計算機、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測量儀器。它是一種用十進(jìn)制數(shù)字顯示被測信號頻率的數(shù)字測量儀器。它的基本功能是測量方波信號及其他各種單位時間內(nèi)變化的物理量。本數(shù)字頻率計將采用定時、計數(shù)的方法測量頻率,采用6個數(shù)碼管顯示6位十進(jìn)制數(shù)。測量范圍

2、從10Hz5.5kHz,精度為1%,用單片機實現(xiàn)自動測量功能?;驹O(shè)計原理是直接用十進(jìn)制數(shù)字顯示被測信號頻率的一種測量裝置。它以測量頻率的方法對方波的頻率進(jìn)行自動的測量。1.2數(shù)字頻率計的基本原理數(shù)字頻率計最基本的工作原理為:當(dāng)被測信號在特定時間段T內(nèi)的周期個數(shù)為N時,則被測信號的頻率f=N/T(如圖1.1所示)。 圖1.1 頻率測量原理頻率的測量實際上就是在1s時間內(nèi)對信號進(jìn)行計數(shù),計數(shù)值就是信號頻率。用單片機設(shè)計頻率計通常采用的辦法是使用單片機自帶的計數(shù)器對輸入脈沖進(jìn)行計數(shù);好處是設(shè)計出的頻率計系統(tǒng)結(jié)構(gòu)和程序編寫簡單,成本低廉,不需要外部計數(shù)器,直接利用所給的單片機最小系統(tǒng)就可以實現(xiàn)。缺陷

3、是受限于單片機計數(shù)的晶振頻率,輸入的時鐘頻率通常是單片機晶振頻率的幾分之一甚至是幾十分之一,在本次設(shè)計使用的AT89C51單片機,由于檢測一個由“1”到“0”的跳變需要兩個機器周期,前一個機器周期測出“1”,后一個周期測出“0”。故輸入時鐘信號的最高頻率不得超過單片機晶振頻率的二十四分之一。根據(jù)頻率檢測的原理,很容易想到利用51單片機的T0、T1兩個定時/計數(shù)器,一個用來定時,另一個用來計數(shù),兩者均應(yīng)該工作在中斷方式,一個中斷用于1s時間的中斷處理,一個中斷用于對頻率脈沖的計數(shù)溢出處理。1.3單脈沖測量原理首先設(shè)置定時器T0為方式1,在被測脈沖信號INT0的下降沿進(jìn)入外部中斷函數(shù),在中斷函數(shù)中

4、啟動T0計數(shù)碼,被測脈沖信號下降沿停止T0計數(shù),脈寬測量過程見下圖:定時器T0以方式1對內(nèi)部脈沖計數(shù),16位計數(shù)值存放在40H(高字節(jié))和41H單元第2章 課程設(shè)計方案設(shè)計2.1系統(tǒng)方案的總體論述數(shù)字頻率計是用于測量信號(方波,脈沖信號)的頻率,并用十進(jìn)制數(shù)字顯示,它具有精度高,測量迅速,讀數(shù)方便等優(yōu)點。 脈沖信號的頻率就是在單位時間內(nèi)所產(chǎn)生的脈沖個數(shù),其表達(dá)式為fNT,其中,f為被測信號的頻率,N為計數(shù)器所累計的脈沖個數(shù)。T為產(chǎn)生N個脈沖所需的時間。計數(shù)器所記錄的結(jié)果,就是被測信號的頻率。如在1S內(nèi)記錄1000個脈沖,則被測信號的頻率為1000Hz。 本實驗課題僅討論一種簡單易制的數(shù)字頻率計

5、。2.2系統(tǒng)硬件的總體設(shè)計本頻率計的數(shù)據(jù)采集系統(tǒng)主要元器件是單片機AT89C51,由它完成對待測信號頻率的計數(shù)和結(jié)果顯示等功能,可分為以下幾個兩個模塊電路:單片機系統(tǒng)、數(shù)碼管及顯示電路。各模塊關(guān)系圖如圖2.1所示:圖2.1 數(shù)字頻率計系統(tǒng)框圖2.3處理方法本頻率計的設(shè)計以AT89C51 單片機為核心,利用它內(nèi)部的定時/ 計數(shù)器完成待測信號周期/ 頻率的測量。單片機AT89C51 內(nèi)部具有2 個16 位定時/計數(shù)器,定時/ 計數(shù)器的工作可以由編程來實現(xiàn)定時、計數(shù)和產(chǎn)生計數(shù)溢出中斷要求的功能。在構(gòu)成為定時器時,每個機器周期加1(使用12MHz 時鐘時,每1us 加1),這樣以機器周期為基準(zhǔn)可以用來

6、測量時間間隔。在構(gòu)成為計數(shù)器時,在相應(yīng)的外部引腳發(fā)生從1 到0 的跳變時計數(shù)器加1 ,這樣在計數(shù)閘門的控制下可以用來測量待測信號的頻率。外部輸入每個機器周期被采樣一次,這樣檢測一次從1 到0 的跳變至少需要2 個機器周期(24 個振蕩周期),所以最大計數(shù)速率為時鐘頻率的1/ 24 (使用12MHz 時鐘時,最大計數(shù)速率為500 KHz)。定時/計數(shù)器的工作由相應(yīng)的運行控制位TR 控制,當(dāng)TR置1,定時/ 計數(shù)器開始計數(shù);當(dāng)TR 清0 ,停止計數(shù)。第3章 硬件設(shè)計3.1單片機最小系統(tǒng)AT89C51是一種高性能低功耗的采用CMOS工藝制造的8位微控制器,它提供下列標(biāo)準(zhǔn)特征:4KB的程序存儲器,12

7、8B的RAM,32條I/O線,2個16位定時器/計數(shù)器,2個外部中斷源和1個串行口。圖3.1 單片機最小系統(tǒng)其引腳功能如下:電源: VCC -電源引腳,接+5V; GND -接地端;時鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端??刂凭€:控制線共有4根, :地址鎖存允許/片內(nèi)EPROM編程脈沖 ALE功能:用來鎖存P0口送出的低8位地址 功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 PSEN:外ROM讀選通信號。 RESET:復(fù)位信號。 :內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 功能:內(nèi)外ROM選擇端。 Vpp功能:片內(nèi)有EPROM的芯片,在EP

8、ROM編程期間,施加編程電源Vpp。 I/O線 89C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)。5.P3口第二功能 P3.0 RXD 串行輸入口P3.1 TXD 串行輸出口P3.2 外部中斷0申請輸入端P3.3 外部中斷1申請輸入端P3.4 T0 定時計數(shù)器0計數(shù)輸入端P3.5 T1 定時計數(shù)器1計數(shù)輸入端P3.6 外部數(shù)據(jù)存儲器寫選通P3.7 外部數(shù)據(jù)存儲器讀選通第4章 軟件設(shè)計4.1系統(tǒng)的軟件流程圖系統(tǒng)軟件設(shè)計采用模塊化設(shè)計方法。整個系統(tǒng)由初始化模塊、顯示模塊和信號頻率測量模塊和脈沖測量模塊組

9、成(見圖4.1) 。上電后,進(jìn)入系統(tǒng)初始化模塊,系統(tǒng)軟件開始運行。在執(zhí)行過程中,根據(jù)外界開關(guān)選擇是頻率測量模式還是脈沖寬度測量模式。其中當(dāng)閉合開關(guān),藍(lán)色指示燈亮?xí)r,表示是在單脈沖測量模式,打開開關(guān),藍(lán)色指示燈滅,表示是在頻率測量模式。若模式選擇錯誤,將會導(dǎo)致不能得到正確的測量結(jié)果。具體程序流程見下圖:圖4.1 主函數(shù)流程圖圖4.2頻率測量流程圖圖4.3脈沖寬度測量流程圖4.2程序清單程序詳見附錄。第5章 課程設(shè)計總結(jié)通過本次對數(shù)字頻率計的設(shè)計使我對書本上的知識有了更進(jìn)一步的了解,同時也使我感覺到,在實際運用中僅僅憑借書本上的的知識是遠(yuǎn)遠(yuǎn)不夠的。在設(shè)計中我遇到了一些困難,比如測量方法的選擇上曾一

10、度陷入困境,終于攻克了難題。本次課程設(shè)計使我的分析能力和動手能力都有了很大的進(jìn)步,激起了我對課程的更大興趣。在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此頻率的測量就顯得更為重要。頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),此時我們稱閘門時間為1秒。閘門時間也可以大于或小于一秒。閘門時間越長,得到的頻率值就越準(zhǔn)確,但閘門時間越長則沒測一次頻率的間隔就越長。閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。本設(shè)計還有很多地方需要改進(jìn),其中包括對數(shù)據(jù)的處理,

11、因為取模運算耗時過大 ,導(dǎo)致數(shù)碼管在測量高頻信號時出現(xiàn)閃爍。所以應(yīng)該優(yōu)化算法,獲得更好的顯示效果。參考文獻(xiàn)1單片機原理及應(yīng)用陳為,中國石油大學(xué)出版社附錄 仿真截圖開關(guān)打開,指示燈滅,表示此時為測量頻率模式,調(diào)整方波頻率,在數(shù)碼管上得到測量值為520Hz開關(guān)打開,指示燈滅,表示此時為測量頻率模式,調(diào)整方波頻率,在數(shù)碼管上得到測量值為21Hz 經(jīng)過放著可見,對頻率的測量還是比較準(zhǔn)確的以下是對脈沖寬度測量的仿真截圖雙擊脈沖發(fā)生器 ,會出現(xiàn)如下對話框設(shè)置脈沖格式,單脈沖,正脈沖,起始時間為1s后(即開始仿真一秒后,脈沖自動產(chǎn)生),脈沖寬度設(shè)置為520us,點擊OK保持開關(guān)閉合,模式指示燈亮,表示此時在

12、脈沖測量方式下,點擊仿真開始按鈕,開始仿真,1s后,單片機接收到脈沖信號,并把結(jié)果顯示到數(shù)碼管上其默認(rèn)單位為us,此時顯示結(jié)果為576us修改脈沖寬度為0.1s(要求測量范圍的上限),仿真結(jié)果如下,此時數(shù)碼管顯示為us,即0.1s附錄 程序清單/*課題名稱:單片機測輸入方波脈沖頻率和單脈沖寬度測量范圍:外界輸入頻率在10KHz以內(nèi)可以穩(wěn)定顯示,六位數(shù)碼管默認(rèn)單位為Hz 當(dāng)測量范圍過大時,因取模運算耗時大數(shù)碼管會閃爍,但顯示基本正確 單正脈沖測量范圍可達(dá)100us-0.1s,六位數(shù)碼管默認(rèn)單位為us*/#include<reg51.h> /包含51單片機寄存器定義的頭文件#defin

13、e uchar unsigned char#define uint unsigned intlong n,num; /全局變量,n用來記錄T1的中斷次數(shù),4000次后正好是一秒:num用來存放測脈沖寬度時T0的計數(shù)值sbit u=P32; /將u位定義為P3.2sbit L=P27; /將L位定義為P2.7 sbit led=P26; /led亮?xí)r表示測量脈沖寬度狀態(tài)uchar a,b,c,d,e,f; /六位數(shù)碼管uchar code t=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /段碼/*函數(shù)功能:延時子函數(shù)*/void dela

14、y(uint z) uint i,j;for(i=0;i<z;i+) for(j=0;j<50;j+);/*函數(shù)功能:測頻率時的定時器初始化*/void init()/測頻率時的定時器初始化 TMOD=0x25; / 0010 0101 =>T1,定時方式二,8位自動重裝;T0,計數(shù),方式1 TH0=0; /計數(shù)初值為零 TL0=0; TH1=6; /定時250us TL1=6;TR1=1; /開T1定時 TR0=1; /開T0計數(shù) ET0=1; /允許TO中斷 ET1=1; /允許T1中斷 EA=1; /開總中斷 /*函數(shù)功能:顯示子函數(shù)*/ void display()

15、/顯示 P2=0xfe; /最右端一位數(shù)碼管P0=tf; /送段碼 delay(1); /延時 P0=0; /熄滅P2=0xfd; /右端數(shù)第二位P0=te; /送段碼delay(1); /延時P0=0; /熄滅P2=0xfb; /右端數(shù)第三位P0=td; /送段碼delay(1); /延時P0=0; /熄滅P2=0xf7; /右端數(shù)第三位P0=tc; /送段碼delay(1); /延時P0=0; /熄滅P2=0xef; /右端數(shù)第三位P0=tb; /送段碼delay(1); /延時P0=0; /熄滅P2=0xdf; /右端數(shù)第三位P0=ta; /送段碼delay(1); /延時P0=0; /

16、熄滅 /*函數(shù)功能:定時器T0中斷,定時1s*/void t1(void) interrupt 3 /定時器T1中斷, n+; /記錄中斷次數(shù),4000次正好1sif(n=4000) /一秒時間到,讀計數(shù)器的T0的值 n=0; /清零 EA=0; /關(guān)中斷TR1=0; /關(guān)T1定時 TR0=0; /關(guān)T0計數(shù) num=(long)TH0*256+TL0; /取計數(shù)值 TL0=0; /計數(shù)清零TH0=0; /計數(shù)清零a=num/; /對計數(shù)值取模,顯示用b=num/10000%10;c=num/1000%10;d=num/100%10;e=num/10%10;f=num%10;TR1=1; /開

17、T1定時 TR0=1; /開T0計數(shù) EA=1; /重開 /*函數(shù)功能:測脈沖寬度的子函數(shù)*/void maikuan(void) TMOD=0x01; /TMOD=0001H,使用計數(shù)器T0的模式1 EA=1; /開放總中斷EX0=1; /允許使用外中斷IT0=0; /選擇負(fù)跳變來觸發(fā)外中斷TH0=0; /定時器T0賦初值0TL0=0; /定時器T0賦初值0while(L=0) display();/無限循環(huán), 不停調(diào)用顯示子函數(shù)/*函數(shù)功能:外中斷0的中斷服務(wù)程序*/void int0(void) interrupt 0 /外中斷0的中斷編號為0TR0=1; /外中斷一到來,即啟動T0計時while(u=0); / P32為低電平時T0一直計數(shù)TR0=0; /P32為高電平時關(guān)閉T0 num=(long)TH0*256+TL0)+31; /取計數(shù)值TL0=0; /計數(shù)清零TH0=0; /計數(shù)清零if(TF0=1)/如果計數(shù)器有溢出,需要 加上溢出前的計數(shù)值65535TF0=0;num=num+

溫馨提示

  • 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

提交評論