51单片机产生20到300HZ的可调PWM程序 改变变量f的值可以改变频率 为什么改变脉宽w的值脉宽不能改变?
要改变频率,你必须改变周期t,所以你可以改变f,但如果你改变w,t不会改变。改变的是PWM波的占空比,即高电平时间增加,低电平时间减少,或者高电平时间减少,低电平时间增加,但总的时间,即,周期不变,频率自然也不变。
如何用51单片机定时器产生一个PWM,频率20kHz,占空比可调的PWM
#include头文件包含特殊功能寄存器sbitKEY1=P3^1的定义;//定义速度调节按钮sbitPWM=P1。
^5;//设置速度设置端口unsignedcharCYCLE; //设置周期 编号X的基本同步时间为10,则周期为10x0.1 msunsignedcharPW。
M_ON;//设置高电平时间/******************************************** ** * **************************//*延时函数*//************ *** ** ****** ****************************************** *** * ****** */ voiddelay(unsignedintcnt){while(--cnt);}/************************ *** ********* *****************************//*主要功能*//* *** ****** ********************************************** **********/main(){unsignedcharPWM_Num;//定义 gear TMOD|=0x01;//定时器设置1msin12McristalTH0=(65536 - 1000)/256;TL0=(65536-1000)%256;//定时1mSIE=0x82;//使能中断 TR0= 1 ;CYCLE=10;/ /时间可以调整。
这是一个以 10 毫秒为单位的 10 步调整周期。
8 位 PWM 为 256 步 while(1){if(!KEY1){delay(20000);if。
( !KEY1){PWM_Num++;if(PWM_Num==4)PWM_Num=0;switch(PWM_Num){case0:P0=0x06;PWM_ON=0 ;break;//高电平持续时间 case1:P0=0x5B;PWM_ON=4;break;case2:P0=0x4F;PWM_ON=6;break;case3:P0=0x66;PWM_ON=8;break;默认:break;} } }}}/**** ****************************************************** *****************//*定时器中断函数*//************ ****** *** *** ************************************************** *****/voidtim(void)interrupt1using1{staticunsignedcharc number;//TH0=(65536-1000)/256;TL0=(65536-1000)%256;//定时1mSif(count==PWM_ON){PWM= 1 ;//灯光 off}count++;if(count==CYCLE){count=0;if(PWM_ON!=0)//如果左右时间都为0,保持原状态 PWM=0;//灯亮 } }
用51单片机产生占空比可调的pwm,且可以定时持续输出一定占空比的pwm~
PD4 引脚可测量频率为 100Hz 的 PWM 波,PD5 引脚可测量频率为 50Hz 的方波。这是基于 AVR 的 PWM 发生器的示例。
需要注意的是,51单片机不支持直接生成PWM波形,因此需要使用AVR来实现。
在该程序中,通过设置OCR1A和OCR1B的值来产生PWM波。
将DDRD设置为0X30,使OC1B(PD4)和OC1A(PD5)作为输出端口。
TCCR1A和TCCR1B的配置分别设置为0X63和0X1B,用于控制定时器1的工作模式。
OCR1A设置为7,得到10KHz PWM波。
OCR1B 设置为 5,导致高电平时间为 2ms,即占空比为 18.1%。
调用 PWM 函数生成持续时间可调的 PWM 波。
产生方波的频率计算公式为:f=fclk(晶振)/{*N(1+OCRA)},其中N表示分频因子。
根据所需的方波频率,可以计算 OCRA 值。
通过正确配置OCR1A、OCR1B、TCCR1A和TCCR1B的值,可以分别在PD4和PD5引脚上产生所需的PWM波和方波。
需要注意的是,对于51单片机用户来说,如果需要生成PWM波形,应该考虑使用其他方法或者硬件支持。