(参考)基于at89s52的超声波测距系统毕业论文.docVIP

  • 2
  • 0
  • 约2.72万字
  • 约 72页
  • 2018-06-08 发布于贵州
  • 举报

(参考)基于at89s52的超声波测距系统毕业论文.doc

(参考)基于at89s52的超声波测距系统毕业论文

基于AT89S52的超声波测距系统 关键词 AT89S52 DS18B20 超声波 设计思路 用于距离测量的超声波一般是指频率为40KHZ的机械波,利用其指向性强,能量消耗缓慢,传播距离远,遇到障碍物会发生反射等特性进行距离的测量。通过超声波发射传感器向某一方向发射超声波,在发射时刻的同时开始计时,利用声波在空气传播的速度和时间的乘积就可以得到被测障碍物的距离。本系统采用AT89S52单片机为主控器件来完成测量过程中信号的采集,控制和数据的处理,测量结果通过液晶显示器1602显示,测量过程中与被测物体没有直接接触。 系统结构框图 各部分电路的设计及原理 一 超声波电路的设计 电路如图1所示 图1 用于距离测量的超声波是由压电陶瓷的压电效应产生。为了提高超声波模块的可靠性,我们采用了成品的CKdz40-38F超声波模块,实物图如图2所示。 图2 超声波经固体表面或液体反射折回,由另一传感器接收,测量超声波整个运行时间t,计算出发射点与反射点的距离s(m/s): s=c×t/2 式中:c为超声波的传播速度(m/s)。 超声波在固体中传播速度最快,在气体中传播速度最慢,而且受温度影响最大。超声波在空气中的传播速度c(℃)大约为: c=C0+0.607×T 式中:T为环境摄氏温度(℃),C0为零度时超波的速度(m/s)。 二 测温电路的设计 电路如图3所示 图3 我们采用的DS18B20是Dallas 半导体公司生产的数字化温度传感器,温度测量范围为-55~+125,可编程为9位~12位A/D转换精度,且当温度在-10~+85之间时测量误差仅为0.5DS18B20通过单总线进行通信,DS18B20 或从DS18B20 送出,因此仅需要一条数据线(和地线)就能与中央微处理器进行通信。0.5℃,有效测距范围是7cm至300cm,测距误差小于3cm,功能已经基本实现。 作品应用 超声波测距,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于液位、井深、管道长度的测量等场合。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用#includereg51.h #includeINTRINS.H #include 1602.h #define uchar unsigned char #define uint unsigned int #define nop _nop_() //宏定义,空语句 float cc; uchar *p,a[3],*p1,*p2,*p3,disdata[4],vv[5]; void uchar2string(void); void LCD_disp_string(uchar x,uchar y,uchar *Date); sbit DQ=P3^7;//ds18b20与单片机连接口 sbit in=P3^3;//外部中断1,接CX20106的7脚 sbit csb=P1^0;//40KHz方波输出脚 uint tvalue,vvalue;//温度值 uchar tflag;//温度正负标志 /****************************/ void init(void);//初始化 void delay_nms(uint n);//延时nms void tran(void);//发射超声波 /***************************/ uint count=0,dis; uchar flag=0,high_time,low_time; uchar disp[4]; /******************************ds1820程序***************************************/ void delay_18B20(unsigned int i)//延时1微秒 { while(i--); } void ds1820rst()/*ds1820复位*/ { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低 delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); } uchar ds1820rd()/*读数据*/ { unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i--) { DQ = 0; //给脉冲信号 dat=1;

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档