不好意思,发的有点晚。我组在这个星期主要学习了电机部分,蓝牙模打算在最后几天内加上。小车我们采用的是两轮+一个万向轮的模式,如图所示。
小车的拼装还未完成,主要是当初超出预算,材料还没有买齐,循迹模块,避障仪,51单片机将会在后面安装上去,5除了51单片机手动制作外,其余由网上购买获得。这个星期主要编写能让小车运行的程序,苦于没有安装51单片机在小车上,不能进行最后调试,避障功能会在后面编进程序,程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar pro_left,pro_right,i,j;
sbit left1=P2^0;
sbit left2=P2^1;
sbit right1=P2^2;
sbit right2=P2^3;
sbit en1=P1^0;
sbit en2=P1^1;
sbit left_red=P1^2;
sbit mid_red=P1^3;
sbit right_red=P1^4;
void delay(uint z)
{
uchar i;
while(z--)
{for(i=0;i<121;i++);}
}
void init()
{
left_red=0;
mid_red=1;
right_red=0;
TMOD=0X01//
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;
TR0=1;
en1=1;
en2=1;
}
void time0(void)interrupt 1
{
i++;
j++;
if(i<=pro_right) {en1=1;}
else en1=0;
if(i==40) {en1=~en1;i=0;}
if(j<=pro_left) {en2=1;}
else en2=0;
if(j==40) {en2=~en2;j=0;}
TH0=(65536-100)/256;
TL0=(65536-100)%256;
}
void straight()
{
pro_right=39;
pro_left=39;
left1=0;
left2=1;
right1=1;
right2=0;
}
void turn_left()
{
pro_right=5;
pro_left=39;
left1=0;
left2=1;
right1=1;
right2=0;
}
void turn_right()
{
pro_right=39;
pro_left=5;
left1=0;
left2=1;
right1=1;
right2=0;
}
void turn_back()
{
left1=1;
left2=0;
right1=0;
right2=1;
pro_right=39;
pro_left=39;
}
void main(void)
{
init();
delay(1);
while(1)
{
infrared();
// straight();
}
}
void int0(void)interrupt 0
{
}
程序还待做最后检测,以及加上避障功能程序。