电子工程师项目教学第8章超声波测距仪设计.ppt

电子工程师项目教学第8章超声波测距仪设计.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  3.按键4处理程序   按键4用来设置测距仪工作于反射工作模式还是对射工作模式,上电初始化为反射工作模式,如果按键4被按下就可以切换到对射工作模式,当然再次按下按键4也可以从对射工作模式切换回反射工作模式。 8.5.4 子程序及中断服务程序设计   1) 按键扫描程序   该程序实现按键扫描功能,如果有按键按下则带回相应的按键值,如果无按键按下则带回的按键值为0xff。 按键值为0xff。 /**********按键扫描*********/ uchar key_scan() { uchar i,j=0xFF; kd|=0x0F; key_led=kd; _nop_(); _nop_(); i=key_led; i=~i; i=0x0F; if(i!=0) { delay(10) ; //消抖 i=key_led; i=~i; i=0x0F; if(i!=0) { switch(i) //按键判断 { case 0x01:j=0x01;break; case 0x02:j=0x02;break; case 0x04:j=0x03;break; case 0x08:j=0x04;break; default: break; } do { i=key_led; i=~i; i=0x0F; }while(i); //等待按键释放 } } return j ; }   2) 超声波发送程序   先发送20个方波的脉冲,发射完成后延时10个方波的时间来避开盲区,以防超声波未经反射直接进入接收探头,最后打开计时、接收中断。     /******发送脉冲*****/     void send()     {      flag=0;      time_end=0;      T0_init();      T2_init();      while(time_end==0);      time_end=0;      T00_init();  TR0=1;  while(TF0==0);  TR0=1;  TF0=0;  TH1=0;  TL1=0;  IE1=0;  EX1=1;  EA=1;  ET1=1;  TR1=1; }   3) 定时器T0的中断程序   定时器T0被用来控制发射超声波脉冲的数目。每次测量时发送20个40 kHz的脉冲信号,当脉冲发送开始时同时启动定时器T0,当T0中断时表示20个脉冲发送完毕。在中断处理程序中关闭定时器T2,将停止超声波信号的发射。   4) 接收和溢出中断   外部中断INT1作为超声波脉冲接收中断,在初始化时被设置为下降沿触发。当接收到超声波信号后INT1中断,在该中断处理程序中将定时器T1的计数值保存,并关闭INT1和定时器T1的定时中断,最后置位接收中断标志位flag后返回,flag表示成功地接收到了超声波信号。   当INT1直到定时计数器T1的溢出中断已经发生还没有触发,则说明发射的超声波信号未被接收到,可能是探头未对准障碍物没有足够强的信号被反射回来或测量超范围,此时可以调整重新测量。当T1溢出中断发生时,在其中断程序中会设置f_over=1,表示测量超时,中断返回后依据此标志的置位终止当前的一次测量,这样就能防止程序发生死锁现象。 8.6 程 序 清 单   1.头文件     typedef unsigned char uchar;     typedef unsigned char code ucharc;     typedef unsigned int uint;     typedef unsigned long int ulong;     /*****位变量定义******/     sbit  clk=P1^0;     sbit  le1=P1^1;     sbit le2=P1^2;     sbit le3=P1^3;     sbit  le4=P1^4;     sbit fmq=P3^7; sbit led1=P0^4; sbit led2=P0^5; sbit led3=P0^6; sbit led4=P0^7; sbit CS_F=P3^6; /******全局变量定义*******/ uchar bdata kd; sbit

文档评论(0)

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

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

1亿VIP精品文档

相关文档