资源简介
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算法交易详解
相关资源
- 关于avr单片机红外遥控解码的程序
- 基于51单片机的简单计算器数码管显示
- 基于单片机的黑白棋课程设计
- 51单片机485(modbus协议)通信程序
- 基于AT89c51单片机的数字温度测量及显
- msp430g2553测频程序
- msp430g2553测频率
- MSP430驱动SD卡程序
- 51单片机播放音乐、电子琴、快进
- 51单片机1602+ADIIC+按键
- msp430产生SPWM波程序
- 基于超声波倒车雷达 文献综述
- 基于51单片机和lcd1602的adc0804测电压电
- 基于msp430g2553的触摸按键程序
- msp430元件库封装
- 如何利用51单片机输出PWM波
- uCOS-II 在C51 单片机上的移植
- Arduino 平衡小车
- 51单片机数字时钟-proteus仿真文件及
- 基于单片机的五种波形发生器
- msp430f5438a操作nrf24l01
- 单片机最小系统原理图
- MCS-51单片机实用子程序库
- msp430中断嵌套程序
- 89C51FFT蝶形算法
- 基于51单片机定时器实现的数字时钟
- MSP430+LORA
- 避障小车原理图
- 51单片机AD0804模数转换检测电压并显示
- 中南大学单片机课设 密码锁
评论
共有 条评论