完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`如题,最近试了试这个HC-SR04超声波测距模块,非常简便易用,下面就把我使用HC-SR04超声波测距模块简易教程分享给论坛的发烧友们。 如图所示,此模块共有4只引出脚,从左往右,第一脚为VCC,由于该模块工作电压为5V,因此需接在树莓派GPIO的2号针上;第二只脚为TRIG,输入触发信号,我接在树莓派GPIO的第15号针上;第三只脚为ECHO,输出回响信号,我接在树莓派GPIO的第16号针上;第四只脚为接地脚,接在树莓派GPIO的第6号针上。 ![]() 该模块的工作原理为,先向TRIG脚输入至少10us的触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则ECHO输出高电平回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: 距离=高电平时间*声速(340M/S)/2。 下面是自编自写的测试代码:
[color=rgb(51, 102, 153) !important]复制代码 该程序每3秒测试一次距离,用ctrl+c停止。 经测试,该模块测试较为准确,特别是测试物体表面平整时效果更好。 [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] [color=rgb(51, 102, 153) !important] ` ![]() |
|
相关推荐
|
|
谢谢分享谢谢分享谢谢分享
谢谢分享谢谢分享 谢谢分享 谢谢分享谢谢分享 谢谢分享 谢谢分享 谢谢分享谢谢分享谢谢分享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 分 分 谢谢分享 谢谢分享 享 享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢 谢谢分享 谢谢分享 分 分 谢谢 谢谢分享 谢谢分享 享 享 谢谢分 谢谢分享 谢谢分享 谢 谢 谢谢分 谢谢分享 谢 谢 谢谢分谢谢分享 谢 谢 谢谢谢谢 分 分 谢谢 享 享 |
|
|
|
|
|
谢谢分享谢谢分享谢谢分享
谢谢分享谢谢分享 谢谢分享 谢谢分享谢谢分享 谢谢分享 谢谢分享 谢谢分享谢谢分享谢谢分享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 分 分 谢谢分享 谢谢分享 享 享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢 谢谢分享 谢谢分享 分 分 谢谢 谢谢分享 谢谢分享 享 享 谢谢分 谢谢分享 谢谢分享 谢 谢 谢谢分 谢谢分享 谢 谢 谢谢分谢谢分享 谢 谢 谢谢谢谢 分 分 谢谢 享 享 |
|
|
|
|
|
#include #include /***********************************************/ //定义数码管显示 unsigned char code d8[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管段选 unsigned char code g8[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //数码管个位+小数点 unsigned char code w8[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管位选 /***********************************************/ //定义数码管显示变量 unsigned char bai,shi,ge,xiao; //定义数码管显示的百位、十位、个位、小数位 float distance; //定义储存距离的变量 unsigned int outcomel,outcomeh; //定义储存计时器高八位和低八位的变量 /*************************超声波模块引脚定义******************************/ ***it TX=P3^2; //触发引脚 ***it RX=P3^3; //应答引脚 /********************一毫秒基准延时函数****************************/ void delay1ms(unsigned int i) //1ms基准延时函数 { unsigned char j; while(i--) { for(j=1;j<=115;j++) { ; } } } /**************20us延时函数**********************************************/ void delay_20us() { _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); } /**********************距离数据处理函数*********************************/ void chulidate() { distance=distance*10; bai=distance/1000; //取出距离的百位 shi=(distance-(bai*1000))/100; //取出距离的十位 ge=(distance-(bai*1000+shi*100))/10; //取出距离的个位 xiao=distance-bai*1000-shi*100-ge*10; //取出距离的小数位 } /***************数码管显示函数****************************************/ void shumaguandisplay() { P2=0xef; //点亮百位数码管 P0=d8[bai]; //显示百位数 delay1ms(1); P2=0xdf; //点亮十位数码管 P0=d8[shi]; //显示十位数 delay1ms(1); P2=0xbf; //点亮个位数码管 P0=g8[ge]; //显示个位数 delay1ms(1); P2=0x7f; //点亮小数位数码管 P0=d8[xiao]; //显示小数位数 delay1ms(1); } /*******************************主函数**************************/ void main() { unsigned char i; TX=0; //首先对控制引脚拉低脉冲 TMOD=0x01; //定时器0,采用16位定时器 IT1=1; //外部中断1采用负跳变触发 EA=1; //打开总中断 TH0=0; TL0=0; //给定时器赋初值 while(1) { TX=1; delay_20us(); TX=0; //在触发引脚产生一个20us的脉冲 while(RX==0); //等待RX引脚变成高电平 EX1=1; //打开中断1 ET0=1; //打开定时器0 TR0=1; //启动定时器 delay1ms(70); //等待超声波模块响应 distance=((outcomel+outcomeh*256)/2)*0.034; //计算出距离值 chulidate(); //调用数值处理函数 for(i=0;i<200;i++) { shumaguandisplay(); } } } /*******************外中断1函数***********************/ INT1_() interrupt 2 // 外部中断是2号 { outcomel=TH0; //取出高8位值 outcomeh=TL0; //取出低8位值 TR0=0; //关闭定时器 EX1=0; //关闭外部中断1 EA=0; //关闭总中断 TH0=0; TL0=0; //给定时器重新赋初值 } 希望大神指导一下我的错误,这条程序显示的数据不对 |
|
|
|
|
|
浴血狼 发表于 2016-1-23 20:07 希望大神指点,这个程序已经困扰我好久了,详聊可加qq1597078924 |
|
|
|
|
|
谢谢分享谢谢分享谢谢分享
谢谢分享谢谢分享 谢谢分享 谢谢分享谢谢分享 谢谢分享 谢谢分享 谢谢分享谢谢分享谢谢分享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 分 分 谢谢分享 谢谢分享 享 享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢 谢谢分享 谢谢分享 分 分 谢谢 谢谢分享 谢谢分享 享 享 谢谢分 谢谢分享 谢谢分享 谢 谢 谢谢分 谢谢分享 谢 谢 谢谢分谢谢分享 谢 谢 谢谢谢谢 分 分 谢谢 享 享 |
|
|
|
|
|
用的c51不知道怎么接线
|
|
|
|
|
|
谢谢分享谢谢分享谢谢分享 谢谢分享谢谢分享 谢谢分享 谢谢分享谢谢分享 谢谢分享 谢谢分享 谢谢分享谢谢分享谢谢分享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 分 分 谢谢分享 谢谢分享 享 享 谢谢分享 谢谢分享 谢 谢 谢谢分享 谢谢分享 谢 谢 谢 谢谢分享 谢谢分享 分 分 谢谢 谢谢分享 谢谢分享 享 享 谢谢分 谢谢分享 谢谢分享 谢 谢 谢谢分 谢谢分享 谢 谢 谢谢分谢谢分享 谢 谢 谢谢谢谢 分 分 谢谢 享 享 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
5430 浏览 0 评论
14030 浏览 9 评论
7700 浏览 0 评论
基于Amazon Echo 和 Raspberry Pi 的自动窗帘控制
7035 浏览 1 评论
【下载】《Linux+树莓派玩转智能家居》——亲手进行树莓派应用制作
157701 浏览 374 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-8 20:35 , Processed in 1.154764 second(s), Total 115, Slave 95 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191