ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:241.23KB ,
资源ID:30722500      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30722500.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于STC89C51单片机的智能化超声波避障小车.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、基于STC89C51单片机的智能化超声波避障小车基于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正电源,VEE 为液晶显示

3、屏对比度调整端,通过一个可调电阻接地,可调电阻调到最大时对比度最弱,可调电阻调到零时对比度最高。RS 为寄存器选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和RW 共同为低电平时可以写入指令或者显示地址,当RS 为低电平RW 为高电平时可以读忙信号,当RS 为高电平RW为低电平时可以写入数据。E 端为使能端,当E 端由低电平跳变成高电平时,液晶屏执行命令。DB0DB7 为8 位双向数据线。四、流程图及源代码主函数流程图 N Y N Y源程序#include #include #include LCD1602displ

4、ay.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 /直流电机因为制造上的误差,同一个脉宽下也不一定速度一致的,需要自己手动调节/sbit P4_0=0xc0; /P4口地址/*按照原

5、图接线定义*/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=;/LCD1602显示格式unsigned char code ASCII13 = 01234

6、56789.-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 turn_right_flag;/=void Forward(unsigned cha

7、r 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_IN2=0; L293D_IN3=1; L293D_IN4=0; Delay(10

8、0); 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毫米 也就是1us能走0.34毫米 /但是,我们现在计算的是从超声波发射到反射

9、接收的双路程, /所以我们将计算的结果除以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); DisplayOneChar(9, 1, ASCIIdisbuff

10、3); 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; /开启计数 while(RX); /当RX为1计数并等待 TR1=0

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

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

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