久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
超聲波避障(51單片機程序)
[打印本頁]
作者:
小小斑鳩
時間:
2018-8-23 13:34
標題:
超聲波避障(51單片機程序)
超聲波避障程序,使用51單片機芯片
單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define MOTOR_C P2 //P1口作為電機的控制口。
#define BACK 0xfa //后退,0b1111 1010
#define FORWARD 0xf5 //前進,0b1111 0101
#define Sum 100 //總周期,為100倍的定時器時間大約27ms
#define tim 200 //初值數 200約270us
uint distance;
sbit Trig=P2^6;
sbit Echo=P2^7;
sbit PWM_L=P2^0; //左電機前進
sbit PWM_R=P2^2; //右電機前進
sbit PWM_HL=P2^1; //左電機后退
sbit PWM_HR=P2^3; //右電機后退
void timer0_init(void); //定時器0初始化函數。
void timer1_init(void); //定時器1初始化函數。
void right(void); //前進右轉彎函數。
void left(void); //前進左轉彎函數。
void forward(void); //前進函數。
void hright(void); //后退右轉函數。
void hleft(void); //后退左轉函數。
void back(void); //后退函數。
void stop(void); //停止
void backright(void); //右后倒車
void Delayms(); //延時1ms
void Delay100ms(unsigned int d);//延時100ms??
void bizhang(); //避障;
uchar percent_l=0; //(前進)左輪占空比。
uchar percent_r=0; //(前進)右輪占空比。
uchar percent_hl=0; //(后退)左輪占空比。
uchar percent_hr=0; //(后退)右輪占空比。
uchar run_time=0; //車輪運行一步的時間。??
int shu,i;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay_us()
{
uchar t;
for(t=0;t<10001;t++)
{
if(Echo==1)
shu=t;
else
break;
}
}
void turn_on()
{
Trig=Echo=0;
delay(1);
Trig=1;
delay(1);
Trig=0;
while(Echo!=1);
delay_us();
}
void bizhang()
{
timer0_init();
timer1_init();
MOTOR_C=0x00;
if(0<distance&&distance<20)
{
// timer0_init();
// timer1_init();
// MOTOR_C=0x00;
backright();
// Delay100ms(10);
}
else
{
// timer0_init();
// timer1_init();
// MOTOR_C=0x00;
forward();
// Delay100ms(10);
}
}
void main()
{
while(1)
{
turn_on();
distance=shu*0.45/2.0;
delay(5);
for(i=0;i<2;i++)
{
bizhang();
delay(20);
}
}
}
void timer0_init(void)
{
TMOD=0X11;
TH0=(65536-tim)/256;
TL0=(65536-tim)%256;
EA=1; //開總中斷。
ET0=1; //開定時器0中斷。
TR0=1; //啟動定時器0。
}
void timer1_init(void)
{
TH1=(65536-tim)/256;
TL1=(65536-tim)%256;
ET1=1;
TR1=1;
}
/**************前進方向****/
void right(void)
{
percent_l=50; //左輪速度快,最好去50以上
percent_r=0; //右輪速度慢。
percent_hl=0;
percent_hr=0;
}
void left(void)
{
percent_l=0; //左輪速度慢。
percent_r=50; //右輪速度快。
percent_hl=0;
percent_hr=0;
}
void back(void)
{
percent_l=50;//左輪同速度。
percent_r=50;//右輪同速度。
percent_hl=0;
percent_hr=0;
}
/************后退方向*************///void?hright(void?)?//{?
//?percent_hr?=?90;?//?percent_hl?=?0;?//?percent_r?=?0;?//?percent_l?=?0;?//}?//?
//void?hleft(?void?)?//{?
//?percent_hr?=?0;?//?percent_hl?=?90;?//?percent_r?=?0;?//?percent_l?=?0;?//}??
void forward(void)
{
percent_hl=50;
percent_hr=50;
percent_l=0;
percent_r=0;
}
void stop(void)
{
percent_l=0; //左輪零速度。
percent_r=0; //右輪零速度。
percent_hl=0;
percent_hr=0;
}
void backright(void)
{
percent_hl=0;
percent_hr=0;
percent_l=50;
percent_r=0;
}
/**************中斷服務*******************/
void timer_0 (void) interrupt 1 using 1
{
static uchar temp=0; //中斷次數計數
TR0=0;
if(temp<Sum)
{ //關總中斷,屏蔽其他中斷。
if(temp<percent_l)
{
PWM_L=1; //左電機高電平。
}
else
{
PWM_L=0; //左電機低電平。
}
if(temp<percent_r)
{
PWM_R=1; //右電機高電平。
}
else
{
PWM_R=0; //右電機低電平。
}
}
else
{
temp=0;
}
temp++;
TH0=(65536-tim)/256;
TL0=(65536-tim)%256; //實現計數。
TR0=1; //開總中斷。
}
void timer1(void) interrupt 3 using 2
{
static uchar temp1=0;
TR1=0; //關總中斷,屏蔽其他中斷。
if(temp1<Sum)
{
if(temp1<percent_hl)
{
PWM_HL=1; //左電機高電平。
}
else
{
PWM_HL=0; //左電機低電平。
}
if(temp1<percent_hr)
{
PWM_HR=1; //右電機高電平。
}
else
{
PWM_HR=0; //右電機低電平。
}
}
else
{
temp1=0;
}
temp1++;
TH1=(65536-tim)/256;
TL1=(65536-tim)%256; //實現計數。
TR1=1; //開總中斷。
}
/*void?Delayms(void)????{?
????unsigned?char?a,b,c;?????for(c=1;c>0;c--)?
????????for(b=23;b>0;b--)?
????????????for(a=13;a>0;a--);?}*/
void Delay100ms(unsigned int d)
{
unsigned int a,b,c;
for(c=d;c>0;c--)
for(b=60;b>0;b--)
for(a=130;a>0;a--);
}
復制代碼
所有資料51hei提供下載:
51.zip
(28.35 KB, 下載次數: 43)
2018-8-23 13:32 上傳
點擊文件名下載附件
超聲波避障
下載積分: 黑幣 -5
作者:
陳發光
時間:
2019-5-20 19:46
首先感謝樓主的分享,小白想問一下 電機驅動模塊是用的L298N嗎?P1口與電機接線是怎樣的 ?
作者:
開心就好girl
時間:
2019-8-5 17:04
謝謝樓主的分享 想問一下距離計算中0.45是什么?
作者:
開心就好girl
時間:
2019-8-5 20:01
這個程序是直接將超聲波探頭按到開發板上的嗎 不是用線連的對吧
作者:
lhqsbz
時間:
2019-8-9 12:36
不錯,學習了
作者:
cxml
時間:
2020-10-14 18:18
我看了你的超聲波避障程序 下載了后小車不能驅動是什么原因
作者:
51hei團團
時間:
2020-10-14 21:45
cxml 發表于 2020-10-14 18:18
我看了你的超聲波避障程序 下載了后小車不能驅動是什么原因
你的電路和這個程序不配套吧
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久高清
|
久久黄视频
|
成人午夜免费视频
|
91精品国产91
|
国产精品国产a级
|
免费三级网站
|
国产精品国产成人国产三级
|
成人天堂
|
91看片
|
久久高潮
|
亚洲综合在线一区
|
国产aa
|
国产精品综合一区二区
|
欧美日韩在线一区二区
|
成人在线精品视频
|
日韩欧美二区
|
中文字幕免费在线
|
日本成人免费观看
|
国产精品日本一区二区不卡视频
|
亚洲视屏
|
一区二区不卡
|
亚洲天堂一区二区
|
av影音在线
|
99热激情
|
精品一区二区三区入口
|
久久久久久久久蜜桃
|
久久国产精品视频
|
免费一区在线
|
成人h视频在线
|
精品久久久久久中文字幕
|
请别相信他免费喜剧电影在线观看
|
亚洲精品电影
|
亚洲综合大片69999
|
99热在线观看精品
|
亚洲日本欧美日韩高观看
|
国产黄a一级
|
毛片片
|
色www精品视频在线观看
|
成人国产精品久久
|
2019天天操
|
婷婷中文在线
|