新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 智能小車循跡記時(shí)測(cè)速程序

智能小車循跡記時(shí)測(cè)速程序

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏

while(1)
{
if(P10==0&&P11==0&&P12==0)
{
TR0=0; //顯示時(shí)間 停
P0=d[0];
P2=0XFE;
delay(1);
P0=d[3];
P2=0XFB;
delay(3);

P0=d[2]; //顯示測(cè)速 停
P2=0XFD;
delay(3);
P0=d[3];
P2=0XF7;
delay(3);
P14=1;P15=1;P16=1; P17=1;
}
}
}
void timer1() interrupt 3 //中斷 服務(wù)程序
{
unsigned int qq=0,ww=0;
TH1=0XFc;
TL1=0X18;//1ms
i++;
switch(i%4)
{
case 0:P0=c[0],P2=0XFE;d[0]=c[0];break;
case 1:P0=c[1],P2=0XFD;d[1]=c[1];break;
case 2:P0=c[2],P2=0XFB;d[2]=c[2]; break;
case 3:P0=c[3],P2=0XF7;d[3]=c[3]; break;
default:break;
}
P14=1;P15=1;P16=1; P17=1;

if(P10==0&&P11==0&&P12==0)//全測(cè)到
dr=0;
if(P10==1&&P11==0&&P12==1)//中間測(cè)到
dr=1;
if(P10==0&&P11==1&&P12==1) //左邊測(cè)到
dr=2;
if(P10==1&&P11==1&&P12==0) //右邊測(cè)到
dr=3;
if(P10==0&&P11==0&&P12==1) //左兩測(cè)到
dr=4;
if(P10==1&&P11==0&&P12==0) //右兩測(cè)到
dr=5;

switch(dr)
{
case 0:P14=1,P15=1,P16=1,P17=1,TR1=0;break; //全測(cè)到 停

case 1:P14=0,P15=1,P16=0,P17=1;break; //直走

case 2:P14=1,P15=1,P16=0,P17=1,ww=1;break; //左拐

case 3:P14=0,P15=1,P16=1,P17=1,qq=1;break; //右拐

case 4:P14=1,P15=0,P16=0,P17=1,ww=1;break; //左兩測(cè)到 左拐

case 5:P14=0,P15=1,P16=1,P17=0,qq=1;break; //右兩測(cè)到 右拐
}
/*跑出跑道外記憶 回到跑道內(nèi) */
if(dr==2&&ww==1||dr==4&&ww==1) //單邊或雙邊 測(cè)到跑出去
{
qq=0;
P14=1;P15=1;P16=0;P17=1;
}
if(dr==3&&qq==1||dr==5&&qq==1)
{
ww=0;
P14=0;P15=1;P16=1;P17=1;
}

if(i==1000) //1s
{
kop=TH0;//計(jì)數(shù)器計(jì)入脈沖
kop=kop<<8;
kop=kop+TL0;
kop=kop*15;
c[3]=a[kop/10];
c[2]=a[kop%10];
time++;
c[1]=a[time/10];
c[0]=a[time%10];
i=0;
TH0=0;
TL0=0;
}
}


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉