版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能产品设计与应用超声波程序设计案例导入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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47496-2026网络安全技术计算机基本输入输出系统(BIOS)安全技术规范
- 红色故事儿童团员小英雄王二小完整版模板
- 26年老年适老化改造贵解决方案课件
- 2026年宁夏中考语文一模试卷(含详细答案解析)
- 脑膜瘤术后护理查房
- 煤矿办公室主任岗位责任制(2篇)
- 灭火疏散应急预案演练总结
- 小学三年级关联词合集
- 全业务时代电信业竞争格局及运营商策略探讨
- 中国传统节日知识竞赛:中秋节知识题库
- 5.1《阿Q正传(节选)》课件+2025-2026学年统编版高二语文选择性必修下册
- GINA哮喘指南核心更新解读2026
- 2025年甘孜州船头学校选调事业单位工作人员真题
- 2026年汽车维修前台测试题及答案
- 2026福建厦门公交集团有限公司公交招聘考试备考试题及答案解析
- 2026年职业能力倾向验-通关题库及1套参考答案详解
- 2026中国兵器审计中心(西南中心)招聘6人笔试参考题库及答案解析
- 2026云南曲靖市沾益区高投物业服务有限公司物业工作人员招聘6人笔试模拟试题及答案解析
- GB/Z 177.7-2026人工智能终端智能化分级第7部分:汽车座舱
- 2026四川泸州金桂投资有限公司第一批次招聘26人备考题库附答案详解(完整版)
- 恒丰银行北京分行社会招聘笔试模拟试题及答案解析
评论
0/150
提交评论