A. 單片機的晶振頻率怎麼確定
根據使用需要確定,舉例:如果要產生標準的串口波特率,應使用11.0592MHz,如果要讓51單片機產生整數的時鍾頻率可使用12MHz或者24MHz單片機。
另外根據單片機本身的參數,不要選擇過高的頻率,否則會工作不穩定。舉例:Atmega8L-8PU,這個單片機後面一個8的意思就是建議最大工作頻率不要超過8MHz,如果超過8MHz不大於16MHz,可以選用Atmega8L-16PU。
從內存中取出一條指令,並指出下一條指令在內存中的位置。對指令進行解碼和測試,並產生相應的操作控制信號,以便於執行規定的動作。指揮並控制CPU、內存和輸入輸出設備之間數據流動的方向。
PC用於確定下一條指令的地址,以保證程序能夠連續地執行下去,因此通常又被稱為指令地址計數器。在程序開始執行前必須將程序的第一條指令的內存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執行指令的地址。
(1)單片機頻率設計擴展閱讀:
在恆定的環境條件下測量振盪器頻率時,振盪器頻率和時間之間的關系。這種長期頻率漂移是由晶體元件和振盪器電路元件的緩慢變化造成的,可用規定時限後的最大變化率(如±10ppb/天,加電72小時後),或規定的時限內最大的總頻率變化(如:±1ppm/(第一年)和±5ppm/(十年))來表示。
基準電壓為+2.5V,規定終點電壓為+0.5V和+4.5V,壓控晶體振盪器在+0.5V頻率控制電壓時頻率改變數為-110ppm,在+4.5V頻率控制電壓時頻率改變數為+130ppm,則VCXO電壓控制頻率壓控范圍表示為:≥±100ppm(2.5V±2V)。
高精度與高穩定度,無補償式晶體振盪器總精度也能達到±25ppm,VCXO的頻率穩定度在10~7℃范圍內一般可達±20~100ppm,而OCXO在同一溫度范圍內頻率穩定度一般為±0.0001~5ppm,VCXO控制在±25ppm以下。
B. 設計一個以單片機為核心的頻率測量裝置。求大神給寫一下程序。
單片機頻率計模擬。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit p0=P1^0;
bit tb0,tb1;
uchar tt0,tt1,tt2,tt3;
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main()
{
TMOD=0x11;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1; //開定時器0中斷
ET1=1; //開定時器1中斷
TR0=1; //啟動定時器0
TR1=1; //啟動定時器1
while(1)
{
if(TR1==0)
{
// tt3=65536*tt2+266*TH1+TL1
TH1=0x00;TL1=0x00;
tt1=0x00;tt2=0x00;
tb1=1;
led[0]=tt3/1000000;
led[1]=tt3/100000%10;
led[2]=tt3/100000%10;
led[3]=tt3/10000%10;
led[4]=tt3/1000%10;
led[5]=tt3/100%10;
led[6]=tt3/10%10;
led[7]=tt3%10;
}
if(tt0==1 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[0];P0=0xfe
}
if(tt0==2 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[1];P0=0xfd
}
if(tt0==3 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[2];P0=0xfb
}
if(tt0==4 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[3];P0=0xf7
}
if(tt0==5 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[4];P0=0xef
}
if(tt0==6 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[5];P0=0xdf
}
if(tt0==7 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[6];P0=0xbf
}
if(tt0==8 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[7];P0=0x7f
tt0=0;
}
}
}
void timer0() interrupt 1
{
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
tt1++;
if(tt1==500)
{
TR1=0; //啟動定時器1
tb1=0
}
tt0++;tb0=1;
if(tb1==1 && TR1==0)TR1=1;
}
void timer1() interrupt 3
{
tt2++;
}
C. 各位老鐵,小弟在論文進行答辯的時候碰到了點問題,論文題目是基於51單片機的數字頻率計設計
1。單片機測量的是方波信號,如果是其它波形或幅度不合適,就進行放大和整形
2。.該信號進入單片機的哪個引腳,如果用定時器0作為計數器,輸入引腳是P3.4
如果用定時器1作為計數器,輸入引腳是P3.5 如果測單個脈沖寬度(或周期),可以輸入任意引腳,但最好用中斷引腳P3.2或P3.3
3。.信號進入引腳之後怎麼計算它的程序
用另外一個定時器定時50ms,測50ms內有多少個脈沖輸入,然後乘以20(即1S)即是頻率