资源简介
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
- 上一篇:Zookeeper学习.txt
- 下一篇:vwap算法交易详解
相关资源
- 51 单片机 红外避障小车 大集合136
- IAR FOR 430 破解工具
- STC8951系列单片机中方指南
- IAR for MSP430 v7.10.1 注册机
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 基于MSP430G2553的蓝牙控制小车
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 利用DS1302和msp430进行闹钟和万年历的
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- msp430F149操作红外接收模块源码
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- [免费]msp430f149控制PS2键盘并用1602显示
评论
共有 条评论