標(biāo)題:
智能尋跡小車51單片機控制程序
[打印本頁]
作者:
OKLD168
時間:
2017-7-7 22:38
標(biāo)題:
智能尋跡小車51單片機控制程序
#include <reg52.h>
#include "car.h" //自己編寫的頭文件,里面有函數(shù)聲明
/********************************/
/* 清空電機控制IO位 */
/********************************/
void CleanRun()
{
left_a = 0;
left_b = 0;
right_a = 0;
right_b = 0;
}
/********************************/
/* 根據(jù)接收到的數(shù)據(jù),控制小車 */
/********************************/
void Run()
{
uchar delaytime = 50; //前進、后退、側(cè)向前進的延時時間
uchar little_delaytime = 22; //轉(zhuǎn)彎的延時時間
switch(recvbuf)
{
case 0x01: //前進
{
left_a = 1; //正轉(zhuǎn)
left_b = 0;
right_a = 1; //正轉(zhuǎn)
right_b = 0;
delayms(delaytime);
break;
}
case 0x02: //后退
{
left_a = 0; //反轉(zhuǎn)
left_b = 1;
right_a = 0; //反轉(zhuǎn)
right_b = 1;
delayms(delaytime);
break;
}
case 0x03: //左轉(zhuǎn)
{
left_a = 0; //不轉(zhuǎn)
left_b = 0;
right_a = 1; //正轉(zhuǎn)
right_b = 0;
delayms(little_delaytime);
break;
}
case 0x04: //右轉(zhuǎn)
{
left_a = 1; //正轉(zhuǎn)
left_b = 0;
right_a = 0; //不轉(zhuǎn)
right_b = 0;
delayms(little_delaytime);
break;
}
case 0x05: //前左方向運行
{
right_a = 1; //正轉(zhuǎn)
right_b = 0;
left_b = 0; //半速正轉(zhuǎn)
StartPwm(lefta); //開啟定時器,設(shè)定產(chǎn)生PWM的引腳
delayms(delaytime); //延時一段時間
StopPwm(); //關(guān)閉定時器
break;
}
case 0x06: //前右方向運行
{
left_a = 1; //正轉(zhuǎn)
left_b = 0;
right_b = 0; //半速正轉(zhuǎn)
StartPwm(righta);
delayms(delaytime);
StopPwm();
break;
}
case 0x07: //后左方向運行
{
right_a = 0; //后轉(zhuǎn)
right_b = 1;
left_a = 0; //半速后轉(zhuǎn)
StartPwm(leftb);
delayms(delaytime);
StopPwm();
break;
}
case 0x08: //后右方向運行
{
left_a = 0; //后轉(zhuǎn)
left_b = 1;
right_a = 0; //半速后轉(zhuǎn)
StartPwm(rightb);
delayms(delaytime);
StopPwm();
break;
}
case 0x09: //原地順時針旋轉(zhuǎn)
{
left_a = 1;
left_b = 0;
right_a = 0;
right_b = 1;
delayms(delaytime);
break;
}
case 0x0a: //原地逆時針旋轉(zhuǎn)
{
left_a = 0;
left_b = 1;
right_a = 1;
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1