系统的单片机程序:
#include"reg52.h"
#definedet_Dist2.55//
单个脉冲对应的小车行走距离,其值为车轮周长
/4#defineRD9//
小车对角轴长度。
#definePI3.1415926
#defineANG_9090
#defineANG_90_T102
#defineANG_180189/
全局变量定义区。
/sbitP10=P1^0//
控制继电器的开闭sbitP11=P1^1//
控制金属接近开关。
扩展资料:
控制器部分:接收传感器部分传递过来的信号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。好比人的大脑。
执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。
对机器人小车来说,最基本的就是轮子。这部分就好比人的四肢一样。 传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。好比人的眼睛、耳朵等感觉器官。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit moto1=P1^5
sbit moto2=P1^6
sbit moto3=P2^0
sbit moto4=P2^1
sbit en1=P1^7
sbit en2=P2^2
///////////////
sbit left1=P1^0//
sbit left2=P1^1
sbit left3=P1^2
sbit mid=P1^3//
sbit right1=P1^4
sbit right2=P2^3
sbit right3=P2^4////////////////
sbit hled=P0^0
sbit bled=P0^1
sbit lled=P0^2
sbit rled=P0^3
sbit bizhang=P2^5
uchar pro_head
uchar pro_back
uchar i
uchar j//前后占空比标志
void delay(uint z)
{
uchar i
while(z--)
{
for(i=0i<121i++)
}
}
void init()
{
TMOD=0x01
TH0=(65536-100)/256
TL0=(65536-100)%6
EA=1
ET0=1
TR0=1
en1=1
en2=1
}
void time0(void) interrupt 1
{
i++
j++
if(i<=pro_back)
{
en1=1
}
else
{
en1=0
}
if(i==40)
{
en1=~en1
i=0
}
if(j<=pro_head)
{
en2=1
}
else
{
en2=0
}
if(j==40)
{
en2=~en2
j=0
}
TH0=(65536-100)/256
TL0=(65536-100)%6
}
void qianjin()/////////////////////
{
pro_back=15
pro_head=5
moto1=0
moto2=0
moto3=1
moto4=0
lled=1
rled=1
bled=1
}
void turn_right1()//
{
pro_back=10
pro_head=15
moto1=0
moto2=1
moto3=1
moto4=0
}
。。。。。。。
void xunji() //
{
uchar flag
if((left1==0)&&(left2==0)&&(left3==1)&&(mid==1)&&(right1==0)&&(right2==0)&&(right3==0))
{
flag=1
}
else if((left1==0)&&(left2==0)&&(left3==1)&&(mid==0)&&(right1==0)&&(right2==0)&&(right3==0))
{
flag=2
}
else if((left1==0)&&(left2==1)&&(left3==1)&&(mid==0)&&(right1==0)&&(right2==0)&&(right3==0))
{
flag=3
}
、。。。。。。。。。。。。。
switch (flag)
{
case 0:qianjin()headled()
break
case 1:turn_left1()leftled()
break
case 2:turn_left2()leftled()
、。。。。。。。。。。。。。。。break default:backled()
break
}
}
void main()
{
init()
delay(600)
jiance()
delay(300)
while(1)
{
if(bizhang==1)
{
xunji()
}
else
bz()
}
}、、、、、、、、、后面根据自己的实际情况填写吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)