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

上传人:doc321 文档编号:13542288 上传时间:2022-01-15 格式:DOC 页数:13 大小:288.50KB
返回 下载 相关 举报
基于STC89C51单片机的智能超声波避障小车.doc_第1页
第1页 / 共13页
基于STC89C51单片机的智能超声波避障小车.doc_第2页
第2页 / 共13页
基于STC89C51单片机的智能超声波避障小车.doc_第3页
第3页 / 共13页
基于STC89C51单片机的智能超声波避障小车.doc_第4页
第4页 / 共13页
基于STC89C51单片机的智能超声波避障小车.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《基于STC89C51单片机的智能超声波避障小车.doc》由会员分享,可在线阅读,更多相关《基于STC89C51单片机的智能超声波避障小车.doc(13页珍藏版)》请在三一文库上搜索。

1、基于STC89C52单片机的智能超声波避障小车参赛人员:周志强 王俊 朱纪伟 聂孟杰班 级:2012级自动化3班日 期:2015年3月一、方案概述本小车使用一台 AT89C52 单片机作为主控芯片,它通过超声波测距来获取小车距离障碍物的距离,并且用液晶显示器实时的显示出来,在小车与障碍物的距离小于安全距离(40cm) 时,小车上蜂鸣器会发出警报声,并且后退并拐弯,同时通过LCD1602显示器显示出小车与障碍物之间的距离,精确到0.1cm. 在避开障碍物后,小车会沿直线前进。本系统设计的简易智能小车分为几个模块:单片机控制系统、LCD1602显示器.超声波路面检测系统、前进、 转弯控制电机以及方

2、向指示灯系统。它们之间的相互关系如下图所示。超声波测距 电机 单片机 控制显示与报警装置 控制控制 数据 智能小车简要原理框架图二总体电路原理图超声波模块3、 主要模块基本原理(1)超声波模块超声波时序图以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:距离=高电平时间*声速(340M/S)/2。(2) 液晶显示模块如上图所示,整个液晶屏采用标准的16 脚接口,其中GND 为电源地,VCC 接5V正电源,

3、VEE 为液晶显示屏对比度调整端,通过一个可调电阻接地,可调电阻调到最大时对比度最弱,可调电阻调到零时对比度最高。RS 为寄存器选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和RW 共同为低电平时可以写入指令或者显示地址,当RS 为低电平RW 为高电平时可以读忙信号,当RS 为高电平RW为低电平时可以写入数据。E 端为使能端,当E 端由低电平跳变成高电平时,液晶屏执行命令。DB0DB7 为8 位双向数据线。四、流程图及源代码主函数流程图测距并减速直走开始是否有障碍物N后退右转一定时间是否有障碍物后退左转一定时间 YN

4、 Y源程序#include #include #include LCD1602display.h#define TX P2_1#define RX P2_0sbit DU = P26;sbit WE = P27;#define Forward_L_DATA 180/当前进不能走直线的时候,请调节这两个参数,理想的时候是100,100,最大256,最小0。0的时候最慢,256的时候最快#define Forward_R_DATA 180/例如小车前进的时候有点向左拐,说明右边马达转速过快,那可以取一个值大一点,另外一个值小一点,例如 200 190 /直流电机因为制造上的误差,同一个脉宽下也不一

5、定速度一致的,需要自己手动调节/sbit P4_0=0xc0;/P4口地址/*按照原图接线定义*/sbit L293D_IN1=P12; sbit L293D_IN2=P13;sbit L293D_IN3=P16;sbit L293D_IN4=P17;sbit L293D_EN1=P14;sbit L293D_EN2=P15;sbit BUZZ=P23;/蜂鸣器void cmg88()/关数码管,点阵函数DU=1; P0=0X00;DU=0;void Delay400Ms(void);/延时400毫秒函数unsigned char code Range =Range Finder=;/LCD1

6、602显示格式unsigned char code ASCII13 = 0123456789.-M;unsigned char code table=Distance:000.0cm;unsigned char code table1=! Out of range;unsigned char disbuff4=0,0,0,0;/用于分别存放距离的值0.1mm、mm、cm和m的值void Count(void);/距离计算函数 unsigned int time=0;/用于存放定时器时间值unsigned long S=0;/用于存放距离的值bit flag =0; /量程溢出标志位bit tu

7、rn_right_flag;/=void Forward(unsigned char Speed_Right,unsigned char Speed_Left)/ 前进 L293D_IN1=0; L293D_IN2=1; L293D_IN3=1; L293D_IN4=0;void Stop(void)/刹车 L293D_IN1=0; L293D_IN2=0; L293D_IN3=0; L293D_IN4=0;void Turn_Right(unsigned char Speed_Right,unsigned char Speed_Left) /后退左转 L293D_IN1=1; L293D_I

8、N2=0;L293D_IN3=1;L293D_IN4=0; Delay(100); L293D_IN1=1; L293D_IN2=0;L293D_IN3=1;L293D_IN4=0;/=/*距离计算程序*/ void Conut(void) time=TH1*256+TL1; TH1=0; TL1=0; /此时time的时间单位决定于晶振的速度,外接晶振为11.0592MHZ时, /time的值为0.54us*time,单位为微秒/那么1us声波能走多远的距离呢?1s=1000ms=1000000us / 340/1000000=0.00034米/0.00034米/1000=0.34毫米 也就

9、是1us能走0.34毫米/但是,我们现在计算的是从超声波发射到反射接收的双路程,/所以我们将计算的结果除以2才是实际的路程S=time*2;/先算出一共的时间是多少微秒。 S=S*0.17;/此时计算到的结果为毫米,并且是精确到毫米的后两位了,有两个小数点 if(S=5000)|flag=1) /超出测量范围 flag=0; DisplayListChar(0, 1, table1); else disbuff0=S%10; disbuff1=S/10%10; disbuff2=S/100%10; disbuff3=S/1000; DisplayListChar(0, 1, table); D

10、isplayOneChar(9, 1, ASCIIdisbuff3); DisplayOneChar(10, 1, ASCIIdisbuff2); DisplayOneChar(11, 1, ASCIIdisbuff1); DisplayOneChar(12, 1, ASCII10); DisplayOneChar(13, 1, ASCIIdisbuff0); /*/ void zd0() interrupt 3 /T0中断用来计数器溢出,超过测距范围 flag=1; /中断溢出标志RX=0; /*超声波高电平脉冲宽度计算程序*/void Timer_Count(void) TR1=1; /开

11、启计数 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,

12、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;i0;a-) if(RX=1) Timer_Count(); /超声波高电平脉冲宽度计算函数 结束语:本系统有STC89C52单片机,超声波模块,LCD1602显示器,报警系统等组成。STC89C52控制电机的转动和报警系统的动作。LCD1602显示智能型小车到障碍物之间的距离便于人查看。智能小车能够实现自动避障,自动报警,实时监控障碍距离的功能。

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1