基于51单片机倒车雷达系统[1]1
基于51单片机的雷达倒车测距装置程序

#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define comm 0#define dat 1sbit RS=P2^6; //高电平数据,低电平命令sbit RW=P2^5; //读写控制脚,高电平读,低电平写sbit E=P2^7; //输入使能sbit busy=P0^7; //忙信号检测sbit SDA=P1^0; //I2C数据线sbit SCL=P1^1; //I2C时钟线sbit Buzz=P1^2; //蜂鸣器控制脚sbit LED_G=P1^3; //绿色指示灯控制脚sbit LED_R=P1^4; //红色指示灯控制脚uchar buf[6],dis_buf[6]; //数据缓冲区uint buffer[3]; //测量距离存储区uint dis; //最小距离存储器uchar code tab1[]={"距离障碍物:"}; //显示字符uchar code tab2[]={"无障碍物"};uchar code tab[]={"0123456789cm"};/*****************函数声明*****************/void start_bit(void); //I2C起始函数void stop_bit(void); //I2C停止函数void mast_ack(void); //主答函数bit write_8bit(uchar ch); //I2C总线写8位数据函数bit page_rd(uchar device,uint fir_ad,uint count,uchar *firw_ad);//I2C总线页面读函数uint measure(uchar device); //启动测距函数uint get_distance(void); //读测距值函数void judge(void); //判断距离函数void init_lcd (void); //LCD初始化函数void wr_lcd(uchar dat_comm,uchar content);//LCD写数据函数void chk_busy (void); //忙信号检测void chn_disp(uchar code *chn,uchar pos,uchar n);//显示提示汉字函数uchar dat_adj(uint dat1); //显示数据调整函数void disp_dist(uchar dat1); //显示距离函数void disp(void); //显示函数void delay (uint us); //延时函数void delay1 (uint ms); //延时函数/*********************主程序***********************/void main (){init_lcd (); //初始化LCDwhile (1){judge(); //判断障碍物距离disp(); //显示提示信息}}/********************I2C起始函数*******************/void start_bit(void){SCL=1;_nop_();SDA=1;_nop_();SDA=0;_nop_();SCL=0;_nop_();}/*******************I2C停止函数********************/void stop_bit(void){SDA=0;_nop_();SCL=1;_nop_();SDA=1;_nop_();}/****************I2C总线写8位数据函数**************/bit write_8bit(uchar ch){uchar i=8;bit fan_w;SCL=0;_nop_();while (i--){SDA=(bit)(ch&0x80);_nop_(); //获取发送位数据ch<<=1;SCL=1;_nop_();SCL=0;_nop_();}SDA=1;_nop_();SCL=1;_nop_();fan_w=SDA; //应答位SCL=0;_nop_();return(fan_w); //返回应答位}/*****************I2C总线页面读函数****************/bit page_rd(uchar device,uint fir_ad,uint count,uchar *firw_ad){uchar j=8;uchar data *ufirstwr_ad;ufirstwr_ad=firw_ad;start_bit();if(write_8bit(device)!=0){stop_bit();return(0);}//送器件地址,写数据if(write_8bit(fir_ad)!=0){stop_bit();return(0);}//送读数据寄存器首地址start_bit();if(write_8bit(device|0x01)!=0){stop_bit();return(0);}//准备读数据while(count--){uchar i=8;while(i--) //读入数据{(*ufirstwr_ad)<<=1;SCL=1;_nop_();if(SDA) (*ufirstwr_ad)|=0x01;SCL=0; _nop_();}ufirstwr_ad++;mast_ack(); //主机产生应答位}while(j--){(*ufirstwr_ad)<<=1;SCL=0;_nop_();_nop_();SCL=1;if(SDA) (*ufirstwr_ad)|=0x01;}stop_bit(); //停止I2C数据传送return(1);}/*********************主答函数*********************/void mast_ack(void){SCL=0;_nop_();SDA=0;_nop_();SCL=1;_nop_();SCL=0;_nop_();SDA=1;_nop_();}/********************测距函数******************/uint measure(uchar device){uint temp;start_bit(); //启动I2Cwhile(!write_8bit(device)); //发器件地址while(!write_8bit(0x00)); //命令寄存器while(!write_8bit(0x51)); //以厘米为单位返回距离stop_bit(); //停止I2Cdelay1(100);while(!page_rd(device,0x02,2,buf)); //读距离值temp=(buf[0]<<8)|buf[1];return(buffer); //返回距离值}/*******************求最小测距值函数*****************/uint get_distance(void){uint mix;buffer[0]=measure(0xe0); //读左侧测距值buffer[1]=measure(0xe2); //读中间测距值buffer[2]=measure(0xe4); //读右侧测距值if(buffer[0]<buffer[1])mix=buffer[0];elsemix=buffer[1];if(mix>buffer[2])mix=buffer[2]; //合并为一个16位数据return(mix);}/*******************判断距离函数*******************/void judge(void){dis=get_distance(); //读取测量距离最小值if(dis<5000){LED_R=0; //红色报警灯亮LED_G=1; //绿色报警灯灭}else{LED_R=1; //红色报警灯灭LED_G=0; //绿色报警灯亮}if(dis<3000)Buzz=0; //蜂鸣器报警elseBuzz=1; //蜂鸣器停止报警}/******************LCD初始化函数*******************/void init_lcd (void){wr_lcd (comm,0x30); //基本指令动作wr_lcd (comm,0x01); //清屏wr_lcd (comm,0x06); //光标的移动方向wr_lcd (comm,0x0c); //开显示,关游标}/*******************LCD写数据函数*****************/void wr_lcd (uchar dat_comm,uchar content){chk_busy ();if(dat_comm){RS=1; //数据RW=0; //写入}else{RS=0; //命令RW=0; //写入}P0=content; //输出数据或命令E=1;E=0;}/********************忙信号检测********************/void chk_busy (void){P0=0xff;RS=0;RW=1;E=1;while(busy==1); //检验LCD是否处于忙状态E=0;}/****************显示提示汉字函数******************/void chn_disp(uchar code *chn,uchar pos,uchar n){uchar i;wr_lcd (comm,0x30); //基本指令动作wr_lcd (comm,pos); //显示位置for (i=0;i<n;i++)wr_lcd (dat,chn[i]);}/****************显示数据调整函数******************/uchar dat_adj(uint dat1){uchar i;dis_buf[0]=(uchar)(dat1/1000); //高度千位dis_buf[1]=(uchar)((dat1%1000)/100); //高度百位dis_buf[2]=(uchar)((dat1%100)/10); //高度十位dis_buf[3]=(uchar)(dat1%10); //高度个位dis_buf[4]=10;for(i=0;i<3;i++){if(dis_buf[i]!=0)break; //确定显示位数}return(i);}/******************显示距离函数********************/void disp_dist(uchar dat1){uchar temp,i;if(dat1>5000){chn_disp(tab2,0x92,4); //无障碍显示}else{temp=dat_adj(dat1);wr_lcd(comm,0x30); //基本指令wr_lcd(comm,temp+0x92); //设置显示起始位置for (i=temp;i<6;i++) //送显示数据wr_lcd(dat,tab[dis_buf[i]]);}}/********************显示函数**********************/void disp(void){chn_disp(tab1,0x80,11); //显示提示汉字disp_dist(dis); //显示距离值}/********************延时函数**********************/void delay (uint us){while(us--);}/********************延时函数**********************/void delay1 (uint ms){uint i,j;for(i=0;i<ms;i++)for(j=0;j<15;j++)delay(1);}。
基于51单片机倒车防撞报警系统

摘要随着中国经济的持续发展和汽车价格的持续下降,越来越多的家庭拥有自己的汽车,汽车的安全也成为亟待解决的问题。
对汽车倒车预警技术的研究,具有重要的现实意义。
基于51单片机的超声波测距仪之倒车雷达装置,安装在汽车上,可以与时了解前方与后方的障碍物情况,随时做出正确的判断,保障人类的生命安全。
在此基础上,本文研究了基于51单片机倒车防撞报警系统,首先简要阐述了本文的研究背景、意义、超声波测距的基本理论,并介绍了超声波测距报警系统。
根据型电气设备的设计要求,在传统非超声波测距系统的基础上,设计并实现了超声波测距报警系统。
整个测距系统的实现包括数字电路设计、模拟电路设计和软件的编辑。
关键词:51单片机;倒车防撞报警系统;超声波测距ABSTRACTAs China's economy continues to develop and car prices continued to decline, more and more families have their own cars, car safety has become a problem to be solved. It is of great practical significance to study the warning technology of car astern. Ultrasonic range finder based on 51 single chip microcomputer of reversing radar system, installed on the car, can timely understand the front and rear obstacles, at any time to make the right judgment, to ensure the safety of human life. On this basis, this paper studies the reverse collision warning system based on 51 single-chip processor, this paper expounds the research background, significance of this article, the basic theory of ultrasonic ranging, and introduces the ultrasonic ranging alarm system. According to the design requirement of the electric equipment, the ultrasonic range alarm system is designed and implemented on the basis of the traditional non-ultrasonic range system. The implementation of the whole range system includes digital circuit design, analog circuit design and software editing.Keywords:51 microcontroller; Reversing alarm system Ultrasonic ranging目录摘要1ABSTRACT2目录3第一章绪论41.1课题概述41.2设计容4第二章设计方案选择52.1总体方案设计52.2单片机5第三章硬件电路设计73.1超声波模块73.3超声波检测接收电路的设计73.3声光报警与显示电路83.4供电电路9第四章软件(程序)设计104.1系统程序总体工作流程104.2测距结果显示子程序11第五章系统调试125.1仿真125.2调试125.3总结与展望13参考文献14致15第一章绪论1.1课题概述随着汽车辆保有量的增加,车库与停车位的需求量越来越大,室外停车场,地下停车场,车辆密集停车人多,所以撞车、擦碰不断增多。
基于51单片机的倒车监视系统设计

1绪论1.1课题的目的及意义随着我国经济的持续增长和汽车价格的持续下降,汽车逐渐走进了越来越多的普通家庭之中。
汽车以其快捷性给人们带来了极大的便利,方便了人们的出行,但是在这个过程中也出现了很多日益严重的问题,其中以倒车事故最为突出。
有数据显示,大约15%的事故都是汽车倒车视野差造成的。
为了使倒车过程更加方便、安全,减少倒车事故的发生率,我们对倒车监视系统进行了深入的研究和设计。
基于51单片机的倒车监视系统具有倒车可视化、实时音频提示等功能,在倒车过程中发挥着巨大的作用,对减少倒车事故发生率,保证倒车过程顺利进行有着重要的意义。
1.2倒车监控系统发展现状我国的倒车监控系统始于2000年前后,最初只有少数高档车应用,现在已经成为各种品牌汽车的标准配置。
我国的倒车监视系统在发展过程中,从最初的蜂鸣器语音报警到如今最先进的全景数显倒车监控系统,经历了六代的技术改良和跨越,未来随着计算机技术和传感器技术的发展,汽车倒车监视系统将会朝着更加小型化、智能化的方向发展。
2超声波测距技术概述2.1超声波测距原理超声波是一种振动频率大于20000Hz的声波,由于其振动频率很高超过了人耳听觉所能认知的上限,所以人耳不能听到,因此这种声波被称为超声波。
由于其频率高,因而超声波具有许多诸如大功率、传播距离远的特点。
再者由于它频率很高,波长短,衍射不严重,有着优良的定向传播特性,利用超声波的这种特性,人们制成了超声波传感器。
超声波测距的原理是借助超声波频率高、定向性好的优点利用超声波发射器发射超声波,在发射的同时利用单片机的计数器功能开始计时,传播过程中碰到障碍物就立即反射回来,超声波接收器收到反射波的同时单片机计时器停止计时。
同时利用计时器记录的时间和超声波在空气中的传播速度通过公式算出发射点到障碍物的距离。
2.2超声波测距方式利用超声波在发射点与障碍物之间的传播,根据测量反射波和发射波之间的计时间隔,从而达到测距的目的。
基于51单片机的倒车雷达系统设计

基于51单片机的倒车雷达系统设计作者:晁松杰尤喜来源:《魅力中国》2017年第06期摘要:倒车雷达是汽车泊车安全辅助装置,可以帮助驾驶员扫除视野死角和视线模糊的缺陷,提高驾驶的安全性。
本设计以STC89C51RC单片机为核心,利用超声波测算倒车距离,超声波信号经单片机综合分析处理,实现超声波测距仪的各种功能。
该系统设计抗干扰能力较好,实时性良好,可以有效地解决汽车倒车问题。
关键词:倒车雷达;单片机;超声波测距随着科学技术的不断发展,人们生活水平的日益提高,城市功能不断丰富健全,城市交通系统也有了较大发展,其状况也不断改善。
但是随着汽车普及率的增加,交通事故的数量也在逐年增长,其中以倒车引起的事故数量居多。
驾驶员在拥挤和狭窄的街道上倒车,稍不小心就会发生追尾事故。
因此,增加汽车的后视能力,研制无接触式测量汽车后部障碍物距离的倒车雷达系统成为研究热点。
设计出好的倒车雷达系统,对于减少城市的车辆拥堵和交通事故将有一个很好的控制作用。
当然这要求倒车雷达系统应该具有精度高,抗干扰强,价格低廉,适宜推广等特点,这样基于超声波的测距系统,完全可以胜任此任务。
一、系统硬件设计该系统由STC89C51RC单片机、超声波发射电路、超声波接收电路、环境温度采集电路、显示电路、报警电路等组成。
其系统第一层是超声波发射电路,其次是超声波接收电路,第三层是环境温度采集部分,最后是数字显示和声音报警电路。
驾驶员将手柄转到倒车档后,系统自动启动,超声波模块(发射模式)向后发射40kHz的超声波信号,经车后面障碍物反射,由超声波模块(接收模式)收集,进行放大和比较,单片机STC89C51RC将此信号送入显示模块,同时触发报警电路,发出报警声音提示,并根据与障碍物距离的不同,發出不同的报警声,提醒驾驶员注意车距。
(一)超声波收发模块本系统采用超声波专用集成电路LM1812作为超声波发射和接收电路的主控芯片。
LM1812是一种通用型超声波收发器,主要用在各种各样的测距、定向和通信中。
基于51单片机的超声波倒车雷达测距

毕业设计题目:基于51单片机的超声波倒车雷达测距学院:电气与信息工程学院专业:电气工程与其自动化摘要超声波是频率高于20KHZ的声波,具有指向性强,能量消耗缓慢,在介质中传播的距离较远的特点,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在液位、井深、管道长度的测量、移动机器人定位和避障等领域得到了广泛的应用。
基于此,本次设计尝试使用AT89S52与HY-SRF05模块来实现超声波的测量,结合外围电路模块实现距离显示与语音播报构成超声波测距系统。
本次超声波测距系统由单片机计时与控制电路、超声波发射接收模块、测量距离显示电路、语音电路等部分组成。
详细介绍了超声波测距模块与AT89S52单片机的测距原理。
以HY-SRF05超声波测距模块为核心实现超声波的发射与接收。
整体电路结构简单,成本低廉,工作稳定,测量精度也达到实际应用要求。
关键词:AT89S52;超声波;HY-SRF05;测距AbstractUltrasound is sound waves with frequency higher than 20KHz, it has strong directivity and consumes energy slowly, at the same time it spreads farther in the same medium. Therefore ultrasound is often used for distance measurement, such as the range finder and level measurement and so on can be achieved by it. Use of ultrasonic detection tends to be quickly, convenient and simple calculation, easy to do real-time control. In the measurement precision it can reach industry practical requirement. So in liquid level, well depth, pipe length measurement, mobile robot localization and obstacle avoidance, etc a wide range of applications.This ultrasonic distance measurement system by single-chip timing and display circuit of the control circuits, ultrasound modules, measuring distances, voice circuits and other components. Details the ultrasonic range finder and AT89S52 microcontroller module location. Core realization of ultrasonic HY-SRF05 ultrasonic distance measurement modules for transmit and receive. A whole circuit of simple structure, low cost, stable, measurement precision to reach the actual application requirements.Keywords:AT89S52;Ultrasonic wave;HY-SRF05;Measure distance目录摘要IAbstractII第1章绪论11.1 课题研究的背景11.2 国外研究现状11.3 课题研究的意义2第2章超声波测距原理42.1 超声波简介42.2 超声波测距原理4第3章方案论证63.1 设计思路63.2 系统结构设计7第4章硬件电路设计84.1 单片机AT89S5284.2 超声波测距模块HY-SRF05104.2.1 基本工作原理104.2.2 HY-SRF05电气参数114.2.3 超声波时序图124.2.4 超声波应用电路图124.3 温度传感器DS18B20124.4 LCD1602液晶134.4.1 LCD1602主要技术参数134.4.2 LCD1602引脚功能144.4.3 LCD1602应用电路图144.5 ISD1420语音芯片154.5.1 特点154.5.2 电特性154.5.3 ISD1420引脚功能154.5.4 ISD1420语音电路16第5章系统软件设计185.1 主程序185.2 超声波测距子程序185.3 测温子程序20第6章系统调试分析226.1 硬件电路测试226.2 软件调试226.3 误差分析23结论25参考文献26致27附录28附录A:实物作品28附录B: 原理图29附录C: PCB图30附录D: 程序30第1章绪论1.1 课题研究的背景随着我国经济的飞速发展,交通运输车辆的不断增多,由此产生的交通问题越来越成为人们关注的问题。
倒车雷达毕业设计(基于51单片机)

&&&&&&&&&&&&毕业设计(论文)题目:基于单片机的倒车雷达的设计学院:&&&&&&&&&&&专业:&&&&&班级:&&&&&&&学生:****导师:**** 职称:****起止时间:2014年3月3日至2014年6月15日毕业设计(论文)诚信声明书本人声明:本人所提交的毕业论文《基于单片机的倒车雷达的设计》是本人在指导教师指导下独立研究、写作的成果,论文中所引用他人的文献、数据、图件、资料均已明确标注;对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感。
本人完全意识到本声明的法律后果由本人承担。
论文作者:(签字)时间:2014年6月10日指导教师已阅:(签字)时间:2014年6月10日西安邮电大学毕业设计(论文)任务书学生指导教师**** 职称****学院通信与信息工程学院专业信息工程题目基于单片机的倒车雷达的设计任务与要求1. 调研基于单片机的倒车雷达的设计的现状与背景。
2. 学习51单片机原理及超声波测距原理。
3. 进行相关模块功能的程序设计。
4. 在仿真软件上进行功能仿真。
5. 搭建硬件电路并调试。
6. 软件下载及综合调试。
7. 完成论文,准备答辩。
开始日期2014年3月3日完成日期2014年6月15日院长(签字) 201年 3 月7 日西安邮电大学毕业设计(论文) 工作计划2014年3 月10 日学生**** 指导教师**** 职称****学院通信与信息工程学院专业信息工程题目基于单片机的倒车雷达的设计工作进程主要参考书目(资料)(1)郭天祥. 新概念51单片机C 语言教程:入门、提高、开发、拓展全攻略[M].: 电子工业, 2009. 1.(2)周立功等. 增强型80C51单片机速成与实践[M]. : 航空航天大学, 2003.(7)亮. 跟我学51单片机(一)——单片机最小系统组成与I/O 输出控制[J]. 电子制作,2011, 1: 73-77.1.计算机一台2.硬件材料若干每周指导一次,主要解答学生问题,指导研究进度,并检查阅读资料笔记和仿真程序。
基于单片机倒车雷达

文献综述1 概述自从 1886 年 2 月 9 日卡尔•本茨发明了人类第一辆汽车,至今世界汽车工业经过了近122 年的发展,当代汽车已经非常成熟和普遍了。
汽车已经渗透于国防建设、国民经济以及人类生活的各个领域之中,成为人类生存必不可少的、最主要的交通工具,为人类生存和社会的发展与进步起到了至关重要的作用。
当今,汽车已经成为人们生活中不可缺少的一部分,它给人们带来方便快捷的同时,也出现了许多问题。
如越来越多的汽车使道路上有效的使用空间越来越小,新手也越来越多,由此引起的刮伤事件也越来越多,由此引起的纠纷也在不断地增加。
原来不是问题的倒车也逐渐变成了问题。
尽管每辆车都有后视镜,但不可避免地都存在一个后视盲区,倒车雷达则可以在一定程度上帮助驾驶员扫除视角死角和视线模糊的缺陷,提高驾驶的安全性,减少刮、擦事件。
因此,提出了基于超声波测距的汽车用倒车雷达的设计。
2 倒车雷达的发展倒车雷达(Car Reversing System)全称“倒车防撞雷达”,又称“泊车辅助装置”,它是汽车泊车或者倒车时的安全辅助装置。
它能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除驾驶员泊车、倒车和启动车辆时因前后左右探视所引起的困扰,并帮助驾驶员克服视角死角和视线模糊的缺陷,提高驾驶的安全性。
经过几年的发展,倒车雷达系统已经过了数代的技术改良,不管从结构外观上,还是从性能价格上,这几代产品都各有特点,目前使用较多的是数码显示、荧屏显示和魔幻镜倒车雷达这 3 种。
倒车雷达真正开始于轰鸣器,也就是第一代倒车雷达。
我想很多人都不会忘记“倒车请注意!”这句话,因为现在多数普通车还在使用它。
第二代则是采用数码波段显示,可显示后障碍物离车体距离的数码波段显示倒车雷达。
第三代的液晶荧屏显示较以前有了一个质的飞跃。
紧接着的四代魔幻镜倒车雷达和五代整合影音系统更是结合了前几代产品的优点,在原有倒车雷达的基础上增加了很多功能。
3 主要技术介绍距离是在不同的场合和控制中需要检测的一个参数。
基于AT89C51单片机的超声波倒车雷达系统的设计1

基于单片机的超声波倒车雷达系统的设计摘要近年来,我国的汽车数量正逐年增加。
在公路、街道、停车场、车库等拥挤、狭窄的地方倒车时,驾驶员既要前瞻,又要后顾,稍微不小心就会发生追尾事故。
因此。
增加汽车的后视能力,研制汽车后部探测障碍物的倒车雷达便成为近些年来的研究热点。
为此,设计了以单片机为核心,利用超声波实现无接触测距的倒车雷达系统。
工作时,超声波发射器不断发射出一系列连续脉冲,给测量逻辑电路提供一个短脉冲。
最后由信号处理装置对接收的信号依据时间差进行处理,自动计算出车与障碍物之间的距离。
目前,国内外一般的超声波测距仪,其理想的测量距离为1m~5 m,因此大都用于汽车倒车雷达等近距离测距中。
本文根据声波在空气中传播反射原理,以超声波换能器为接口部件,介绍了基于AT89C51单片机的超声波测距器。
该设计由超声波发射模块、信号接收模块、单片机处理模块、数码显示以及声光告警显示模块等部分组成,文中详细介绍了测距器的硬件组成、检测原理、方法以及软件结构。
超声波接收电路使用SONY公司的CX20106A红外检测专用芯片,该芯片常用于38kHz的检波电路,文中通过对芯片内部电路的仔细分析,设计出能够成功对40kHz超声波检波的硬件电路,距器使用数码管显示目标物的距离。
关键词:超声波测距 AT89C51 倒车DESIGN OF ULTRASONIC VEHICLEREVERING SYSTEM WITHULTRASONIC BASEDON MCUABSTRACTIn recent years, China's number of cars is increasing every year. Highways, streets, parking, garage and other crowded places narrow reverse, the driver should not only forward but also looking back, a little rear-end careless accidents can occur.So after the increase of motor vehicles as the ability to detect obstacles on the development of the rear of the car reversing radar has become the research hotspot in recent years. the ultrasonic transmitter continuously emits a series of consecutive pulses to the measurement of logic circuits to provide a short pulse. Finally, signal processing devices based on the received signal for processing the time difference, automatic calculation of turnout and the distance between obstacles. Ultrasonic Ranging simple, low cost, easy production, but the transmission speed by a larger weather can not be precise range; In addition, the ultrasonic energy and the attenuation is directly proportional to the square of the distance, the farther the distance, the lower sensitivity and thus Ultrasonic Ranging way so that only apply to a shorter distance. At present, ultrasonic range finder at home and abroad in general, the ideal distance of the measurement 1~ 5 m, based on AT89C51 ultrasonic range-finder. Receiving circuit using the SONY company dedicated CX20106A infrared detecting chip, the chip used in the detector circuit 38KHz, the text of the chip through the careful analysis of the internal circuit design can successfully 40kHz ultrasonic detection of hardware circuitry and adjustable gain, The use of digital rangefinder display the distance between objects.KEY WORDS AT89C51 Silent Wave;Measure Distance Reversing目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1 设计的现状............................................................................. 错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于超声波的倒车雷达系统电子0601郑灵光电子0602潘建标,陈永根摘要随着科技的发展,人们生活水平的提高,城市发展建设加快,城市给交通系统也有较大发展,其状况不断改善。
但是,由于多种原因合成时间住的许多不可预见因素,城市还是经常出现大量的交通事故,特别是倒车时,看不到后方而导致大量的交通事故。
因此,设计出好的倒车雷达系统,对于减少城市的交通事故将有一个很好的控制作用。
当然这要求倒车雷达系统,具有精度高,抗干扰强,价格应该低,适宜推广等特点,这样基于超声波的测距系统,完全可以胜任此任务。
本设计采用以A T89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。
整个电路采用模块化设计,由主程序、发射子程序、接收子程序、显示子程序等模块组成。
各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。
在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。
该设计设抗干扰能力较好,实时性良好,误差可以达到mm级,可以有效地解决汽车倒车作用。
本系统在倒车时不断测量汽车尾部与其后面障碍物的距离,并随时显示其距离,并用语音及时提示。
在不同的距离范围内,不同的温度下测出距离,发出报警信号,以提高汽车倒车时的安全性的仪器。
目录第一章绪论 (3)1.1 课题背景,目的和意义 (3)1.2两种常用的超声波测距方案 (3)第2章超声波测距系统设计 (3)2.1 超声波测距的原理 (4)2.2超声波测距系统电路的设计 (4)2.2.1 总体设计方案 (4)2.2.2发射电路的设计 (4)2.2.3接收电路的设计 (4)2.2.4显示模块的设计 (5)2.2.5 温度补偿模块设计 (5)2.2.6 语音处理模块 (5)第三章超声波测距系统的软件设 (5)3.1总体流程图 (5)3.2 程序及分析 (6)第四章电路调试及误差分析 (7)4.1电路的调试 (7)4.2系统的误差分析 (7)第5章功能扩展 (7)参考文献 (7)附录:………………………………………8-22第1章绪论1.1 课题背景,目的和意义由于社会的进步,经济的发展和生活水平的不断提高,汽。
车数量逐年增长,造成道路交通拥挤不堪,交通事故频繁发生汽车倒车报警器:在倒车时不断测量汽车尾部与其后面障碍物的距离,并随时显示其距离,并用语音及时提示。
在不同的距离范围内,不同的温度下测出距离,发出报警信号,以提高汽车倒车时的安全性的仪器。
2.2两种常用的超声波测距方案2.2.1基于CPLD的超声波测距系统CPLD模块主要由发射模块,16位计时计数器模块,接收模块,顺序执行计数器模块和六选一数据选择器模块五部分组成。
其总体框图如图1所示。
CPLD模块主要完成超声波的发射、接收和时间的测量。
超声波发射模块启动40KHz的超声波发射,当发射脉冲串达到设定值后,关闭超声波的发射,同时启动六路计时计数器模块开始计时;信号经过障碍物反射回来,接收电路接收到回波后,将其进行整形,作为接收模块的信号,当接收完回波脉冲信号后,接收模块输出端发出信号,关闭计时计数器停止工作;当所有的回波接收完毕后,顺序执行计数器输出端发出信号启动单片机开始接收数据,通过顺序执行计数器的计数值、数据选择器的选择端与计时计数器的控制端分别读取六路不同的计数值。
所有的数据读取完后,清除计时计数器的计数值,准备下一次的循环计数。
2.2.1基于单片机的超声波测距系统本警器由单片机来控制。
整个控制系统由超声波发射电路、超声波接收电路、报警电路、复位电路、显示电路组成。
实行实时数字显示测得的距离,在不同的距离范围内发出不同的报警信号,驾驶员可根据个人需要调整设置报警距离,以减少事故的发生。
本作品将采用此种方法。
第二章超声波测距系统设计2.1 超声波测距的原理超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为c,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=ct/2 。
这就是所谓的时间差测距法。
2.2超声波测距系统电路的设计2.2.1 总体设计方案该设计总体基于51,包括发射模块,接收模块,显示模块,语音模块,温度补偿模块。
由发射电路发射超声波,51计数器从0开始计时,当超声波反射回来,接收电路接收,51停止计时,将所计得得数转化成十进制n,因为使用的12MHz 晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用89C51定时器能保证时间误差在1mm的测量范围内。
,则将n与1us相乘即可以得到时间,从而利用超声波测距的原理就可以判断距离以是否利用利用凌阳61版的语音处理功能,进行报警及播放当前的距离,温度和超声波传播速度。
再者显示器也将显示距离,温度,及超声波传播速度。
2.2.2发射电路的设计用单片机直接产生的40khz信号经过74ls04放大后直接驱动超声波发射探头。
2.2.3接收电路的设计将超声波接收探头接收的信号经cx20106红外线专用芯片处理接收,然后送给单片机。
2.2.4显示模块的设计使用1602液晶屏,与单片机连接,将单片机的距离,温度,超声波数度(声速)传送给液晶屏显示出来。
2.2.5 温度补偿模块设计因为声速在不同温度下的传播速度是不同的,根据补偿公式C=C0+0.607×T℃C0为零度时的声波速度332m/s;T为实际温度(℃)。
采用18b20温度传感器测温,根据测得的温度,来确定具体的声速。
2.2.6 语音处理模块根据手中的现有的材料,利用凌阳61版的语音处理功能,播放出:“倒车请注意”并通过51单片机和凌阳的串口通讯,将51测得的距离,温度,声速数据传给凌阳,然后通过凌阳的语音处理将其播报出来。
第三章超声波测距系统的软件设计3.1总体流程图3.1.1凌阳模块流程图3.1.2 51单片机模块3.2 程序及分析(见附录)第4章电路调试及误差分析5.1电路的调试(盲区问题)由于超声波发射探头在发射超声波时,接受探头也会接受到超声波,所以在发射超声波时,必须先关外部中断,延时一段时间,进而消除回波干扰,所以在测量中会有盲区出现,所以硬件调试中主要的就是调节延时时间,使盲区达到最小,进而跳高测量的精度。
通过硬件调试,来控制发射脉冲波的个数以及延时时间,并在实际测量中测出三种不同测距模式下的盲区,分别约为5cm,20cm及45cm。
、5.2系统的误差分析28根据超声波测距公式L=C×T,可知测距的误差是由超声波的传播速度误差和测量距离传播的时间误差引起的。
1.时间误差当要求测距误差小于1mm时,假设已知超声波速度C=344m/s (20℃室温),忽略声速的传播误差。
测距误差s△t<(0.001/344) ≈0.000002907s 即2.907ms。
在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1mm的误差。
使用的12MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用89C51定时器能保证时间误差在1mm的测量范围内。
2. 超声波传播速度误差超声波的传播速度受空气的密度所影响,空气的密度越高则超声波的传播速度就越快.第5章功能扩展通过串口与PC机进行通讯,并利用所学知识,用VB写了了一个接受模块,将51单片机中的数据经串口传到电脑上显示。
参考文献33单片机原理与控制技术机械工业出版社数字电子技术教程清华大学出版社模拟电子技术教程清华大学出版社胡萍.超声波测距仪的研制.计算机与现代化时德刚,刘哗.超声波测距的研究.计算机测量与控制/mgjqr/blog/item/63c5bd1e5346c164f624e4b8.html 超声波测距原理附录://////////////主文件程序main//////////////////////////////////////////////3.2.1超声波测距#include<reg52.h>#include <stdio.h>#include"18B20.h"#include "intrins.h"#include"LCD1602.H"#include"Delay1.h"#define uchar unsigned char#define uint unsigned intuchar ucHigh_time,ucLow_time; //超声波传输时间uchar ucFlag; //中断标志位uchar frq; //音乐频率节拍问题float c; //不同温度下的超声波传播速度/*************************针脚定义********************************/ sbit Hz40k_out =P3^6; //40k信号输出端sbit Mod_short=P1^4;sbit Mod_long=P1^5;sbit Mod_out = P1^7; // 判断数据是发给电脑机还是凌阳版sbit Key_tran=P1^6; //发送数据,开始通讯/*****************************************************************/ /**********************函数声明***********************************/ void Tmr0_int(void);void Int0_int(void);void Send_40khz_long(void) ; //发射超声波void Send_40khz_medium(void) ;void Send_40khz_short(void) ;int Distance_count(); //距离转换函数float Compensate_c(); //温度补偿函数void Display_dis(void) ; //距离显示函数void Display_tem(void) ; //温度显示函数void Display_c(void) ; //声速显示函数void delayms(unsigned char ms);void Tmr1_int(void);/***********************子程序********************************/ void Tmr0_int(void){TMOD|=0x01; //tmr0方式1,16位计数EA=0; //关总中断ET0=0; //关T0中断TR0=0; //停止计时器0TH0=0X00;TL0=0X00;}//////////////////////////////////////////////////////////////void Int0_int(void){IT0=0; //低电平沿触发EA=0; //关总中断EX0=0; //屏蔽中断}/////////////////////////////////////////////////////////////void Ustart_int(void){SCON |= 0x50; //串口方式1,允许接收TMOD |= 0x20; //定时器1定时方式2// TCON = 0x40; //设定时器1开始计数TH1 = 0xF3; //12MHz 2400波特率TL1 = 0xF3;TR1 = 0; //关闭定时器}///////////////////////////////////////////////////////////void Ustart_send_lingyang(void){ uchar send[3];uint V oice_v;send[0]=Distance_count();send[1]=Distance_count()>>8;TR1 = 1; //启动定时器TI=0;SBUF=send[1]; //先发高位再发低位while(!TI); //等待发送完成TI=0;while(!RI); //等待接收完成RI=0;//delay_ms(200);SBUF=send[0];while(!TI);TI=0;send[0]=Read_Temperature()/10;send[1]=(Read_Temperature()/10)>>8;//发送的为实际温度的十倍37.2C则发送372 while(!RI); //等待接收完成RI=0;//delay_ms(200);SBUF=send[1];while(!TI);TI=0;while(!RI); //等待接收完成RI=0;//delay_ms(200);SBUF=send[0];while(!TI);TI=0;V oice_v=Compensate_c(); //将浮点型转换为整型send[0]=V oice_v;send[1]=V oice_v>>8;while(!RI); //等待接收完成RI=0;//delay_ms(200);SBUF=send[1];while(!TI);TI=0;while(!RI); //等待接收完成RI=0;//delay_ms(200);SBUF=send[0];while(!TI);TI=0;while(!RI); //等待接收完成RI=0;TR1=0;//关闭定时器}//////////////////////////////////////////////////////////////////////////void Ustart_send_pc(void){uchar send[4];uint V oice_v;send[0]=Distance_count()/1000+0x30;send[1]=Distance_count()%1000/100+0x30;send[2]=Distance_count()%100/10+0x30;send[3]=Distance_count()%10+0x30;TR1 = 1; //启动定时器TI=0;SBUF=send[0];while(!TI);TI=0;SBUF=send[1];while(!TI);TI=0;SBUF=send[2];while(!TI);TI=0;SBUF=send[3];while(!TI);TI=0;send[0]=(Read_Temperature()/10)/100+0x30;send[1]=(Read_Temperature()/10)%100/10+0x30;//发送的为实际温度的十倍37.2C则发送372send[2]=(Read_Temperature()/10)%10+0x30;SBUF=send[0];while(!TI);TI=0;SBUF=send[1];while(!TI);TI=0;SBUF=send[2];while(!TI);TI=0;V oice_v=Compensate_c(); //将浮点型转换为整型send[0]=V oice_v/100+0x30;send[1]=V oice_v%100/10+0x30;send[2]=V oice_v%10+0x30;SBUF=send[0];while(!TI);TI=0;SBUF=send[1];while(!TI);TI=0;SBUF=send[2];while(!TI);TI=0;TR1=0;//关闭定时器}void Key_scan(void){Key_tran=1;//写1准备开始读if(Key_tran==0){ delay_ms(10);while(!Key_tran) ;//等待按键放开if (Mod_out==1)Ustart_send_lingyang();elseUstart_send_pc();}}////////////////////////////////////////////////////////////////////////////////////////void Send_40khz_short(void) //从P1.0发出40KHz的脉冲短波测量短距离{uchar n,p;for(n=0;n<1;n++) //输出1个脉冲{Hz40k_out=1;for(p=0;p<3;p++);Hz40k_out=0;for(p=0;p<2;p++);Hz40k_out=0;}}/////////////////////////////////////////////////////////////void Send_40khz_medium(void) //从P1.0发出40KHz的脉冲中波测量中距离{uchar n,p;for(n=0;n<2;n++) //输出2个脉冲{Hz40k_out=1;for(p=0;p<3;p++);Hz40k_out=0;for(p=0;p<2;p++);Hz40k_out=0;}}////////////////////////////////////////////////////////////void Send_40khz_long(void)//从P1.0发出40KHz的脉冲长波测量长距离{uchar n,p;for(n=0;n<40;n++) //输出40个脉冲{Hz40k_out=1;for(p=0;p<3;p++);Hz40k_out=0;for(p=0;p<2;p++);Hz40k_out=0;}}//////////////////////////////////////////////////////////float Compensate_c() //温度补偿公式{ c= 331.45+0.607*Read_Temperature()/100;return c;}/////////////////////////////////////////////////////////int Distance_count()//距离计算函数{float Temp;Temp=ucHigh_time*256+ucLow_time-96; //96为实际调试中距离的调整Temp=(Temp/1000)/2;Temp*=Compensate_c(); //毫米return Temp;}///////////////////////////////////////////////////////void Display_dis(void) //显示距离{ switch(ucFlag){case 1: { LCD_gotoxy(0, 0);write_string_LCD1602("Distance:");if( Distance_count()/1000>0) //判读显示位数write_number(Distance_count(),4);else if (Distance_count()/100>0)write_number(Distance_count(),3);else if (Distance_count()/10>0){write_number(Distance_count(),2);write_string_LCD1602(" ");}else{write_number(Distance_count(),1);write_string_LCD1602(" ");}write_string_LCD1602("mm");break;}case 2: { LCD_gotoxy(0, 0);write_string_LCD1602("Distance:wrong ") ;break;}default : { LCD_gotoxy(0, 0);write_string_LCD1602("Begin ") ;break;}}}///////////////////////////////////////////////////////////////////void Display_tem(void) //显示温度{ LCD_gotoxy(1, 0);write_string_LCD1602("T:");if (Read_Temperature()/100>=100)write_number(Read_Temperature()/100,3);elsewrite_number(Read_Temperature()/100,2);write_string_LCD1602(".");write_number(Read_Temperature()%100/10,1);write_string_LCD1602("C");}///////////////////////////////////////////////////////////////void Display_c(void) //显示声速{LCD_gotoxy(1, 8);write_string_LCD1602("c:");write_number(Compensate_c(),3);write_string_LCD1602("m/s");}/*****************中断处理***********************/void INT0_Ultrasonic() interrupt 0{ uchar ucTemp_time1,ucTemp_time2;ucFlag=1;//外部中断标志位TR0=0;//关定时器0ET0=0;//屏蔽定时器0中断EX0=0;//关外部中断ucTemp_time1=TL0;ucTemp_time2=TH0;if((ucTemp_time1!=0)&&(ucTemp_time2!=0)){ucHigh_time=TH0;ucLow_time=TL0;}}////////////////////////////////////////////////void over()interrupt 1 //T0溢出为无效测量FFF;{ucFlag=2;//溢出标志位TR0=0;//关定时器0ET0=0;//屏蔽定时器0中断EX0=0;//屏蔽外部中断}/**************************主程序************************/ void main(void){ Tmr0_int();Int0_int();Ustart_int(); //串口通讯初始化init_LCD1602() ;EA=1; //开总中断while(1){ PX0=1; //设置外部0中断优先级为最高TH0=0;TL0=0;//清定时0TR0=1;//开定时0ET0=1;//开启定时器0中断if(Mod_long==0){ Send_40khz_long();//发射40khz脉冲测量长距离delay_ms(1); //1msdelay_us(80); // 0.724ms 防回波干扰总延时25*40/1000+1+0.724=2.724ms//盲区:2.724*170=463mm}if (Mod_long==1& Mod_short==1){ Send_40khz_medium();//发射40khz脉冲测量中距离delay_us(127);// 防回波干扰 1.157ms延时//总延时1.157+0.05=1.207ms//盲区:1.207*170=205.19mm}if(Mod_short==0){Send_40khz_short();//发射40khz脉冲测量短距离}EX0=1; //开启int0中断Display_dis( ); //距离显示Display_tem(); //温度显示Display_c(); //声速显示/* Tmr1_int(); 音乐播放delay_ms(200);delay_ms(200);//delay_ms(200);ET1=0; //关tmr1中断关闭音乐,避免开音乐是中断太频繁,引起测温和测距离都不准确*/// delay_ms(200);delay_ms(200);Key_scan(); //扫描按键判断是否要发送数据与凌阳版通讯}}(2)显示模块#ifndef _RZ_LCD1602_#define _RZ_LCD1602_#ifndef uchar#define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endifuchar code number[10]={"0123456789"};//用来显示数据#define Port P2sbit RS_LCD1602=P1^1;sbit RW_LCD1602=P1^2;sbit EN_LCD1602=P1^3;void Delay_Ms_LCD1602(uint ms){//延时程序(以毫秒为单位)。