| 查看: 1190 | 回复: 4 | |||
[求助]
Need Your Help!!!想用三个超声波做避障小车。。。 已有1人参与
|
![]() 大家好,我现在想做一个避障小车,是用89c51的,用三个超声波(左,前,右)。 请问在程序里怎么设定那些TH,TL,TR,EX等等呢。。。 能不能劳烦大家给一下三个超声波用在89c51里的程序呢? 就是驱动他们三个超声波的程序。。。 ![]() 恳请您的帮助!! |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有4人回复
基金委咋了?2026年的指南还没有出来?
已经有9人回复
基金申报
已经有5人回复
国自然申请面上模板最新2026版出了吗?
已经有17人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
Materials Today Chemistry审稿周期
已经有5人回复
溴的反应液脱色
已经有7人回复
推荐一本书
已经有12人回复
» 本主题相关价值贴推荐,对您同样有帮助:
NEED YOUR HELP
已经有3人回复
NEED YOUR HELP
已经有7人回复
NEED YOUR HELP
已经有2人回复
wake_up
木虫 (著名写手)
- 应助: 124 (高中生)
- 金币: 4001.5
- 散金: 1654
- 红花: 24
- 帖子: 1113
- 在线: 424.2小时
- 虫号: 670119
- 注册: 2008-12-08
- 性别: GG
- 专业: 医学图像数据处理与分析

2楼2015-10-24 13:36:40
|
能帮我看看这个程序吗?三个超声波都可以工作,但是测不到距离呀。。就是我把书放到它哪个距离都会停,三面很远没障碍物时它才转。谢谢您 #include <reg52.h> #include <intrins.h> sbit IN1=P1^2; sbit IN2=P1^3; sbit ENA=P1^4; sbit IN3=P1^5; sbit IN4=P1^6; sbit ENB=P1^7; sbit Trig1=P2^0; sbit Echo1=P2^1; sbit Trig2=P2^2; sbit Echo2=P2^3; sbit Trig3=P2^4; sbit Echo3=P2^5; bit flag1=0; bit flag2=0; bit flag3=0; unsigned long S1=0; unsigned long S2=0; unsigned long S3=0; unsigned int time1=0; unsigned int time2=0; unsigned int time3=0; void Forward(void) { IN1=1; IN2=0; IN3=1; IN4=0; } void Stop(void) { IN1=0; IN2=0; IN3=0; IN4=0; } void Delay10us(unsigned char i) { unsigned char j; do{ j = 10; do{ _nop_(); }while(--j); }while(--i); } void conut1(void) { time1=TH0*256+TL0; TH0=0; TL0=0; S1=time1*0.17+10; } void conut2(void) { time2=TH1*256+TL1; TH1=0; TL1=0; S2=time2*0.17+10; } void conut3(void) { time3=TH2*256+TL2; TH2=0; TL2=0; S3=time3*0.17+10; } void zd1() interrupt 1 { flag1=1; TH0=0; TL0=0; } void zd2() interrupt 2 { flag2=1; TH1=0; TL1=0; } void zd3() interrupt 3 { flag3=1; TH2=0; TL2=0; } void StartCSB2() { Trig1=1; Trig2=1; Trig3=1; Delay10us(2); Trig1=0; Trig2=0; Trig3=0; } void gudingluxian() { StartCSB2(); conut1(); conut2(); conut3(); if(S1<50||S2<50||S3<50) { Stop(); } else { Forward(); } } void Timer_Count_csb1( void) { TR0=1; while(Echo1==1); TR0=0; TR1=1; while(Echo2==1); TR1=0; TR2=1; while(Echo3==1); TR2=0; gudingluxian(); } void main(void) { unsigned int a; TMOD=TMOD|0x01; EA=1; TH0=0; TL0=0; ET0=1; TR0=1; TH1=0; TL1=0; ET1=1; TR1=1; TH2=0; TL2=0; ET2=1; TR2=1; while(1) { ENA=1; ENB=1; Echo1=1; Echo2=1; Echo3=1; StartCSB2(); for(a=951;a>0;a--) { if(Echo1==1||Echo2==1||Echo3==1) { Timer_Count_csb1(); } } } } |
3楼2015-10-24 15:57:32
4楼2015-10-24 16:26:25
5楼2015-10-24 17:52:10













回复此楼