网站大量收购闲置独家精品文档,联系QQ:2885784924

超声波测距试验心得.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
超声波测距试验心得

超声波测距试验心得/* ............................IO口可以由高电平接地拉成低电平,但是不能由低电平接Vcc拉成高电平.............................*/#includereg52.h#includeintrins.hfloat distance;Sbit led=P2^7;sbit echo=P1^0;sbit trig=P3^4;/* 软件延时函数,延时时间(t*10)us */void delay10us(unsigned char t){do {_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_(); } while (--t);}void main(){EA=1;//开总中断EX0=1;//开外部中断0TMOD=0xf1;//采用定时器0的定时模式的工作方式1/*.............................................. 这里有一个疑问就是,必须采用定时器的定时模式才能 将TH0和TL0里的数值读出来,而采用计数模式(将0xf1改成0xf5)就不行...............................................*/IT0=1;//外部中断为负跳变触发方式TH0=0;//定时器高8位和低8位都赋值为0TL0=0;while(1){trig=1;//单片机给trig引脚一个20微秒的触发信号delay10us(2);trig=0;if(distance0.1)//如果障碍物距离小于10cm,则亮第一位LEDled=0;elseled=1;delay10us(6);//延时60微秒 }}/* .....................................................中断服务程序,外部中断的中断服务程序的执行时间可以很长,没有时间的限制,不像定时器中断,中断服务程序执行时间有一定要求,即在下一次中断请求到来之前本次中断必须执行完毕。.......................................................*/void wb0() interrupt 0{TR0=1;//启动定时器,TH0和TL0开始计数while(echo);//当返回脉冲信号(echo上的高电平脉冲)结束时关闭定时器TR0=0;distance=(TH0*256+TL0)*1.08507/1000000*340/2;//计算障碍物距离 //distance=(定时器高8位*256+低8位)*一个机器周期*声速/2TH0=TL0=0;//清零TH0和TL0,准备下一次测距 } 解释:在不加Q2三极管的情况下你,即Echo直接连接到单片机的IO口,单片机将会检测不到Echo输出的高脉冲信号。单片机的管脚在没有设定的情况下,默认输出高电平。然后看超声波测距模块的时序图,Echo在没有给触发信号的情况下保持低电平,有了触发信号之后,Echo输出一个高电平。按道理说如果将Echo引脚直接连接在单片机的IO口上,该IO口将会被Echo引脚拉为低电平,在Echo输出高脉冲的时候,单片机IO口保持原来的高电平。当Echo为低电平的时候,那么该IO口就会向Echo引脚灌电流。但是在实际电路中,Echo并不能将IO口拉低,我猜原因是Echo接受灌电流的能力太小,灌入的电流过大,导致该脚电平为不确定状态。解决的措施有两个,第一就是直接用外部中断引脚检测“低脉冲”(因为外部中断选用的触发方式是下降沿触发,所以原来的高脉冲信号要加一个三极管反相器,就变成了低脉冲),这样就变成IO口检测低电平了。第二就是上图里的方法,不将Echo直接连接在单片机的IO口上,而是将Echo通过一个PNP型的三极管连接在单片机IO口上。这样当Echo输出低时,三极管导通,单片机的这个IO口就会被三极管的集电极拉为低。当Echo输出高脉冲时,三极管截至,该IO口通过上拉电阻R4保持默认的高电平。这就解决了Echo接受灌电流能力不够的问题。2016-3-13张海波

文档评论(0)

561190791 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档