基于STC89C51单片机的智能超声波避障小车 - 图文

更新时间:2023-12-04 13:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于STC89C52单片机的智

能超声波避障小车

参赛人员:周志强 王俊 朱纪伟 聂孟杰

班 级:2012级自动化3班

日 期:2015年3月

一、方案概述

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

本系统设计的简易智能小车分为几个模块:单片机控制系统、LCD1602显示器.超声波路面检测系统、前进、 转弯控制电机以及方向指示灯系统。它们之间的相互关系如下图所示。

超声波测距 控制 数据 单片机 控制 电机 控制显示与报警装置

智能小车简要原理框架图

二﹑总体电路原理图

超声波模块

三、主要模块基本原理

(1)超声波模块

超声波时序图

flag=1; //中断溢出标志 RX=0; }

/********超声波高电平脉冲宽度计算程序***************/ void Timer_Count(void) { TR1=1; //开启计数 while(RX); //当RX为1计数并等待 TR1=0; //关闭计数 Conut(); //计算 }

/********************************************************/ void StartModule() //启动模块 {

TX=1; //启动一次模块 Delay10us(2); TX=0; }

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

/*************主程序********************/ void main(void) {

unsigned char i; unsigned int a;

cmg88();//关数码管

Delay1ms(400); //启动等待,等LCM讲入工作状态 LCMInit(); //LCM初始化 Delay1ms(5);//延时片刻

DisplayListChar(0, 0, Range); DisplayListChar(0, 1, table);

TMOD=TMOD|0x10;//设T0为方式1,GATE=1; EA=1; //开启总中断 TH1=0;

TL1=0;

ET1=1; //允许T0中断

//=============================== //PWM_ini();

//=============================== turn_right_flag=0;

//================================= B: for(i=0;i<50;i++) //判断K3是否按下 { Delay1ms(1);//1ms内判断50次,如果其中有一次被判断到K3没按下,便重新检测 if(P3_6!=0 )//当K3按下时,启动小车 goto B; //跳转到标号B,重新检测 }

//蜂鸣器响一声

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

Delay1ms(50);

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

//======================================================================================================================= while(1) { RX=1;

StartModule(); //启动模块 for(a=951;a>0;a--) {

if(RX==1) {

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

结束语:本系统有STC89C52单片机,超声波模块,LCD1602显示器,报警系统等组成。STC89C52控制电机的转动和报警系统的动作。

LCD1602显示智能型小车到障碍物之间的距离便于人查看。智能小车能够实现自动避障,自动报警,实时监控障碍距离的功能。

本文来源:https://www.bwwdw.com/article/m7wt.html

Top