超声波测距1602显示程序

超声波测距1602显示程序
超声波测距1602显示程序

#include //器件配置文件

#include

#define RX P2_7

#define TX P2_6

#define LCM_RW P3_4 //定义LCD引脚

#define LCM_RS P3_3

#define LCM_E P3_5

#define LCM_Data P1

#define Key_Data P2_0 //定义Keyboard引脚

#define Key_CLK P3_2

#define Busy 0x80 //用于检测LCM状态字中的Busy标识

void LCMInit(void);

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); void Delay5Ms(void);

void Delay400Ms(void);

void Decode(unsigned char ScanCode);

void WriteDataLCM(unsigned char WDLCM);

void WriteCommandLCM(unsigned char WCLCM,BuysC);

unsigned char ReadDataLCM(void);

unsigned char ReadStatusLCM(void);

unsigned char code mcustudio[] ={"https://www.360docs.net/doc/8e2855877.html,"};

unsigned char code email[] = {"fhwxaoo@https://www.360docs.net/doc/8e2855877.html, "};

unsigned char code Cls[] = {" "};

unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'};

static unsigned char DisNum = 0; //显示用指针

unsigned int time=0;

unsigned long S=0;

bit flag =0;

unsigned char disbuff[4] ={ 0,0,0,0,};

//写数据

void WriteDataLCM(unsigned char WDLCM)

{

ReadStatusLCM(); //检测忙

LCM_Data = WDLCM;

LCM_RS = 1;

LCM_E = 0; //若晶振速度太高可以在这后加小的延时

LCM_E = 0; //延时

LCM_E = 1;

}

//写指令

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);

}

//读状态

unsigned char ReadStatusLCM(void)

{

LCM_Data = 0xFF;

LCM_RS = 0;

LCM_RW = 1;

LCM_E = 0;

LCM_E = 0;

LCM_E = 1;

while (LCM_Data & Busy); //检测忙信号

return(LCM_Data);

}

void LCMInit(void) //LCM初始化

{

WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号

WriteCommandLCM(0x08,1); //关闭显示

WriteCommandLCM(0x01,1); //显示清屏

WriteCommandLCM(0x06,1); // 显示光标移动设置

WriteCommandLCM(0x0F,1); // 显示开及光标设置

}

//按指定位置显示一个字符

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

{

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;

X |= 0x80; //算出指令码

WriteCommandLCM(X, 1); //发命令字

WriteDataLCM(DData); //发数据

}

//按指定位置显示一串字符

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) {

unsigned char ListLength;

ListLength = 0;

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

while (DData[ListLength]>0x19) //若到达字串尾则退出

{

if (X <= 0xF) //X坐标应小于0xF

{

DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符

ListLength++;

X++;

}

}

}

//5ms延时

void Delay5Ms(void)

{

unsigned int TempCyc = 5552;

while(TempCyc--);

}

//400ms延时

void Delay400Ms(void)

{

unsigned char TempCycA = 5;

unsigned int TempCycB;

while(TempCycA--)

{

TempCycB=7269;

while(TempCycB--);

};

}

/********************************************************/ void Conut(void)

{

time=TH0*256+TL0;

TH0=0;

TL0=0;

S=(time*1.7)/100; //算出来是CM

if((S>=700)||flag==1) //超出测量范围显示“-”

{

flag=0;

DisplayOneChar(0, 1, ASCII[11]);

DisplayOneChar(1, 1, ASCII[10]); //显示点

DisplayOneChar(2, 1, ASCII[11]);

DisplayOneChar(3, 1, ASCII[11]);

DisplayOneChar(4, 1, ASCII[12]); //显示M

}

else

{

disbuff[0]=S%1000/100;

disbuff[1]=S%1000%100/10;

disbuff[2]=S%1000%10 %10;

DisplayOneChar(0, 1, ASCII[disbuff[0]]);

DisplayOneChar(1, 1, ASCII[10]); //显示点

DisplayOneChar(2, 1, ASCII[disbuff[1]]);

DisplayOneChar(3, 1, ASCII[disbuff[2]]);

DisplayOneChar(4, 1, ASCII[12]); //显示M

}

}

/********************************************************/ void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围{

flag=1; //中断溢出标志

}

/********************************************************/ void StartModule() //启动模块

{

TX=1; //启动一次模块

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

TX=0;

}

/********************************************************/

void delayms(unsigned int ms)

{

unsigned char i=100,j;

for(;ms;ms--)

{

while(--i)

{

j=10;

while(--j);

}

}

}

/*********************************************************/ void main(void)

{

unsigned char TempCyc;

Delay400Ms(); //启动等待,等LCM讲入工作状态

LCMInit(); //LCM初始化

Delay5Ms(); //延时片刻(可不要)

DisplayListChar(0, 0, mcustudio);

DisplayListChar(0, 1, email);

ReadDataLCM();//测试用句无意义

for (TempCyc=0; TempCyc<10; TempCyc++)

Delay400Ms(); //延时

DisplayListChar(0, 1, Cls);

while(1)

{

TMOD=0x01; //设T0为方式1,GA TE=1;

TH0=0;

TL0=0;

ET0=1; //允许T0中断

EA=1; //开启总中断

while(1)

{

StartModule();

// DisplayOneChar(0, 1, ASCII[0]);

while(!RX); //当RX为零时等待

TR0=1; //开启计数

while(RX); //当RX为1计数并等待

TR0=0; //关闭计数

Conut(); //计算

delayms(80); //80MS

}

}

}

超声波传感器测距原理

芀一、超声波测距原理 肅超声波测距原理是通过超声波发射器向某一方向发射超声波,在发射时刻的 同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差△t ,就可以计算出发射点距障碍物的距离S , 即: 膂S = v·△t /2 ① 芀这就是所谓的时间差测距法。 蝿由于超声波也是一种声波, 其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大, 则可认为声速是基本不变的。常温下超声波的传播速度是334 米/秒,但其传播速度V 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大,如温度每升高1 ℃, 声速增加约0. 6 米/ 秒。如果测距精度要求很高, 则应通过温度补偿的方法加以校正(本系统正是采用了温度补偿的方法)。已知现场环境温度T 时, 超声波传播速度V 的计算公式为: 螅V = 331.45 + 0.607T ② 芄 声 速 确 定

后, 只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的机理。 薂二、系统硬件电路设计 腿图2 超声波测距仪系统框图 蒆基于单片机的超声波测距仪框图如图 2 所示。该系统由单片机定时器产生 40KHZ 的频率信号、超声波传感器、接收处理电路和显示电路等构成。单片机 是整个系统的核心部件,它协调和控制各部分电路的工作。工作过程:开机,单 片机复位,然后控制程序使单片机输出载波为40kHz 的10 个脉冲信号加到超声 波传感器上,使超声波发射器发射超声波。当第一个超声波脉冲群发射结束后, 单片机片内计数器开始计数,在检测到第一个回波脉冲的瞬间,计数器停止计数, 这样就得到了从发射到接收的时间差△t;根据公式①、②计算出被测距离,由显示装置显示出来。下面分别介绍各部分电路: 莅1 、超声波发射电路 螀超声波发射电路如图3所示,89C51 通过外部引脚P1.0 输出脉冲宽度为250 μ s , 40kHz 的10 个脉冲串通过超声波驱动电路以推挽方式加到超声波传感器而发 射出超声波。由于超声波的传播距离与它的振幅成正比,为了使测距范围足够远, 可对振荡信号进行功率放大后再加在超声波传感器上。 薈图3中T为超声波传感器,是超声波测距系统中的重要器件。利用逆压电效应 将加在其上的电信号转换为超声机械波向外辐射; 利用压电效应可以将作用在它 上面的机械振动转换为相应的电信号, 从而起到能量转换的作用。市售的超声 波传感器有专用型和兼用型,专用型就是发送器用作发送超声波,接收器用作接

超声波测距报告(带报警)

目录 一、超声波测距原理 二、超声波测距模块介绍 1.主控模块 2.电源模块 3.显示模块 4.超声波模块 5.扬声器模块 三、超声波测距功能介绍 四、超声波测距前景展望 五、心得 附:程序

超声波测距(可报警) 一、超声波测距原理 超声波发射器定期发送超声波,遇到被测物体时发生反射,反射波经超声波接收器接收并转化为电信号,只要测出发送和接收的时间差t,即可测出超声测距装置到被测物体之间的距离S: S=c*t/2 (式中c为超声波在空气中的传播速度,c=331.45*√(1+T/273.16)) 由此可见声速与温度的密切的关系。在应用中,如果温度变化不大或者对测量要求不太高(例如汽车泊车定位系统),则可认为声速是不变的,否则,必须进行温度补偿。 超声波传感器是超声测距核心部件,传感器按其工作介质可分气相、液相和固相传感器;按其发射波束宽度可分为宽波束和窄波束传感器;按其工作频率又可分为40kHz, 5OkHz等不同等级。超声波在空气传播过程中,由于空气吸收衰减和扩散损失,声强随着传播距离的增大而衰减,而超声波的衰减随频率增大而成指数增加。本设计选用气相、窄波束、40kHz的超声波传感器。 二、超声波测距模块介绍 该产品共有五个模块,其中主控模块、电源模块、显示模块、扬声器模块集成在开发板上,超声波模块是外接的。 1.主控模块 主要部分是51单片机。 51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATLEM公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 主要功能: ·8位CPU·4kbytes 程序存储器(ROM) (52为8K)

51单片机超声波测距程序

//晶振:11.0592 //TRIG:P1.2 ECH0:P1.1 //波特率:9600 #include #include #include #define uchar unsigned char #define uint unsigned int sbit RX=P0^2; sbit TX=P0^3; unsigned int time=0; unsigned int timer=0; float S=0; bit flag =0; void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.87)/100; //算出来是CM if(flag==1) //超出测量 { flag=0; printf("-----\n"); } printf("S=%f\n",S); } void delayms(unsigned int ms) { unsigned char i=100,j; for(;ms;ms--) { while(--i)

{ j=10; while(--j); } } } void zd0() interrupt 1 //T0中断用来计数器溢出,超出测距范围{ flag=1; //中断溢出标志 } void StartModule() //T1中断用来扫描数码管和计800ms启动模块{ TX=1; //800MS启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } void main(void) { TMOD=0x21; //设T0为方式1,GATE=1; SCON=0x50; TH1=0xFD; TL1=0xFD; TH0=0; TL0=0;

超声波测距仪硬件电路的设计

超声波测距仪电路设计实验报告 轮机系楼宇071 周钰泉2007212117 实验目的:了解超声波测距仪的原理,掌握焊接方法,掌握电路串接方法,熟悉电路元件。 实验设备及器材:电烙铁,锡线,电路元件 实验步骤:1,学习keil软件编写程序2、焊接电路板3、运行调试 超声波测距程序: #include unsigned char code dispbitcode[]={0x31,0x32,0x34,0x38,0x30,0x30, 0x30,0x30}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x77,0x7c,0x 39}; unsigned char dispbuf[8]={10,10,10,10,10,10,0,0}; unsigned char dispcount; unsigned char getdata; unsigned int temp; unsigned int temp1;

unsigned char i; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^4; sbit CLK=P3^5; sbit M1=P3^6; sbit M2=P3^7; sbit SPK=P2^6; sbit LA=P3^3; sbit LB=P3^2; sbit LC=P2^7; sbit K1=P2^4; sbit K2=P2^5; bit wd; bit yw; bit shuid; bit shuig; unsigned int cnta; unsigned int cntb; bit alarmflag; void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } void main(void) { M1=0; M2=0; yw=1; wd=0; SPK=0; ST=0; OE=0; TMOD=0x12; TH0=0x216; TL0=0x216; TH1=(65536-500)/256; TL1=(65536-500)%256; TR1=1; TR0=1; ET0=1; ET1=1; EA=1; ST=1; ST=0; while(1) { if(K1==0) { delay10ms(); if(K1==0) { yw=1; wd=0; } } else if(K2==0) { delay10ms(); if(K2==0) { wd=1; yw=0; } } else if(LC==1) { delay10ms(); if(LC==1) { M1=0; M2=1; temp1=13; shuid=0; shuig=1; LB=0; } } else if((LC==0) && (LB==1)) { delay10ms(); if((LC==0) && (LB==1)) { M1=0; M2=0; temp1=12; shuig=0; shuid=0; LB=0; }

超声波测距仪设计实验报告

超声波测距仪设计实验报告 课题设计目的及意义 随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前 景的技术及产业领域。展望未来,超声波测距仪作为种新型的非常重要有用的工具在各方面 都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:研制具有更高定位精度的被动测距声纳,以满足水中武器实 施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被 动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大 力降低潜艇自噪声,改善潜艇声纳的工作环境。无庸置疑,未来的超声波测距仪将与自动化 智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,测距仪 将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。在新的世纪里,面貌 一新的测距仪将发挥更大的作用。 随着科技的发展,人们生活水平的提高,城市发展建设加快,城市给排水系统 也有较大发展,其状况不断改善。但是,由于历史原因合成时间住的许多不可预见因素,城 市给排水系统,特别是排水系统往往落后于城市建设。因此,经常出现开挖已经建设好的建 筑设施来改造排水系统的现象。城市污水给人们带来了困扰,因此箱涵的排污疏通对大城市 给排水系统污水处理,人们生活舒适显得非常重要。而设计研制箱涵排水疏通移动机器人的 自动控制系统,保证机器人在箱涵中自由排污疏通,是箱涵排污疏通机器人的设计研制的核 心部分。控制系统核心部分就是超声波测距仪的研制。因此,设计好的超声波测距仪就显得 非常重要了。这就是我设计超声波测距仪的意义。 实验原理 超声波在液体、固体中衰减小、穿透力强、对某些固体、穿透深度能达到几十米的范围;另外,超声波方向性好,能够定向传播。因此,可以作为物体探查和进行测量的可靠手段。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波 在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍 物的距离(s),即:s=340t/2。 整体电路设计 整体电路的控制核心为单片机STC89C52。超声波发射和接收电路中都对相应信号进行 整形及放大,以保证测量结果尽可能精确。超声波探头接OUT口实现超声波的发射和接收。 整体结构图包括超声波发射电路,超声波接收电路,单片机电路,显示电路和语音提示电路等 几部分模块组成。而超声波发射与接收电路还要加入放大电路。在发射后把信号放大,接收 前也要把还再次放大。 整体电路结构图如图4-1。

超声波测距程序(详细C语言数码管显示)

超声波测距程序(详细C语言数码管显示) #include //头文件 #include// _nop_() 函数延时1US用 #include #include #define uchar unsigned char #define uint unsigned int #define nop _nop_() sbit csb=P1^0;//超声波发送端口为P1.0 sbit bai=P2^2;//数码管百位 sbit shi=P2^1;//数码管十位 sbit ge=P2^0;//数码管个位 uchar flag;//超声波接收标志 float juli1;//距离变量,用来数码管显示用 int juli; uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0到9的代码 int xianshi[3]; void delayshow(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void ledshow(void) { xianshi[0]=juli/100; xianshi[1]=((juli%100)/10); xianshi[2]=juli%10; bai=0; P0=table[xianshi[0]]; delayshow(2); bai=1; delayshow(2); shi=0; P0=table[xianshi[1]]; delayshow(2); shi=1;

超声波传感器及其测距原理

安全避障是移动机器人研究的一个基本问题。障碍物与机器人之间距离的获得是研究安全避障的前提,超声波传感器以其信息处理简单、价格低廉、硬件容易实现等优点,被广泛用作测距传感器。本超声波测距系统选用了SensComp公司生产的Polaroid 6500系列超声波距离模块和600系列传感器,微处理器采用了ATMEL公司的AT89C51。本文对此超声波测距系统进行了详细的分析与介绍。 1、超声波传感器及其测距原理 超声波是指频率高于20KHz的机械波[1]。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应[1]的原理将电能和超声波相互转 化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。 超声波测距的原理一般采用渡越时间法TOF(time of flight)[2]。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的

声源与障碍物之间的距离,即 1、硬件电路设计 我们设计的超声波测距系统由Polaroid 600系列传感器、Polaroid 6500系列超声波距离模块和AT89C51单片机构成。 2.1 Polaroid 600系列传感器 此超声波传感器是集发送与接收一体的一种传感器。传感器里面有一个圆形的薄片,薄片的材料是塑料,在其正面涂了一层金属薄膜,在其背面有一个铝制的后板。薄片和后板构成了一个电容器,当给薄片加上频率为49.4kHz、电压为300VAC pk-pk的方波电压时,薄片以同样的频率震动,从而产生频率为49.4kHz的超声波。当接收回波时,Polaroid 6500内有一个调谐电路,使得只有频率接近49.4kHz的信号才能被接收,而其它频率的信号则被过滤。 Polaroid 600超声传感器发送的超声波具有角度为30度的波束角[3],如图1所示:

51单片机实现_定时器2、12864液晶显示、显示图片、滚动字符、DS18B20、转速、超声波测距、速度实时显示

//*******************资源配置***********************// //******计数器0用于超声波记录接收端高电平时长*******// //******计数器1用于记录1s内外部脉冲数目即转速*******// //********定时器2用于精确定时,定时时间50ms*********// //*****************P3^5用于脉冲计数*****************// #include #include //*************特殊引脚定义*****************// sbit RX = P1^0; //超声波接收端 sbit TX = P1^1; //超声波触发端 sbit RS = P2^6; //LCD数据/命令控制端 sbit RW = P2^5; //读写控制端 sbit EN = P2^7; //使能端 sbit RES= P2^4; //复位端 sbit PSB= P2^3; //并口/串口选择端 sbit DQ = P3^7; //DS18B20数据端 sbit BEEP=P1^5; //蜂鸣器 #define DataPort P0 //MCU P0<------> LCM #define uchar unsigned char #define uint unsigned int //***********Function Definition*********************// //****************函数声明***************************// void LCD_Write_number(uchar s); void Write_char(bit start, uchar ddata); //写入某坐标 void Send_byte(uchar bbyte); void Lcd_init(void); //lcd初始化 void Disp_img(uchar *img); //显示图片 void LCD_Write_string(uchar X,uchar Y,uchar*s); //写入某字符串void LCD_set_xy( uchar x,uchar y ); void Lcd_Mark3(void); //画面3 void Lcd_Mark2(void); //画面2 bit temp_flag; //判断DS18B20正常工作位DS18B20_init(); //DS18B20初始化 void delay(uint num); //DS18B20延时函数 void Delaynms(uint di); //短延时 void delayms(uint x); //1ms延时函数readonebyte(void); //读一个字节函数 void writeonebyte(uchar dat); //写一个字节函数 void gettemperture(void); //获取温度值 void temperture_display(); //温度显示函数

单片机应用_超声波测距器

单片机课程设计 一、需求分析: 超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量围在1m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。 本文旨在设计一种能对中近距离障碍物进行实时测量的测距装置,它能对障碍物进行适时、适量的测量,起到智能操作,实时监控的作用。 关键词单片机AT82S51 超声波传感器测量距离 二、硬件设计方案 设计思路 超声波传感器及其测距原理 超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

超声波测距的原理一般采用渡越时间法TOF(time of flight)。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离 测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为340米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。 由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。 超声波发生器可以分为两类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。本课题属于近距离测量,可以采用常用的压电式超声波换能器来实现。 根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统框图如下图所示: 超声波测距器系统设计框图 主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。

高精度超声波测距系统设计

高精度超声波测距系统设计。 引言 利用超声波测量距离的原理可简单描述为:超声波定期发送超声波,遭遇障碍物时发生反射,发射波经由接收器接收并转化为电信号,这样测距技术只要测出发送和接收的时间差, 然后按照下式计算,即可求出距离: 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求, 因此,广泛应用于倒车提醒、建筑工地、工业现场等的距离测量。目前的测距量程上能达到百米数量级,测量的精度往往能达到厘米数量级。本文在分析现有超声波测距技术基础之上, 给出了一种改进方案,测量精度可达毫米级。 2 系统方案分析与论证 2.1 影响精度的因素分析 根据超声波测距式(1)可知测距的误差主要是由超声波的传播速度误差和测量距离传播 的时间误差引起的。 对于时间误差主要由发送计时点和接收计时点准确性确定,为了能够提高计时点选择的准确性,本文提出了对发射信号和加收信号通过校正的方式来实现准确计时。此外,当要求测距误差小于 1 mm时,假定超声波速度C=344 m/s(20℃室温),忽略声速的传播误差。则测距误差s△t<0.000 002 907 s,即2.907 ms。根据以上过计算可知,在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1 mm的误差。使用的12 MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用AT89S51的定一时器能保证时间误差在 1 mm的测量范围内。

超声波LCD显示测距程序

超声波L C D显示测距程 序 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

/************************************************************** ****************/ /*Name:LCD12864(St7920/St7921)+超声波测距模块+STC89C52*/ /*DYP-ME007超声波测距模块DEMO程序 */ /*晶振:11.0592M*/ */ /*接线:模块TRIG接P1.2ECH0接P1.1 */ /*RS(CS)接P3.3; */ /*RW(SID)接P3.4; */ /*E(SCLK)接P3.5; */ /*PSB接GND串行模式 */ /************************************************************** ****************/ #include #include

//引脚定义 sbitRX=P1^1; sbitTX=P1^2; sbitCS=P3^3; //片选高电平有效单片LCD使用时可固定高电平sbitSID=P3^4; //数据 sbitSCLK=P3^5; //时钟 //FunctionDefinition 函数声明 voidDelay(intnum); voidInit_DS18B20(void); unsignedcharReadOneChar(void); voidWriteOneChar(unsignedchardat); unsignedintReadTemperature(void); voidclock_out(unsignedchardd); unsignedcharclock_in(void); unsignedcharread_clock(unsignedcharord); voidwrite_clock(unsignedcharord,unsignedchardd); voidDisp(void); voidid_case1_key(void); voidid_case2_key(void); voidSet_time(unsignedcharsel,bitsel_1); voidTimer0_Init(void); voidInit_1302(void);

超声波测距仪的设计说明

题目:超声波测距仪的设计 超声波测距仪的设计 一、设计目的: 以51单片机为主控制器,利用超声波模块HC-SR04,设计出一套可在数码管上实时显示障碍物距离的超声波测距仪。 通过该设计的制作,更为深入的了解51的工作原理,特别是51的中断系统及定时器/计数器的应用;掌握数码管动态扫描显示的方法和超声波传感器测距的原理及方法,学会搭建51的最小系统及一些简单外围电路(LED显示电路)。从中提高电路的实际设计、焊接、检错、排错能力,并学会仿真及软件调试的基本方法。 二、设计要求: 设计一个超声波测距仪。要求: 1.能在数码管上实时显示障碍物的实际距离; 2.所测距离大于2cm小于300cm,精度2mm。 三、设计器材: STC89C52RC单片机 HC-SR04超声波模块 SM410561D3B四位的共阳数码管 9014三极管(4) 按键(1) 电容(30PF2,10UF1) 排阻(10K),万用板,电烙铁,万用表,5V直流稳压电源,镊子,钳子,

导线及焊锡若干,电阻(200欧5)。 四、设计原理及设计方案: (一)超声波测距原理 超声测距仪是根据超声波遇到障碍物反射回来的特性进行测量的。超声波发射器向某一方向发射超声波,在发射同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即中断停止计时。通过不断检测产生波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差T,然后求出距离L。基本的测距公式为:L=(△t/2)*C 式中 L——要测的距离 T——发射波和反射波之间的时间间隔 C——超声波在空气中的声速,常温下取为344m/s 声速确定后,只要测出超声波往返的时间,即可求得L。 根据本次设计所要求的测量距离的围及测量精度,我们选用的是HC-SR04超声波测距模块。(如下图所示)。此模块已将发射电路和接收电路集成好了,硬件上不必再自行设计繁复的发射及接收电路,软件上也无需再通过定时器产生40Khz的方波引起压电陶瓷共振从而产生超声波。在使用时,只要在控制端‘Trig’发一个大于15us宽度的高电平,就可以在接收端‘Echo’等待高电平输出。单片机一旦检测到有输出就打开定时器开始计时。 当此口变为低电平时就停止计时并读出定时器的值,此值就为此次测距的时间,再根据传播速度方可算出障碍物的距离。 (二)超声波测距模块HC-SR04简要介绍 HC-SR04超声波测距模块的主要技术参数使用方法如下所述: 1. 主要技术参数: ①使用电压:DC5V ②静态电流:小于2mA ③电平输出:高5V

超声波测距C语言源程序代码

超声波测距C语言源程 序代码 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

/*{HZ即单位s的倒数}本晶振为12MHZ,因此外部的时钟频率为12MHZ,所以内部的时钟频率为(12M H Z)/12=1M H 即1000000HZ,而机械频率为1/(1MHZ),即每完成一次计算(即定时器的值加一)用时, 即1us(微秒).*/ /*************************************************************************** ********/ #include<> #define UC unsigned char #define UI unsigned int void delay(UI); sbit BX = P3^0;void TimeConfiguration(); a = 0; b = 0; c = 0; P2 =~ 0x00; goto loop; } time = TL0 + TH0*256; juli = ( int )( (time*/2 ); BAI = ( (juli%1000)/100 ); SHI = ( (juli%100)/10 ); GE = ( juli%10 ); /******************************************两种模式的距离显示 ********************************************/ if(juli > MAX) { Hong = 0; Lv = 1; while( t1-- ) { a = 0; b = 1; c = 1; P2 =~ CharacterCode[BAI]; delay(400); a = 1; b = 0; c = 1; P2 =~ CharacterCode[SHI]; delay(400); a = 1; b = 1; c = 0; P2 =~ CharacterCode[GE]; delay(390);

基于51单片机的超声波测距系统

基于51单片机的超声波测距系统 贾源 完成日期:2011年2月22日

目录 一、设计任务和性能指标 (3) 1.1设计任务 (3) 1.2性能指标 (3) 二、超声波测距原理概述 (4) 2.1超声波传感器 (5) 2.1.1超声波发生器 (5) 2.1.2压电式超声波发生器原理 (5) 2.1.3单片机超声波测距系统构成 (5) 三、设计方案 (6) 3.1AT89C2051单片机 (7) 3.2超声波测距系统构成 (8) 3.2.1超声波测距单片机系统 (9) 图3-1:超声波测距单片机系统 (9) 3.2.2超声波发射、接收电路 (9) 图3-1:超声波测距发送接收单元 (10) 3.2.3显示电路 (10) 四.系统软件设计 (11) 4.1主程序设计 (11) 4.2超声波测距子程序 (12) 4.3超声波测距程序流程图 (13) 4.4超声波测距程子序流程图 (14) 五.调试及性能分析 (14) 5.1调试步骤 (14) 5.2性能分析 (15) 六.心得体会 (15) 参考文献 (16) 附录一超声波测系统原理图 (18) 附录二超声波测系统原理图安装图 (19) 附录三超声波测系统原理图PCB图 (20) 附录四超声波测系统原理图C语言原程序 (21) 参考文献 (26)

一、设计任务和性能指标 1.1设计任务 利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个超声波测距仪器,用LED数码管把测距仪距测出的距离显示出来。 要求用Protel 画出系统的电路原理图,印刷电路板,绘出程序流程图,并给出程序清单。 1.2性能指标 距离显示:用三位LED数码管进行显示(单位是CM)。 测距范围:25CM到 250CM之间。误差:1%。

超声波传感器测量距离

一、超声波测距原理 超声波测距原理是通过超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差△t ,就可以计算出发射点距障碍物的距离S ,即: S = v·△t /2 ① 这就是所谓的时间差测距法。 由于超声波也是一种声波, 其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大, 则可认为声速是基本不变的。常温下超声波的传播速度是334 米/秒,但其传播速度V 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大,如温度每升高1 ℃, 声速增加约0. 6 米/ 秒。如果测距精度要求很高, 则应通过温度补偿的方法加以校正(本系统正是采用了温度补偿的方法)。已知现场环境温度T 时, 超声波传播速度V 的计算公式为: V = 331.45 + 0.607T ② 声 速 确 定 后, 只 要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的机理。 二、系统硬件电路设计

图2 超声波测距仪系统框图 基于单片机的超声波测距仪框图如图2所示。该系统由单片机定时器产生40KHZ的频率信号、超声波传感器、接收处理电路和显示电路等构成。单片机是整个系统的核心部件,它协调和控制各部分电路的工作。工作过程:开机,单片机复位,然后控制程序使单片机输出载波为40kHz的10个脉冲信号加到超声波传感器上,使超声波发射器发射超声波。当第一个超声波脉冲群发射结束后,单片机片内计数器开始计数,在检测到第一个回波脉冲的瞬间,计数器停止计数,这样就得到了从发射到接收的时间差△t;根据公式①、②计算出被测距离,由显示装置显示出来。下面分别介绍各部分电路: 1 、超声波发射电路 超声波发射电路如图3所示,89C51通过外部引脚P1.0 输出脉冲宽度为250μs , 40kHz的10个脉冲串通过超声波驱动电路以推挽方式加到超声波传感器而发射出超声波。由于超声波的传播距离与它的振幅成正比,为了使测距范围足够远,可对振荡信号进行功率放大后再加在超声波传感器上。 图3中T为超声波传感器,是超声波测距系统中的重要器件。利用逆压电效应将加在其上的电信号转换为超声机械波向外辐射; 利用压电效应可以将作用在它上面的机械振动转换为相应的电信号, 从而起到能量转换的作用。市售的超声

基于51单片机的时钟温度超声波12864液晶综合课程设计

摘要 单片微型计算机简称单片机,自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。现在市场上的单片机有4、8、16、32位等几千种型号的单片机。51单片机因其具有小巧灵活、成本低、易于产品化且能方便地组装成各种智能式控制设备以及各种智能仪表,面向控制,能针对性地解决从简单到复杂的各类控制任务、抗干扰能力强、适应温度范围宽、在各种恶劣条件下都能可靠地工作,等优点。使其广泛应用于各种仪器仪表、机电一体化、实时工业控制、家用电器等领域。单片机用于各种仪器仪表,一方面提高了仪器仪表的使用功能和精度,使仪器仪表智能化,同时还简化了仪器仪表的硬件结构,从而可以方便地完成仪器仪表产品的升级换代。如各种智能电气测量仪表、智能传感器等。机电一体化产品是集机械技术、微电子技术、自动化技术和计算机技术于一体,具有智能化特征的各种机电产品。单片机在机电一体化产品的开发中可以发挥巨大的作用。典型产品如机器人、数控机床、自动包装机、点钞机、医疗设备、打印机、传真机、复印机等。单片机还可以用于各种物理量的采集与控制。电流、电压、温度、液位、流量等物理参数的采集和控制均可以利用单片机方便地实现。在这类系统中,利用单片机作为系统控制器,可以根据被控对象的不同特征采用不同的智能算法,实现期望的控制指标,从而提高生产效率和产品质量。典型应用如电机转速控制、温度控制、自动生产线等。家用电器是单片机的又一重要应用领域,前景十分广阔。如空调器、电冰箱、洗衣机、电饭煲、高档洗浴设备、高档玩具等。

目录 一、项目设计方案 (4) 1.项目实现目标 (4) 2.项目特色 (5) 二、硬件部分设计 (5) 1.温度传感器介绍DS18B20 (5) 2.时钟芯片介绍DS1302 (6) 3.超声波模块HC-SR04 (7) 4.液晶显示模块12864 (9) 5.4*4矩阵键盘 (10) 6.无源蜂鸣器 (10) 三、软件部分设计 (11) 1.工程的建立 (11) 2.主程序 (11) 3.账户登录部分设计 (15) 4.时钟部设计 (16) 5.温度传感器设计 (17) 6.超声波测距设计 (18) 7.液晶显示图片设计 (19) 四、单片机实训小结 (20) 五、参考文献………………………………………………………………………

用51单片机实现HC-SR04超声波测距程序

#include //包括一个52标准内核的头文件 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long sbit Trig = P1^0; //产生脉冲引脚 sbit Echo = P3^2; //回波引脚 sbit test = P1^1; //测试用引脚 uchar code SEG7[10]={~0xC0,~0xF9,~0xA4,~0xB0,~0x99,~0x92,~0x82,~0xF8,~0x80,~0x90};//数码管0-9 uint distance[4]; //测距接收缓冲区 uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定义寄存器 bit succeed_flag; //测量成功标志 //********函数声明 void conversion(uint temp_data); void delay_20us(); void main(void) // 主程序 { uint distance_data,a,b; uchar CONT_1; i=0; flag=0; test =0; Trig=0; //首先拉低脉冲输入引脚 TMOD=0x11; //定时器0,定时器1,16位工作方式 TR0=1; //启动定时器0 IT0=0; //由高电平变低电平,触发外部中断 ET0=1; //打开定时器0中断 EX0=0; //关闭外部中断 EA=1; //打开总中断0 while(1) //程序循环 { EA=0; Trig=1; delay_20us(); Trig=0; //产生一个20us的脉冲,在Trig引脚 while(Echo==0); //等待Echo回波引脚变高电平 succeed_flag=0; //清测量成功标志 EX0=1; //打开外部中断 TH1=0; //定时器1清零 TL1=0; //定时器1清零 TF1=0; //

超声波测距电路图

超声波测距电路图 超声波测距电路原理和制作 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。本文所介绍的三方向(前、左、右)超声波测距系统,就是为机器人了解其前方、左侧和右侧的环境而提供一个运动距离信息。 二、超声波测距原理 1、超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。

2、压电式超声波发生器原理 压电式超声波发生器实际上是利用压电晶体的谐振 来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 3、超声波测距原理 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 图1 超声波传感器结构 这就是所谓的时间差测距法。 < 三、超声波测距系统的电路设计 图2 超声波测距电路原理图

相关文档
最新文档