久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
智能循跡加壁障小車程序源碼,簡(jiǎn)單寫寫,謝謝大家。
[打印本頁(yè)]
作者:
123456789LC
時(shí)間:
2017-11-16 20:29
標(biāo)題:
智能循跡加壁障小車程序源碼,簡(jiǎn)單寫寫,謝謝大家。
#include<reg52.h>#include <intrins.h> //內(nèi)部包含延時(shí)函數(shù) _nop_();
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
unsigned char dj1=0; //左前
unsigned char dj2=0; //右前
unsigned char dj3=0; //左后
unsigned char dj4=0; //右后
uchar num1=0;
uchar t=0;
uchar n=0;
sbit HW1=P0^0; //紅外對(duì)管位定義
sbit HW2=P0^1;
sbit HW3=P0^2;
sbit HW4=P0^3;
sbit ENA1=P3^2; //前PWM輸入
sbit ENB1=P3^3;
sbit ENA2=P3^4; //后PWM輸入
sbit ENB2=P3^5;
sbit IN1=P2^0; //前電機(jī)
sbit IN2=P2^1;
sbit IN3=P2^2;
sbit IN4=P2^3;
sbit IN5=P2^4; //后電機(jī)
sbit IN6=P2^5;
sbit IN7=P2^6;
sbit IN8=P2^7;
sbit RX = P1^2;//ECHO超聲波模塊回響端 左
sbit TX = P1^1;//TRIG超聲波模塊發(fā)
sbit rx = P1^3;//ECHO超聲波模塊回響端
sbit tx = P1^4;//TRIG超聲波模塊發(fā)
unsigned int time = 0;//傳輸時(shí)間
unsigned long S = 0;//距離
bit flag = 0;//超出測(cè)量范圍標(biāo)志位
unsigned int time1 = 0;//傳輸時(shí)間
unsigned long S1 = 0;//距離
bit flag1 = 0;//超出測(cè)量范圍標(biāo)志位
void Delay10us(unsigned char i) //10us延時(shí)函數(shù) 啟動(dòng)超聲波模塊時(shí)使用
{
unsigned char j;
do{
j = 10;
do{
_nop_();
}while(--j);
}while(--i);
}
void Delay10us1(unsigned char i) //10us延時(shí)函數(shù) 啟動(dòng)超聲波模塊時(shí)使用
{
unsigned char j;
do{
j = 10;
do{
_nop_();
}while(--j);
}while(--i);
}
void StartModule() //啟動(dòng)超聲波模塊
{
TX=1; //啟動(dòng)一次模塊
Delay10us(2);
TX=0;
}
void StartModule1() //啟動(dòng)超聲波模塊
{
tx=1; //啟動(dòng)一次模塊
Delay10us(2);
tx=0;
}
/*計(jì)算超聲波所測(cè)距離并顯示*/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(float)(time*1.085)*0.17; //算出來(lái)是MM
if((S>=700)||flag==1) //超出測(cè)量范圍
{
flag=0;
}
}
void Conut1(void)
{
time1=TH0*256+TL0;
TH0=0;
TL0=0;
S=(float)(time1*1.085)*0.17; //算出來(lái)是MM
if((S1>=700)||flag==1) //超出測(cè)量范圍
{
flag1=0;
}
}
void delay(uint x) //延時(shí)1ms
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void qianjin() //小車前進(jìn)
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN5=0;
IN6=1;
IN7=0;
IN8=1;
dj1=35; //左前
dj2=30; //
dj3=25; // 右后
dj4=25; //
}
void weileft() //小車前進(jìn)向左微調(diào)
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN5=0;
IN6=1;
IN7=0;
IN8=1;
dj1=40;
dj2=50;
dj3=45;
dj4=45;
}
void weiright() //小車前進(jìn)向右微調(diào)
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN5=0;
IN6=1;
IN7=0;
IN8=1;
dj1=55;
dj2=35;
dj3=35;
dj4=35;
}
void daright()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN5=0;
IN6=1;
IN7=0;
IN8=1;
dj1=25;
dj2=15;
dj3=15;
dj4=25;
}
void daleft()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
IN5=0;
IN6=1;
IN7=0;
IN8=1;
dj1=15;
dj2=25;
dj3=25;
dj4=15;
}
void stop() //小車停止
{
dj1=0;
dj2=0;
dj3=0;
dj4=0;
}
/*超聲波避障*/
void Avoid()
{
if(S<400||S1<400)
{
stop();//停車
delay(2500);
do
{
if(S<=S1)
{
// back();
// delay(100);//后退時(shí)間越長(zhǎng)、距離越遠(yuǎn)。后退是為了留出車輛轉(zhuǎn)向的空間
// stop();
delay(2500); //小車停止
daright();
delay(2500);
// qianjin();
// delay(1000);
// daleft();
// delay(500);
}
if(S>S1)
{
// back();
// delay(100);//后退時(shí)間越長(zhǎng)、距離越遠(yuǎn)。后退是為了留出車輛轉(zhuǎn)向的空間
// stop(); //小車停止
// delay(500);
daleft();
delay(2500);
// qianjin();
// delay(1000);
// daleft();
// delay(500);
}
StartModule(); //啟動(dòng)模塊測(cè)距,再次判斷是否
while(!RX); //當(dāng)RX(ECHO信號(hào)回響)為零時(shí)等待
TR0=1; //開啟計(jì)數(shù)
while(RX); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0; //關(guān)閉計(jì)數(shù)
Conut(); //計(jì)算距離
StartModule1(); //啟動(dòng)模塊測(cè)距,再次判斷是否
while(!rx); //當(dāng)RX(ECHO信號(hào)回響)為零時(shí)等待
TR0=1; //開啟計(jì)數(shù)
while(rx); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0; //關(guān)閉計(jì)數(shù)
Conut(); //計(jì)算距離
}while(S < 280||S1<280);//判斷前面障礙物距離
}
else
{
qianjin();
}
}
void init() //初始化
{
TMOD|=0x01;
TMOD |= 0x11;//定時(shí)器0工作模塊1,16位定時(shí)模式。T0用測(cè)ECH0脈沖長(zhǎng)度
TH0 = 0;
TL0 = 0;//T0,16位定時(shí)計(jì)數(shù)用于記錄ECHO高電平時(shí)間
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
EA=1;
ET1=1;
ET0 = 1;//允許T0中斷
TR1=1;
TR0=1;
}
/*定時(shí)器0中斷*/
void timer0() interrupt 1 //T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍
{
flag=1;
flag1=1; //中斷溢出標(biāo)志
}
void timer1() interrupt 3 //定時(shí)器1中斷
{
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
t++;
if(t<dj1) ENA1=1;
else ENA1=0;
if(t<dj2) ENB1=1;
else ENB1=0;
if(t<dj3) ENA2=1;
else ENA2=0;
if(t<dj4) ENB2=1;
else ENB2=0;
if(t>=100)
{
t=0;
}
}
void main()
{
init();
while(1)
{
StartModule(); //啟動(dòng)模塊測(cè)距
while(!RX); //當(dāng)RX(ECHO信號(hào)回響)為零時(shí)等待
TR0=1; //開啟計(jì)數(shù)
while(RX); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0; //關(guān)閉計(jì)數(shù)
Conut(); //計(jì)算距離
StartModule1(); //啟動(dòng)模塊測(cè)距
while(!rx); //當(dāng)RX(ECHO信號(hào)回響)為零時(shí)等待
TR0=1; //開啟計(jì)數(shù)
while(rx); //當(dāng)RX為1計(jì)數(shù)并等待
TR0=0; //關(guān)閉計(jì)數(shù)
Conut1(); //計(jì)算距離
Avoid(); //避障
delay(65); //測(cè)試周期不低于60MS
}
}
作者:
Murong_Kui
時(shí)間:
2018-5-11 09:34
你雖然定義了紅外線端口,但是好像沒寫循跡部分的程序。
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
18国产免费视频动漫
|
亚洲二区视频
|
欧美成人猛片aaaaaaa
|
在线中文字幕
|
欧美黄色免费网站
|
国产精品乱
|
中日韩一级片
|
久久精品伊人
|
国产又粗又大又长
|
在线播放中文字幕
|
精品久久91
|
亚洲在线播放
|
免费性爱视频
|
一区二区三区四区在线播放
|
色女人影院
|
色av综合
|
91av在线看
|
欧美在线天堂
|
午夜影院在线免费观看
|
国产精品一级二级
|
欧美成人激情视频
|
日韩欧美国产成人
|
成人午夜又粗又硬又大
|
国内自拍xxxx18
|
黄色片视频在线观看
|
综合网av
|
国产伦理一区二区
|
精品欧美在线
|
国产成人av网站
|
久久天天干
|
国产在线欧美
|
国产精品成人一区二区网站软件
|
欧美色综合网
|
欧美精品一区二区三区四区
|
日韩欧美中文
|
日韩激情久久
|
成人免费毛片果冻
|
日韩成人免费视频
|
成人性生活免费视频
|
久久精品福利视频
|
精品热久久
|