pwm控制巡迹带避障小车程序.doc
#include< reg52.h >
#define uchar unsigned char #define uint unsigned int
#define SHELVES 20 //速度总档数。 sbit PWM_R = P1^0; //右电机PWM输入口 sbit PWM_BR= P1^1; //后退时右电机PWM输入口 sbit PWM_L = P1^2; //左电机PWM输入口 sbit PWM_BL= P1^3; //后退时左电机PWM输入口 sbit fl=P1^4;
sbit fr=P1^5;
sbit ff=P1^6;
sbit bb=P1^7;
uchar percent_l = 0; //左轮占空比 uchar percent_bl=0;
uchar percent_br=0;
uchar percent_r = 0; //右轮占空比 uchar run_time = 0; //车轮运行一步的时间 void timer_init( void ) {
TMOD = 0x02; //定时器0工作在方式2,定时值自动重载,启动仅受
TR0的控制。
TH0 = 256 - 200; //定时周期为 200us * SHELVES
TL0 = 256 - 200;
EA = 1; //开总中断。
ET0 = 1; //开定时器0中断。
TR0 = 1; //启动定时器0。 }
void right( void )
{
percent_r = 2; //右轮速度慢。
percent_l = 4; //左轮速度快。 }
void right1(void )
{
percent_br=4;
percent_bl=2;
}
void left( void )
{
percent_r = 4; //右轮速度快。
percent_l = 2; //左轮速度慢。 }
void left1(void)
{
percent_br=2;
percent_bl=4;
}
void forward( void )
{
percent_r = 4; //右轮同速度。
percent_l = 4; //左轮同速度。
percent_br=0;
percent_bl=0;
}
void forward1(void )
{
percent_br=4;
percent_bl=4;
percent_r=0;
percent_l=0;
}
void stop( void )
{
percent_r = 0; //右轮零速度。
percent_l = 0; //左轮零速度。
}
void timer_zero( void ) interrupt 1 {
static uchar temp = 0; //中断次数计数,
EA = 0; //关总中断,屏蔽其他中断。
if(temp < SHELVES) //高电平保持时间。
{
if(temp < percent_l)
PWM_L = 1; //左电机高电平
else
PWM_L = 0; //左电机低电平
if(temp < percent_r)
PWM_R = 1; //右电机高电平
else
PWM_R = 0; //右电机低电平
if(temp
本文档为【pwm控制巡迹带避障小车程序.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。