单片机产生pwm脉冲波频率范围如何计算

单片机产生pwm脉冲波频率范围如何计算,第1张

不同的单片机是不同的,拿stc15系列单片机来说:pwm的频率=pca时钟输入频率/256
pca的时钟源有以下几种:sysclk,sysclk/2,sysclk/4,sysclk/6,sysclk/8,sysclk/12,定时器0的溢出,eci/p12输入,stc15系列单片机的工作频率0-35mhz,你可以计算出pwm的频率范围了吧?

根据使用需要确定,举例:如果要产生标准的串口波特率,应使用110592MHz,如果要让51单片机产生整数的时钟频率可使用12MHz或者24MHz单片机。

另外根据单片机本身的参数,不要选择过高的频率,否则会工作不稳定。举例:Atmega8L-8PU,这个单片机后面一个8的意思就是建议最大工作频率不要超过8MHz,如果超过8MHz不大于16MHz,可以选用Atmega8L-16PU。

从内存中取出一条指令,并指出下一条指令在内存中的位置。对指令进行译码和测试,并产生相应的 *** 作控制信号,以便于执行规定的动作。指挥并控制CPU、内存和输入输出设备之间数据流动的方向。

PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。

扩展资料:

在恒定的环境条件下测量振荡器频率时,振荡器频率和时间之间的关系。这种长期频率漂移是由晶体元件和振荡器电路元件的缓慢变化造成的,可用规定时限后的最大变化率(如±10ppb/天,加电72小时后),或规定的时限内最大的总频率变化(如:±1ppm/(第一年)和±5ppm/(十年))来表示。

基准电压为+25V,规定终点电压为+05V和+45V,压控晶体振荡器在+05V频率控制电压时频率改变量为-110ppm,在+45V频率控制电压时频率改变量为+130ppm,则VCXO电压控制频率压控范围表示为:≥±100ppm(25V±2V)。

高精度与高稳定度,无补偿式晶体振荡器总精度也能达到±25ppm,VCXO的频率稳定度在10~7℃范围内一般可达±20~100ppm,而OCXO在同一温度范围内频率稳定度一般为±00001~5ppm,VCXO控制在±25ppm以下。

参考资料来源:百度百科--晶体振荡器

参考资料来源:百度百科--单片机

TH0=254=0xFE,
TL0=43=0x2B
中断时间间隔=65536-0xFE2B=65536-65067=469;
即469个机器周期中断一次,
一个机器周期的时间12/fosc,
中断一次的时间为469x12/fosc,
倒数即为中断频率fosc/469/12,
fosc为晶振频率

这个太简单了,
//搞个外中断,中断来了就计数
#include<包头reg51h>
void
t0(void)
interrupt
0
{
T0count++;
//这是全局变量
}
//T1工作在定时状态下,每定时1秒钟到,刷新T0的计数,
void
t1(void)
interrupt
1
{
TR0=1;//搞个计数器中断
TH0=0x3c;//重新初始化
TL0=0xb0;//这是12M晶振的
timecount++;
//中断一次,记个数
if(timecount==20)
//一个计数器,一次记不到一秒的,只有记很多次,才能算一秒,这就一秒了
{
frequency=T0count;
//看看中断多少次,frequency就是你要的频率。
T0count=0;//把这个清了,记下一秒的次数。
}
}
main()
{
TMOD
=
0x01;
//选择计数器0的模式
EA=1;
//
打开总中断
EX0=1;
IT0=1;//开0外中断
ET0=1;TR0=1;//开0计时器
这里你加点代码,把frequency显示出来。
}
万一你想要周期
知道频率了,已经很简单了。
T=1/f;单位是多少?是秒!
T=1000000000/f;单位是多少?是纳秒!
主程序加个
long
T=0;
T=1000000000/f;//T就是周期,单位是NS。
万一你测的频率很低

if(timecount==20)
//一个计数器,一次记不到一秒的,只有记很多次,才能算一秒,这就一秒了
改为
if(timecount==200)//这就成十秒记一次了,不够就2000,
不过记得要frequency/10,否者频率就大了10倍。
测频率的就在这了
你要显示,看你用什么了
是数码管
还是1602,这就靠你自己了。
加油练吧

昨天回答过这个问题了,当时只改了数据,这里说明一下,定时器初值是-50000时,定时时间是50毫秒,中断10次是500毫秒,产生一个脉冲需要需要2个10次,脉冲周期是1000毫秒,即1秒,所以频率为1Hz。其余依次类推:
10Hz:-5000
50Hz:-1000
100Hz:-500
200Hz:-250
400Hz:-125
800Hz:-62
1000Hz:-50
2000Hz:-25


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13217203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-22
下一篇 2023-06-22

发表评论

登录后才能评论

评论列表(0条)

保存