《智能产品设计与应用》课件-CC2530超声波_第1页
《智能产品设计与应用》课件-CC2530超声波_第2页
《智能产品设计与应用》课件-CC2530超声波_第3页
《智能产品设计与应用》课件-CC2530超声波_第4页
《智能产品设计与应用》课件-CC2530超声波_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能产品设计与应用超声波程序设计案例导入01/PART

ONE超声波程序设计超声波传感器模块简介超声波传感器是一种能够将交变电信号转换为声信号或将外界声场中的声信号转换为电信号的能量转换器件。它们通常包含一个发射器和一个接收器,发射器发出超声波,当超声波遇到障碍物时反射回来,接收器捕捉这些反射波并将其转换为电信号。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。超声波程序设计超声波传感器模块简介超声波程序设计HC-SR04模块原理超声波测距原理超声波测距是借助于超声脉冲回波渡越时间法来实现的。设超声波脉冲由传感器发出到接收所经历的时间为t,超声波在空气中的传播速度为c,则从传感器到目标物体的距离D可用下式求出:D=ct/2超声波测距系统组成超声波程序设计HC-SR04模块电气参数超声波程序设计HC-SR04模块控制程序单片机引脚触发Trig测距,给至少10us的高电平信号;模块自动发送8个40khz的方波,自动检测是否有信号返回;有信号返回,通过IO输出一高电平,并单片机定时器计算高电平持续的时间;超声波从发射到返回的时间;计算公式:测试距离=(高电平时间*声速(340M/S))/2;超声波程序设计HC-SR04模块时序图以上时序图表明需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号,则输出回响信号。响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。超声波程序设计距离计算公示公式:uS/58=厘米或者uS/148=英寸;

或:距离=高电平时间*声速(340M/S)/2;建议测量周期为60ms以上,以防止发射信号对回响信号的影响。注:此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作。测距时,被测物体的面积不少于0.5平方米且平面尽量要求平整,否则影响测量的结果。超声波程序设计HC-SR04数据采集硬件设计原理图设计超声波程序设计HC-SR04模块引脚说明超声波模块有4个引脚,分别为Vcc、Trig(控制端)、Echo(接收端)、GND;其中VCC接5V电源,GND为地线,Trig(控制端)控制发出的超声波信号,Echo(接收端)接收反射回来的超声波信号。模块如图:超声波程序设计项目目的通过实验掌握CC2530芯片GPIO的配置方法。掌握HC-SR04超声波传感器使用,数据采集。项目设备硬件:PC机一台、ZB2530(底板、核心板、仿真器、USB线)一套、HC-SR04超声波传感器、信号处理模块,杜邦线。软件:2000/XP/win7系统,IAR8.10集成开发环境。HC-SR04数据采集软件设计超声波程序设计HC-SR04数据采集软件设计3.程序设计——(1)

程序界面超声波程序设计HC-SR04数据采集软件设计(2)主程序流程图及代码分析/***************************

主函数***************************/voidmain(void){uint

distance_data=0;

uchartimer1CountH=0;

InitLed();

//调用初始化函数

initClkTo32M();//初始化系统频率为32M

initUART0();

//设置p0_4输出

P0DIR|=0x10;//P0_4定义为输出

//设置p0_5

P0IEN|=0X20;//P05中断使能

PICTL|=0X01;//P0口下降沿触发

P0IFG=0x00;//初始化中断标志位

EA=1;

LCD_Init();//oled

初始化

LCD_P6x8Str(0,2,"HC-SR04");超声波程序设计HC-SR04数据采集软件设计(3)主程序流程图及代码分析

while(1)

{

//产生一个20us的脉冲,在Trig引脚

Trig=1;

delay_20us();

Trig=0;

//等待Echo回波引脚变高电平

while(Echo==0);

//启动定时器

StartTimer1();

//清测量成功标志

succeed_flag=0;

LED1=0;

IEN1|=0X20;//允许P0口中断;

timer1CountH=T1CNTH;持续检查Trig引脚、Echo回波引脚状态超声波程序设计HC-SR04数据采集软件设计(4)主程序流程图及代码分析//测量的最大距离是4米,在32M128分频的情况下不会大于0.0235S,以0.05秒算,计数值为6250=0x186A,高位大于0x18认为测不到物体。

while(timer1CountH<0x50||succeed_flag==0)

{

timer1CountH=T1CNTL;

timer1CountH=T1CNTH;

}

T1CTL&=~0x03;//关闭定时器1IEN1&=~0X20;//关闭P0口中断

if(succeed_flag==1)

{

PrintfDistance();//转换并串口输出

}

else

{

LCD_P6x8Str(0,4,"ERROR!");

distance_data=0;//没有回波则清零

}

Delayms(1000);

}超声波程序设计HC-SR04数据采集软件设计(5)按键外部中断程序流程图及代码分析/****************************KEY初始化程序--外部中断方式*****************************/voidInitKey(){

P0IEN|=0X2;//P01设置为中断方式

PICTL|=0X2;//下降沿触发

IEN1|=0X20;//允许P0口中断;

P0IFG=0x00;//初始化中断标志位

EA=1;}超声波程序设计HC-SR04数据采集软件设计(6)系统时钟初始化程序/***************************************32M系统时钟初始化程序**********************************/

voidinitClkTo32M(){

CLKCONCMD&=~0x40;//设置系统时钟源为32MHZ晶振

while(CLKCONSTA&0x40);//等待晶振稳定

CLKCONCMD&=~0x47;//设置系统主时钟频率为32MHZ

CLKCONCMD&=~0x3F;//定时器使用32M时钟}超声波程序设计HC-SR04数据采集软件设计(7)串口初始化函数/*************************

初始化串口0函数

**********************/voidinitUART0(void){

PERCFG=0x00;//位置1P0口P0SEL|=0x0c;

//P0用作串口p02\p03做为外设功能

P2DIR&=~0XC0;//P0优先作为UART0

U0CSR|=0x80;

//串口设置为UART方式

U0GCR|=11;

U0BAUD|=216;//波特率设为115200

UTX0IF=1;//UART0TX中断标志初始置位1

U0CSR|=0X40;

//允许接收//IEN0|=0x84;

//开总中断,接收中断}超声波程序设计HC-SR04数据采集软件设计(8)中断处理函数/****************************

中断处理函数

*****************************/#pragmavector=P0INT_VECTOR

__interruptvoidP0_ISR(void){

if((P0IFG&0x20)==0x20)

//P0_5产生中断

{

IEN1&=~0X20;//关闭P0口中断

outcomeL=T1CNTL;//取出定时器的值

outcomeH=T1CNTH;//取出定时器的值

succeed_flag=1;//置成功测量的标志

LED2=!LED2;

LED1=1;

PrintfDistance();

}

P0IFG=0;//清中断标志

P0IF=0;//清中断标志

LED3=!LED3;}超声波程序设计HC-SR04数据采集软件设计(9)串口发送函数/****************************

串口发送程序

*****************************/voidUartTX_Send_String(uchar*Data,int

len){

intj;

for(j=0;j<len;j++)

{

U0DBUF=*Data++;

while(UTX0IF==0);

UTX0IF=0;

}}超声波程序设计HC-SR04数据采集软件设计(10)距离计算与打印程序voidPrintfDistance(){

uint

distance_data=0;distance_data=outcomeH;//测量结果的高8位distance_data<<=8;//放入16位的高distance_data=distance_data|outcomeL;//与低8位合并成为16位结果数据distance_data*=4;//因为定时器为128分频,32M时钟,4=128/32,distance_data/=58;//微秒的单位除以58等于厘米

//为什么除以58等于厘米,Y米=(X秒*344)/2

//X秒=(2*Y米)/344==》X秒=0.0058*Y米==》厘米=微秒/58

if(distance_data>=1000)

{

UartTX_Send_String("er

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论