实验十 电机PWM控制

PWMPulse Width Modulation)控制就是对脉冲宽度进行控制的技术。

 

 

     所以当电源电压不变的情况下,输出电压的平均值U取决于占空比α的大小,改变α的大小就可以改变输出电压的平均值,这就是PWM的工作原理。

#include "reg51.h"

sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;//按键

sbit outa=P2^0;
sbit outb=P2^1;//电机驱动


void delayms(unsigned int ms);
unsigned char keyscanf();
void  pwmc(unsigned char keytp);//子函数的声明
static unsigned int  cnt=0;
/****************************
*
****************************/
void main()
{
	unsigned char key_v=0;
	while(1)
	{
		key_v=keyscanf();
		pwmc(key_v);
	}
}
/****************************
*
****************************/
void delayms(unsigned int ms)
{
	char i=0;
	char j=0;
	for(i=0;i<ms;i++)
	{
		for(j=0;j<125;j++);
	}
}
/****************************
****************************/
unsigned char keyscanf()
{
	unsigned char keyv=0;
	key1=0;
	key2=1;
	if(key3==0)
	{
	  delayms(4);
		if(key3==0)
		{
			keyv=1;
		}
	}
	if(key4==0)
	{
	  delayms(4);
		if(key4==0)
		{
			keyv=2;
		}
	}
	key1=1;
	key2=0;
	if(key3==0)
	{
	  delayms(4);
		if(key3==0)
		{
			keyv=3;
		}
	}
	if(key4==0)
	{
	  delayms(4);
		if(key4==0)
		{
			keyv=4;
		}
	}
	return keyv;
	
}
/****************************
****************************/
void  pwmc(unsigned char keytp)
{
	unsigned char a=0;
	a=keytp;
	if(a==1){ //当参数为0时表示关掉电机
		outa=0;
		outb=0;
	}
	if(a==2){ //当参数是1则开始PWM,2:5的占空比
		outa= 1; //输出A为高电平(电机使能)
		delayms(1); //高电平长度:延时2MS
		outa = 0; //输出A为低电平(电机失能)
		delayms(9);//低电平长度:延时总PWM长度5MS减去2MS
	}
	if(a==3){ //当参数是2则开始PWM,3:5的占空比
		outa = 1; //输出A为高电平(电机使能)
		delayms(5); //高电平长度:延时3MS
		outa = 0; //输出A为低电平(电机失能)
		delayms(2);//低电平长度:延时总PWM长度5MS减去3MS
	}
	if(a==4){ //当参数为3时表示全速,这时停止PWM,将OUTA置高电平
		outa=1; //将OUTA置高电平
		outb=0;
	}
 }

 图一  代码图

 

图二 仿真图 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Esky2005

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值