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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于89C51单片机的智能倒车雷达.docx

1、基于89C51单片机的智能倒车雷达作品研究报告基于51单片机的倒车雷达设计一、 引言倒车雷达(Parking Distance Control)是汽车泊车或者车时的安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车、倒车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷,提高驾驶的安全性。目前市场上中低档汽车上装备的倒车雷达探测距离最大一般只有1.5米左右,且报警系统只是采用简单的“滴滴”声。只有稍微高档的倒车雷达才会显示距离或简单的语音提示。考虑到实际情况,本设计从成本考虑,在实现倒车雷达的基本功能同时,综合了液晶显示(1602

2、)、光报警(发光二极管)、声音报警(蜂鸣器)和语音提示(ISD1800)。二、 系统概述系统采用超声波进行测距,软件设计中在50ms中断中发射超声波,超声波接收端连接到P3.2,当接收到返回的超声波时便会触发中断。用1602实时显示距离,当距离小于指定范围时,通过液晶显示提示信息,语音提醒及用不同灯显示不同的距离。三、 硬件设计(1)测距模块 超声波发射模块软件产生40kHz的超声波信号,通过输出引脚输入至驱动器,经驱动器驱动后推动探头产生超声波,40kHz的超声波是利用555时基电路振荡产生。超声波接收模块超声波接收器包括超声波接收探头、信号放大电路及波形变换电路三部分。超声波探头必须采用与

3、发射探头对应的型号。为减少负电源的使用,放大电路采用单电源供电,信号放大和变换采用了一片LM324通用运算放大器,前三级为放大器设计,后一级为比较器设计。测距模块时序分析(2)液晶显示模块 采用1602液晶,设置为162模式,第一行实时显示所测的距离,当出现危险情况时第二行显示提示信息。(3)语音模块美国ISD公司的一种单片820秒单段语音录放电路ISD1800,它的基本结构与ISD1110、1420完全相同,采用CMOS技术,内含振荡器,话筒前置放大,自动增益控制,防混淆滤波器,扬声器驱动及FLASH阵列。电源电压3-5V,在录放模式下,按住REC录音按键不放即录音,RECLED灯会亮起,录

4、音在松开按键时停止,放音有三种情况:1、边沿触发放音,按PE键一下即将全段语音放出,除非断电或语音结束不能停止放音;2、电平触发放音,按住PL键时即放音,松开按键即停止;3、循环放音,置循环放音开关闭合,按动PE键即开始循环放音,只能断电才能停止。四、软件设计本设计中使用了单片机的三个中断源,分别是外部中断和两个定时器中断。定时器0定时50ms,T0中断服务程序中触发超声波的发射,并且开外部中断0。当超声波传感器接收到超声波时会触发外部中断0,在此中断服务程序中读出计数器TH0和TL0中的数。此数与定时器计数初值之差再乘以机器周期即为超声波发射与接收的时间差。再通过公式计算得到探测到的距离。五

5、、 部分源代码/*1602.h*/#ifndef _LCD1602_#define _LCD1602_#include reg52.h #define uchar unsigned char#define uint unsigned int/初始化函数void LCD_init(void);/写数据函数void put_char(uchar);/写指令函数void put_command(uchar);void locate(uchar,uchar);void put_number_1(uint);void put_number(int);void put_string(uchar *);vo

6、id Delay_ms(uint);#endif/*1602.c*/#includeLCD1602.h#define clear 0x01 /清屏指令#define mode 0x38 /模式选择指令,8位2行57点阵#define open 0x07 #define movemode 0x0f #define close 0x08 /关显示指令#define cursor_reset 0x02 /光标复位指令#define LCDdata P0sbit RS=P26;sbit E=P27;/LCD初始化函数void LCD_init(void) uchar i=0; put_command(

7、0x38); /set LCD 16words x 2lines and 5 x 7 Delay_ms(5); put_command(0x38); Delay_ms(5); put_command(0x38); Delay_ms(5); put_command(0x38); Delay_ms(5); put_command(0x38); put_command(0x38); put_command(0x38); put_command(0x38); put_command(0x0e); /put_command(0x0e); put_command(0x01); /清显示 put_comma

8、nd(0x06); /光标和显示模式设置 put_command(0x02); /写命令void put_command(uchar command) RS=0; /RW=0; E=0; LCDdata=command; Delay_ms(1); /5 E=1; Delay_ms(1); /5 E=0;/写数据函数void put_char(uchar datar) E=0; RS=1; /RW=0; LCDdata=datar; E=1; Delay_ms(1); / 5 E=0;/在光标的下个位置显示字符串word的函数void put_string(uchar *string) whil

9、e(*string)!=0) put_char(*string); string+; /用三位显示数值,前面自动加空格或者负号,显示范围-99999void put_number_1(uint number) if(number999) put_string(uchar *)err); /超出范围 return; else if(number99) put_char(number/100+0x30); /百 number=number%100; else put_char(0x8c); /空格 put_char(number/10+0x30); /十 put_char(number%10+0x

10、30); /个 put_char(0x20); /用四位显示数值,前面自动加空格或者负号,显示范围-9999999void put_number(int number) if(number9999) put_string(uchar *) err); /超出范围 return; else if(number999) put_char(number/1000+0x30); /千 number=number-(number/1000)*1000; else put_char(0x8c); /空格 put_char(number/100+0x30); /百 put_char(number/10-nu

11、mber/100*10+0x30); /十 put_char(number%10+0x30); /个 /光标跳到第x(0-1)行,y(0-7)列void locate(uchar x,uchar y) if(x) y|=0x40; y|=0x80; put_command(y);void Delay_ms(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*main.c*/#include #include LCD1602.hsbit TRIG=P30;sbit ECHO=P32;sbit sb=P20;sbit led1=P21;sbit

12、 led2=P22;uint Time;uint Distance=0;void Inter_init(void); void main() led1=0; led2=0; Inter_init(); LCD_init(); /P3=0x00; while(1) put_number(Distance); locate(0,0); if(Distance250)&(Distance200)&(Distance150)&(Distance100)&(Distance=150) P1=0xef; else if(Distance=100) P1=0xf7; else P1=0xff; if(Distance100) sb=0; else sb=1; if(Distance100) led2=1; Delay_ms(50); led2=0; else if(Distance=100) led1=1; Delay_ms(50); led1=0; void Inter_init(void) TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; /开定时器0溢出中断 TR0=1; /启动定时器 /EX0=1; /开外部中断

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

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