循迹避障智能小车c语言程序,智能循迹避障小车完整程序lpar;亲测好使rpar;
/*******************************************
//利用51定時器產生PWM波來調節電機速度
//速度變化范圍從0-100可調
//使用三路做尋跡使用,哪一路檢測在黑線哪一路為
//高電平
//沒檢測到黑線表示有反射 對應輸出低電平信號
*********************************************/
#include
#define uint unsigned int
#define uchar unsigned char
/*電機四個接口定義*/
sbit in1=P0^0;
sbit in2=P0^1;
sbit in3=P0^2;
sbit in4=P0^3;
/*計時器*/
uchar j,k,i,a,A1,A2,second,minge,minshi;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table2[]={0xbf,0x86,0xdb,0xcf,
0xe6,0xed,0xfd,0x87,
0xff,0xef,0xf7,0xfc,
0xb9,0xde,0xf9,0xf1};
void delay(uchar i)
{
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
void display(uchar sh_c,uchar g_c,uchar min_ge,uchar min_shi)
{
dula=1;
P0=table[sh_c];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(5);
dula=1;
P0=table[g_c];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(5);
dula=1;
P0=table[min_shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
dula=1;
P0=table2[min_ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
/*左、中、右三路循跡傳感器接口定義*/
sbit zuo=P1^0;
sbit zhong=P1^1;
sbit you=P1^2;
/*避障接口定義*/
sbit bz_zuo=P1^3;
sbit bz_zhong=P1^4;
sbit bz_you=P1^5;
uchar count = 0;
/*利用定時器0定時中斷,產生PWM波*/
void Init_timer()
{
TH0 = (65535-10)/256;
TL0 = (65535-10)%256;
TMOD = 0x01;
TR0 = 1;
ET0 = 1;
EA = 1;
}
/*左輪速度調節程序*/
void zuolun(uchar speed)
{
} if(count
void youlun(uchar speed) //同上
{
if(count
{
in3 = 1;
in4 = 0;
}
else
{
in3 = 0;
in4 = 1;
}
}
void Inline() //檢測黑線信號
{
uchar temp;
temp =P1;
switch(temp)
{
case 0x01:zuolun(0); youlun(90);break; //左側循跡傳感器壓線,小車向左前修正 case 0x02:zuolun(100);youlun(100);break; //中間循跡傳感器壓線,保持直走 此處兩值使電機速度保持相同
case 0x04:zuolun(90); youlun(0);break; //右側循跡傳感器壓線,小車向右前修正 case 0x08:zuolun(90); youlun(0);break; //左側避障傳感器有信號小車右轉 case 0x10:zuolun(90); youlun(0);break; //中間避障傳感器有信號小車左轉 case 0x20:zuolun(90); youlun(0);break; //右側避障傳感器有信號小車左轉
}
/*
if(zuo==1)
{
zuolun(10);
youlun(50);
}
else if(zhong==1)
{
zuolun(99);
youlun(99);
}
else if(you==1)
{
zuolun(50);
youlun(10);
} */
}
void main() //主函數
{
Init_timer(); //調用函數
while(1)
{
Inline();
minge=0;
minshi=0;
second++;
if(second==60)
second=0,minge++;
A1=second/10;
A2=second%10;
if(minge==10)
minge=0,minshi++;
for(a=200;a>0;a--)
{
display(A1,A2,minge,minshi);
};
}
}
void Timer0_int()interrupt 1 //定時器中斷計數 {
TH0 = (65535-10)/256;
TL0 = (65535-10)%256;
count ++;
if(count >= 100)
{
count = 0;
}
}
總結
以上是生活随笔為你收集整理的循迹避障智能小车c语言程序,智能循迹避障小车完整程序lpar;亲测好使rpar;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一生必看的 100 幅世界名画
- 下一篇: eclipse各版本对应JDK版本要求