#define uchar unsigned char
uchar pwm=50,cnt
sbit pluse=P1^0
sbit keyu=P1^4
sbit keyd=P1^5
void t0isr() interrupt 1
{
TH0=(65536-100)/256
TL0=(65536-100)%256
cnt++
if(pwm>0)
{
if(cnt>旅滑100)cnt=0
if(cnt<=pwm)pluse=1
else pluse=0
}
else pluse=0
}
main()
{
TMOD=0x01
TH0=(65536-100)/256
TL0=(65536-100)%256
TR0=1
ET0=1
EA=1
while(1)
{
if(keyu==0)
{
while(keyu==0)
pwm++
if(pwm>100)pwm=100
}
if(keyd==0)
{
while(keyd==0)
if(pwm>0)pwm--
}
}
}
1、推荐用单片机程序就可以轻松的实现,特别是有些单片机就有PWM模块,直接输入数据就能得到你想要的脉冲宽度的PWM波形。2、也可以用比较器来做,一端输入三角波,另一端输入直流电平,改变直流值就可以输出不同脉冲宽度的PWM波形。
单片机产生PWM波形波形的方法:主派岩要是采用软件控制,控制2个时间。
具体就是由单片机的引脚输出PWM波形;单片机引脚 如P1.7 控制其输出高电平的时间T1 和输出低电平的时间T2。
PWM波形的周期T=T1+T2
PWM波形的占空比=(100T1/T)%
PWM波形实现的算法:
1 根据PWM波形的频率f,计算出PWM波芹模形的周期T=1/f;
2 根据PWM波形的占空比 计算出高电平时间 T1=占空比×T
3 计算出低电平时间 T2=T-T1
4 按上述时间去控制 单片机引脚高低电平的时间就可以了。
呵呵 赶快自己写程序吧别忘嫌羡缓了给俺加分呀
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)