51单片机定时器实现PWM波

51单片机是可以实现PWM波输出的,原理其实都是一样的。说白了,PWM波就是让某一个引脚输出周期性连续高低电平变化的信号。

那么如何用51单片机实现周期性的高低电平呢?

答案就是用定时器。首先我们需要配置一下定时器,这里不做过多阐述,资料到处都有。然后设置一个计数周期,比如说让定时器计一百个数产生溢出,那么这一百个数的时间就是一个周期。接下来我们就以这一百个数的时间为基准。比如设置前五十个数的时间某引脚为高电平,后五十个数为低电平。那么这个引脚就会输出一个占空比为50%的高低电平变化。这就是所谓的PWM波。

基本代码实现如下:

sbitPWM=P2^0;//P2.0输出pwm

int   time;//定义占空比的变量

void main()

{

TMOD=0x01;//定时器0工作方式1

TH0=0xff;//(65536-10)/256;//赋初值定时

TL0=0xf7;//(65536-10)%256;//0.01ms

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

while(1)

    {

           ;

    }

}

void tim0() interrupt1

{

TR0=0;//赋初值时,关闭定时器

TH0=0xff;//(65536-10)/256;//赋初值定时

TL0=0xf7;//(65536-10)%256;//0.01ms

TR0=1;//打开定时器

time++;

if(time>=100)

time=0;

if(time<=50)   //占空比%50,可改

PWM=1;

else

PWM=0;

}

PWM波可以用来调节速度,角度,灰度等。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值