求51单片机实现PWM的程序
发布网友
发布时间:2022-04-30 01:38
我来回答
共3个回答
热心网友
时间:2022-04-30 03:01
#include <stc51.h>
int X ; // PWM的周期 单位:us微秒
int ty; //占空比变量
void main()
{
X=2000; //周期100uS 即PWM的频率=10KHZ
ty=50;//占空比 50%
TMOD=0X11;
EA=1;
ET0=1;
ET1=1;
TH0=(65535-ty)/256;//定时器0 改变占空比
TL0=(65535-ty)%256;
TH1=(65535-X)/256 ; //定时器1 改变频率
TL1=(65535-X)%256;
TR0=1;
TR1=1;
while(1) ;
}
void timer0_isr() interrupt 1 //定时器0;改变占空比
{
TR0=0;
P1=0X00;
++ty;
if(ty>=X-1) ty=1;
}
void timer1_isr() interrupt 3 //定时器1 ;改变PWM频率 即周期
{
P1=0XFF;
TH1=(65535-X)/256; //改变周期
TL1=(65535-X)%256;
TH0=(65535-ty)/256;//改变占空比
TL0=(65535-ty)%256;
TR0=1;
//TR1=1;
}
热心网友
时间:2022-04-30 04:19
改用AVR单片机吧,是自带的功能,速度是51的10倍以上
热心网友
时间:2022-04-30 05:54
还搞不定吗?
求51单片机实现PWM的程序
include <stc51.h> int X ; // PWM的周期 单位:us微秒 int duty; //占空比变量 void main(){ X=2000; //周期100uS 即PWM的频率=10KHZ duty=50;//占空比 50 TMOD=0X11;EA=1;ET0=1;ET1=1;TH0=(65535-duty)/256;//定时器0 改变占空比 TL0=(65535-duty)%256;TH1=...
求51单片机PWM程序:两按键K1、K2,两管脚输出频率为1KHZ,占空比在0%到...
engine_pwm=1;flag_pwm=1;} if(flag_pwm)t_cont++;if(flag_pwm&&(t_cont>hight_votage))
用51单片机产生35~40KHz左右的PWM,要求占空比可调,晶振是12M,求满足...
while(key==0);pwm+=10;if(pwm>=100)pwm=10;} if(flag){ TH0=256-(char)(pwm*28/100);TL0=256-(char)(pwm*28/100);} if(!flag){ TH0=256-28+(char)(pwm*28/100);TL0=256-28+(char)(pwm*28/100);} } }
求高手 用51单片机输出产生方波的程序
if(PWM)PWM=0; //输出脚取反 else PWM=1;}
怎么51单片机定时器来模拟PWM波?
只要做到这两个时间的计时,那么就可以实现基本的PWM了。而要做到两个时间的计时,有两种方案:1.单计时器方案 int i;//计时变量timer1(){//计时器1中断函数 //此处示例每隔100个最小计时周期电平变化一次,即200个最小计时周期闪烁一次 i++; if (i==200){ i=0;//变量复位,完成一...
51单片机测量PWM波的占空比的C语言程序
用定时器产生程序如下:unsigned int a=0 ,b=10;void main(){ tmod=0x01;th0=(65536-50000)/256;tl0=(65536-50000)%256;ea=1;et0=1;tr0=1;} void pwm()interrupt 1 { th0=(65536-50000)/256;tl0=(65536-50000)%256 ;a++;p1^1=0;if(a=20){ a=0;} if(a=b){ p1^1=1;...
求详细解释这个51单片机PWM波原理
你要用51产生PWM去控制LED,首先你要确定PWM的周期T和占空比D,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'那么你就可以编写程序,根据你定的时间基准 t 去给定时器赋值初始化,...
请教51单片机利用PWM控制灯的亮度的程序
第一,要理解中断在这里的作用是固定的“一小段”时间进入一次。第二,PWM_ON在程序中的作用很大,它会由0--->CYCLE--->0并且一直循环下去。可以把它看成一个有规律的变化的量。第三,每进入中断一次count++,满足条件count==PWM_ON或count==CYCLE时改变LED的当前状态。作用是给小灯亮或灭的时...
向51单片机里写发出脉冲信号的c程序怎么编啊?
//用ADC0808控制PWM输出 //通过可变电阻调节脉冲宽度 include <reg51.h> define uchar unsigned char define uint unsigned int sbit CLK =P2^4;sbit ST=P2^5;sbit EOC=P2^6;sbit OE=P2^7;sbit PWM=P3^0;//延时 void Delay(uchar x){ uchar i;while(x--)for(i=0;i<40;i++);} v...
求51单片机PWM汇编语言程序(用来控制3个红、绿、蓝LED灯,让这3个LED...
并考虑其安装位置。4、若为256等级灰度,总共有2^24个组合渐变。且渐变过程还有更多组合。建议16等级实现先。5、三个for循环,逐个调节PWMR、PWMG、PWMB参量。在定时器的最小定时管理单元中逐个判断,是否达到翻转调节。并控制各LED的亮灭。【以上纯属理论分析,程序及效果自行完成】...