導航:首頁 > 操作系統 > 基於51單片機數字頻率計

基於51單片機數字頻率計

發布時間:2023-05-17 04:46:24

① 基於51單片機的數字頻率計設計資料。要C語言的,謝謝。

#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define NOP() _nop_()

sbit key1=P1^0;//key1 按此按鍵輸出1000Hz
sbit key2=P1^1;//key2 按此按鍵輸出100Hz
sbit key3=P1^2;//key3 按此按鍵輸出1Hz 1Hz是採用純粹軟體延時

sbit square=P2^7;//方波輸出引腳
sbit fenpin=P2^6;//分頻後信號輸出引腳

uchar TMRH,TMRL;//定時器T1初值寄存器
uchar square_delay;//延時產生方波標志

struct
{
uchar value;//當前鍵值
uchar backvalue;//上次鍵值
uchar done;//按鍵是否響應 1為已經響應
} key;

uchar KeyScan(void); //按鍵掃描 獲取鍵值
void KeyProc(void);//按鍵處理
void KeyAction(void);//按鍵散轉 轉向需要執行的程序
void delay500ms(void);//500ms延時程序 用於產生1Hz方波

void timer0() interrupt 1 using 1 //12M晶振 20ms中斷 用於按鍵掃描 T0中斷
{
TH0=0xB1;
TL0=0xE0;
KeyProc(); //避免按鍵在純粹軟體延時的時候不響應
}

void timer1() interrupt 3 using 1 //T1中斷
{
TH1=TMRH;
TL1=TMRL;
square=~square;
if(square==1)
EX1=1;
}

void EXT_INT1() interrupt 2 using 1 //外部INT1中斷 低電平觸發
{
EX1=0;
fenpin=~fenpin;
}

void main()
{
TMRH=0xFE;
TMRL=0x0C;
TCON=0x00;
EX1=1; //允許INT1中斷
TMOD=0x11; //定時器T0,T1工作在方式1
TH0=0xB1;
TL0=0xE0;
TH1=TMRH;
TL1=TMRL;
ET0=1; //允許T0溢出中斷
ET1=1; //允許T1溢出中斷
TR0=1; //啟動計數器T0
TR1=1; //啟動計數器T1
EA = 1; //開中斷
while(1)
{
if(square_delay)
{
delay500ms();
square=~square;
if(square==1)
EX1=1;
}
}
}

void KeyProc(void)
{
key.value=KeyScan();
if(key.value==key.backvalue)
{
if(!key.done)
{
KeyAction();
key.done=1;
}
}
else
{
key.backvalue=key.value;
key.done=0;
}

}

void KeyAction(void)
{
switch(key.value)
{
case 1:
{
ET1=0;
TR1=0;
TMRH=0xFE; //0.5ms初值
TMRL=0x0C;
TR1=1;
ET1=1;
square_delay=0;
}break;

case 2:
{
ET1=0;
TR1=0;
TMRH=0xEC;//5ms初值
TMRL=0x78;
TR1=1;
ET1=1;
square_delay=0;
}break;

case 3:
{
ET1=0;
TR1=0;
square_delay=1;
}break;
}

}

//獲取鍵值
uchar KeyScan(void)
{
uchar keyval=0;
if (key1==0) keyval=1;
else if(key2==0) keyval=2;
else if(key3==0) keyval=3;
else keyval=0;
return keyval;
}

//500ms延時 晶振12M
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}

② 各位老鐵,小弟在論文進行答辯的時候碰到了點問題,論文題目是基於51單片機的數字頻率計設計

1。單片機測量的是方波信號,如果是其它波形或幅度不合適,就進行放大和整形
2。.該信號進入單片機的哪個引腳,如果用定時器0作為計數器,輸入引腳是P3.4
如果用定時器1作為計數器,輸入引腳是P3.5 如果測單個脈沖寬度(或周期),可以輸入任意引腳,但最好用中斷引腳P3.2或P3.3
3。.信號進入引腳之後怎麼計算它的程序
用另外一個定時器定時50ms,測50ms內有多少個脈沖輸入,然後乘以20(即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數字頻率計概述
數字頻率計是計算機、通訊設備、音頻視頻等科研生產領域不可缺少的測量儀器。它是一種用十進制數字顯示被測信號頻率的數字測量儀器。它的基本功能是測量正弦信號,方波信號及其他各種單位時間內變化的物理量。在進行模擬、數字電路的設計、安裝、調試過程中,由於其使用十進制數顯示,測量迅速,精確度高,顯示直觀,經常要用到頻率計。
本數字頻率計將採用定時、計數的方法測量頻率,採用一個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單片機的數字頻率計出了顯示頻率還可以添加哪些簡易功能

既然是 頻率相關的,已經有輸入頻率了,就加個輸出頻率嘛。
要做輸出頻率的話,就要考慮好頻率輸出范圍,如果是單片機內置PWM模塊,那PWM 的頻率范圍就是輸出頻率范圍了。如果是採用定時器輸出頻率,那麼輸出頻率范圍就根據定時器的值計算了。再高級點,加個占空比,不僅頻率可調,占空比也可調。
另外還要考慮下,輸出頻率值的確定。一般由用戶使用鍵盤輸入,你要高級點的,可以使用遙控輸入。

⑥ 51單片機製作頻率計,測周法如何測量(用T0和T1兩個就可以了嗎),求大蝦幫忙啊,最好詳細點

#include<REG51.H>

#defineU8unsignedchar

U8codetab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};

U8codescn[]={0x7f,0xbf,0xdf,0xef};//先點亮左邊一個數碼管

U8buf[4]={0,0,0,0};//顯示緩沖區

U8cnt=0;//掃描計數

unsignedintfreq=0;

unsignedintF;

voidmain(void)

{EA=1;//允許中斷

TMOD=0x01;//設定時器0為模式1(16位)

ET0=1;//定時器0中斷允許

TH0=(65536-5000)/256;//晶振12MHz,中斷周期5mS

TL0=(65536-5000)%256;;

TR0=1;//開始計數

PX0=1;//外部中斷優先順序高

EX0=1;//允許外部中斷

IT0=1;//外部中斷下降沿觸發

while(1);

}

voidexint0(void)interrupt0//外部中斷0服務程序

{freq++;

}

voidtimeint(void)interrupt1//定時器0中斷服務程序

{chari;

TH0=(65536-5000)/256;//晶振12MHz,中斷周期5mS

TL0=(65536-5000)%256;;

i=cnt&0x03;//求應點亮的LED號(從左到右依次為0,1,2,3)

P0=tab[buf[i]];//筆劃代碼送P0口

P2=scn[i];//控制掃描碼送P2口

cnt++;

if(cnt==200)

{cnt=0;//到1秒鍾,顯示的數字加一

F=freq;freq=0;

buf[0]=F/1000;

buf[1]=(F/100)%10;

buf[2]=(F/10)%10;

buf[3]=F%10;

}

}

⑦ 基於51單片機簡單數字頻率計設計 要求:信號為方波。正弦波,測量范圍: 幅度:0.5v--5v 頻率:1hz--1mhz

淘寶like科技

⑧ 我用C51單片機做簡易數字頻率計,測量脈寬2K以內是差不多的,但是超過2K就各種不對了,這是測量脈

你用的是什麼單片機?主頻是多少?看你的寄存器應該是51。
別忘了,51單片機的主頻12MHz,為了抗干擾,還要12分頻。
也就是說,你只有1MHz的運算頻率。然後你得到你的w,還要做那麼復雜的灶衡運算,本身while(p3_5==0)的判凳輪斷也要時間。
還有,你的n1,n2是什麼類型的呀。你用的是n1=w*65536我就覺得,它至少是個32位的整型變數。我的老天,51的內核只有8位,它要做許許多多額外的運算才能給你拼合出32位變數。
還有你調用函數的各種開銷,一旦你的所有時間開銷大於500個周期,你就會錯過脈寬。
總之,還得看你的目標頻率范圍是多大吧。任何儀器都有一個頻率上限,超過頻率上限的就測不了了。如果在2K以內,你就忍了。超過2K,建議你換平台。
8位系統建議你換AVR或者PIC,首先,這兩個是RISC結構,拿AVR來說,單周期指令,不需要12分頻,16~20Mhz的主頻也比51的高。最關鍵的還有硬體捕捉等功隱粗做能,測量脈寬之類的操作可以靠硬體實現,軟體只需要簡單處理就可以了。
系統要求再高,可以考慮CORTEX M0系列的32位單片機。主頻最高到72MHz,本身累加器是32位的,像你這種32位乘法一個周期就可以完成。也有各種硬體幫你測量脈寬。

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

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

圖1-1 原理框圖

⑩ 我用51單片機做簡易數字頻率計,用單片機提供方波,一端接單片機GND,一端接P3.3。用LCD顯示

你的程序停在while(1);這里了,也桐悶就是說只做了一次的慧老采樣和顯示,這種情況很容易產生數據不同步等等前輪升一些問題,也就是在輸入埠里並沒有數據,所以你的全是0的情況是正常的。
你現在應該把程序改成
while(1)
{
xianshi1();

xianshi2();

}
或者把顯示放在中斷里

閱讀全文

與基於51單片機數字頻率計相關的資料

熱點內容
貿易公司適合在什麼app引流 瀏覽:717
高級c語言編程還在用turboc 瀏覽:884
cad如何畫單片機 瀏覽:13
管理雲伺服器哪個軟體好 瀏覽:747
什麼app可以消除照片一片水印 瀏覽:242
在什麼app上發表條漫 瀏覽:88
安卓電腦主機怎麼打開 瀏覽:819
eos生態app什麼時候可以登陸 瀏覽:397
找安裝維修工人用什麼App 瀏覽:300
區位碼加密 瀏覽:854
考編教師用什麼app 瀏覽:189
靜態面向對象編程語言 瀏覽:902
炒股密碼pdf 瀏覽:661
差分演算法有哪些 瀏覽:565
佳明怎麼配對安卓 瀏覽:245
用什麼app校對試卷 瀏覽:103
基於單片機的光控路燈 瀏覽:37
為什麼說安卓平板適配的軟體少 瀏覽:685
三國志下載pdf 瀏覽:690
為什麼單片機c語言 瀏覽:429