超声波测距的电路设计与单片机编程
51单片机超声波测距离(带温度补偿)

超声波模块原理图:发射接收原理图PCB:51单片机原理图:软件部分C语言程序:/*=========================================================== =========调试要求:1.MCU:A T89S52芯片或AT89C522.晶振:12MHz调试注意:本程序带温度补偿,采用DS18B20测量温度1.LCD1602液晶屏有显示后,才接入超声波模块。
2.注意超声波模块电源的极性。
不清楚请参好淘宝的电路图3.没有选用频率为12MHz晶振,用了别的频率晶振,单片机定时器的测量值与发出的40KHz频率脉冲不对。
4.使用者经常误发出20KHZ脉冲当40KHZ脉冲。
(40KHz频率脉冲,周期25us,占空比为50% = 12.5us)5.如果是用开发板调超声波模块,请检查开发板上的电路是否与超声波模块的控制脚复用了, 若复用了,请通过跳线分开发板上的电路。
6如果使用的是万用板,请确定单片机的复位电路和晶振电路是否正常,同时单片机的31脚(EA)记得接高电平。
============================================================= =======*/#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//===============================LCD1602接口定义=====================/*-----------------------------------------------------|DB0-----P2.0 | DB4-----P2.4 | RW-------P0.1 ||DB1-----P2.1 | DB5-----P2.5 | RS-------P0.2 ||DB2-----P2.2 | DB6-----P2.6 | E--------P0.0 ||DB3-----P2.3 | DB7-----P2.7 | 注意,P0.0到P0.2需要接上拉电阻---------------------------------------------------============================================================= */#define LCM_Data P2 //数据接口#define Busy 0x80 //用于检测LCM状态字中的Busy标识sbit LCM_RW = P0^1; //读写控制输入端,LCD1602的第五脚sbit LCM_RS = P0^2; //寄存器选择输入端,LCD1602的第四脚sbit LCM_E = P0^0; //使能信号输入端,LCD1602的第6脚//===============================超声波模块定义========================sbit RemPin =P3^2;// 接收端(这个不能修改,因为是外部中断(INT0)的引脚) sbit TxPin =P3^1;// 发射端//******************************************************************** ***//ds18b20数字温度传感器控制引脚定义sbit dq_ds18b20=P3^3;//定义控制DS18B20//******************************************************************** ***//LCD显示模块的函数声明void WriteDataLCM (uchar WDLCM);//LCD模块写数据void WriteCommandLCM (uchar WCLCM,BuysC); //LCD模块写指令uchar ReadDataLCM (void);//LCD模块读数据uchar ReadStatusLCM (void);//读LCD模块的忙标void DisplayOneChar (uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置显示一个字符void DisplayListChar (uchar X,uchar Y,uchar delayms,uchar code *DData); void DisplayCursorPos (uchar X, uchar Y);void LCMInit (void);void DisplayIntData (uchar X, uchar Y,int ZhengShu,uchar Digit,uchar XiaoShu);void DisplayCharData (uchar X, uchar Y,uchar ZiFu);//******************************************************************** **//延时函数声明void delay25us_40KHz(unsigned char us);void DelayUs(uint us);void DelayMs(uint Ms);void delay_3us();//3US的延时程序void delay_8us(unsigned int t);//8US延时基准程序void delay_50us(unsigned int t);//延时50*T微妙函数的声明//******************************************************************** ***//DS18B20测温函数定义void w_1byte_ds18b20(uchar value);//向DS18B20写一个字节uchar r_1byte_ds18b20(void);//从DS18B20读取一个字节的数据void rest_ds18b20(void);//DS18B20复位程序void readtemp_ds18b20(void);//读取温度void display_temp(void);//温度显示程序//******************************************************************** ***//参数定义uint length = 0; // 测距的长度0.00Muchar flag = 0; // 测距的标志有信号接收=1uchar templ,temph;uint speed;//根据温度计算出来的声音速度uchar t_b,t_s,t_g,t_x;//从左到右分别存储温度百位,十位,个位,小数位uchar flag1;//温度正负性暂存,1为正数,0为负数const unsigned char tabl3[]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x0 8,0x09,0x09};/*=========================================================== ================主程序============================================================= ================*/void main(void){uchar i;LCMInit(); //1602初始化EX0 = 1; //允许总中断中断,使能INT0 外部中断ET0 = 1;TMOD=0x11; //设定T0为16位时器,设定T1为16位时器DisplayOneChar( 0,14,'m');DisplayListChar(0,0,0, "Distanc: "); //显示字符串while(1){readtemp_ds18b20();display_temp();//显示温度for(i=0;i<20;i++){DisplayIntData(0, 13,length,5,3);//显示测量距离TH0=0x00;TL0=0x00;TR0=1; //启动定时器0EA = 1; //允许所有中断delay25us_40KHz(15); //发出脉冲信号DelayMs(200);}}}//******************************************************************** ***********//温度显示函数void display_temp(){if(flag1==1)//温度为正数时的显示程序{DisplayOneChar( 1,2,'+');}else{DisplayOneChar( 1,2,'-');}//显示温度信息DisplayOneChar( 1,0,'T');DisplayOneChar( 1,1,':');DisplayOneChar( 1,3,t_s+0x30);DisplayOneChar( 1,4,t_g+0x30);DisplayOneChar( 1,5,'.');DisplayOneChar( 1,6,t_x+0x30);//显示速度信息DisplayOneChar( 1,8,'S');DisplayOneChar( 1,9,':');DisplayOneChar( 1,10,speed/100%10+0x30);DisplayOneChar( 1,11,speed/10%10+0x30);DisplayOneChar( 1,12,speed%10+0x30);DisplayOneChar( 1,13,'M');DisplayOneChar( 1,14,'/');DisplayOneChar( 1,15,'S');}//****************************************************//读取温度void readtemp_ds18b20(void){uchar temp32;rest_ds18b20();w_1byte_ds18b20(0xcc); //跳过读序列号的操作w_1byte_ds18b20(0x44); //启动温度转换delay_8us(2);rest_ds18b20();w_1byte_ds18b20(0xcc); //跳过读序列号的操作w_1byte_ds18b20(0xbe); //读取温度寄存器等(共可读9个寄存器)前两个就是温度templ=r_1byte_ds18b20();temph=r_1byte_ds18b20();if((temph&0xf0))//判断温度的正负性{flag1=0;temph=-temph;templ=-templ;t_x=tabl3[templ & 0x0f];//计算温度的小数temp32=temph & 0x0f;temp32<<=4;templ>>=4;temp32=temp32 | templ;t_b=temp32/100%10;//计算温度的百位数据t_s=temp32/10%10;//计算温度的十位数据t_g=temp32%10;//计算温度的个位数据speed=331.4-0.607*(temp32 | templ);}else//为正数{t_x=tabl3[templ & 0x0f];//计算温度的小数temp32=temph & 0x0f;temp32<<=4;templ>>=4;temp32=temp32 | templ;t_b=temp32/100%10;//计算温度的百位数据t_s=temp32/10%10;//计算温度的十位数据t_g=temp32%10;//计算温度的个位数据flag1=1;speed=311.4+0.607*(temp32 | templ);}}/*=========================================================== =========功能:在1602显示一个整数数据说明:显示一个整数数据-9999->32625. 从右至左显示数据5位:============================================================= =========*/void DisplayIntData(uchar X, uchar Y,int ZhengShu,uchar Digit,uchar XiaoShu) {uchar i=0,k=0, BCD[5]={0};if(Digit>5) Digit=5;if(ZhengShu<0){k=1;//负数示志位ZhengShu=-ZhengShu;}BCD[4] =ZhengShu / 10000; //求出万位数据ZhengShu = ZhengShu % 10000;BCD[3] =ZhengShu / 1000; //求出千位数据ZhengShu = ZhengShu % 1000;BCD[2] =ZhengShu / 100; //求出百位数据ZhengShu = ZhengShu % 100;BCD[1] =ZhengShu / 10; //求出十位数据BCD[0] =ZhengShu % 10; //求出个位数据for(i=0;i<Digit;i++)//输出显示的数值{if((i==XiaoShu)&&(0!=XiaoShu)){DisplayOneChar(X,Y-i,'.');//输出小数点Y= Y-1;}DisplayOneChar(X,Y-i,BCD[i]+0x30); //显示一个字符}if(k==1)DisplayOneChar(X,Y-1,'-');//输出负符}//****************************************************************//读一个字节uchar r_1byte_ds18b20(void){uchar i=0;uchar value= 0;for (i=0;i<8;i++){value>>=1;dq_ds18b20=0;// DQ_L;delay_3us();dq_ds18b20=1; //DQ_H;delay_8us(2);if(dq_ds18b20==1) value|=0x80;delay_8us(6); //延时40us}dq_ds18b20=1;return value;}//******************************************************************** ***********//子程序功能:向DS18B20写一字节的数据void w_1byte_ds18b20(uchar value){uchar i=0;for(i=0;i<8;i++){dq_ds18b20=1;delay_3us();dq_ds18b20=0;delay_8us(2);if (value& 0x01) dq_ds18b20=1; //DQ = 1delay_50us(1); //延时50us 以上delay_8us(2);value>>=1;}dq_ds18b20=1; //DQ = 1}//;**************************************************//ds18b20复位子程序void rest_ds18b20(void){rest:delay_3us(); //稍做延时delay_3us();dq_ds18b20=1;delay_3us();dq_ds18b20=0;// DQ_L;delay_50us(11);//480us<T<960usdq_ds18b20=1;//拉高总线delay_8us(5);if(dq_ds18b20==1){return;}delay_50us(2); //延时90usif(dq_ds18b20==1){return;}else{goto rest;}}//==============================超声波模块测试子程序================================================/*=========================================================== =========注意:是用12MHz晶振设定延时时间:x*25us 与产生40KHZ的脉冲============================================================= =======*/void delay25us_40KHz(unsigned char us){while(us--){TxPin = 0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TxPin = 1;_nop_();_nop_();_nop_();_nop_();}TxPin = 1;}/*=========================================================== ==================中断程序的入口(注意:接收与发射的电平是相反的)============================================================= ==================*/void init0int() interrupt 0{uint timer_us = 0;TR0=0; //关闭定时器0timer_us =TH0*256+TL0;if(timer_us>190)timer_us=timer_us-180; //修正测距的距离if(timer_us<=735){timer_us=timer_us-96;//二次修正}if(timer_us>5059){timer_us+=29;}if(timer_us>5470){timer_us+=29;}if(timer_us>6410){timer_us+=29;}if(timer_us>7410){timer_us+=29;}if(timer_us>8410){timer_us+=29;}if(timer_us>9410){timer_us+=29;}if(timer_us>10410){timer_us+=29;}length = ((unsigned long)(speed)*timer_us)/2000;//计算长度,是扩大100倍flag = 0;EA = 0; //禁止所有中断}/*=========================================================== =========功能:在1602显示一个字符数据说明:显示一个字符数据0~256. 从左至右显示数据3位============================================================= =========*/void DisplayCharData(uchar X, uchar Y,uchar ZiFu){uchar i=0;uchar V alueBCD[3];V alueBCD[0] = ZiFu / 100; //求出百位数据ZiFu = ZiFu % 100;V alueBCD[1] = ZiFu / 10; //求出十位数据V alueBCD[2] = ZiFu % 10; //求出个位数据for(i=0;i<3;i++)//输出显示的数值{DisplayOneChar(X,Y+i,V alueBCD[i]+0x30); //显示一个字符}}/*=========================================================== ================超出测量时间============================================================= ================*/void timer0int (void) interrupt 1{TR0=0; //关闭定时器0length = 0; //超出测量时间显示示0flag = 1; //EA = 0; //禁止所有中断}/*=========================================================== ===========LCM初始化============================================================= =========*/void LCMInit(void){LCM_Data = 0;WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号DelayMs(5);WriteCommandLCM(0x38,0);DelayMs(5);WriteCommandLCM(0x38,0);DelayMs(5);WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显示WriteCommandLCM(0x01,1); //显示清屏WriteCommandLCM(0x06,1); // 显示光标移动设置WriteCommandLCM(0x0C,1); // 显示开及光标设置DelayMs(100);}/*=========================================================== =========显示光标的位置============================================================= =======*/void DisplayCursorPos( unsigned char X, unsigned char Y){X &= 0x1;Y &= 0xF; //限制Y不能大于15,X不能大于1if (X) Y |= 0x40; //当要显示第二行时地址码+0x40;Y |= 0x80; // 算出指令码WriteCommandLCM(Y, 1); //这里不检测忙信号,发送地址码}/*=========================================================== =========按指定位置显示一串字符:第X 行,第y列注意:字符串不能长于16个字符============================================================= =========*/void DisplayListChar(uchar X,uchar Y,uchar delayms, uchar code *DData){unsigned char ListLength;ListLength = 0;X &= 0x1;Y &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]!='\0') //若到达字串尾则退出{if (Y <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符ListLength++;Y++;DelayMs(delayms);//延时显示字符串}elsebreak;//跳出循环体}}/*=========================================================== =========设定延时时间:x*1us============================================================= =======*/void DelayUs(uint us){while(us--);}/*=========================================================== =========设定延时时间:x*1ms============================================================= =======*/void DelayMs(uint Ms){uint i,TempCyc;for(i=0;i<Ms;i++){TempCyc = 250;while(TempCyc--);}}//==============================LCD1602显示子程序================================================/*=========================================================== ==========写数据函数: E =高脉冲RS=1 RW=0============================================================= =========*/void WriteDataLCM(unsigned char WDLCM){ReadStatusLCM(); //检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; //若晶振速度太高可以在这后加小的延时LCM_E = 0; //延时LCM_E = 1;}/*=========================================================== =========写指令函数: E=高脉冲RS=0 RW=0============================================================= =========*/void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCM(); //根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;}/*=========================================================== =========//读数据============================================================= =========*/unsigned char ReadDataLCM(void){LCM_RS = 1;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);}/*=========================================================== =========正常读写操作之前必须检测LCD控制器状态:E=1 RS=0 RW=1;DB7: 0 LCD控制器空闲,1 LCD控制器忙。
(完整版)基于51单片机的超声波测距系统设计

完满 WORD 格式整理1设计任务本文采纳超声波传感器 ,IAP15 单片机以及 LCD显示模块设计了一种超声波测距显示器,能够实现丈量物体到仪器距离以及显示等功能。
是一种构造简单、性能稳固、使用方便、价钱便宜的超声波距离丈量器,拥有必定的适用价值。
2设计思路超声波测距超声波超声波是指频次在 20kHz 以上的声波,它属于机械波的范围。
最近几年来,跟着电子丈量技术的发展,运用超声波作出精准丈量已成可能。
跟着经济发展,电子丈量技术应用愈来愈宽泛,而超声波丈量精准高,成本低,性能稳固则备受喜爱。
超声波也按照一般机械波在弹性介质中的流传规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质汲取而发生衰减等。
正是因为拥有这些性质,使得超声波能够用于距离的丈量中。
跟着科技水平的不停提升,超声波测距技术被宽泛应用于人们平时工作和生活之中。
一般的超声波测距仪可用于固定物位或液位的丈量,合用于建筑物内部、液位高度的丈量等。
超声在空气中测距在特别环境下有较宽泛的应用。
利用超声波检测常常比较快速、方便、计算简单、易于实现及时控制,并且在丈量精度方面能达到工业适用的指标要求,所以为了使挪动机器人能够自动闪避阻碍物行走,就一定装备测距系统,以使其及时获得距阻碍物的地点信息(距离和方向)。
所以超声波测距在挪动机器人的研究上获得了宽泛的应用。
同时因为超声波测距系统拥有以上的这些长处,所以在汽车倒车雷达的研制方面也获得了宽泛的应用。
超声波测距原理最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时辰的同时计数器开始计时,超声波在空气中流传,途中遇到阻碍物面阻拦就立刻反射回来,超声波接收器收到反射回的超声波就立刻停止计时。
超声波在空气中的流传速度为340m/s,依据计时器记录的时间 t ,就能够计算出发射点距阻碍物面的距离s,即:s=340t/2 。
因为超声波也是一种声波,其声速 V 与温度有关。
用51单片机设计超声波测距系统的设计原理和电路(附源程序)

---------------------------------------------------------------最新资料推荐------------------------------------------------------用51单片机设计超声波测距系统的设计原理和电路(附源程序)基于51单片机的超声波测距仪说明书引言超声波测距仪,可使用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。
利用超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制。
一、性能要求该超声波测距仪,要求测量范围在0.08-3.00m,测量精度1cm,测量时和被测物体无直接接触,能够清晰稳定地显示测量结果。
二、工作原理及方案论证超声波传感器及其测距原理超声波是指频率高于20KHz 的机械波。
用超声波传感器产生超声波和接收超声波,习惯上称为超声波换能器或超声波探头。
超声波传感器有发送器和接收器.超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
超声波测距的原理一般采用渡越时间法 TOF(timeofflight)。
1/ 14首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源和障碍物之间的距离。
根据要求并综合各方面因素,采用 AT89C52单片机作为主控制---------------------------------------------------------------最新资料推荐------------------------------------------------------ 器,用动态扫描法实现 LED 数字显示,超声波驱动信号用单片机的定时器完成,超声波测距仪的系统框图如下图所示:图1 超声波测距仪系统设计框图三、系统硬件部分硬件部分主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。
用51单片机设计超声波测距系统的设计原理及电路(附源程序)

基于51单片机的超声波测距仪说明书引言超声波测距仪,可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。
利用超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制。
一、性能要求该超声波测距仪,要求测量范围在0.08-3.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。
二、工作原理及方案论证超声波传感器及其测距原理超声波是指频率高于20KHz的机械波。
用超声波传感器产生超声波和接收超声波,习惯上称为超声波换能器或超声波探头。
超声波传感器有发送器和接收器.超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
超声波测距的原理一般采用渡越时间法TOF(timeofflight)。
首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离。
根据要求并综合各方面因素,采用AT89C52单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距仪的系统框图如下图所示:图1 超声波测距仪系统设计框图三、系统硬件部分硬件部分主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。
1.单片机系统及显示电路单片机采用AT89C52来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。
单片机通过P1.1引脚发射脉冲控制超声波的发送,然后单片机不停的检测外中断0口INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。
计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。
显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管驱动。
(完整版)基于单片机的超声波测距仪毕业设计

目录摘要 (1)Abstract (2)第1章绪论 (3)1.1 课题研究的目的与意义 (3)1.2 国内外研究动态 (3)1.3 论文主要内容 (4)第2章系统的总体设计 (5)2.1 设计方案 (5)2.2 系统的硬件选型 (5)2.2.1 单片机选型 (5)2.2.2 超声波传感器选型 (6)2.2.3 超声波接收芯片选型 (6)2.2.4 显示器选型 (7)第3章系统的硬件设计 (8)3.1 基本系统构成 (8)3.1.1 系统电源电路 (9)3.1.2 超声波发射电路 (9)3.1.3 超声波接收电路 (10)3.1.4 晶振电路 (11)3.1.5 复位电路 (11)3.1.6 显示电路 (12)3.1.7 报警电路 (13)3.2 电路原理图 (13)3.3 PCB图 (14)第4章系统的软件设计 (15)4.1 软件keil的简介 (15)4.2 主程序流程 (16)4.3 超声波收发模块程序设计 (16)4.3.1 超声波收发中断子程序 (17)4.3.2 距离测算子程序 (19)4.4 显示模块程序设计 (20)4.4.1 初始化程序 (22)4.4.2 显示程序 (22)4.4.3 延时程序 (23)4.5 现场实测距离显示 (25)第5章结论 (26)5.1 总结 (26)5.2 系统实物图形 (27)5.3 展望 (27)致谢 (28)参考文献 (29)附录 (30)摘要本文阐述了基于51单片机的超声波测距仪的设计过程和运行结果。
AT89C51单片机控制定时器产生方波脉冲,同时计时器T1开始计时。
发出的超声波在空气中传播,而后遇到障碍物体的表面时超声波折返,超声波接收模块接收返回的超声波信号并且把超声波信号转化为电信号。
计时器记录超声波往返所用的时间,从而由51单片机计算得到实测距离。
再使用四位数码管显示距离。
硬件电路由超声波发射电路、超声波接收电路、电源电路、四位数码管显示电路、电铃报警电路、12MHz晶振电路等组成。
基于51单片机超声波测距报警系统课程设计

基于51单片机超声波测距报警系统课程设计一、引言超声波测距技术是一种常见的非接触式测距技术,具有测距范围广、精度高等优点。
在日常生活中,超声波测距技术被广泛应用于车辆倒车雷达、智能家居中的人体感应等领域。
本文将介绍基于51单片机的超声波测距报警系统的课程设计。
二、设计思路本课程设计主要分为硬件设计和软件设计两部分。
硬件部分主要包括超声波模块、LCD显示屏、蜂鸣器等模块的连接和电路设计;软件部分主要包括51单片机程序设计及LCD显示程序编写。
三、硬件设计1. 超声波模块连接超声波模块是实现测距功能的核心部件。
在本课程设计中,我们采用HC-SR04型号的超声波模块。
该模块需要连接到51单片机上,具体连接方式如下:- 将VCC引脚连接到51单片机上的5V电源;- 将GND引脚连接到51单片机上的GND;- 将Trig引脚连接到P2.0口;- 将Echo引脚连接到P2.1口。
2. LCD显示屏连接LCD显示屏用于显示测距结果和报警信息。
在本课程设计中,我们采用1602型号的LCD显示屏。
该模块需要连接到51单片机上,具体连接方式如下:- 将VSS引脚连接到51单片机上的GND;- 将VDD引脚连接到51单片机上的5V电源;- 将VO引脚连接到一个10K电位器,再将电位器两端分别接到GND 和5V电源;- 将RS引脚连接到P1.0口;- 将RW引脚连接到P1.1口;- 将EN引脚连接到P1.2口;- 将D4-D7引脚分别连接到P0口的高四位。
3. 蜂鸣器连接蜂鸣器用于报警。
在本课程设计中,我们采用被动式蜂鸣器。
该模块需要连接到51单片机上,具体连接方式如下:- 将正极引脚(一般为长针)连接到51单片机上的P3.7口;- 将负极引脚(一般为短针)连接到51单片机上的GND。
四、软件设计1. 51单片机程序设计在本课程设计中,我们采用Keil C51作为编程工具,使用C语言编写程序。
主要程序流程如下:- 定义超声波模块的Trig和Echo引脚;- 定义LCD显示屏的RS、RW、EN和D4-D7引脚;- 定义蜂鸣器的引脚;- 定义变量存储测距结果和报警状态;- 初始化LCD显示屏、超声波模块等模块;- 循环执行以下操作:- 发送超声波信号并计算回波时间,从而得到距离值;- 根据距离值判断是否需要报警,并控制蜂鸣器发出报警声音;- 将测距结果和报警状态显示在LCD显示屏上。
基于单片机超声波测距仪的设计

基于单片机超声波测距仪的设计一、引言随着科技的进步和应用的广泛,超声波测距技术在各个领域中得到了广泛的应用。
超声波测距技术通过发送超声波并接收其反射信号,利用声波在空气中传播速度恒定的特性,可以精确地测量目标与传感器之间的距离。
基于单片机的超声波测距仪是一种常见的应用,本文将介绍该测距仪的设计原理、硬件和软件实现。
二、设计原理基于单片机的超声波测距仪的设计原理主要包括超声波发射与接收、信号处理和距离计算三个部分。
1. 超声波发射与接收该测距仪通过发送一定频率的超声波脉冲,并接收其反射信号来实现测距功能。
超声波发射器将电信号转换为超声波信号,并经过超声波传感器发射。
当超声波信号遇到目标物体后,一部分信号会被目标物体反射,经超声波传感器接收并转换为电信号。
2. 信号处理接收到的电信号经过放大、滤波和波形整形等处理,使信号能够被单片机准确识别和处理。
放大电路将微弱的接收信号放大到单片机能够处理的范围,滤波电路则去除掉噪声干扰,波形整形电路将信号整形为单片机可读取的数字信号。
3. 距离计算通过测量超声波的发射和接收时间,可以计算出目标物体与传感器之间的距离。
超声波在空气中传播速度恒定,通过测量超声波的往返时间,可以得到距离的数值。
三、硬件设计基于单片机的超声波测距仪的硬件设计主要包括超声波发射与接收电路、信号放大电路、滤波电路、波形整形电路和单片机控制电路等部分。
1. 超声波发射与接收电路超声波发射与接收电路由超声波发射器和超声波传感器组成。
超声波发射器将单片机输出的电信号转换为超声波信号,超声波传感器将接收到的超声波信号转换为电信号。
2. 信号放大电路信号放大电路用于放大传感器接收到的微弱信号,使其能够被后续的电路准确处理。
一般采用放大器电路来实现信号放大功能。
3. 滤波电路滤波电路用于去除信号中的噪声干扰,使后续处理的信号更加准确。
可以采用滤波器电路来实现滤波功能。
4. 波形整形电路波形整形电路将接收到的信号整形为单片机可读取的数字信号。
单片机课程设计超声波测距离

超声波测距系 统的功耗:功 耗较低,适合
长时间使用
评估指标:包括测量精度、 响应速度、稳定性等
测试方法:采用标准测试方法, 如距离测量误差、响应时间等
改进建议:针对测试结果,提 出改进方案,如优化算法、提
高硬件性能等
评估结果:对改进后的系统性 能进行再次评估,确保达到预
期效果
总结与展望
课程设计目标:掌握超声波测距原 理,提高实践能力
提高稳定性:通过 优化硬件设计和软 件算法,提高系统 的稳定性
拓展应用领域:将 超声波测距技术应 用于更多领域,如 机器人、无人机等
感谢您的观看
汇报人:
测试条件:温度、湿度、光照、 噪音等
测试方法:静态测试、动态测 试、模拟测试等
准备测试环境:确保测 试环境无干扰,温度适
宜,湿度适中
连接测试设备:将超声 波测距系统与测试设备 连接,确保连接稳定
设定测试参数:设定测 试距离、测试次数、测
试精度等参数
启动测试:启动超声波 测距系统,开始测试
记录测试数据:记录测 试过程中的距离、时间、
超声波传感器通过发射超声波信号,接收反射信号,计算距离 超声波传感器由发射器、接收器和信号处理电路组成 发射器发出超声波信号,接收器接收反射信号,信号处理电路计算距离 超声波传感器的测量精度与发射频率、接收灵敏度、信号处理算法等因素有关
超声波测距原理:通过测量超声波在空气中的传播时间和距离,计算目标物体的距离 误差来源:超声波在空气中的传播速度、温度、湿度、气压等环境因素的影响 误差分析:通过实验数据,分析误差来源和影响程度,提出改进措施 误差补偿:通过软件或硬件方法,对误差进行补偿,提高测量精度
● 优势: a. 控制精度高:可以精确控制超声波发射和接收的时间 b. 响应速度快:可以快速响应超声波信号的变化 c. 功耗低:适合长时间连续工作 d. 体积小:便于携带和安装
基于单片机的超声波测距仪系统设计

基于单片机的超声波测距仪系统设计一、本文概述随着科技的不断发展,超声波测距技术因其非接触性、高精度和快速响应等优点,在机器人导航、工业自动化、智能家居等领域得到了广泛应用。
本文旨在设计一种基于单片机的超声波测距仪系统,通过深入研究超声波测距原理,结合单片机控制技术,实现一种低成本、高性能的超声波测距解决方案。
文章首先介绍了超声波测距的基本原理和常用方法,然后详细阐述了基于单片机的超声波测距仪的硬件设计,包括超声波发射电路、接收电路、信号处理电路等关键部分的设计思路和实施方法。
接着,文章对测距软件算法进行了深入探讨,包括超声波传播时间的测量、距离计算等关键步骤的实现。
文章对设计的系统进行了测试,验证了系统的可靠性和稳定性。
通过本文的研究,希望能为相关领域提供有益的参考,推动超声波测距技术的发展。
二、超声波测距原理超声波测距是一种非接触式的距离测量方式,其基本原理是利用超声波在空气中的传播速度以及回声的时间差来计算距离。
超声波测距仪主要由超声波发射器、接收器和控制电路组成。
在超声波测距仪中,单片机发出控制信号给超声波发射器,使其发射出一定频率的超声波。
当超声波在空气中传播遇到障碍物时,会发生反射,反射波被接收器接收。
由于超声波在空气中的传播速度已知(约为340m/s),单片机可以通过测量发射信号和接收反射信号之间的时间差,即回声时间,来计算出超声波从发射到接收所经过的距离。
具体计算公式为:距离 = (超声波速度×回声时间) / 2。
需要注意的是,由于超声波在传播过程中会受到空气温度、湿度、风速等因素的影响,因此实际测量中需要对这些因素进行补偿,以提高测距的精度。
为了避免测量误差,还需要在硬件设计中考虑超声波发射和接收的角度、距离以及环境噪声等因素。
在单片机系统中,通过编程实现超声波发射、接收以及回声时间的测量。
单片机可以根据实际需要选择合适的计时器或定时器,对发射和接收信号进行精确的时间记录,并通过算法计算出距离值。
基于单片机的超声波测距系统设计

基于单片机的超声波测距系统设计一、本文概述随着科技的飞速发展,超声波测距技术以其非接触、高精度、实时性强等优点,在众多领域如机器人导航、自动驾驶、工业控制、安防监控等中得到了广泛应用。
单片机作为一种集成度高、控制灵活、成本较低的微控制器,是实现超声波测距系统的理想选择。
本文旨在探讨基于单片机的超声波测距系统的设计原理、硬件构成、软件编程及实际应用,以期为相关领域的科研人员和技术人员提供参考。
本文将首先介绍超声波测距的基本原理和关键技术,包括超声波的传播特性、测量原理及误差分析。
接着,详细阐述基于单片机的超声波测距系统的硬件设计,包括单片机的选型、超声波收发模块的选择与连接、信号处理电路的设计等。
在此基础上,本文将介绍系统的软件设计,包括超声波发射与接收的时序控制、距离数据的处理与显示等。
还将讨论系统的低功耗设计、抗干扰措施以及在实际应用中的优化策略。
本文将通过具体实例,展示基于单片机的超声波测距系统在机器人定位、障碍物检测等场景中的应用,以验证系统的可行性和实用性。
本文期望能为相关领域的研究提供有益的参考,推动超声波测距技术的进一步发展和应用。
二、超声波测距原理超声波测距系统主要基于超声波在空气中的传播速度以及反射原理进行设计。
超声波是一种频率高于20kHz的声波,其传播速度在标准大气条件下约为343米/秒。
在超声波测距系统中,超声波发射器向目标物体发射超声波,当超声波遇到目标物体后,会发生反射,反射的超声波被超声波接收器接收。
测距的原理在于测量超声波从发射到接收的时间差。
设超声波发射器发射超声波的时间为t1,接收器接收到反射波的时间为t2,则超声波从发射到接收所经历的时间为Δt = t2 - t1。
由于超声波在空气中的传播速度是已知的,所以可以通过测量时间差Δt来计算目标物体与测距系统之间的距离D。
距离D的计算公式为:D = V * Δt / 2,其中V为超声波在空气中的传播速度。
在实际应用中,为了确保测量的准确性,通常会采用一些技术手段来减少误差。
基于单片机的超声波测距仪的设计毕业设计论文

摘要超声波具有很强的指向性,消耗能量缓慢,距离传播较远等优点,所以,在利用自动化控制技术和传感器应用技术相结合的测距方案中,利用超声波专有特性测距是目前最普遍的一种方式,它被广泛地应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。
本论文详细的介绍了超声波传感器的原理及特性,并且介绍了Atmel公司的AT89C52单片机的性能与特点,且在分析了超声波测距原理的基础上,指出了本次方案的思路和所需考虑的问题,给出了以AT89C52单片机为核心,LCD显示电路,硬件制作和软件设计为一体的设计方案。
矚慫润厲钐瘗睞枥庑赖。
关键字:超声波测距;单片机;测距;AT89C52;LED显示屏AbstractUltras onic wave has strong poin ti ng to n ature ,slowly en ergy con sumpti on ,propagat ing dista nce farther ,so, in utiliz ing the scheme of dista nce finding that sen sor tech no logy and automatic con trol tech no logy comb ine together ,ultras onic wave finds range to use the most gen eral one at prese nt ,it applies to guard aga inst theft , move backward the radar , water level measuri ng , buildi ng con structi on site and some in dustrial sce nes exte nsivel聞. 創沟燴鐺險爱氇谴净。
This subject has introduced principle and characteristic of the ultrasonic sensor in detail ,and the performa nce and characteristic of on e-chip computer AT89C52 of Atmel Company ,and on the basis of analyzing principle that ultrasonic wave finds range ,the systematic thi nking and questi ons n eeded to con sider that have poin ted out that desig ns and finds range .Given the AT89C52, LCD display circuit, the hardware and the software desig n productio n残骛楼諍锩瀨濟溆塹籟。
基于单片机超声波测距系统的设计

基于单片机超声波测距系统的设计1. 简介单片机超声波测距系统是一种用于测量目标物体距离的电子设备。
通过利用超声波传感器和单片机等技术,可以准确、快速地获取目标物体与传感器的距离。
本文将详细介绍基于单片机超声波测距系统的设计原理、硬件电路搭建和软件编程等方面的内容。
2. 设计原理2.1 超声波测距原理超声波测距原理基于声波的传播和反射。
系统通过超声波传感器向目标物体发射超声波脉冲,当超声波脉冲遇到目标物体并被反射回来时,系统即可通过测量发射和接收超声波之间的时间差来计算目标物体与传感器之间的距离。
2.2 单片机的作用单片机在超声波测距系统中充当着核心控制器的角色。
它负责接收来自超声波传感器的信号,根据时间差计算出距离,并通过显示屏或其他方式将测量结果展示出来。
此外,单片机还可以与其他硬件模块进行通信,实现更加复杂的功能。
3. 硬件电路搭建3.1 材料准备•单片机:选择一款适合的单片机作为控制器,如Arduino Uno。
•超声波传感器:常用的有HC-SR04型号的传感器。
•电源模块:提供系统所需的电源。
•连接线和面包板:用于连接各个硬件模块。
•显示模块(可选):用于显示测量结果。
3.2 硬件连接根据超声波传感器和单片机的引脚定义,将它们正确地连接在一起。
一般情况下,超声波传感器需要连接到单片机的数字输入输出引脚和电源引脚上。
3.3 电源接入将电源模块连接到整个系统上,为单片机和超声波传感器提供所需的电源。
4. 软件编程4.1 软件环境准备安装Arduino IDE等开发环境,并确保能够正确地连接和上传程序到单片机。
4.2 程序编写在Arduino IDE中编写程序,实现测距功能。
以下是一个简单的示例代码:const int trigPin = 2; // 超声波传感器的Trig引脚连接到单片机的2号引脚const int echoPin = 3; // 超声波传感器的Echo引脚连接到单片机的3号引脚void setup() {pinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);Serial.begin(9600);}void loop() {long duration, distance;digitalWrite(trigPin, LOW);delayMicroseconds(2);digitalWrite(trigPin, HIGH);delayMicroseconds(10);digitalWrite(trigPin, LOW);duration = pulseIn(echoPin, HIGH);distance = duration * 0.034 / 2;Serial.print("Distance: ");Serial.print(distance);Serial.println(" cm");delay(500);}4.3 上传程序将程序上传到单片机,确保连接正常后,即可进行超声波测距。
STC单片机超声波测距

结论:该装置设有两种工作方式,相辅相成, 简单易使用、原理明确,工作稳定可靠,满足 试验使用要求。
实物图
本测量装置的优点
基于STC12LE5A60S2单片机控制 特点为: •可两种方式工作,一般测距装置多为收发一体 ,遇到复杂的环境时干扰太多,以致不能正常 测距,而采用分离式工作状态,克服了复杂环 境的影响。 •进行了温度补偿,提高了测量精度。 •采用的单片机进行处理测距,可实现在不同环 境下的参数修改,使之更加精确。 •可视环境而进行模式的自动切换,功能齐全。
3.源部分:两节型号为18650的锂电池。设计有降压 模块,采用LM2940T芯片。
模式二工作状态
将三部分组合后利用反射超声波,接收后完成 计时。并由数码管来显示 ,电路工作原理如模 式一。
电路图
发射部分
接收部分
接收部分的超声波放大电路
数据测量与分析
实距 mm 2000 2600 3200 3600 4200 4600 5000
超声波测距
基于 STC12C5A60S2单片机的 超声波测距装置介绍
设计原理与方法
基于STC12LE5A60S2单片机控制,采用超 声波为媒介计算物体间距离。
利用超声波易于定向发射、方向性好、强度 易控制、与被测量物体不需要直接接触的优点。
超声波测距的原理是利用超声波在空气中 的传播速度为已知,测量声波在发射后到接收 装置时间,根据发射和接收的时间差计算出发 射点到障碍物的实际距离。由此可见,超声波 测距原理与雷达原理是一样的。
测量值mm 1997 2601 3197 3602 4203 4607 5021
超声波测距系统 基于51单片机的超声波倒车测距报警系统设计

引言超声波是一种频率在20KHz以上的机械波,在空气中的传播速度约为340 m/s(20°C 时)。
超声波可由超声波传感器产生,常用的超声波传感器两大类:一类是采用电气方式产生超声波,一类是用机械方式产生超声波,目前较为常用的是压电式超声波传感器。
由于超声波具有易于定向发射,方向性好,强度好控制,对色彩、光照度不敏感,反射率高等特点,因此被广泛应用于无损探伤,距离测量、距离开关、汽车倒车防撞、智能机器人等领域。
1 系统原理框图本设计的整体框图如图1所示,主要由超声波发射,超声波接收与信号转换,按键显示电路与温度传感器电路组成。
超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差T,然后求出距离S=CT/2,式中的C为超声波波速。
在常温下,空气中的声速约为340m/s。
由于超声波也是一种声波,其传播速度C 与温度有关,在使用时,如果温度变化不大,则可认为声速是基本不变的。
因本系统测距精度要求很高,所以通过对温度的检测对超声波的传播速度加以校正。
超声波传播速度确定后,只要测得超声波往返的时间,如图2所示,即可求得距离。
这就是超声波测距系统的基本原理。
2 超声波信号的发射与接收电路发射部分电路如图3所示,主要由脉冲调制信号产生电路,隔离电路以及驱动电路组成,用来为超声波传感器提供发送信号。
脉冲调制信号产生电路中通过单片机对555定的复位(RESET)端的控制,使555定时器分时工作从而生产生脉冲频率为40KHz,周期为30ms的脉冲调制信号,信号波形如图2所示,本设计中一个周期内发送10个脉冲信号。
隔离电路主要是由两个与非门组成,对输出级与脉冲产生电路之间进行隔离。
输出级由两个通用型集成运放TL084CN 组成,由于超声波传感器的发射距离与其两端所加的电压成正比,因此要求电路要产生足够大的驱动电压,其基本原理就是一个比较电路,当输入信号Vi>2.5V时,运放A的输出电压VA=+12V,运放B的输出电压VB=-12V,当输入信号Vi<2.5V时,运放A的输出电压VA="-12V",运放B的输出电压VB=+12V,所以在超声传感器两端得到两个极性完全相反的对称波形,即VB=-VA,所以加在超声波传感器两端的电压V=VA-VB=2VA,其两端的电压可达到24V,从而保证超声波能够发送较远的距离,提高了测量量程。
基于单片机的超声波测距系统的设计

基于单片机的超声波测距系统的设计1. 摘要基于单片机的超声波测距系统利用了超声波的频率在20KHZ以上,具有方向性强、耗能慢、传播距离远等优点。
在传感器技术与自动控制技术相结合的测距程序中,超声波测距是最常见的应用之一,被广泛应用于防盗、倒车雷达、水位测量、建筑工地和一些工业用地。
本系统的设计主要包含了硬件电路和软件程序两部分。
通过分析超声波测距的基本原理,选用合适的硬件电路部分,并写入相应的控制代码,以实现一个超声波测距系统的设计思路与方案。
在设计中,核心控制单元选用了STC89C52单片机,利用超声波传感器检测出超声波信号从传感器发出、碰到待测物并反射、最后接收器接收到返回的超声波信号这一过程的时间间隔,通过超声波在一定温度下的传播速度,利用公式得出传感器与待测物之间的距离,并将结果通过1602液晶显示出来。
系统还建立了按键模块和声光报警模块,以提升实用性,并建立了温度补偿模块,以提高测距的精确度。
系统采用模块化的结构,主要由温度检测模块、超声波测距模块、独立按键模块和供电电路四部分构成输入部分,由LCD1602显示模块、蜂鸣器、LED构成输出部分,由STC89C52单片机作为中控部分处理输入部分数据并控制输出部分。
通过Proteus仿真软件验证了硬件电路和软件代码设计。
2. 绪论随着科技的不断发展,人们对距离测量的需求日益增长。
在工业自动化、智能交通、机器人导航等领域,精确的距离测量是实现系统智能化和自动化的关键。
超声波测距技术因其非接触、高精度、低成本等优点,成为距离测量的首选方法之一。
基于单片机的超声波测距系统是利用单片机控制超声波的发射和接收,通过计算超声波在空气中传播的时间来测量距离。
相比传统的机械式测距方法,基于单片机的超声波测距系统具有更高的测量精度和更广泛的应用范围。
本文旨在设计一个基于单片机的超声波测距系统,通过研究超声波的特性、传感器的选择、硬件电路的设计和软件程序的编写,实现对目标距离的高精度测量。
基于51单片机的超声波测距系统的设计

基于51单片机的超声波测距系统的设计O 引言超声波是指频率大于20 kHz 的在弹性介质中产生的机械震荡波。
由于超声波频率较高,穿透力强,指向性强,传输过程中衰减少,能量消耗缓慢,在介质中传播的距离较远,遇到杂质或分界面时会产生反射波,因此常被用于非接触式测距。
并且超声波对光线、色彩和电磁场不敏感,因此超声波测距对环境有较好的适应能力。
广泛应用于汽车倒车、机器人避障、工业测井、水库液位测量、管道长度测量等需要自动进行非接触测距的场合。
1 超声波测距原理Pellarn 和Galt 于1946 年提出了脉冲回波法,其工作原理是:用超声脉冲激励超声探头向外辐射超声波,同时接收从被测物体反射回来的超声波(简称回波),通过检测或估计从发射超声波至接收回波所经历的射程时间ToF(Time of Flight),按下式计算超声波探头与被测物体之间的距离d,即其中。
c 为声波在空气介质中的传播速度。
2 系统构成本系统硬件电路由单片机、超声波发射电路、超声波接收电路、测温电路、显示电路、报警电路等构成,如图1 所示。
3 系统程序设计3.1 主程序主程序首先对系统环境初始化,设置定时器TO 工作模式为16 位定时/计数器模式,总中断允许位置1 并给显示端口清0;然后调用超声波发生子程序送出若干个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起直射渡触发,从发射开始一直到“虚假反射波”结束这段时间内,不开放外部中断(INTO)申请,便可有效躲避干扰,但同时也会造成测试“盲区”。
假设延时约0.1 ms 后,才打开外部中断接收返回的超声波信号,当温度为20℃,测量盲区为d=1×10-2×344=1.72 cm。
3.2 超声波发生子程序和接收子程序超声波发生子程序的作用是通过P1.0 端口发送超声波。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[收稿日期]2003207208
[作者简介]李建法(1955—),男,河南林州人,副教授,
从事自动控制研究。
超声波测距的电路设计与单片机编程
李建法,李立新,李勇,牛洹波
(安阳师范学院物理系,河南安阳455000)
[摘 要]介绍了基于单片机处理的超声波测距系统的组成,工作原理和程序设计方法。本系统可用于需要测量距
离参数的各种应用场合。
[关键词]超声波;单片机;
测距电路
[中图分类号]TP36811 [文献标识码]A [文章编号]167125330(2003)0520047202
距离是在不同的场合和控制中需要检测的一个参数
,
所以,测距就成为数据采集中要解决的一个问题。尽管测距有多种方式,比如,激光测距,微波测距,红外线测距和超声波测距等。但是,超声波测距不失为一种简单可行的方法。虽然超声波测距电路多种多样,甚至已有专用超声波测距集成电路。但是,有的电路复杂,技术难度大,有的调试困难,有的元件不易购买。本文介绍的电路,成本低廉,性能可靠,所用元件易购,并且利用测距原理,结合单片机的数据处理,使测量精度提高,电路实现容易,无须调试,工作稳定可靠。超声波测距通常采用度越时间法,即利用s=vt/2计算被测物体的距离。式中s为收发头与被测物体之间的距离,v为超声波在介质中的传播速度(v=331.41+T/273m/s),t为超声波的往返时间间隔。工作原理为:发射头发出的超声波以速度v在空气中传播,在到达被测物体时被其表面反射返回,由接收头接收,其往返时间为t,由s算出被测物体的距离。T为环境温度,在测量精度要求高的场合必须考虑此影响,但在一般情况下,可舍去此法,由软件进行调整补偿。1 电路设计电路框图如图1所示。图1 整机电路框图111超声波发送电路超声波发送电路如图2所示。555电路产生40KH的振荡信号,门电路产生低频调制脉冲,脉冲持续时间为160μs左右,脉冲间隔为30—40ms(视需要调整)。此脉冲信号一路作为振荡器的置位脉冲,另一路作为计时的起始
脉冲。在置位期间,振荡器输出频率为40KH的脉冲信号
(约8个脉冲)
,由超声波发射头T40—16
发射出去。
图2 超声波发送电路
112
超声波接收电路
图3 超声波收电路
超声波的接收电路如图3所示。它采用通用的FPS—
4091红外接收组件,但是,需要将红外接收管PH302
换为
超声波接收头R40—16。因为在距离较远时,回波信号很
弱,使用此接收组件,可以在有效的测距范围内保证接收
到的信号其输出达到TTL电平,避免了为达到几十万倍的
放大量而采用多级运放组成的调试困难的高增益放大电
路,十分便于制作,且电路无需调试。图中T为进一步整
形放大,可增大测量距离,反相器为满足单片机需要不同
极性的信号而加入。
2
软件设计
本系统的程序主要包括启、停脉冲检测,计时,盲区延
74
2003
年 安阳师范学院学报
© 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
时,数据处理,修正,显示等。因为采用的是渡越时间法进行测距,所以要测出超声波收、发之间的时间t,则距离s=图4 发收端工作时序图vt/2。电路的工作时序如图4所示,其中a脉冲为发送端的置位脉冲,同时作为计时器的起始脉冲;b脉冲为虚假脉冲(由绕射产生,应避开);a、b的时间间隔为盲区;c脉冲为接受端接收到的有效回波脉冲,用于停止计时器的计时。程序的主要任务就是检测a、c脉冲,以启停计时器的计时,进而得出时间,再由数据处理、修正单元计算出实际距离,然后供显示。因为现在有多种不同的单片机,实际制作中根据习惯,采用不同系列的产品,所以,本文主要给出程序流图(见图5),说明编程思路,以及采用AT89C2051处理器的计时部分程序。计时部分程序如下:图5 ……
M1:JNBP1.0,M11;
起始脉冲
LJMPM1
M11:
;延时6ms,避开盲区=====
DL3:MOVR5,#6
DL31:MOVR6,#100
DL32:NOP
NOP
NOP
DJNZR6,DL32
DJNZR5,DL31
;计时=====
MOVR1,#0
M2:MOVR0,#0
M3:JNBP1.1,M5;
停止脉冲
INCR0
CJNER0,#100,M3
MOVR0,#0
INCR1
CJNER1,#15,M2;
最大测量距离限制
;计时结束,t=6ms+R030.1ms+R1310030.1ms===
===
M5:
……
[参考文献]
[1]何立民1单片机应用系统设计[M]1北京:
北京航空航
天出版社,19901
[2]何希才1新型集成电路及应用[M]1北京:
科学技术出
版社,20011
UltrasonticRangeFindingSystemBasedonMicrocontroller
LIJian2fa,LILi2xin,LIYong,NIUHuan2bo
(PhysicsDepartmentofAnyangTeachersCollege,Anyang455000,China)
Abstract:Thepaperpresentsthedesignofanultrasonicrangefindingsystembaseonmicrocontroller,Italsogivesa
detailedintroductiontothesoftwaretechnologyforimplementationaswellastheusesandscopesofthesystem
1
Keywords:ultrasonic;microcontroller;rangedetectingcirculum
84
安阳师范学院学报 2003年
© 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net