導航:首頁 > 操作系統 > 51單片機頻率計設計

51單片機頻率計設計

發布時間:2023-03-01 12:05:22

單片機頻率計

1.實驗任務

利用51單片機的T0、T1的定時計數器功能,來完成對輸入的信號進行頻率計數,計數的頻率結果通過8位動態數碼管顯示出來。要求能夠對0-250KHZ的信號頻率進行准確計數,計數誤差不超過±1HZ。

2.電路原理圖

見插圖

3.程序設計內容

(1).定時/計數器T0和T1的工作方式設置,由圖可知,T0是工作在計數狀態下,對輸入的頻率信號進行計數,但對工作在計數狀態下的T0,最大計數值為fOSC/24,由於fOSC=12MHz,因此:T0的最大計數頻率為250KHz。對於頻率的概念就是在一秒只數脈沖的個數,即為頻率值。所以T1工作在定時狀態下,每定時1秒中到,就停止T0的計數,而從T0的計數單元中讀取計數的數值,然後進行數據處理。送到數碼管顯示出來。

(2).T1工作在定時狀態下,最大定時時間為65ms,達不到1秒的定時,所以採用定時50ms,共定時20次,即可完成1秒的定時功能。

4.C語言源程序

/******************************************************************************

*定時器+計數器測頻

*

*file:frequency.c

*name:zhzhchang

*time:2010.3.17

*V1.0

*blog:http://blog.csdn.net/zhzht19861011

*Nots:本程序定義6個數碼管,經過實測,在200HZ~50KHZ時結果較准確,誤差小於0.4%,

*50KHZ以上頻率未進行測量.據資料表明,可以測量到120KHZ,本程序未證明.

*********************************************************************************/

#include<reg52.h>

bitint_flag;//定時器01S到標志位

unsignedcharvolatileint_count;//定時器0中斷次數

unsignedcharvolatileT1count;//定時器1中斷次數

unsignedcharcodedofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示段碼值0123456789

unsignedlongsum;//1S內脈沖總個數

unsignedcharled[6];//LED顯示緩存

///////////////軟體延時/////////////

voiddelay(unsignedintcnt)

{

while(--cnt);

}

///定時器0初始化

voidinit_t0(void)

{

TMOD=(TMOD&0xF0)||0x01;//定時器0工作於方式1

TH0=(65536-50000)/256;//定時50ms

TL0=(65535-50000)%256;

}

//定時器1初始化

voidinit_t1(void)

{

TMOD=(TMOD&0x0F)|0x50;//timer1forcount

TH1=0x00;

TL1=0x00;

}

//顯示

voiddisp(void)

{

unsignedchari;

for(i=0;i<6;i++)

{

P0=dofly[(led[i])];//取顯示數據

P2=5-i;//取段碼

delay(100);//掃描間隙延時,根據單片機調整,延時1ms即可

}

}

///////////////////////////////////////////////////////

voidmain(void)

{

EA=1;//開總中斷

init_t0();//初始化定時器

init_t1();

TR0=1;//定時器開始工作

TR1=1;

ET0=1;//開T0中斷

while(1)

{

if(int_flag==1)

{

int_flag=0;

sum=TL1+TH1*256+T1count*65536;//計算1秒內的脈沖個數

//以下將數據格式化,轉成LED可顯示的BCD碼

led[0]=sum%10;//最低位

sum=sum/10;

led[1]=sum%10;//第二位

sum=sum/10;

led[2]=sum%10;

sum=sum/10;

led[3]=sum%10;

sum=sum/10;

led[4]=sum%10;

led[5]=sum/10;

int_count=0x00;

T1count=0;

TH1=0x00;

TL1=0x00;

TR1=1;

}

disp();

}

}

//定時器0中斷服務程序

voidint_t0(void)interrupt1

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

int_count++;

if(int_count==20)

{

TR1=0;

int_flag=1;

int_count=0x00;

}

}

//定時器1中斷服務程序

voidint_t1(void)interrupt3

{

T1count++;

}

別說你的設計要求用匯編啊!!!

不過既然是課程設計,我這個只是給你參考,你自己一定要弄懂,變成自己的。我實測過,程序沒問題,但用到你的硬體上可能需要改一下,因為你的硬體數碼管不一定和我的硬體接法一樣,但整體思路我都給你了。

② 51單片機電子頻率計

建議你去"幸福校園"看看 裡面有些樣子 你可以參考
前言
傳統的數字頻率計都是採用純硬體方式組成(純數字電路)。它的集成電路(IC)用量較大,因而產品的體積、功耗都較大,生產成本較高。產品定型後不能升級(加入新功能)。而採用單片機和相關可編程智能集成器件製成的現代數字頻率計方式情況就不同了,單片機的內核CPU可完成多項工作如計數、讀入、解碼、驅動和時基的產生等。和純硬體方式比,它減少了很大一部分的集成電路的用量,還可加入許多的智能操作,這更是純硬體方式所望塵莫及的。
目前市場上的頻率計產品很多,但基本上都是採用專用計數晶元(如ICM7240 , ICM7216) 和數字邏輯電路組成,由於這些晶元本身的工作頻率不高(如ICM7240 僅有15MHz 左右) ,從而限制了產品的工作頻率的提高, 遠不能達到在一些特殊的場合需要測量很高的頻率的要求,而且測量精度也受到晶元本身極大的限制。
自從80年代單片機引入我國之後,單片機已廣泛地應用於各行各業的電子設計中,使頻率計智能化水平在廣度和深度上產生了質的飛躍,數字化也成為了電子設計的必由之路. 運用單片機和高速計數器的組合設計頻率計,並採用適當的演算法取代傳統電路,次方法不僅能解決傳統頻率計結構復雜、穩定性差、精度不高的弊端,而且性能也將大有提高,可實現精度較高、等精度和寬范圍頻率計的要求;隨著單片機技術的不斷發展,可以用單片機通過軟體設計直接用十進制數字顯示被測信號頻率。本設計正是基於此技術進行的傳統頻率計技術改進。

③ 基於51單片機的數字頻率計設計(proteus模擬)

#include"reg51.h"
#define uchar unsigned char
uchar tt;
void init();
void main(uchar t) //根據需要修改相應的值;
{
t=tt;
init();
while(1)
{
if(tt==t) //如果t==10,那麼周期是1秒,即平率==1Hz;
{
tt=0;
P0^0=~P0^0; //設信號從P0_0口輸出;
}
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //這里周期是100ms,你可以根據你的需要修改
EA=1;
ET0=1;
TR0=1;
}
void timer() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}

④ 51單片機的數字頻率計

本應用系統設計的目的是通過在「單片機原理及應用」課堂上學習的知識,以及查閱資料,培養一種自學的能力。並且引導一種創新的思維,把學到的知識應用到日常生活當中。在設計的過程中,不斷的學習,思考和同學間的相互討論,運用科學的分析問題的方法解決遇到的困難,掌握單片機系統一般的開發流程,學會對常見問題的處理方法,積累設計系統的經驗,充分發揮教學與實踐的結合。全能提高個人系統開發的綜合能力,開拓了思維,為今後能在相應工作崗位上的工作打下了堅實的基礎。

1.1數字頻率計概述
數字頻率計是計算機、通訊設備、音頻視頻等科研生產領域不可缺少的測量儀器。它是一種用十進制數字顯示被測信號頻率的數字測量儀器。它的基本功能是測量正弦信號,方波信號及其他各種單位時間內變化的物理量。在進行模擬、數字電路的設計、安裝、調試過程中,由於其使用十進制數顯示,測量迅速,精確度高,顯示直觀,經常要用到頻率計。
本數字頻率計將採用定時、計數的方法測量頻率,採用一個1602A LCD顯示器動態顯示6位數。測量范圍從1Hz—10kHz的正弦波、方波、三角波,時基寬度為1us,10us,100us,1ms。用單片機實現自動測量功能。
基本設計原理是直接用十進制數字顯示被測信號頻率的一種測量裝置。它以測量周期的方法對正弦波、方波、三角波的頻率進行自動的測量。
點擊重新載入
1.2頻率測量儀的設計思路與頻率的計算

圖1 頻率測量原理圖

頻率測量儀的設計思路主要是:對信號分頻,測量一個或幾個被測量信號周期中已知標准頻率信號的周期個數,進而測量出該信號頻率的大小,其原理如右圖1所示。

若被測量信號的周期為,分頻數m1,分頻後信號的周期為T,則:T=m1Tx 。由圖可知: T=NTo
(註:To為標准信號的周期,所以T為分頻後信號的周期,則可以算出被測量信號的頻率f。)
由於單片機系統的標准頻率比較穩定,而是系統標准信號頻率的誤差,通常情況下很小;而系統的量化誤差小於1,所以由式T=NTo可知,頻率測量的誤差主要取決於N值的大小,N值越大,誤差越小,測量的精度越高。

1.3 基本設計原理

基本設計原理是直接用十進制數字顯示被測信號頻率的一種測量裝置。它以測量周期的方法對正弦波、方波、三角波的頻率進行自動的測量。
所謂「頻率」,就是周期性信號在單位時間(1s)內

⑤ 51單片機製作簡易數字頻率計程序

這里有一個四位數碼管的頻率計,供參考

#include<reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位碼
//ucharwei[4]={0XEf,0XDf,0XBf,0X7f};//位的控制端 (開發板)
ucharwei[4]={0X80,0X40,0X20,0X10};//位的控制端 (模擬)
uintz,x,c,v,date; //定義數據類型
uintdispcount=0;
uintlck=0;
uintdisp=0;
/******************************************************************

延時函數

******************************************************************/
voiddelay(uchart)
{
uchari,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{;
}
}
}

/**********************************************************************
數碼管動態掃描
*********************************************************************/
voidxianshi()
{
/*****************數據轉換*****************************/
z=date/1000; //求千位
x=date%1000/100; //求百位
c=date%100/10; //求十位
v=date%10; //求個位

P2=wei[0];
P0=an[z];
delay(50);
P2=wei[1];
P0=an[x];
delay(50);
P2=wei[2];
P0=an[c];
delay(50);
P2=wei[3];
P0=an[v];
delay(50);


}

/*************************************************************************
定時器初值1ms
**************************************************************************/
voidinitTimer(void)
{
TMOD=0x0;
TH0=0xe3;
TL0=0xc;
}

/*************************************************************************
定時器函數
**************************************************************************/
voidtimer0(void)interrupt1
{
TH0=0xe3;
TL0=0xc;
lck++;
if(lck==1000)
{
disp=dispcount;
lck=0;
dispcount=0;
}

}

/*************************************************************************
中斷函數
**************************************************************************/
voidint0(void)interrupt0
{

dispcount++;//每一次中斷,計數加一

}

/*************************************************************************
主函數
**************************************************************************/
voidmain(void)
{

IT0=1;//INT0下降沿中斷
EX0=1;//允許INT1中斷
initTimer();//裝入初值
TR0=1;
ET0=1;
EA=1;
while(1)

{
date=disp;
xianshi();
}
}

⑥ 基於51單片機數字頻率計論文

1.緒論
1.1 數字頻率計的發展現狀及研究概況
隨著電子技術的飛速發展,各類分立電子元件及其所構成的相關功能單元,已逐步被功能更強大、性能更穩定、使用更方便的集成晶元所取代。由集成晶元和一些外圍電路構成的各種自動控制、自動測量、自動顯示電路遍及各種電子產品和設備。數字系統和數字設備已廣泛應用於各個領域,更新換代速度可謂日新月異。
在電子系統非常廣泛的應用領域內,到處可見到處理離散信息的數字電路。供消費用的微波爐和電視、先進的工業控制系統、空間通訊系統、交通控制雷達系統、醫院急救系統等在設計過程中無一不用到數字技術。數字電路製造工業的進步,使得系統設計人員能在更小的空間內實現更多的功能,從而提高系統可靠性和速度。
數字頻率計是現代通信測量設備系統中不可缺少的測量儀器,不但要求電路產生頻率准確的和穩定度高的信號,而且能方便的改變頻率。
數字頻率計主要實現方法有直接式、鎖相式、直接數字式和混合式四種。
直接式的優點是速度快、相位雜訊低,但結構復雜、雜散多,一般只應用在地面雷達中。
鎖相式的優點是相位同步的自動控制,製作頻率高,功耗低,容易實現系列化、小型化、模塊化和工程化。
直接數字式的優點是電路穩定、精度高、容易實現系列化、小型化、模塊化和工程化。
隨著單片鎖相式數字頻率計的發展,鎖相式和數字式容易實現系列化、小型化、模塊化和工程化,性能也越來越好,已逐步成為兩種最為典型,用處最為廣泛的數字頻率計。
1.2 本課題研究背景及主要研究意義
數字頻率計是計算機、通訊設備、音頻視頻等科研生產領域不可缺少的測量儀器,並且與許多電參量的測量方案、測量結果都有十分密切的關系,因此,頻率的測量就顯得更為重要。在數字電路中,頻率計屬於時序電路,它主要由具有記憶功能的觸發器構成。在計算機及各種數字儀表中,都得到了廣泛的應用。在CMOS電路系列產品中,頻率計是用量最大、品種很多的產品。
本課題採用的是直接數字式的頻率計,設計原理簡單,是全硬體電路實現,電路穩定、精度高,大大的縮短了生產周期。
1.3 本課題主要研究內容
本課題採用數字電路來製作一個1HZ—1MHZ的數字頻率計,並將所需得到的頻率通過數碼管顯示出來。 數字頻率計主要由四部分組成:時基電路、閘門電路、邏輯控制電路以及可控制的計數、解碼、顯示電路。原理框圖如圖1-1:

圖1-1 原理框圖

⑦ 51單片機頻率計的中斷程序怎麼設計

定時器11MS中斷一次,5次是5ms,乘200就是1秒種,其初值由晶振頻率決定,有計算軟體
當然,也可以中斷10次或20次,頻率判斷更准確,但響應速度慢了
1600或800方波接入定時器/計數器0的外部輸入引腳上,好像是P3.4
程序如下:
void
init()//初始化設置
{
TMOD=0x15;//定時器0作為計數器,定時器1作為定時器用
TH0=.0;//計數器清0
TL0=0;
EA=1;//開總中斷
ET1=1;//允許定時器1中斷
TH1=......;
TL1=.......;
TR0=1;//啟動計數器
TR1=1;//啟動定時器
aa=0;
}
void
main()//主程序很簡單
{
init();//初始化
while(1)//循環程序
{
dd=bb*256+cc;//
5ms的計數值
ee=200*dd;//換算為1秒鍾的計數值
if((ee>750)&&(ee<850))
{
P3.5=0;
}
if((ee>1550)&&(ee<1650))
{
P3.5=1;
}
}
}
void
timer1()interrupt
3//注意:定時器1的中斷序號為3
{
aa++;
TH1=....;.
TL1=....;.
if(aa==5)//中斷5次,共5ms
{
TR0=0;//暫停計數
aa=0;
bb=TH0;//讀出計數器數據
cc=TL0;
TL0=0;//計數器清0
TH0=0;
TR0=1;//重新啟動計數器
}
}

⑧ 利用單片機的定時/計數功能設計一個頻率測量裝置,並以此頻率輸出方波

可以看看這個,51單片機簡易頻率計

閱讀全文

與51單片機頻率計設計相關的資料

熱點內容
php多個分隔符分割 瀏覽:374
表格怎麼轉移到另一個文件夾 瀏覽:923
同態加密gpu 瀏覽:216
程序員告訴你網賭為什麼贏不了 瀏覽:971
程序員最帥操作 瀏覽:72
雲伺服器可以隨時更換嗎 瀏覽:489
老款車在哪裡可以買到app 瀏覽:460
程序員事業單位 瀏覽:68
特來電需要用哪個App 瀏覽:881
電腦如何共享其他伺服器 瀏覽:260
php網站性能優化 瀏覽:354
被子收納袋壓縮真空 瀏覽:30
h1z1選什麼伺服器 瀏覽:484
蘋果版三國殺怎麼在安卓上下載 瀏覽:728
安潤國際app在哪裡下載 瀏覽:438
iospdf教程下載 瀏覽:332
加密貨幣換手率300表示什麼 瀏覽:727
手機wps新建文件夾存照片 瀏覽:399
單片機rgbled 瀏覽:963
怎麼通過文件加密後發給微信好友 瀏覽:90