• 大小: 22KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: 430  单片机  小车  

资源简介

msp430单片机通过控制小车基本动作,如加速减速,转弯等。

资源截图

代码片段和文件信息


#include “io430.h“


#define   P1_0    0x01      //  左电机控制  IN1
#define   P1_1    0x02      //  左电机控制  IN2
#define   P1_2    0x04      //  左电机控制  PWM1

#define   P1_3    0x08      //  右电机控制  PWM2
#define   P1_4    0x10      //  右电机控制  IN3
#define   P1_5    0x20      //  右电机控制  IN4

#define   PWM_TIMES         200            //PWM周期为20ms


/*
*PWM设置函数 
* motor:设置的电机号  0左电机,1右电机;  percent: PWM占空比; times:PWM周期 0.1ms为单位;
*/
void Pwm_Set(unsigned char motor unsigned int  percentunsigned int times)
{
  unsigned int per;
  unsigned long count=0;
  if(percent==0)
    TACTL=0x00;
  if(percent<100)
  percent=100-percent;
  else
   percent=percent-100;
  count=80*times;                       //计时脉冲个数=80*times;
  per=count*percent/100;               //正脉冲计时个数       
  P1DIR |= 0x0C;                        // IO1.2 and IO1.3 output
  P1SEL |= 0x0C;                        // IO1.2 and IO1.3 TA1/2 otions
  CCR0 = count;                         // PWM Period
  if(motor==0)      
  {
    CCTL1 = OUTMOD_7;                     // CCR1 reset/set
    CCR1 = per;                           // CCR1 PWM duty cycle
  }
  else if(motor==1)
  {
     CCTL2 = OUTMOD_7;                     // CCR2 reset/set
     CCR2 = per;                           // CCR2 PWM duty cycle

  }
  TACTL = TASSEL_2 + MC_1;              // SMCLK up mode
  
 // _BIS_SR(LPM0_bits);                   // Enter LPM0
}




/*  功能:电机执行动作
*   参数: 
*         motor_num: 电机的号码,1 右电机 ; 0 左电机
*         event:      电机的动作, 0停止,1前进,2后退,3刹车  
*         speed:       电机的速度,既PWM占空比
*/
void  Motor(unsigned char motor_numunsigned char eventunsigned char speed)
{
  if(motor_num==0)    
  {
    switch(event)
    {
    case  0:  P1OUT&=~(P1_0+P1_1);       //停止
      break;
    case  1:  P1OUT|=P1_0;P1OUT&=~P1_1; //前进
      break;
    case  2:  P1OUT|=P1_1;P1OUT&=~P1_0; //后退
      break;
    case  3:  P1OUT|=(P1_0+P1_1);        //刹车
      break;
    default:
      break;
    }
    Pwm_Set(0speedPWM_TIMES);
    
  }
   else if(motor_num==1)
  {
    switch(event)
    {
    case  0:  P1OUT&=~(P1_4+P1_5);       //停止
      break;
    case  1:  P1OUT|=P1_5;P1OUT&=~P1_4; //前进
      break;
    case  2:  P1OUT|=P1_4;P1OUT&=~P1_5; //后退
      break;
    case  3:  P1OUT|=(P1_4+P1_5);        //刹车
      break;
    default:
      break;
    }
    Pwm_Set(1speedPWM_TIMES);
    
  }
}

void delay(void)
{
  unsigned int count=0;
  while(count<50000)
    count++;
    
}
void  delay_long(void)
{
  int i=0;
  while(i++<10)
    delay();
}

int main( void )
{
  WDTCTL=WDTPW  + WDTHOLD;
  
  P2DIR=0xff;
  P2SEL=0x00;
  P2OUT=0xff;
  
  P1DIR=0xff;
  P1SEL=0x00;
  P1OUT=0x00;
  Motor(0150);    //
  Motor(1150);    //小车前进
  delay_long();
  
  Motor(000);
  Motor(1150);    //小车左拐弯
  delay_long();
  
  Motor(0150);
  Motor(100);    //小车右拐弯
  delay_long();
  
  
  Motor(01100);
  Motor(1110

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      20002  2009-05-26 18:02  小车动作控制\Debug\Exe\PWM2.d43

     文件      18111  2009-05-26 18:02  小车动作控制\Debug\Obj\main.r43

     文件        113  2009-05-26 18:02  小车动作控制\Debug\Obj\PWM2.pbd

     文件       3439  2009-05-26 18:02  小车动作控制\main.c

     文件       2007  2009-05-26 18:08  小车动作控制\PWM2.dep

     文件      13743  2009-05-26 17:37  小车动作控制\PWM2.ewd

     文件      44774  2008-10-29 08:20  小车动作控制\PWM2.ewp

     文件        158  2009-05-26 16:39  小车动作控制\PWM2.eww

     文件       2679  2009-05-26 18:07  小车动作控制\settings\PWM2.cspy.bat

     文件       4649  2009-05-26 18:08  小车动作控制\settings\PWM2.dbgdt

     文件       1028  2009-05-26 18:08  小车动作控制\settings\PWM2.dni

     文件       4003  2009-05-26 18:08  小车动作控制\settings\PWM2.wsdt

     目录          0  2009-05-26 17:40  小车动作控制\Debug\Exe

     目录          0  2009-05-26 17:40  小车动作控制\Debug\List

     目录          0  2009-05-26 18:02  小车动作控制\Debug\Obj

     目录          0  2009-05-26 17:40  小车动作控制\Debug

     目录          0  2009-05-26 17:40  小车动作控制\settings

     目录          0  2009-05-26 18:02  小车动作控制

----------- ---------  ---------- -----  ----

               114706                    18


评论

共有 条评论