本文提出設計數字頻率計的方案,重點介紹以單片機AT89C52為控制核心,實現頻率測量的數字頻率設計。測頻的基本原理是采用在低頻段直接測頻法,在低頻段直接測頻法的設計思路,硬件部分由單片機和數計顯示電路組成;軟件部分由信號頻率測量模塊和數據顯示模塊等模塊實現。應用單片機的控制功能和數學運算能力,實現計數功能和頻率的換算。設計的頻率計范圍能夠達到1Hz~9999Hz,滿足所要求的頻率范圍,測量精度較高。
一、引言
數字頻率計是一種基礎測量儀器,到目前為止已有 30 多年的發展史。早期,設計師們追求的目標主要是擴展測量范圍,再加上提高測量精度、穩定度等,這些也是人們衡量數字頻率計的技術水平,決定數字頻率計價格高低的主要依據。目前這些基本技術日臻完善,成熟。應用現代技術可以輕松地將數字頻率計的測頻上限擴展到微頻段。 隨著科學技術的發展,用戶對數字頻率計也提出了新的要求。對于低檔產品要求使用操作方便,量程(足夠)寬,可靠性高,價格低。而對于中高檔產品, 則要求有高分辨率,高精度,高穩定度,高測量速率;除通常通用頻率計所具有的功能外,還要有數據處理功能,統計分析功能,時域分析功能等等,或者包含電壓測量等其他功能。這些要求有的已經實現或者部分實現,但要真正完美的實現這些目標,對于生產廠家來說,還有許多工作要做,而不是表面看來似乎發展到頭了。 隨著數字集成電路技術的飛速發展,應用計數法原理制成的數字式頻率測量儀器具有精度高、測量范圍寬、便于實現測量過程自動化等一系列的突出特點。 設計一個數碼管顯示數字頻率計。要求頻率測量范圍為1Hz-9999Hz。數字顯示位數為四位靜態十進制計數顯示被測信號。先確定好數字頻率計的組成部分,然后分部分設計,最后組成電路。 - 電路原理分析
3.1數字頻率計概念
數字頻率計是一種直接用十進制數字現設被測信號頻率的一種測量裝置,它不僅可以測量正弦波、方波、三角波等信號的頻率,而且還可以用它來測量被測信號的周期。經過改裝,在電路中增加傳感器,還可以做成數字脈搏計、電子稱、計價器等。因此,數字頻率計在測量物理量方面有廣泛的應用。
2.1.2數字頻率計組成 數字頻率計由振蕩器、分頻器、放大整形電路、控制電路、計數譯碼顯示電路等部分組成。其中的控制脈沖采用時鐘信號源替代,待測信號用函數信號發生器產生。數字頻結構原理框圖如圖2.1 
圖3.1 數字頻率計結構
3.2控制電路
控制電路是整個數字頻率計正常工作的核心部分,需仔細分析各種頻率信號(計數、選通、鎖存、清零)的時序關系,以最終控制計數譯碼顯示電路的工作狀態。由于功能要求識別的最小頻率是1Hz,因此將選通信號的高電平時間定為1s,在這個時間段內允許待測信號輸入進行計數,鎖存和清零信號的輸出均為高電平。在選通信號為低電平時關閉閘門,計數停止,處于數據鎖存的時間段,此時的鎖存信號為低電平,清零信號仍為高電平,直到選通信號的下一個高電平到來之前(開始下一個計數),清零信號端輸出一個低電平實現數碼管顯示的清零,準備進入下一個計數周期。如此往復,以實現待測信號頻率的反復測量。這幾個信號的工作時序如圖4.2所示。選通信號計數信號… 鎖存信號 清零信號 圖3.2 控制電路各頻率信號時序關系
當JK觸發器的J、K端同時接高電平時,輸出端的狀態會隨著每輸入一個脈沖改變一次。因此JK觸發器輸入端的頻率是輸出端的兩倍,這就是通常認為的二分頻。將輸出端加到下一個JK觸發器的時鐘端又可實現頻率的再次二分頻,以此類推可實現頻率的逐次分頻.根據控制電路各信號時序分析得知,選通信號的周期應大于等于鎖存信號和清零信號,因此選用上述電路的Q2端作為選通信號的輸出端,假定選通信號的高電平時間為1s,那Q2端的頻率應為0.5Hz,由此可推出CP端和Q1端的信號頻率分別為2Hz和1Hz。在Q2端的選通信號為高電平時,允許計數,頻率計開始工作,當Q2端進入低電平段,頻率計轉為鎖存階段,直至下一個Q2端高電平到來前需要一個清零信號。觀察圖的工作時序可知,在Q2端的第二個高電平到來前,CP、Q1、Q2端均為低電平,用一個3輸入的或門將這三個端口連接,輸出一個低電平作為清零信號,加到計數譯碼顯示電路的CLR端。由此得到選通信號周期為2s,計數時間為1s,鎖存時間為0.75s,清零時間為0.25s。 四、具體電路實現
4.1仿真圖

五、電路性能指標
5.1仿真過程
5.1.1輸入1Hz

5.1.2輸入100Hz

5.1.1輸入1000Hz

5.1.4輸入5000Hz

5.1.5輸入9000Hz

5.2誤差分析
六、總結和體會
對于本次設計一個測量1Hz~9999Hz的數碼管顯示數字頻率計還是很成功的,誤差只有0.03%。
我的體會就是系統的分析與設計過程也是對學習的總結過程,更是進一步學習和探索的過程。在這過程中,我對利用可編程控制器進行控制系統的設計與開發有了深刻的的認識,對機械手的工作原理有了進一步的掌握,對控制系統的分析與設計有了切身的認識和體會,并在學習和實踐過程中增長了知識,豐富了經驗。控制系統的開發設計是一項復雜的系統工程,必須嚴格按照系統分析、系統設計、系統實施、系統運行與調試的過程來進行。系統的分析與設計是一項很辛苦的工作,同時也是一個充滿樂趣的過程。在設計過程中,要邊學習,邊實踐,遇到新的問題就不斷探索和努力,即可使問題得到解決。同時,在本次設計中,也深刻體會到理論和實踐相集合的重要性。雖然之前收集了大量的資料但在實際應用中卻有很大差異,出現了許多意想不到的問題。但經過長時間的摸索最終還是設計出達到要求的系統。由于時間緊迫,有些設計工作還有待完善,在以后的工作中我會繼續努力,不斷提高自己的技術水平,以適應未來的激烈競爭形勢。
單片機源程序如下:
- #include <reg52.h >
- #include <intrins.h >
- #define uint unsigned int
- #define uchar unsigned char
- sbit k1=P3^0;
- sbit k2=P2^0;
- sbit LED=P2^1;
- unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- unsigned char code dispcode[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
- unsigned char count [8]={0, 0, 0, 0, 0, 0, 0, 0};
- unsigned int T0count =0;
- unsigned char time1tick =0;
- unsigned char i =0,a=0,j=0,y=0;
- unsigned int x ;
- void pulse_init (void)
- {
- TMOD =0x16;
- TH0=0x00;
- TL0=0x00;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- ET0=1;
- ET1=1;
- EA=1;
- }
- void delay (uint ms)
- {
- unsigned char i,j;
- for(i =0; i<ms; i ++)
- for(j =0; j<250;j ++)
- {
- _nop_();
- _nop_();
- _nop_();
- }
- }
- static void time0_int (void) interrupt 1 using 0
- {
- T0count ++;
- }
- void t1(void) interrupt 3 using 0
- {
- time1tick++;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- if (time1tick==10*a)
- {
- time1tick=0;
- TR0=0;
- TR1=0;
- ET0=0;
- ET1=0;
- }
- }
- void display (void)
- {
- x=256*T0count+TL0;
- i=7;
- while(x)
- {
- count[i]=x%10;
- x=x/10;
- i--;
- }
- while(i--)
- {
- count[i]=10;//修改
- }
- for(i=0;i<8;i++)
- {
- if(i==7&&j==1)
- {
- P1=0x80;
- delay(1);
- }
- P0=dispbit[i];
- P1=dispcode[count[i]];
- delay(1);
- }
- }
- void main()
- {
- if(!k2)
- {
- delay(5);
- if(!k2)
- j=0;
- else
- j=1;
- }
- switch(j)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (17.71 KB, 下載次數: 73)
下載附件
2018-7-21 23:37 上傳
所有資料51hei提供下載:
單片機課程設計201508402146.zip
(330.07 KB, 下載次數: 358)
2018-7-21 21:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|