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)即是频率