資料介紹
#include
unsigned char t=0,yichu=0,fenpin;
sbit B153=P2^0;
sbit A153=P2^1;
sbit GATE=P2^6;
sbit CLR=P2^7;
sbit P33=P3^3;
void t0(void)interrupt 1
{t++;
yichu=2;????????//定時器0溢出,yichu=2
}
void t1(void)interrupt 3????//計數器1溢出,yichu=1
{TCON=0;
yichu=1;
TH1=0xff;
TL1=0xff;
}
void delay(void)??????//1s軟件延時
{unsigned int i=500,j;
while(i)
?{i--;
?j=250;
?while(j)
??{j--;}
?}
}
unsigned char table(unsigned char x)?//軟件查表輸出
{unsigned char code n[10]={0xee,0x82,0xdc,0xd6,0xb2,0x76,0x7e,0xc2,0xfe,0xf6};
return(n[x]);
}
display(float f)??????//以測出的頻率串行輸出
{unsigned long x;
unsigned char a[5]={0,0,0,0,0},i=0,j;
if(f!=0){
if((f<10000)&&(f>1))?????//正常顯示
?{if(f>1000)f=f-1;?????//軟件修正頻率偏差
?while(f<1000)
??{f=f*10;
??i++;
??}
?x=f*10;
?a[4]=x%10;
?if(a[4]>=5)f=f+1;;
?x=f;
?a[1]=x%10;
?a[2]=(x/10)%10;
?a[3]=(x/100)%10;
?a[4]=(x/1000)%10;
?for(j=0;j<5;j++)
??{a[j]=table(a[j]);}
?a[i+1]++;
?a[0]=0;
?}
else if(f>=10000)??????//以科學計數法顯示
?{while(f>=1000)
??{f=f/10;
??i++;
??}
?x=f;
?a[4]=(unsigned char)((float)((f-x))*10);
?if(a[4]>=5)x++;??????//四舍五入
?a[2]=x%10;
?a[3]=(x/10)%10;
?a[4]=(x/100)%10;
?a[0]=i+2;
?for(j=0;j<5;j++)
??{a[j]=table(a[j]);}
?a[4]++;
?a[1]=0x7c;
?}
else
?{x=f*10000;???????//頻率值小于1
?if((x%10)>=5)x=x+10;?//四舍五入
?x=x/10;
?a[1]=x%10;
?a[2]=(x/10)%10;
?a[3]=(x/100)%10;
?a[4]=(x/1000)%10;
?for(j=0;j<5;j++)??
??{a[j]=table(a[j]);}
?a[4]++;
?a[0]=0;
?}
?
}
for(j=0;j<5;j++)???//串行
?{SBUF=a[j];
?while(TI==0);}
}
cepin()
{unsigned char i;
float sj;
unsigned long js;//時間、計數的拼音首字母
float f;??//f為頻率
TMOD=0xd9;
t=0;
TH0=0;
TL0=0;
TH1=0;
TL1=0;
GATE=0;
TCON=0x50;
GATE=1;
delay();
GATE=0;
for(i=0;i<250;i++){}????//延時1ms
sj=((float)(TH0*256+t*65536+TL0))/1000000.0;
js=(long)TH1*256+TL1+1;
f=(js/sj)*fenpin;
display(f);
}
panduan()
{float zhouqi;
B153=1;
A153=1;
TMOD=0x51;??
TH0=0xce;??//定時器0=12.8ms
TL0=0;
TH1=0xff;??//計數器1=100個脈沖
TL1=0x9c;
TCON=0x50;
while(yichu==0);
TCON=0;
if(yichu==1)?//計數器先溢出:在12.8ms內測得的脈沖過多,說明頻率較高
?{fenpin=128;//轉為測128分頻后的頻率
?cepin();}
else ???//計時器先溢出:100個脈沖的時間比較短,即頻率較低,可以減少分頻數
?{yichu=0;
?B153=1;
?A153=0;
?TH0=0xc1;?//定時器0=16ms
?TL0=0x80;
?TH1=0xff;?//計數器1=100個脈沖
?TL1=0x9c;
?TCON=0x50;
?while(yichu==0);
?TCON=0;
?if(yichu==1)?? //計數器先溢出:在16ms內測得的脈沖過多,說明頻率較高
??{fenpin=16;//轉為測16分頻后的頻率
??cepin();}
?else?? //計時器先溢出:100個脈沖的時間比較短,即頻率較低,用2分頻測周期
??{B153=0; //以下是測周期部分
??A153=0;
??TH0=0;
??TL0=0;
??t=0;
??TMOD=0x09;
??TR0=1;
??GATE=1;
??while(P33==0);
??GATE=0;
??while(P33==1);
??TR0=0;
??zhouqi=(TH0*256+t*65536+TL0)/1000000.0;
??if(zhouqi<0.001)?//若周期太小,則轉為測原頻率
???{fenpin=1;
???B153=0;
???A153=0;
???cepin();}
??else{display((1.0/zhouqi));}
??}
?}
}
main()
{
IE=0x8a;
while(1)
?{
?panduan();?//判斷原頻率屬于哪個范圍,并調用相應函數測其頻率
?delay();
?}
}
- 頻率計資料 0次下載
- 基于單片機的頻率計設計 單片機 仿真 頻率計
- 基于51單片機的頻率計源代碼下載 165次下載
- 無線遙控頻率計C語言源代碼下載 37次下載
- 頻率計的PCB原理圖免費下載 66次下載
- 頻率計設計與仿真 134次下載
- 0.1-10hz放大器噪聲測量濾波器 11次下載
- 頻率計仿真 基于51單片機頻率計protues仿真程序設計 頻率 222次下載
- 數字頻率計 57次下載
- 頻率計英文文獻 4次下載
- 基于Multisim的數字頻率計的設計 135次下載
- 基于verilog語言的數字頻率計設計 0次下載
- 超高頻數字頻率計的設計
- 簡易頻率計設計
- 基于FPGA的數字頻率計的設計與實現
- 頻率計的使用方法 1364次閱讀
- 頻率計的工作原理和分類詳解 2598次閱讀
- 頻率計的基本概念和組成部分 1303次閱讀
- 頻率計的基本原理及分類 頻率計的功能特點及應用場景 3799次閱讀
- 頻率計的使用方法和注意事項 2347次閱讀
- 頻率計有哪些作用 1497次閱讀
- 分享一個簡單的模擬頻率計電路 3017次閱讀
- 頻率計數器的工作原理和發展 1.3w次閱讀
- 電子小信號數字頻率計的設計與制作 6404次閱讀
- 基于FPGA自適應數字頻率計的設計 6745次閱讀
- cpu時鐘頻率計算公式_CPU頻率計算方法詳解 3.3w次閱讀
- 簡易數字頻率計電路圖大全 6.6w次閱讀
- 基于單片機簡易數字頻率計設計方案匯總 3.2w次閱讀
- AT89C51單片機頻率計的C源程序設計 5192次閱讀
- 0.1-10Hz放大器噪聲測量濾波器電路圖 2512次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 92次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7藍牙設備在嵌入式領域的廣泛應用
- 0.63 MB | 3次下載 | 免費
- 89天練會電子電路識圖
- 5.91 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論