論文利用單片機設計頻率計_第1頁
論文利用單片機設計頻率計_第2頁
論文利用單片機設計頻率計_第3頁
論文利用單片機設計頻率計_第4頁
論文利用單片機設計頻率計_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、利用單片機設計頻率計課程設計說明書專業班級: 姓 名: 學 號: 指導教師: 唐飛 設計時間: 2013年12月15日 物理與電氣工程學院 2013年 12 月 20 日摘 要在電子技術中,頻率是最基本的參數之一,并且與許多電參量的測量方案、測量結果都有十分密切的關系,因此頻率的測量就顯得更為重要。本設計所要介紹的是以單片機89C52為核心設計的一種頻率計。在本文的設計采用單片機內部的定時器/計數器對脈寬的機器周期數進行計數,從而求得被測信號的頻率值, 最后通過動態顯示電路顯示數值由于單片機內部振蕩頻率很高, 所以一個機器周期的量化誤差相當小, 可以有效地提高低頻信號的測量準確性。 關鍵詞:

2、單片機,頻率計數器,設計,測量準確性 Abstract :In the Electrical Technology,frequency is one of the basic parameters,What is more ,it connectss with measuring means and measuring reasults of many electrical parameters,so frequency measuring is more important.The design is a frequency counter whose nucleus is singlech

3、ip89C52.It uses the timer or counter of singlechip which countes the machine cycle of impulse width,and we will get the frequency results of measured signal. At last,by static displaying circuit and results.The hunting frequency of singlechip is so high, that the error of machine cycleis slow,so it

4、can improve the measuring veracity of low frequency in effect. Key words : Singlechip Frequency counter Design Measuring veracity目 錄目 錄1第一章 引言2第二章 頻率計總體方案設計32.1 方案設計32.2 方案選擇4第三章 硬件電路的設計43.1 單片機43.2 顯示電路53.3 按鍵電路6第四章 軟件電路74.1 模塊軟件說明74.1.1 數碼管顯示74.1.2 按鍵功能獲取84.1.3 定時,記數的處理84.1.4 信號產生84.2 原理流程圖9附 錄10結

5、 論13參考文獻14第一章 引言 頻率計數器是測量信號頻率的裝置, 也可以用來測量方波脈沖的脈寬通常頻率以數字形式直接顯示出來, 簡便易讀, 即所謂的數字頻率計頻率測量對生產過程監控有很重要的作用, 可以發現系統運行中的異常情況, 以便迅速作出處理,傳統的頻率計采用測頻法測量頻率, 通常由組合電路和時序電路等大量的硬件電路構成, 產品不但體積較大, 運行速度慢, 而且測量低頻信號時不宜直接采用基于單片機技術,而數字式頻率計數器具有操作簡單方便、響應速度快、體積小等一系列優點, 可以及時準確地測量低頻信號的頻率。頻率計最基本的工作原理為:當被測信號在特定時間段T內的周期個數為N時,則被測信號的頻

6、率f=N/T。在一個測量周期過程中,被測周期信號在輸入電路中經過放大、整形、微分操作之后形成特定周期的窄脈沖,送到主門的一個輸入端。主門的另外一個輸入端為時基電路產生電路產生的閘門脈沖。在閘門脈沖開啟主門的期間,特定周期的窄脈沖才能通過主門,從而進入計數器進行計數,計數器的顯示電路則用來顯示被測信號的頻率值,內部控制電路則用來完成各種測量功能之間的切換并實現測量設置。頻率計的基本原理是用一個頻率穩定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒內待測信號的脈沖個數,此時我們稱閘門時間為1秒。閘門時間也可以大于或小于一秒。閘門時間越長,得到的頻率值就越準確。數字頻率計是數字

7、電路中的一個典型應用, 實際的硬件設計用到的器件較多, 連線比較復雜, 而且會產生比較大的延時, 造成測量誤差、可靠性差。隨著復雜可編程邏輯器件( CPLD) 和功能越來越強大的單片機的廣泛應用。數字頻率計是一種用十進制數字顯示被測信號頻率的數字測量儀器, 它的基本功能是測量正弦信號、方波信號、尖脈沖信號及其他各種單位時間內變化的物量。在AT89C52單片機上實現的頻率計, 整個系統非常精簡, 而且具有靈活的現場可更改性。在不更改硬件電路的基礎上, 對系統進行各種改進還可以進一步提高系統的性能。該數字頻率計具有高速、精確、可靠、抗干擾性強和現場可編程等優點。第二章 頻率計總體方案設計2.1 方

8、案設計方案一:以單片機為核心,利用單片機的計數、定時器功能來實現頻率的計數并且利用單片機的動態掃描把測出的數據送到數字顯示電路顯示。檢測定時器定時t秒內記數器測得的周期脈沖個數N,則信號頻率:f=N/t 赫茲。方案二:直接測量被測信號的周期T,則由周期與頻率的關系知道f=1/T。 2.2 方案選擇 比較以上兩種方案可以知道,方案一是通過定時記數測量t秒內周期信號的數目,時間越長測得頻率值越精確。原理電路簡單,調試簡單只要改變程序的設定值則可以實現不同頻率范圍的測試能自動選擇測試的量程。而相比較方案二如要測量高頻的信號還需要加上分頻電路,會增加硬件電路,而且當信號受到干擾時,波形改變測量會出現較

9、大誤差。基于上述,所以選擇了方案一。第三章 硬件電路的設計3.1 單片機STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統可編程Flash 存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統可編程Flash,使得STC89C52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節Flash,512字節RAM, 32 位I/O 口線,看門狗定時器,內置4KB EEPROM,MAX810復位電路,三個16 位 定時器/計數器,一個6向量2級中斷結構,全雙工串行口。另外 STC89X52 可降至0Hz 靜態邏輯操作,支持2種軟件可選擇節電模

10、式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35Mhz,6T/12T可選。3.2 顯示電路該設計采用共陽數碼管動態顯示實驗結果,P2口送位選信號,P0口送段選信號。在單片機應用系統中,數碼管顯示器顯示常用兩種辦法:靜態顯示和動態掃描顯示。所謂靜態顯示,就是每一個數碼管顯示器都要占用單獨的具有鎖存功能的I/O 接口用于筆劃段字形代碼。這樣單片機只要把要顯示的字形代碼發送到接口電路,就不用管它了,直到要顯示新的數據時,再發送新的字形碼。在單片機系統中動

11、態掃描顯示接口是單片機中應用最為廣泛的一種顯示方式之一。其接口電路是把所有顯示器的8 個筆劃段a-h 同名端連在一起,而每一個顯示器的公共極COM 是各自獨立地受I/O 線控制。CPU 向字段輸出口送出字形碼時,所有顯示器接收到相同的字形碼,但究竟是那個顯示器亮,則取決于COM 端,而這一端是由I/O 控制的,所以我們就能自行決定何時顯示哪一位了。而所謂動態掃描就是指我們采用分時的辦法,輪流控制各個顯示器的COM 端,使各個顯示器輪流點亮。在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的(約1ms),但由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位顯示器并非同時點亮,但只要掃

12、描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感。 3.3 按鍵電路該設計采用矩陣鍵盤掃描的方式查詢鍵盤,從而設置開關等功能鍵,利用單片機的P1口送按鍵信號檢測,確定為哪一功能按鍵按下使單片機執行相應功能。對單片機的P1口送0xf0數據,當第一列有按鍵按下,則P1.4就會變成低電平。第二列、第三列、第四列也是相同方式。從而得到一個鍵值,在通過查表確定是哪一列有按鍵按下。給每一列賦予一個功能號,就會使相應功能與按鍵對應起來。 第四章 軟件電路4.1 模塊軟件說明4.1.1 數碼管顯示采用共陽數碼管動態顯示實驗結果,P2口送位選信號,P0口送段選信號。段選位選信號均查表獲得。用十進制

13、數字顯示,測得數據有幾位,就在八位的數碼管上顯示幾位。數據每一位的獲取采用數據除10取余獲得,在數碼管上從最低位開始顯示,直到最高位為止。4.1.2 按鍵功能獲取采用矩陣按鍵掃描,利用單片機的P1口送按鍵信號檢測,確定為哪一功能按鍵按下使單片機執行相應功能。對單片機的P1口送0xf0數據,當第一列有按鍵按下,則P1.4就會變成低電平。第二列、第三列、第四列也是相同方式。從而得到一個鍵值,在通過查表確定是哪一列有按鍵按下。給每一列賦予一個功能號,就會使相應功能與按鍵對應起來。當第一列有按鍵按下P1=0xf1,啟動第一個功能測量現在信號頻率值。當第二列有按鍵按下P1=0xf2,啟動第二個功能查看前

14、一個信號頻率值。當第三列有按鍵按下P1=0xf4,啟動第三個功能查看后一個信號頻率值。當第四列有按鍵按下P1=0xf8,啟動第四個功能復位,退出測量功能。4.1.3 定時,記數的處理由于采集信號時間越長測得信號頻率在就相應越準確,誤差也會越小。但時間太長測量效率就會下降,所以時間不宜太長。本方案采用1.5s定時采集信號,采集周期信號數N/1.5就是頻率值。為了使測量值更加精確,采用實數計算,得到數據將顯示一位小數,這樣精度也會提高。4.1.4 信號產生對于測試檢測信號,可以利用信號發生器產生不同頻率的方波信號,但是這樣的信號不穩定容易受到外界的干擾。還可通過單片機編寫連續方波信號,這樣的信號是

15、計算得到,但由于程序的執行時序,可能產生誤差。計時到取反利用單片機寫的脈沖信號是方波,通過單片機的定時器定時t=1/2f,定時到脈沖信號就取反一次,這樣就是頻率為f的方波信號。并且這個方波的峰峰值小于單片機承受電壓5v。t=0計時4.2 原理流程圖附 錄#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar code zima= /顯示數字的字碼表0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xc6,0xa1,0

16、x86,0x8e;uchar code table= /位選信號字碼表0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar code gongneng=0x70,0xb0,0xd0,0xe0; /按鍵功能碼uint k,t0,t1,n,j;/k為按鍵參數,t0為定時參數,t1為記數溢出參數,num為頻率值,n是脈沖位數double num,a5; /num為頻率值,a5存放測得脈沖值(最多5個)void delay(uchar i) /i毫秒延時uchar j;while(i-)for(j=0;j<115;j+);void chushi() /初始化

17、函數t1=0;TMOD=0x51; /設定定時器工作,T0為定時方式1,T1為記數方式1TH0=(65536-20000)/256; /20ms的記數初值TL0=(65536-20000)%256; TH1=0; /記數器T1從0開始記數TL1=0;EA=1; /把總中斷打開int key()while(1)int i;P1=0xf0;if(P1&0xf0)!=0xf0) /有按鍵按下執行delay(10); /延時消抖if(P1&0xf0)!=0xf0);/確定有鍵按下,沒有不停掃描for(i=0;i<4;i+)if(P1=gongnengi)k=i;while(P1!

18、=0xf0);/按鍵松開檢測delay(10);while(P1!=0xf0);/確定按鍵松開return(k); void jishu() /統計測量時間內測得的脈沖數目ET0=1;ET1=1;TR0=1; /將定時器T0,計數器T1打開 TR1=1;while(1)if(t0=75) /定時器T0定時2s到,則初始化定時參數m t0=0; /重新設置定時參數EA=0; /并關閉總中斷break; /測量時間到關閉脈沖uint weishu(uint num) /求脈沖num值得位數uint m,n=0;for(m=num;m!=0;n+)m/=10;return n;void xiansh

19、i(uint num,uint n)uint x,i,a; /x中顯示數字,a為除數x=0;while(1)a=num;for(i=0;i<n;i+) /各位的顯示x=a%10;P2=tablei;if(i=1) /判斷是否為個位,是顯示小數點,否則不執行P0=zimax&0x7f;elseP0=zimax;delay(5);P2=0xff;a/=10;P1=0xf0;if(P1!=0xf0) /查看是否有其他功能鍵k=key(); break;void main()while(1)P2=0x7f; /初始狀態顯示的位選P0=zima0; /初始狀態一位顯示0chushi();

20、/調用初始化函數k=key(); /調用按鍵檢測函數jishu(); /1s記數脈沖數while(1)if(k=3)/當k=3時顯示當前測得信號頻率num=TH1*256+TL1+t1*65536; /計算頻率值num/=1.5;num*=10;(int)num; aj=num;j+;n=weishu(num); /計算頻率值的位數nxianshi(num,n);if(k=2) /當k=2時顯示前一個信號測量頻率num=a-j;n=weishu(num); /計算頻率值的位數nxianshi(num,n); else if(k=1) /當k=1時顯示后一個信號頻率num=a+j;n=weishu(num); /計算頻率值的位數nxianshi(num,n); /顯示信號頻率else break;/不檢查前一個或后一個返

溫馨提示

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

評論

0/150

提交評論