51单片机----超声波模块51单片机程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了51单片机----超声波模块51单片机程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2439字,纯文字阅读大概需要4分钟。
内容图文
最近在造小车 需要用到超声波模块 现将调试时用到的代码分享出来。
所用超声波模块为HC-SR04 单片机开发板是吴鉴鹰的
先理解超声波模块的原理,它有四个接口 Vcc Trig Echo Gnd 。
Vcc接正极 Gnd接地
Trig和Echo随便接两个IO口
然后给Trig口高电平10us以上,超声波模块会自动发出8个40khz的方波,并检测是否有信号返回,有信号返回时就在Echo口输出高电平,持续的时间就是发出信号到接受信号所用的时间。所以计算从发出到接收信号所用的时间,就可以得知声音传播一个来回所花费的时间,在结合声速就可以算出距离了。(这里只是简单的估算,声速还和温度等因素有关)
然后开始写程序。
这里我为了能更好的看到超声波模块是否起作用,加入了单片机上的蜂鸣器,并设置了一个报警距离。
1 #include<reg52.h> 2 #include<stdio.h> 3 #include<intrins.h> 4 sbit Trig=P2^5; //控制端 5 sbit Echo=P2^4; //接收端 6 sbit Beep=P3^4; //单片机开发板上的蜂鸣器 7 unsigned char T0RH=0; 8 unsigned char T0RL=0; 9 void Start_Buzz(unsigned int frequ) 10 { 11 unsigned int reload; 12 reload = 65536 - (11059200/12)/(frequ*2); 13 T0RH = (unsigned char)(reload >>8); //蜂鸣器定时用 产生方波 14 T0RL = (unsigned char)reload; //蜂鸣器定时用 产生方波 15 16 TH1 = 0xFF;//蜂鸣器定时器 17 TL1 = 0xFE;//蜂鸣器定时器 18 19 ET1 = 1; 20 TR1 = 1; 21 } //启动蜂鸣器 并设置音高 22 void Stop_Buzz() 23 { 24 Beep= 1; 25 ET1 = 0; 26 TR1 = 0; 27 } //关闭蜂鸣器 28 void InterruptTimer0() interrupt 3 29 { 30 TH1 = T0RH; 31 TL1 = T0RL; 32 Beep = ~Beep; 33 } //蜂鸣器中断程序 34 void time_init() 35 { 36 EA=1; 37 TMOD=0x11; 38 TH0 = 0; 39 TL0 = 0; 40 } //初始化定时器 41 void Delay_us(unsigned char t) 42 { 43 while(--t); 44 } //大约延时t*2+5us 超声波模块用 45 46 47 void timer0()interrupt 1 48 { 49 TH0 = 0; 50 TL0 = 0; 51 } //中断程序 初始化赋值 重新计数 超声波模块用 计算时间 52 void main() 53 { 54 unsigned int time,distance; 55 Trig=0; 56 Echo=0; 57 time_init(); 58 while(1) 59 { 60 Trig=1; 61 Delay_us(5); 62 Trig=0; 63 while(Echo==0); 64 TR0=1; 65 while(Echo); 66 TR0=0; 67 time=TH0*256+TL0; 68 distance=(int)(time*0.017); //计算路程 单位为cm 69 TH0=0; 70 TL0=0; 71 if(distance<30) //如果距离小于30cm 蜂鸣器响 72 { 73 Start_Buzz(4000); //用于控制蜂鸣器的音高 74 } 75 else 76 { 77 Stop_Buzz(); 78 } 79 } 80 }
才学疏浅 如有不妥欢迎指教 谢谢!
内容总结
以上是互联网集市为您收集整理的51单片机----超声波模块51单片机程序全部内容,希望文章能够帮你解决51单片机----超声波模块51单片机程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。