基于STC89C51单片机的智能超声波避障小车讲解.docx

上传人:b****3 文档编号:26819288 上传时间:2023-06-23 格式:DOCX 页数:20 大小:309.68KB
下载 相关 举报
基于STC89C51单片机的智能超声波避障小车讲解.docx_第1页
第1页 / 共20页
基于STC89C51单片机的智能超声波避障小车讲解.docx_第2页
第2页 / 共20页
基于STC89C51单片机的智能超声波避障小车讲解.docx_第3页
第3页 / 共20页
基于STC89C51单片机的智能超声波避障小车讲解.docx_第4页
第4页 / 共20页
基于STC89C51单片机的智能超声波避障小车讲解.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于STC89C51单片机的智能超声波避障小车讲解.docx

《基于STC89C51单片机的智能超声波避障小车讲解.docx》由会员分享,可在线阅读,更多相关《基于STC89C51单片机的智能超声波避障小车讲解.docx(20页珍藏版)》请在冰豆网上搜索。

基于STC89C51单片机的智能超声波避障小车讲解.docx

基于STC89C51单片机的智能超声波避障小车讲解

基于STC89C52单片机的智能超声波避障小车

参赛人员:

周志强王俊朱纪伟聂孟杰

班级:

2012级自动化3班

日期:

2015年3月

、方案概述

本小车使用一台AT89C52单片机作为主控芯片,它通过超声波测距来获取小车距离障碍物的距离,并且用液晶显示器实时的显示出来,在小车与障碍物的距离小于安全距离(40cm)时,小车上蜂鸣器会发出警报声,并且后退并拐弯,同时通过LCD1602显示器显示出小车与障碍物之间的距离,精确到0.1cm.在避开障碍物后,小车会沿直线前进。

本系统设计的简易智能小车分为几个模块:

单片机控制系统、LCD1602显示器.超声波路面检测系统、前进、转弯控制电机以及方向指示灯系统。

它们之间的相互关系如下图所示。

显示与报警装置

智能小车简要原理框架图

二、总体电路原理

I

R15

475

■7

L-

VCC

VCC

W3K

W21031:

VCC

7

£

P3.4

1,

XIN3了

OV33

VCC4

0V45

oT~INIIN2

VCC:

CM

INS

IN7

10SK

XIN46

P3.57

IN4

02

LSG24

W1

1031:

11GNDioo\n

14P>3

13XDC

12CAT!

VCC

INSOS

VCC

传感器模块

电源指示

Fl

L

VCC

12

34

56

78

GND

VCC

GND

¥CC

GND

VCC

GND

J17

电規开尺

KS1

C2

220uF

1^—\\~|hGND

Cl|+1i

A70iiF

GND

gS©

电源供电系统

 

 

 

P32

1K

1K

R12

P33L1

1K

VCC

R1J4=1K

P34I5K

L4

传感器指示灯

超声波模块接口

mJLC

35

0TL-4

3

OTU

6

PL

5

pl.

R1

7pl

14

10

vcczz需总

Ml

1K

0TU1

5

0TU2

GND«||

4

iT

6

Pl.3

7

7.2V

8

册0UT1GNDGND0UT2Evcc

3D

9

L2

电机驱动模块

 

Tv

—5%

R9

、:

.

R310K.

Th

R>w肥6VTO

h>5

WRST

srcii

u

lT

l2U

10

qg

12;KRdICk

|R6

75K

RHIK

X»Nl

fl®

R中2侬

lOnF

C9

T宏F

2K

4

'-*'1VT

<

6

HI2

7SK

w

22

2OLT

InF

PSP

n

loa.

i1

<3

iuvn

II

K)

12

15

nxra

IOL7

4OLT

nv

-IV

vcc

2、

4fV-

GN>

3Z

3OLT

R13

IUK

14

3

CI+

VCV

CI-

\S*

C2*

vs«

C2-

TlCtrr

71TS

12N

T2

RIOJT

Rir*

R2V1-T

R2N

CiM)

10Un

R19

CH

发ih

2\T

hi-r1j

10

160

S6K

士接收

 

 

超声波模块

三、主要模块基本原理

(1)超声波模块

」U

10uS的TTL

发信号

i■坏发岀8个40KHZ脉冲

值号

楔块内郎发出信号

回QR电平無出与怯测距SB成比例

超声波时序图

以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。

一旦检测到回波信号则输出回响信号。

回响信号的脉冲宽度与所测的距离成正比。

由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。

公式:

距离二高电平时间*声速(340M/S)/2。

(2)液晶显示模块

LCD1602

如上图所示,整个液晶屏采用标准的16脚接口,其中GND为电源地,VCC接5V正电源,VEE为液晶显示屏对比度调整端,通过一个可调电阻接地,可调电阻调到最大时对比度最弱,可调电阻调到零时对比度最高。

RS为寄存器选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

E端为使能端,当E端由低电平跳变成高电平时,液晶屏执行命令。

DBO―DB7为8位双向数据线。

四、流程图及源代码

主函数流程图

源程序

#include

#include

include,,LCD1602display.hn

#deflneTXP2_l

#defineRXP2_0

sbitDU=P2A6;

sbitWE=P2A7;

#deflneFonvard_L_DATA180//当前进不能走直线的时候,请调节这两个参数,理想的时候是100,100,最大256,最小0。

0的时候最慢,256的时候最快

#defineFonvard_R_DATA180〃例如小车前进的时候有点向左拐,说明右边马达转速过快,那可以取一个值大一点,另外一个值小一点,例如200190

〃直流电机因为制造上的误差,同一个脉宽下也不一定速度一致的,需要自己手动调节

//sbitP4_0=0xc0;//P4口地址

/*****按照原图接线定义******/

sbitL293D_IN1=P1A2;

sbitL293D_IN2=P1A3;

sbitL293D_IN3=P1A6;

sbitL293D_IN4=P1A7;

sbitL293D_EN1=P1A4;

sbitL293D_EN2=P1人5;

sbitBUZZ=P2A3;〃蜂鸣器

voidcmg88()//关数码管,点阵函数

{

DU=1;

P0=0X00;

DU=0;

}

voidDelay400Ms(void);//延时400毫秒函数

unsignedchaicodeRange[]='-=RangeFindei==u;//LCD1602显示格式

unsignedchaicodeASCH[13]=“0123456789.-M”;

unsignedchaicodetable[]=,'Distance:

000.0cm,';

unsignedchaicodetablel[]="!

!

!

Outofrange";

unsignedchaidisbuff[4]={0,0,0,0};//用于分别存放距离的值0.1mm、mm、cm和m的值

voidCount(void);//距离计算函数

unsignedmttime=0;//用于存放定时器时间值

unsignedlongS=0;//用于存放距离的值

bitflag=0;〃量程溢出标志位

bittuin_nght_flag;

〃—================================

voidFonvard(unsignedchaiSpeed_Right,unsignedcharSpeed_Left)//前进

{

L293D_IN1=O;

L293D_IN2=1;

L293D_IN3=1;

L293D_IN4=0;

}

voidStop(void)〃杀!

|车

L293D_IN1=O;

L293D_IN2=0;

L293D_IN3=0;

L293D_IN4=0;

}_

voidTurn_Right(unsignedcharSpeed_Right,unsignedchaiSpeed_Left)//后退左转

{

L293D_IN1=1;

L293D_IN2=0;

L293D_IN3=1;

L293D_IN4=0;

Delay(lOO);

L293D_IN1=1;

L293D_IN2=0;

L293D_IN3=1;

L293D_IN4=0;

}

voidConut(void)

r

tmie=THl*256+TLl;

TH1=O;

TL1=O;

〃此时time的时间单位决定于晶振的速度,外接晶振为11.0592MHZ时,

//time的值为0.54us*time,单位为微秒

〃那么lus声波能走多远的距离呢?

ls=1000ms=1000000i】s

//340/1000000=0.00034米

//0.00034米/1000=0.34毫米也就是lus能走0.34毫米

〃但是,我们现在计算的是从超声波发射到反射接收的双路程,〃所以我们将计算的结果除以2才是实际的路程

S=tune*2y/先算出一共的时间是多少微秒。

S=S*0.17;〃此时计算到的结果为毫米,并且是精确到毫米的后两位了,有两个小数点

if(S<=300)//

if(tuni_nght_flag!

=1)

{

StopO;

Delaylms(5);//发现小车自动复位的时候,可以稍微延长一点这个延时,减少电机反向电压对电路板的冲击。

}

tuni_nght_flag=1;

P2_3=0;

Delaylms(50);

P2_3=l;

Tuin_Right(120,120);〃小于设定距离时电机后退转弯

}

else

{

nnn_nght_flag=O;

Fonvaid(Fonvard_R_DATA,Fowaid_L_DATA);〃前进(大于

20-30CM前进)

}

//====================if((S>=5OOO)||flag==l)//超出测量范围

{

flag=0;

DisplayListCliar(O,1,tablet);

}

else

{

disbuff[0]=S%10;

disbuff[l]=S/10%10;

disbuff[2]=S/100%10;

disbuff[3]=S/lOOO;

DisplayListCliar(O,1,table);

DisplayOneChar(9,1,ASCII[disbuff[3]]);

DisplayOneChar(10,1,ASCII[disbuff[2]]);

DisplayOneChar(l1,1,ASCII[disbuff[l]]);

DisplavOneChar(12,1,ASCII[10]);

DisplayOneChar(13,1,ASCII[disbuff[O]]);

}

}

*******************************************************/

voidzdOQlnteriupt3//TO中断用來计数器溢出,超过测距范围

flag=l;

RX=O;

}

//中断溢出标志

/********超声波高电平脉冲宽度计算程序***************/

voidTunei_Count(void)

TR1=1;

while(RX);

〃开启计数

〃当RX为1计数并等待

TR1=O;

ConutQ;

〃关闭计数

〃计算

}

******************************************************

voidStailModuleQ〃启动模块

{

TX=1;〃启动一次模块

Delay10us

(2);

TX=0;

}

y*******************************************************voidmam(void)

{

unsignedchaii;

unsignedinta;

cmg88()^/关数码管

Delaylms(400);〃启动等待,等LCM讲入工作状态LCMIiiitO;//LCM初始化

Delaylms(5);〃延时片刻

DisplavListChar(O,0,Range);

DisplayListChar(O,1,table);

TMOD=TMOD|OxlO;//设TO为方式1,GATE=1;

EA=1;〃开启总中断

TH1=O;

TL1=O;

ET1=1;〃允许TO中断

//==—======—=============//PWM_mi();

//==—======—=============

tum_nght_flag=0;

B:

foi(i=0;i<50;i++)〃判断K3是否按下

{

Delaylms(l);//lms内判断50次,如果其中有一次被判断到K3没按下,便重新检测

if(P3_6!

=0)〃当K3按下时,启动小车

gotoB;〃跳转到标号B,重新检测

}

//蜂鸣器响一声

BUZZ=0;〃50次检测K3确认是按下之后,蜂鸣器发出“滴”声响,然后启动小车。

Delaylms(50);

BUZZ=1;//响50ms后关闭蜂鸣器

while(l)

{

RX=1;

StartModuleQ;〃启动模块

for(a=951;a>0;a-)

if(RX=l)

{

Timer_Count();〃超声波高电平脉冲宽度计算函数

}

}

}

结束语:

本系统有STC89C52单片机,超声波模块,LCD1602显示器,报警系统等组成。

STC89C52控制电机的转动和报警系统的动作。

智能小

LCD1602显示智能型小车到障碍物之间的距离便于人査看。

车能够实现自动避障,自动报警,实时监控障碍距离的功能

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1