标题:
小车循迹的单片机程序 希望对大家有用
[打印本页]
作者:
qingjun
时间:
2018-3-6 21:18
标题:
小车循迹的单片机程序 希望对大家有用
希望对大家有用
单片机源程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define da P0
sbit P10=P1^0; //控制左电机前进
sbit P11=P1^1; //控制左电机后退
sbit P12=P1^2; //控制右电机前进
sbit P13=P1^3; //控制右电机后退
sbit zuobian=P1^4; //左边传感器
sbit youbian=P1^5; //右边传感器
sbit zhongjian=P1^6; //中间传感器
sbit RING=P2^7;
//sbit cesuzuo=P3^2;
//sbit cesuyou=P3^3;
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit buzz=P2^4;
sbit shire=P3^2;//人体释热传感器
void delay(unsigned int z);
void LCDinit();
void lcdwritecom(uchar com);
void lcdwritedat(uchar dat);
void display(uint rate);
void display1(uint rate1);
uint count=0,count1=0;
uint t=0;
uint P110=0,P111=0,P112=0,P113=0;
uchar aa=0;
uchar bb=0;
uchar time=0;
uchar bai0=0,shi0=0,ge0=0;
uint sudu=0,temp=0,temp1=0;
void qianjin()//小车前进
{
P10=0;
P11=1;
P12=0;
P13=1;
delay(25);
P10=0;
P11=0;
P12=0;
P13=0;
delay(25);
}
void youguai() //小车右拐
{
uchar i;
for(i=0;i<20;i++)
{
P10=0;
P11=1;
P12=0;
P13=0;
delay(17);
P10=0;
P11=0;
P12=0;
P13=0;
delay(33);
}
}
void zuoguai() //小车左拐
{
uchar i;
for(i=0;i<21;i++)
{
P10=0;
P11=0;
P12=0;
P13=1;
delay(17);
P10=0;
P11=0;
P12=0;
P13=0;
delay(33);
}
}
void move()
{
if(zuobian==0&&zhongjian==0&&youbian==1) //右边检测到黑线
youguai();
if(zuobian==1&&zhongjian==0&&youbian==0) // 左边检测到黑线
zuoguai();
if(zuobian==0&&zhongjian==1&&youbian==0)
qianjin();
if(zuobian==0&&zhongjian==1&&youbian==1)
youguai();
if(zuobian==1&&zhongjian==1&&youbian==0)
zuoguai();
if(zuobian==0&&zhongjian==0&&youbian==0)
qianjin();
if(zuobian==1&&zhongjian==1&&youbian==1)
qianjin();
if(zuobian==1&&zhongjian==0&&youbian==1)
qianjin();
}
void init_time0()
{
EA=1;
EX0=1;
IT0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
EX1=1;
ET0=1;
IT1=1;
TR0=1;
}
void main(void)
{
LCDinit();
init_time0();
while(1)
{
move();
if(time == 1)
{
time =0;
t++;
display(t);
move();
temp=bb*1.4;
temp1=temp+temp1;
move();
display1(temp1);
bb=0;
}
}
}
void lcdwritecom(uchar com)
{
rs=0;
rw=0;
da=com;
delay(10);
en=1;
delay(10);
en=0;
}
void lcdwritedat(uchar dat)
{
rs=1;
rw=0;
da=dat;
delay(10);
en=1;
delay(10);
en=0;
}
void LCDinit()
{
lcdwritecom(0x38);
lcdwritecom(0x0c);
lcdwritecom(0x06);
lcdwritecom(0x01);
lcdwritecom(0x80);
lcdwritedat('T');
lcdwritedat(':');
lcdwritedat('0');
lcdwritedat('0');
lcdwritedat('0');
lcdwritedat('s');
lcdwritecom(0x80+0x40);
lcdwritedat('S');
lcdwritedat(':');
lcdwritedat('0');
lcdwritedat('0');
lcdwritedat('0');
lcdwritedat('0');
lcdwritedat('c');
lcdwritedat('m');
}
void display(uint rate)
{
uchar bai,shi,ge;
EA=0;
ge=rate%10;
if(ge != 0)
{
lcdwritecom(0x80+4);
lcdwritedat('0'+ge);
}
if(ge == 0 && rate%100/10 != 0)
{
shi=rate%100/10;
lcdwritecom(0x80+3);
lcdwritedat('0'+shi);
lcdwritedat('0');
}
if(ge == 0 && rate/100 != 0)
{
bai=rate/100;
lcdwritecom(0x80+2);
lcdwritedat('0'+bai);
lcdwritedat('0');
lcdwritedat('0');
}
EA=1;
}
void alarm()//蜂鸣器报警
{
uchar i;
buzz=0;
for(i=0;i<30;i++)
{
if(zuobian==0&&zhongjian==0&&youbian==1) //右边检测到黑线
youguai();
if(zuobian==1&&zhongjian==0&&youbian==0) // 左边检测到黑线
zuoguai();
if(zuobian==0&&zhongjian==1&&youbian==0)
qianjin();
if(zuobian==0&&zhongjian==1&&youbian==1)
youguai();
if(zuobian==1&&zhongjian==1&&youbian==0)
zuoguai();
if(zuobian==0&&zhongjian==0&&youbian==0)
qianjin();
if(zuobian==1&&zhongjian==1&&youbian==1)
qianjin();
if(zuobian==1&&zhongjian==0&&youbian==1)
qianjin();
}
buzz=1;
}
void display1(uint rate1)
{
uchar qian, bai,shi,ge;
EA=0;
qian=rate1/1000;
bai=rate1/100%10;
shi=rate1/10%10;
ge=rate1%10;
lcdwritecom(0x80+0x40+2);
lcdwritedat('0'+qian);
lcdwritedat('0'+bai);
lcdwritedat('0'+shi);
lcdwritedat('0'+ge);
EA=1;
}
void delay(unsigned int z)
{
unsigned char a,b;
for(a=z;a>0;a--)
for(b=200;b>0;b--);
}
/*void alarm1() interrupt 4
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
alarm();
}*/
void time0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
if(aa==20)
{
aa=0;
time=1;
}
}
void service_int0() interrupt 0
{
alarm();
}
void service_int1() interrupt 2
{
bb++;
}
复制代码
所有资料51hei提供下载:
xiaoche.rar
(36.81 KB, 下载次数: 5)
2018-3-6 21:16 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1