汽车安全距离检测系统
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(); }
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) {
超声波传感器模块
1 超声波测距原理
超声波发生器内部有两个压电晶片和一个共振板,当两极外加脉冲信号的频率等于压电 晶片的固有振荡频率时,压电晶片将发生共振,并带动共振板振动,从而产生超声波;同理, 当共振板接收到超声波时,将压迫压电晶片产生振动,将机械能转换为电信号。
测距原理如图 1 所示。
被测距离。式中:s 为超声波传播距离;h 为发射探头与接收探头之间的距离。
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__
#define uchar unsigned char
#define uint unsigned int
#define uint_l unsigned long int
#define safe
200 /*安全距离*/
#define warning 100 /* 警告距离*/
#define danger
*
* RS=P2^7 数据命令
*
* RW=P2^6 读写选择
*
* RW=P2^6 读写选择
*
* 数据接口 P0;
*
*
*
*
开发板
*
* 自制板
*
*****************************************************************************/
/******************************延时函数**************************************/ void delay(uint t) {
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 {
/*************延时函数****************/ void delay_ns(int t) { int i; for(i=0;i<t;i++);
} /*************处理时间函数*************/ void d_time() {
float a; float b; th=TH1; tl=TL1;
*************/
en=1; delay_ns(20); en=0; /************************************************/ EX0=1;// 打开外部中断 0 EA=1; //打开总中断
TMOD=0X10;// TH1=0; TL1=0; while(1); }
delay(500);
EX0=1; // 打开中断; } void main() {
init_1602(); delay(300); write_string(0,5,"HKD_WCS"); write_string(1,3,"111404010422"); delay(6550); /*********** 启动超声波测距模块
50 /*危险距离*/
/*****************************/
sbit tr=P3^3; //信号 sbit en=P3^2; //使能超声波 char table_time[6]; char table_2[20]; unsigned int th,tl; //int sum;
1602 模块
3
4
读操作时序: 写操作时序:
5
蜂鸣器模块
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因 此需要一定的电流才能驱动它,单片机 IO 引脚输出的电流较小,单片机输出的 TTL 电平基 本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路
6
R1
P 1^0 10k
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);
#endif
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;
作业:汽车安全距离检测系统
车姓名
学院:电子信息工程学院 专业:自动化 114 班 学号:111404010422 姓名:王超帅
1
汽车安全距离检测系统
河南科技大学电子信息工程学院自动化 114 班 学号:11404010422 姓名:王超帅
随着汽车工业的发展,城市汽车数量迅速增加。尤其是近几年来, 我国开始进入私家车时代,汽车的数量更是逐年增加,造成公路、街 道、停车场、车库等越来越拥挤。汽车驾驶员越来越担心车的安全了, 其中倒车就是一个典型问题。由于存在视觉盲区,无法看见车后的障 碍物,司机在倒车时很容易刮伤汽车,甚至发生事故。为了减少因此 带来的损失,需要有一种专门的辅助装置帮助司机安全倒车。本文设 计分析的基于超声波测距的汽车倒车雷达系统即是根据这一实际情 况而应运而生的,具有较高的性价比。 关键词:超声波传感器;超声测距;51 单片机 ;
sbit E=P2^5;
sbit RS=P2^7;
sbit RW=P2^6;
/*******************************管脚说明**************************************
* E= P2^7 使能
*
* E= P2^5 使能
*
* RS=P2^5 数据命令
初始化定时器
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; */
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;
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
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); //显示光标.但不闪烁 }