利用占空比的改变调节小车速度

占空比的说明

你可以理解为高低电平占总周期的百分比。也就是指电路被接通的时间占整个电路工作周期的百分比。

设计思路

我们先定义一个初始的占空比,然后当加速引脚信号发生变化时,占空比的值将会变大,反之减小。通过改变高电平的比例,调节电机的输出,以此达到速度的改变

定时器的说明

在这里插入图片描述
代码

在这里插入代码片
#include<reg51.h>
#define uint unsigned int 
#define uchar unsigned char							 
 
uchar time; 
double count=50;	//定义占空比,并初始占空比为50%
sbit PWM=P2^0;      //P2^0口输出PWM 
sbit key_add=P3^4;   //电机加速的按键 的I/O口
sbit key_dec=P3^5;   //电机减速的按键 的I/O口
 
 
void delayxms(uint z); //延时
void dianji_add();	  //电机加速,即增加占空比
void dianji_dec();	   //电机减速,即减少占空比
void chenglu_init();		//定时器0初始化
 

void main()													 
{	 
	chenglu_init();
	delayxms(5);
	while(1)
	{
	 dianji_add();
	 dianji_dec();
	}

}


void delayxms(uint z) //延时xms程序
{
    uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
 
 
void dianji_add()  //电机加速
{
  if(key_add==0)
  {
	  delayxms(2); //此处时间不能太长,否者会的中断产生冲突
  if(key_add==0)
  {
	  count+=5;	//每按一次加速按键占空比加5
   if(count>=80)	    //限定占空比上限
	{
	 count=80;
	}
  }
	while(!key_add);
  }
}
 
void dianji_dec()//电机减速
{
 if(key_dec==0)
 {
  delayxms(2);
  if(key_dec==0)
  {
  	count-=5;	 	//每按一次减速按键占空比减5
   if(count<=20)    //限定占空比下限
   {
	count=20;
   }
  }
	while(!key_dec);
   }
}
 

void chenglu_init()
{
  TMOD=0x01; //定时器0工作于方式1
  TH0=(65536-10)/256;
  TL0=(65536-10)%256;
  TR0=1;
  ET0=1;
  EA=1;
}
 

void chenglu_int() interrupt 1 
{
	
  TR0=0;    //设置定时器初值期间,关闭定时器
  TH0=(65536-10)/256;
  TL0=(65536-10)%256;
  TR0=1;
	 
  time++;
  if(time<count)	  //count为占空比
  {
	PWM=1;	   //输出高电平
  }
  else 
	PWM=0;	
  if(time>=100)
  {
	time=0;
  }
 }```

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值