汽车安全距离检测系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业:汽车安全距离检测系统
车姓名
学院:电子信息工程学院 专业:自动化 114 班 学号:111404010422 姓名:王超帅
1
汽车安全距离检测系统
河南科技大学电子信息工程学院自动化 114 班 学号:11404010422 姓名:王超帅
随着汽车工业的发展,城市汽车数量迅速增加。尤其是近几年来, 我国开始进入私家车时代,汽车的数量更是逐年增加,造成公路、街 道、停车场、车库等越来越拥挤。汽车驾驶员越来越担心车的安全了, 其中倒车就是一个典型问题。由于存在视觉盲区,无法看见车后的障 碍物,司机在倒车时很容易刮伤汽车,甚至发生事故。为了减少因此 带来的损失,需要有一种专门的辅助装置帮助司机安全倒车。本文设 计分析的基于超声波测距的汽车倒车雷达系统即是根据这一实际情 况而应运而生的,具有较高的性价比。 关键词:超声波传感器;超声测距;51 单片机 ;
LCD1
D7
LM 016L
1 2 3
V SS V DD V EE
RS RW
E
4 5 6
RS RW E
D0 D1 D2 D3 D4 D5 D6 D7
7 8 9 10 11 12 13 14
D0 D1 D2 D3 D4 D5 D6 D7
R1
P 10
10k
Q1
PNP
BUZ1
B UZZE R
7
附程序:
/********************************************* *功能说明:超声波测距;有效范围 3--300cm *作者: 河南科技大学电子信息工程学院自动化 114 班 王超帅 *时间: 2012 年 5 月 16 日 *版本: 2.1 *qq : 2667808535(相互学习,多多交流) *注: **********************************************/ #include"reg52.h" #include"stdio.h" #include"1602.h" #include"warning.h"
8
a=th*256+tl; b=a*17/1000; write_com(0x01); sprintf(table_2,"%g",b); write_string(0,3,table_2);
write_dat('C'); write_dat('M'); TH1=0; TL1=0; if(b>=200) { led_mode(1);// } else {
extern extern extern extern extern extern
void init_1602(); void write_1602(unsigned char hang,unsigned char lie,unsigned char dat); void write_com(unsigned com); void write_dat(unsigned dat); void delay(unsigned int t); void write_string( char hang,char lie, char *p);
void write_1602(uchar hang,uchar lie,uchar dat) {
if(hang==0) {
write_com(0x80+lie); } else {
write_com(0x80+0x40+lie); }
write_dat(dat); }
void write_string(char hang,char lie,char *p) {
if(b>=100) { led_mode(2); } if(b<=50) {
led_mode(2); bell(); } } } /******************************/ /***********中断函数 **********/ void ceju() interrupt 0 { uint timeout; EX0=0;// 关闭中断; delay(100); en=1; delay_ns(20);// 启动超声波测距模块 en=0; while(tr==0); TR1=1;//启动定时器 1;
P 0.0/A D0 39 P 0.1/A D1 38 P 0.2/A D2 37 P 0.3/A D3 36 P 0.4/A D4 35 P 0.5/A D5 34 P 0.6/A D6 33 P 0.7/A D7 32
P 2.0/A 8 21 P 2.1/A 9 22 P 2.2/A 10 23 P 2.3/A 11 24 P 2.4/A 12 25 P 2.5/A 13 26 P 2.6/A 14 27 P 2.7/A 15 28
*************/
en=1; delay_ns(20); en=0; /************************************************/ EX0=1;// 打开外部中断 0 EA=1; //打开总中断
TMOD=0X10;// TH1=0; TL1=0; while(1); }
for(timeout=0;tr==1&&timeout<65530;timeout++); if(timeout>780) { //超出测量范围后采取的措施
9
write_com(0x01); write_string(1,2,"warning"); TR1=0; TH1=0; TL1=0; } else { TR1=0; d_time(); }
Q1
PNP
BUZ1
B UZ Z ER
原理图:
U1
19 X TA L1 18 X TA L2
9 RST
29 PSEN 30 ALE 31 EA
P 10
1 P 1.0
2 P 1.1
3 P 1.2
4 P 1.3
5 P 1.4
6 P 1.5
7 P 1.6
8 P 1.7
A T89C51
RP1
RESPACK-8
/*************延时函数****************/ void delay_ns(int t) { int i; for(i=0;i<t;i++);
} /*************处理时间函数*************/ void d_time() {
float a; float b; th=TH1; tl=TL1;
sbit E=P2^5;
sbit RS=P2^7;
sbit RW=P2^6;
/*******************************管脚说明**************************************
* E= P2^7 使能
*
* E= P2^5 使能
*
* RS=P2^5 数据命令
P3.0/RXD
10
P 3.1/TX D 11
P 3.2/INT0 12
P 3.3/INT1 13
P 3.4/T0 14
P 3.5/T1 15
P 3.6/WR 16
P 3.7/RD 17
E RW RS
J1
1 2 3 4
52207-0485
1 2 3 4 5 6 7 8 9
D0
D1
D2
D3
D4
D5
D6
#define uchar unsigned char
#define uint unsigned int
#define uint_l unsigned long int
#define safe
200 /*安全距离*/
#define warning 100 /* 警告距离*/
#define danger
if(hang==0) { write_com(0x80+lie); }
12
else {
write_com(0x80+0x40+lie); } while(*p!='\0') {
write_dat(*p); p++; }
}
1602.H
#ifndef __1602_h__ #define __1602_h__
50 /*危险距离*/
/*****************************/
sbit tr=P3^3; //信号 sbit en=P3^2; //使能超声波 char table_time[6]; char table_2[20]; unsigned int th,tl; //int sum;
超声波传感器模块
1 超声波测距原理
超声波发生器内部有两个压电晶片和一个共振板,当两极外加脉冲信号的频率等于压电 晶片的固有振荡频率时,压电晶片将发生共振,并带动共振板振动,从而产生超声波;同理, 当共振板接收到超声波时,将压迫压电晶片产生振动,将机械能转换为电信号。
测距原理如图 1 所示。
被测距离。式中:s 为超声波传播距离;h 为发射探头与接收探头之间的距离。
2
由于 s 远大于 h,因此可近似认为 d=s,则 d=s=ct/2,t 为发射超声波与接收超声波的 时间间隔,c 为超声波在空气中的传播速度。
在空气中,常温下超声波的传播速度是 334m/s,但其传播速度 c 易受空气中温度的影 响,声速与温度关系如表 1 所示,由此可修正超声波传播速度
(注:目前没有做温度修正)
1602 模块
3
4
读操作时序: 写操作时序:
5
蜂鸣器模块
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因 此需要一定的电流才能驱动它,单片机 IO 引脚输出的电流较小,单片机输出的 TTL 电平基 本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路
6
R1
P 1^0 10k
#endif
delay(500);
EX0=1; // 打开中断; } void main() {
init_1602(); delay(300); write_string(0,5,"HKD_WCS"); write_string(1,3,"111404010422"); delay(6550); /*********** 启动超声波测距模块
*
* RS=P2^7 数据命令
*
* RW=P2^6 读写选择
*
* RW=P2^6 读写选择
*
* 数据接口 P0;
*
*
*
*
开发板
*
* 自制板
*
*****************************************************************************/
/******************************延时函数**************************************/ void delay(uint t) {
ห้องสมุดไป่ตู้int i,j;
for(i=0;i<t;i++) { for(j=0;j<110;j++);
}
}
void write_com(uchar com) {
E=0;// RS=0; RW=0;
P0=com; delay(1); E=1; delay(2); E=0; }
11
void write_dat(uchar dat) { E=0;// RS=1; RW=0;
初始化定时器
1602.C
/*功能说明:1602 显示*/ #include"reg52.h" #include"1602.h"
#define uchar unsigned char
10
#define uint unsigned int /* sbit E=P2^7; sbit RS=P2^5; sbit RW=P2^6; */
2.超声波测距模块物理参数
1.使用电压:DC5V 2.静态电流:小于 2mA 3.电平输出:高 5V 4.电平输出:低 0V 5.感应角度:不大于 15 度 6.探测距离:2cm-350cm 7.高精度:可达 3mm 3. 一个控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有 输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值 ,此时就为此次测距的 时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了 4. 操作时序图:
P0=dat; delay(1); E=1; delay(2); E=0;
}
void init_1602() { write_com(0x38); //设置模式 write_com(0x08); write_com(0x01); write_com(0x06); //数据指针加一;整屏不移动 write_com(0x0c); //显示光标.但不闪烁 }
相关文档
最新文档