找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2490|回复: 2
打印 上一主题 下一主题
收起左侧

关于PWM,做了一个红外避障小车,可是pwm调速哪里,无法调速,都是全速运行,求解!

[复制链接]
跳转到指定楼层
楼主
ID:302650 发表于 2018-5-19 23:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

//--定义使用的IO口--//
sbit ENA=P0^0;                        //左电机
sbit IN1=P0^1;
sbit IN2=P0^2;

sbit IN3=P0^3;                        //右电机
sbit IN4=P0^4;
sbit ENB=P0^5;

sbit H1=P1^0;
sbit H2=P1^1;
sbit H3=P1^2;
sbit H4=P1^3;

bit  PWM1,PWM2;

u16 i;

void straight();
void back();
void left();
void right();

u8 Time;

void delay(u16 i)
{
        while(i--);       
}


//--定义一个全局变量--//
u16 count,value,timer1;  //计数、数值、定时器;

/*******************************************************************************
* 函 数 名         : Timer1Init
* 函数功能                   : 定时器1初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer1Init()
{
        TMOD|=0X10;//选择为定时器1模式,工作方式1,仅用TR1打开启动。

        TH1 = 0xFF;
        TL1 = 0xff;   //1us
               
        ET1=1;//打开定时器1中断允许
        EA=1;//打开总中断
        TR1=1;//打开定时器        此时就已经使用了TCON               
}


/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
*******************************************************************************/
void main()
{       
        Timer1Init();  //定时器1初始化
while(1)
{                  value=5;
        if(timer1>1000)  //PWM周期为1000*1us      就是高电平和低电平时间之和。
                {
                        timer1=0;
                }
                if(timer1<value)         //定时时间 <占空比时间
                {
                        PWM1=1;
                }
                else
                {
                        PWM1=0;
                }

                  value=900;
                if(timer1>1000)  //PWM周期为1000*1us      就是高电平和低电平时间之和。
                {
                        timer1=0;
                }
                if(timer1 <value)         //定时时间 <占空比时间
                {
                        PWM2=1;
                }
                else
                {
                        PWM2=0;
                }

                if((H1==1)&&(H2==1)&&(H3==1)&&(H4==1))
                {
                  straight();
                          delay(1000);
                }
                         
                if((H2==0)&&(H3==0))
              {
                   back();
                           delay(1000);  
              }        
                else
                {
                           if(H4==0)
                  {
                   left();
                           delay(1000);
                  }        
                              if(H1==0)
                  {
                   right();
                           delay(1000);
                  }
                }
}


}
/*******************************************************************************
* 函 数 名       : Time1
* 函数功能                 : 定时器1的中断函数
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/

void Time1(void) interrupt 3    //3 为定时器1的中断号  只有当溢出时引起内部中断;
{
        TH1 = 0xFF;
        TL1 = 0xff;   //1us         定时1us
        timer1++;
    count++;       
}       

void straight()
{
   ENA=PWM1;
   IN1=0;
   IN2=1;

   ENB=PWM1;
   IN3=0;
   IN4=1;

}

void back()
{
   ENA=PWM1;
   IN1=1;
   IN2=0;

   ENB=PWM1;
   IN3=1;
   IN4=0;
}

void left()
{
   ENA=PWM2;
   IN1=0;
   IN2=1;

   ENB=0;
   IN3=0;
   IN4=1;
}

void right()
{
   ENA=0;
   IN1=0;
   IN2=1;

   ENB=PWM2;
   IN3=0;
   IN4=1;
}






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:331575 发表于 2018-5-21 22:59 | 只看该作者
你用定时器工作模式2 试一下
回复

使用道具 举报

板凳
ID:331575 发表于 2018-5-21 23:26 | 只看该作者
我想问一下。你的pwm1。和pwm2设的是哪一个管脚呢?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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