标题:
小白 51单片机循迹车实现程序
[打印本页]
作者:
段金辉
时间:
2018-11-12 19:05
标题:
小白 51单片机循迹车实现程序
最最简单的51循迹程序
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DO = P3^1;
sbit AO = P3^2;
sbit beef = P3^4;
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
sbit s4=P1^3;
sbit ENA=P2^0;
sbit ENB=P2^1;
sbit l1=P1^4;
sbit l2=P1^5;
sbit r1=P1^6;
sbit r2=P1^7;
sbit bzy=P0^3;
sbit bzz=P0^4;
uchar t=0;
uchar zkb1=0;
uchar zkb2=0;
sbit smg1=P2^4;
sbit smg2=P2^5;
sbit smg3=P2^6;
sbit smg4=P2^7;
sbit in=P2^3;
sbit out=P2^2;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
uint a,b,c,d,h,i,j;
uint f,g,e;
void cijiance();
void delay20us()
{
uchar a;
for(a=0;a<100;a++);
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init ()
{
EA = 1;
TMOD = 0x11;
TH0 =(65536 - 100) / 256;
TL0 = (65536 - 100)% 256;
ET0 = 1;
TR0 = 1;
}
void time ()interrupt 1
{
TH0 =(65536 - 100) / 256;
TL0 = (65536 - 100)% 256;
++t;
if (t<zkb1)
{
ENA=1;
}
else
{
ENA=0;
}
if(t<zkb2)
{
ENB=1;
}
else
{
ENB=0;
}
if(t>=200)
{
t=0;
}
}
void T0_time() interrupt 3
{
TH0=0;
TL0=0;
g++;
}
void ceju()
{
out=0;
TH0=0;
TL0=0;
while(1)
{
g=0;
in=0;
out=1;
delay20us();
out=0;
while(in==0);
TR0=1;
while(in==1);
while(1)
{
h=TH0;
i=TL0;
j=TH0;
if(h==j)
break;
}
f=TH0*256+TL0;
e=((f+g*65536)*18)/1000;
d=e%1000%100%10;
c=e%1000%100/10;
b=e%1000/100;
a=e/1000;
TR0=0;
TL0=0;
TH0=0;
if(b>0)
{
c=c+1;
}
smg1=0;
P0=table[d];
delayms(1);
smg1=1;
P0=0xff;
smg2=0;
P0=table[c];
delayms(1);
smg2=1;
P0=0xff;
smg3=0;
P0=table1[b];
delayms(1);
smg3=1;
P0=0xff;
smg4=0;
P0=table[a];
delayms(1);
smg4=1;
P0=0xff;
}
}
void ltx()
{
zkb1=30;
zkb2=60;
s1=1;s2=0;
s3=1;s4=0;
}
void rtx()
{
zkb1=60;
zkb2=30;
s1=0;s2=1;
s3=0;s4=1;
}
void ltd()
{
zkb1=40;
zkb2=65;
s1=1;s2=0;
s3=1;s4=0;
}
void rtd()
{
zkb1=60;
zkb2=40;
s1=0;s2=1;
s3=0;s4=1;
}
void stop2()
{
s1=0;s2=0;
s3=0;s4=0;
zkb1=14;
zkb2=14;
}
void qianjin()
{
s1=0;s2=1;
s3=1;s4=0;
zkb1=55;
zkb2=52;
}
void qianjin1()
{
s1=0;s2=1;
s3=1;s4=0;
zkb1=54;
zkb2=52;
}
void xunji ()
{
if(l1==1&&l2==0&&r1==0&&r2==0)
{
ltd();
}
if(l1==0&&l2==0&&r1==1&&r2==0)
{
rtd();
}
if(l1==0&&l2==1&&r1==0&&r2==0)
{
ltd();
}
if(l1==0&&l2==0&&r1==0&&r2==1)
{
rtd();
}
if(l1==1&&l2==1&&r1==1&&r2==1)
{
qianjin();
delayms(50);
if(l1==1&&l2==1&&r1==1&&r2==1)
{
stop2();
ceju();
}
else
{
if(l1==0&&l2==0&&r1==0&&r2==0)
{
qianjin();
}
}
}
if(bzz==1&&l1==0&&l2==0&&r1==0&&r2==0&&bzy==1&&bzz==1)
{
qianjin1();
}
// if(l1==0&&l2==0&&r1==0&&r2==0&&bzy==0&&bzz==1)
// {
// ltd();
// delayms(300);
// qianjin();
// delayms(200);
// rtd();
// delayms(300);
// }
if(l1==0&&l2==0&&r1==0&&r2==0&&bzy==0&&bzz==1)
{
ltx();
delayms(100);
stop2();
delayms(200);
qianjin();
delayms(500);
stop2();
delayms(200);
rtx();
delayms(400);
stop2();
delayms(200);
qianjin();
delayms(400);
stop2();
delayms(200);
ltx();
delayms(200);
}
//if(l1==0&&l2==0&&r1==0&&r2==0&&bzy==1&&bzz==0)
// {
// rtx();
// delayms(300);
// stop2();
// delayms(200);
// qianjin();
// delayms(600);
// stop2();
// delayms(200);
// ltx();
// delayms(400);
// stop2();
// delayms(200);
// qianjin();
// delayms(600);
//
// }
cijiance();
}
void cijiance()
{
if(DO==1)
{
delayms(10);
beef=1;
}
else if (DO==0)
{
delayms(10);
beef=0;
}
}
void main ()
{
init();
s1=0;s2=1;
s3=1;s4=0;
zkb1=15;
zkb2=14;
while(1)
{
xunji();
}
}
复制代码
所有资料51hei提供下载:
循迹小车.rar
(48.52 KB, 下载次数: 21)
2018-11-12 19:04 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1