欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機超聲波避障智能小車源程序
[打印本頁]
作者:
liuchun512
時間:
2018-4-22 09:27
標題:
51單片機超聲波避障智能小車源程序
無聊的時候寫的小車超聲波避障程序
串口接線方式.jpg
(76.61 KB, 下載次數: 58)
下載附件
2018-4-22 15:52 上傳
單片機源程序如下:
/***********************************************************************************************************/
//HC-SR04 超聲波測距模塊 DEMO 程序
//晶振:11。0592
//程序 QQ: 517535000
//接線:模塊TRIG接 P1.2 ECH0 接P1.1
//串口波特率9600
/***********************************************************************************************************/
#include <AT89X51.H>
#include <intrins.h>
#include <STDIO.H>
#define uchar unsigned char
#define uint unsigned int
#define RX P1_5
#define TX P1_6
sbit IN1=P2^4 ;
sbit IN2=P2^3;
sbit IN3=P2^2;
sbit IN4=P2^1;
unsigned int time=0;
unsigned int timer=0;
float S=0;
bit flag =0;
void qian()//前進
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void hou()//后退
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
void stop()//停止
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void you()//右轉
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
/********************************************************/
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/********************************************************/
void zd0() interrupt 1 //T0中斷用來計數器溢出,超過測距范圍
{
flag=1; //中斷溢出標志
}
/********************************************************/
void StartModule() //T1中斷用來掃描數碼管和計800MS啟動模塊
{
TX=1; //800MS 啟動一次模塊
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出來是CM
if(flag==1) //超出測量
{
flag=0;
}
}
/********************************************************/
void main(void)
{
TMOD=0x21; //設T0為方式1,GATE=1;
SCON=0x50;
TH0=0;
TL0=0;
TR0=1;
ET0=1; //允許T0中斷
TR1=1; //開啟定時器
TI=1;
SCON|=0X50; //設置為工作方式1
TMOD|=0X20; //設置計數器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數器初始值設置,注意波特率是4800的
TL1=0XF3;
ES=1; //打開接收中斷
EA=1; //開啟總中斷
// delayms(2000);
while(1)
{
StartModule();
while(!RX); //當RX為零時等待
TR0=1; //開啟計數
while(RX); //當RX為1計數并等待
TR0=0; //關閉計數
Conut(); //計算
/* printf("%f\r\n",S); //輸出一次數據
if(S<10)
IN1=0;
else IN1=1; */
if(S<30)
{
delayms(2);
if(S<30)
{
stop();
delayms(4);
hou();
delayms(30);
B:you();
delayms(20);
stop();
StartModule();
while(!RX); //當RX為零時等待
TR0=1; //開啟計數
while(RX); //當RX為1計數并等待
TR0=0; //關閉計數
Conut(); //計算
if(S>40)
{
you();
delayms(8);
stop();
delayms(4);
qian();
}
else
{
goto B;
}
}
else
{
qian();
}
}
else
{
qian();
}
delayms(10);
}
}
復制代碼
所有資料51hei提供下載:
超聲波避障.rar
(84.88 KB, 下載次數: 87)
2018-4-22 09:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
xuwei517
時間:
2018-5-3 22:58
謝謝 這是好東西啊
作者:
leezll
時間:
2019-10-23 02:20
發現刷寫后沒有反應!。。!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1