超声波:

超声波传感器主要由发送部分、接收部分、控制部分和电源部分构成。

其中,发送部分由发送器和换能器构成,换能器可以将压电晶片受到电压激励而进行振动时产生的能量转化为超声波,发送器将产生的超声波发射出去;

接收部分由换能器和放大电路组成,换能器接收到反射回来的超声波,由于接收超声波时会产生机械振动,换能器可以将机械能转换成电能,再由放大电路对产生的电信号进行放大;

控制部分就是对整个工作系统的控制,首先控制发送器部分发射超声波,然后对接收器部分进行控制,判断接收到的是否是由自己发射出去的超声波,最后识别出接收到的超声波的大小;

电源部分就是整个系统的供电装置。这样,在电源作用下、在控制部分控制下,发送器与接收器两者协同合作,就可以完成传感器所需的功能。

遇到的问题:

1、首先就是你的板子上的跳帽得插对,我之前写完烧代码,跳帽就没插对,导致测不了距离,让我一直怀疑自己代码有问题。

2、乘以t*0.017:是因为超声波原理等到的,超声波测距是发出信号当撞上障碍物后被反射回来,及接收到信号,所以测得的时间相当于时间就是一去一回的,而我们测距只需要一半的时间,所以时间需要除以2.还有就是声音的传播速度为340m/s,即可得:距离ucdist=(t*340)/200 --->ucdist=(t*0.017);除以100此时得到的距离单位是:cm

代码实现:

#include<stc15f2k60s2.h>
#include<intrins.h>#define uchar unsigned char
#define uint unsigned int
#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}  sbit Buzzer=P0^6;//蜂鸣器
sbit Relay=P0^4;//继电器sbit TX =P1^0;        //发射引脚
sbit RX =P1^1;      //接收引脚uchar code t_display[]={                       //标准字库
//   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
//black  -     H    J    K    L    N    o   P    U     t    G    Q    r   M    y0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46,0x77};    //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1uchar code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};      //位码
uchar smg_table[]={16,16,16,16,16,16,16,16};//超声波测距参数
uint Dist,ucDist;//距离
uint t;//时间
bit flag;//200ms采集标志//关闭外设
void allInit()
{P2=0Xa0;Buzzer=0;Relay=0;P2=0X00;P2=0X80;P0=0xff;P2=0X00;
}void Timer0Init(void)      //1毫秒@12.000MHz
{EA=1;ET0=1;AUXR |= 0x80;        //定时器时钟1T模式TMOD &= 0xF0;       //设置定时器模式TL0 = 0x20;       //设置定时初值TH0 = 0xD1;        //设置定时初值TF0 = 0;       //清除TF0标志TR0 = 1;      //定时器0开始计时
}void Timer0() interrupt 1
{static uint smg_count,i,count;if(++smg_count>=2){smg_count=0;P2=0Xe0;P0=0xff;P2=0X00;P2=0Xc0;P0=T_COM[i];P2=0X00;P2=0Xe0;P0=~t_display[smg_table[i]];P2=0X00;i++;if(i>=8)i=0;}if(++count>=200)    //200ms采集一次{flag=1;count=0;}
}//超声波发送
void send_Wave()
{unsigned char m=8;do{TX=1;somenop;somenop;somenop;somenop;somenop;somenop;somenop;TX=0;somenop;somenop;somenop;somenop;somenop;somenop;somenop;         }while(m--);
}unsigned int Read_Dist()
{if(flag==1){flag=0;send_Wave();TR1 = 1;        //定时器1开始计时while((RX==1)&&(TF1==0));TR1=0;if(TF1==1){TF1=0;ucDist=255;}else{t=TH1;t<<=8;t|=TL1;ucDist=(unsigned int )(t*0.017);}}TH1=0;TL1=0;return     ucDist;
}void main()
{allInit();Timer0Init();while(1){Dist=Read_Dist();//读取距离smg_table[0]=18;smg_table[1]=16;smg_table[2]=16;smg_table[3]=16;   smg_table[4]=16;smg_table[5]=Dist/100;smg_table[6]=Dist/10%10;smg_table[7]=Dist%10;     }}

蓝桥---超声波测距相关推荐

  1. 【蓝桥杯单片机进阶强化-06】超声波测距的基本原理与实现

    [1]基本原理 超声波发射模块向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时. [2]计算公式 距离 = 声速 × ...

  2. 蓝桥杯单片机必备知识-----(9)超声波测距

    蓝桥杯单片机必备知识-----(9)超声波测距 超声波测距原理: 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立 ...

  3. 蓝桥杯单片机学习过程记录(二十九)第八届国赛超声波测距机

    蓝桥杯单片机学习过程记录(二十九)第八届国赛超声波测距机 题目如下: 已完成 应用的内容: EEPROM. 定时器.数码管 led灯,独立按键 DA电压输出 超声波测距 /* ------------ ...

  4. 蓝桥杯单片机之超声波测距

    蓝桥杯单片机之超声波测距 测距原理 基本原理 计算公式 电路分析 代码设计 基本步骤 代码编写: 测距原理 基本原理 超声波发射模块向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播, ...

  5. 超声波测距测速升压可调中周倒车雷达变频器传感器1:10

    简 介: 通过对于是用于超声波测速变压器的基本分析,为后面构成150kHz 放大节能信标组的感应信号打下基础. 关键词: 中周,电压器,超声波 ▌01 中周变压器   购买到这个周中变压器主要是为了构 ...

  6. 【 FPGA 】超声波测距小实验(一)

    超声波测距原理: 超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似. 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播 ...

  7. 51单片机c语言测距,求助 关于C51单片机超声波测距 C语言程序设计 高手帮帮忙...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C51编程:超声波测距程序(附图) [请帮助] 2006-9-30 18:44:03 #include #define k1 P3_4 #define c ...

  8. Arduino的光敏传感器和超声波测距传感器测试代码

    光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...

  9. arduino 超声波测距原理_超声波测距灯

    介绍硬件准备 本篇文章专门介绍用Arduino制作超声波测距灯,需要的材料是: 1. Arduino开发板 2. HC-SR04超声波模块 3. LED灯 4. 杜邦线若干 注意事项   之所以要写这 ...

最新文章

  1. java gui 案例_JavaGui入门—布局的嵌套使用附实例
  2. Burt’s Bees 小蜜蜂纯天然杏仁牛奶蜂蜡护手霜,56g*2罐,$13.92
  3. PHP:第一章——PHP中的关键字
  4. Centos7通过yum安装最新MySQL
  5. Wpf 简单制作自己的窗体样式
  6. windows c++ 流读取文件长度 ios::in ios::binary
  7. marvell raid linux,华硕P7F-M (-MARVELL 88SE6145 SATA RAID)主板驱动-版下载,适用于win7,Win7-64,winxp-驱动精灵...
  8. Java常用日志框架介绍(转载)
  9. 一文读懂JPEG算法!附C++代码实现JPEG算法,实现从BMP到JPEG转换!
  10. 使用Moment.js 格式化时间为今天,昨天,明天
  11. 微信接龙,查人,查谁没有接龙,工具
  12. 京东到家订单中心ES演进
  13. IONIC中slides的使用(图片显示及其删除)
  14. 美团后端一面准备——面试模板
  15. Java 集合 --- String, StringBuilder, StringBuffer
  16. 计算机后来音乐,Computer Music
  17. 立体栅格地图_制图技巧 | 如何利用ArcGIS让地图更有立体感
  18. 【MySQL高可用】MySQL高可用之MGR部署
  19. 华为联合openEuler发布全新NFS+协议,实现NAS存储性能与可靠性倍增
  20. 如何实现QSV转mp4呢?

热门文章

  1. 优信拍集团php面试题_【优信拍PHP面试】一次不错的面试体验,面试官根据实际出发提问。-看准网...
  2. android微信打出彩色字体,如何用微信打出颜色各异的字
  3. Easyui 搭建后台管理界面
  4. 微信公众号网面开发中的制授权问题
  5. 微信小程序-audio功能实现
  6. java ee 中文_javaee中的中文乱码处理
  7. PreScan快速入门到精通第二十八讲PreScan中常用传感器之TIS传感器
  8. css 实现数字0-9
  9. C语言/C++常见习题问答集锦(七十六)之玫瑰花寄语
  10. 人际交往与沟通技巧提升策略:如何说话恰到好处