找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2221|回复: 0
收起左侧

51单片机PWM调宽原理

[复制链接]
ID:812531 发表于 2021-2-24 22:55 | 显示全部楼层 |阅读模式
PWM脉宽调制,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率

什么是脉冲: 51 单片机IO口输出一个脉冲,是指I0口发生-次高 低电平的变化


什么是占空比:是指一个脉冲时间内,高电平的时间与整个脉冲持续时间的比值。
占空比 = t / T


什么是频率:物质在1s内完成周期性变化的次数叫做频率,常用f表示。公式: f=1/T

实现输出PWM信号方法:硬件实现:选择带PWM功能的单片机如STC12系列,内部有PWM寄存器,通过程序配置这些寄存器,指定IO口就会输出PWM信号优点不占用CPU时间,缺点需掌握多个寄存器的配置。

软件实现:使用51单片机定时器与中断实现。优点编程简单易于入门学习,缺点占用CPU时间。

使用定时器中断实现PWM电机调速

参阅STC 89C52芯片使用手册定时器与中断章节内容频率是根据周期决定的,而周期则是定时器溢出时间和占空比决定的。

周期=定时器溢出时间X占空比频率公式: f=1/T

我们通过编程设置定时器溢出时间和周期来实现对PWM的频率设定,再通过软件设置驱动电机的高电平的占空比来实现调速。


课程实验-1使用PWM实现直流电机调速多级调速

1.以约100HZ的平率,占空比最大值256,使用定时器0产生PWM信号,分别调节小车左右两轮的前进速度。

占空比最大值为256 意思是一个周期分成256份

课程实验-2.使用PWM实现L ED灯亮度调节

1.以约2880HZ的平率,占空比最大值40, 使用定时器0产生PWM信号,调节开发板上P1口.上所有LED灯的亮度。按S2控制LED灯变暗,按S3控制LED灯变亮。

                                                          实验二

#include<reg52.h>
unsigned char  hz=2880; //频率是一百
unsigned char T0RH,T0RL,pwm_led_va=0;
unsigned char pwm_t;
void count(unsigned char zkb)
{
  unsigned long tmp;
  tmp=1/hz;//算出每个周期的时间 这里其实就是1除以100赫兹,赫兹就是hz
  tmp=tmp/zkb;//定时器溢出时间 公式就是周期=定时器溢出时间*占空比
  tmp=tmp*1000000;//转化成微妙
  tmp=tmp*1000/1085;//其实相当于微妙除以机器周期,
  T0RH=(unsigned char)(tmp>>8);
  T0RL=(unsigned char) (tmp);
}
void main()
{
TMOD=0X02;        //设置定时器0,八位自动重装模式
TH0=T0RH;        //赋初值
TH0=T0RL;
TR0=1;
ET0=1;
EA=1;
while(1)
{
   count(40);

}
}
void timer0() interrupt 1//定时器0中断方式1
{
pwm_t++;
if(pwm_t==40)
   {
           pwm_t=0;
           P1=0xff;
   }
      if(pwm_led_va==pwm_t)
          {
           P1=0;
          }


}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表