當前位置:編程學習大全網 - 編程語言 - 汽車單片機驅動編程壹例

汽車單片機驅動編程壹例

妳自己看評論,改改就好了。功能都寫好了,把沒用的刪掉就行了。

# include & ltreg52.h & gt

# include & ltmath.h & gt

#定義uchar無符號字符

#定義uint無符號整數

#定義L_M 1

#定義R_M 2

uchar temp2,temp1,t,m1,m2,紅線;

sbit tr=p2^4;//超聲波

sbit ec=p2^5;//

sbit en=p2^7;//液晶的EN

sbit rs=p2^6;//液晶RS選擇端子

//液晶數據端口P0

sbit rin_1=p2^0;//跟蹤引腳輸入

sbit rin_2=p2^1;

sbit lin_2=p2^2;

sbit lin_1=p2^3;

sbit l_en=p1^0;//左側電機啟用

sbit l_1=p1^1;//左電機控制1

sbit l_2=p1^2;//左側電機控制2

sbit r_1=p1^3;//右電機控制1

sbit r_2=p1^4;//右電機控制2

sbit r_en=p1^5;//右電機啟用

Void delay(uint z) //延遲程序1

{

uint x,y;

for(x = z;x & gt0;x -)

for(y = 110;y & gt0;y-);

}

無效延遲1s (uchart)//1s延遲功能

{

uchar a,h,I,j,k;

for(a = t;a & gt0;答-)

{

for(h = 5;h & gt0;h -)

for(I = 4;我& gt0;我-)

for(j = 116;j & gt0;j -)

for(k = 214;k & gt0;k-);

}

}

void v _ control(uchar數,uchar速度)

{

如果(速度& lt100)

{

if(數字==1)

m1=abs(速度);

如果(數字==2)

m2=abs(速度);

}

}

無效左轉()

{

l _ 1 = 1;//左扇轉//

l _ 2 = 0;

r _ 1 = 1;//右翻轉

r _ 2 = 0;

}

無效右轉()

{

l _ 1 = 0;//左鄭篆

l _ 2 = 1;

r _ 1 = 0;//右翻轉

r _ 2 = 1;

}

void gostright()

{

l _ 1 = 0;//左鄭篆

l _ 2 = 1;

r _ 1 = 1;//右正轉

r _ 2 = 0;

}

void goback()

{

l _ 1 = 1;//左鄭篆

l _ 2 = 0;

r _ 1 = 0;//右正轉

r _ 2 = 1;

}

無效停止()

{

l _ 1 = 1;//停止

l _ 2 = 1;

r _ 1 = 1;//停止

r _ 2 = 1;

}

void定時器0_int()

{

TMOD = 0x 01;

TH0 =-100/256;

TL0 =-100% 256;

EA = 1;

ET0 = 1;

TR0 = 1;

}

state_int()

{

rin _ 1 = 1;

rin _ 1 = 1;

Lin _ 1 = 1;

Lin _ 1 = 1;

t = 0;

m 1 = 50;

m2 = 50

stop();

}

void main()

{

定時器0 _ int();

state _ int();

while(1)

{

//避障程序

if((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 1)& amp;& amp(Rin _ 1 = = 1)& amp;& amp(Rin_2==1))

gostright();

if((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 1)& amp;& amp(((Rin _ 1 = = 1)& amp;& amp(Rin _ 2 = = 0))| |((Rin _ 1 = = 0)& amp;& amp(Rin _ 2 = = 1))| |((Rin _ 1 = = 0)& amp;& amp(Rin_2==0))))

左轉();

if((Rin _ 1 = = 1)& amp;& amp(Rin _ 2 = = 1)& amp;& amp(((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 0))| |((Lin _ 1 = = 0)& amp;& amp(Lin _ 2 = = 1))| |((Lin _ 1 = = 0)& amp;& amp(Lin_2==0))))

turn right();

if(((((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 0))| |((Lin _ 1 = = 0)& amp;& amp(Lin _ 2 = = 1))| |((Lin _ 1 = = 0)& amp;& amp(Lin _ 2 = = 0)))& amp;& amp(((Rin _ 1 = = 1)& amp;& amp(Rin _ 2 = = 0))| |((Rin _ 1 = = 0)& amp;& amp(Rin _ 2 = = 1))| |((Rin _ 1 = = 0)& amp;& amp(Rin_2==0))))

go back();

if((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 1)& amp;& amp(Rin _ 1 = = 1)& amp;& amp(Rin_2==1))

gostright();

if((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 1)& amp;& amp(((Rin _ 1 = = 1)& amp;& amp(Rin _ 2 = = 0))| |((Rin _ 1 = = 0)& amp;& amp(Rin _ 2 = = 1))| |((Rin _ 1 = = 0)& amp;& amp(Rin_2==0))))

左轉();

if((Rin _ 1 = = 1)& amp;& amp(Rin _ 2 = = 1)& amp;& amp(((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 0))| |((Lin _ 1 = = 0)& amp;& amp(Lin _ 2 = = 1))| |((Lin _ 1 = = 0)& amp;& amp(Lin_2==0))))

turn right();

if(((((Lin _ 1 = = 1)& amp;& amp(Lin _ 2 = = 0))| |((Lin _ 1 = = 0)& amp;& amp(Lin _ 2 = = 1))| |((Lin _ 1 = = 0)& amp;& amp(Lin _ 2 = = 0)))& amp;& amp(((Rin _ 1 = = 1)& amp;& amp(Rin _ 2 = = 0))| |((Rin _ 1 = = 0)& amp;& amp(Rin _ 2 = = 1))| |((Rin _ 1 = = 0)& amp;& amp(Rin_2==0))))

go back();

}

while(1);

}

定時器0()中斷1

{

TH0 =-100/256;

TL0 =-100% 256;

如果(t==0)

{

temp 1 = m 1;

temp2 = m2

}

if(t==temp1)

l _ EN = 0;

if(t==temp2)

r _ EN = 0;

t++;

如果(t==50)

{

t = 0;

l _ EN = 1;

r _ EN = 1;

}

}

  • 上一篇:機械原理連桿機構
  • 下一篇:霍蘭德的職業有幾類分別代表什麽
  • copyright 2024編程學習大全網