ir红外发射与接收实咧(免费).doc_第1页
ir红外发射与接收实咧(免费).doc_第2页
ir红外发射与接收实咧(免费).doc_第3页
ir红外发射与接收实咧(免费).doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

更多共享就在:/avbbtv/home,个人整理,没有版权,欢迎共享-avbbtv红外线(IR )接收/ 检测器有内置的光滤波器,除了需要检测的9 80 nm 波长的红外线外,它几乎不允许其它光通过。红外检测器还有一个电子滤波器,它只允许大约38.5 kHz 的电信号通过。换句话说,检测器只寻找每秒闪烁38,500 次的红外光。这就防止了普通光源像太阳光和室内光对IR 的干涉。 (注:太阳光是直流干涉(0Hz )源,而室内光依赖于所在区域的主电源,闪烁频率接近100 或120 Hz 。由于120 Hz 在电子滤波器的38.5 kHz通带频率之外,它完全被IR 探测器忽略。搭建IR发射和探测器所需元器件清单 (1) 两个红外检测器 (2) 两个IR LED (3) 四个470电阻 (4) 两个9013三极管 (5) 跳线若干 为方便读者理解,在本节以实例讲解如何搭建IR 发射和探测器电路。搭建IR发射和探测器电路所需元器件如图1 - 2 所示。图1 - 2 右上方由热缩管包裹起来的是IR 发射器,其实质上是发光二极管,与普通发光二极管不同,IR 发射器发射的是红外光;图1 - 2 右下方的两个三针元器件是IR 探测器,其能探测38.5 kHz的红外光;此外还包括4 个470的电阻以及两个9013三极管。这个_nop_()等效与汇编里面的,NOP指令,也就是空一个机器周期,如果是传统51单片机的话,等于空12个时钟周期【即一个机器周期】程序实例#include #include #include #define LeftIR P1_2 /左边红外接收连接到P1_2 #define RightIR P3_5 /右边红外接收连接到P3_5 #define LeftLaunch P1_3 /左边红外发射连接到P1_3 #define RightLaunc h P3_6 /右边红外发射连接到P3_6 void IRLaunch(unsigned char IR) int counter; if(IR=L)/左边发射 for(counter=0;counter38;counter+) /频率发射38hz LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LeftLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(IR=R)/右边发射 for(counter=0;counter38;counter+) RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); int main(void) int i,pulseCount; int pulseLeft,pulseRight; int irDetectLeft,irDetectRight; uart_Init(); printf(Program Running!n); do IRLaunch(R); /右边发射 irDetectRight = RightIR; /右边接收 IRLaunch(L); /左边发射 irDetec tLeft = LeftIR; /左边接收 if(irDetectLeft=0) &(irDetectRig ht=0) /向前走 pulseCount=1; pulseLeft=1700; pulseRight=1300; else if(irDetectLeft=1)&(irDetectRight=0) /右转 pulseCount=10; pulseLeft=1300; pulseRight=1300; else if(irDetectLeft=0)&(irDetectRight=1) /左转 pulseCount=10; pulseLeft=1700; pulseRight=1700; else /后退 pulseCount=15; pulseLeft=1300; pulseRight=1700; for(i=0;ipulseCount;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论