logo资料库

红外发射与接收电路、程序设计总结.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
红外发射与接收设计总结 对于红外发射与接收设计我们采用了两种方案,一种方案是不用编解码芯 片,直接用单片机加红外发射头或红外一体化集成接收头来显现数据之间的简单 通信,此方案所用元器件少,可节约成本,但编程难度相对而言较大。首先发端 需要编程让单片定时器输出端能产生 38khz 的方波,这个我们已在单片机开发板 实现了一部分功能,我们所使用的单片机开发板的电路原理图可见附录 A,发端 产生 38khz 的方波程序可见附录 B。另外接收端需要考虑的因素比较多,即我们 如何考虑发端与收端编码与解码一致,即实现对不同对象发送不同的码。可以考 虑对 int 口中断计数,获得高低电平持续时间,由此进行解码。也可以通过 int 中断口计数接收方波脉冲的个数(当然这个个数可限定在一定范围,不必那么精 确),这些都还只是理论上的分析,具体行不行还得实践一下。我们在单片机开 发板基础上编写了一个功能简单的接收端程序,这个程序的功能是只要单片机 int 中断口有信号沿跳变,数码管会顺时显示数字同时蜂鸣器会响,参考程序可 见附录 C。并且此次编写的发端程序和收端程序通过 kell 编译下载到开发板的 单片机上后,发端和收端可以通信,即发端通过红外发射头将 38khz 方波发出去 后,收端可以接收得到,并且每接收到跳变信号,数码管会显示数字同时蜂鸣器 响。如果还要进一步实现更复杂的功能,可以进一步修改程序,附录中的程序仅 供参考。 另外,我们还考虑使用编解码芯片实现红外通信,编码芯片选用 PT2262-IR ,解码芯片可选用PT2272_N4/PT2272-L4/PT2272-M6/PT2272-L6. ,其中L 表示 锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据 发生变化时改变。M表示非锁存输出,数据脚输出的电平是瞬时的而且和发射端 是否发射相对应,可以用于类似点动的控制。PT2262编码出来的数据流是一段一 段的,包括同步码、地址码、数据码。对于PT2262的选型我们要注意一下,PT2262 没有带后缀的用示波器观察其数据输出流,其波形不是周期性的,出1101110101 等等类似的编码波形,而对于接受端选用的HS0038一体化红外接收头只能解调出 38khz的周期性的方波,对于那些不规则的波形解调不出。而PT2262-IR专用于红 外编码,其编码出来的数据L流呈周期特性,只要能编码出38khz的数据流,HS0038 就能解调出来。我们还是用面包板搭建了简易的红外编解码电路,也是基于 PT2262/PT2272.发射端的电路可有两种,可见附录D,接收端的电路可见附录E. 问题是我们要在发射端产生38khz的数据流,接收端才能收到。这可以调节 PT2262-IR 的15、16脚的振荡电阻来控制,PT2262数据手册提供红外部分电路在 这两端所给出的阻值范围是430k-470k,而要产生38khz频率可将振荡电阻控制在 450k左右,当然我们是在面包板的基础上进行估计,实际应用中这两端最好接一 个电位器,以方便调节电阻。接受端的振荡电阻接一个1M的电阻就差不多了。 当然有时会出现发端发出,收端可以接收到信号,但不能解码。不能解码的原因 很多,有可能是地址码不对,或是接收到信号的幅度太低,或是信号干扰严重, 这些都要试着确定一下。
附录 A 单片机开发板电路图
附录 B 红外发射端 C 程序 #include #include #include #include sbit P35=P3^5; void InitTIMER0(void); unsigned void counter0(void); void main(void) int num; { int tag=0; InitTIMER0(); IT1=1; EX1=1; EA=1; if(TF1==1) if(tag==0) {counter0(); tag=1;} else {tag=0; counter0();} if(num==20000) TR1=0; } void InitTIMER0(void) { TMOD|=0x20; TH1=0xf4; TL1=0xf4; ET1=1; TR1=1; EA=1; } void counter0(void) interrupt 0 { EX0=0; if(P35==0) { else { P35=1; } P35=0; } num++;
EX0=1; }
附录 C 红外接收端 C 程序 #include #include #include #include sbit BELL=P2^6; sbit LED0=P2^0; unsigned int num; void counter1(void); unsigned char seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; bit FINT1; void main(void) { IT1=0; EX1=1; EA=1; if(FINT1) { P0=seg[2]; LED0=0; BELL=0; } if(num==20000) EX1=0; } void counter1() interrupt 2 { using 1 EX0=0; FINT1=1; num++; EX0=1; }
附录 D 红外编解码发送端编码电路 S2 1 2 VCC 4 3 SW DIP-2 PT1 7 Q1 9 01 3 J P2 PT2 2 6 2-IR 1 2 3 4 5 6 7 8 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 D5 D4 R8 4 50 K PT1 7 D0 D1 D2 D3 R1 1 2 K VCC R7 4 .7 D1 红外发射管 C4 4 7UF Q2 9 01 3 电路图一 S2 1 2 VCC 4 3 SW DIP-2 PT1 7 Q1 9 01 3 J P2 PT2 2 6 2-IR 1 2 3 4 5 6 7 8 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 D5 D4 R8 4 50 K PT1 7 D0 D1 D2 D3 R1 1 2 K 电路图二 PT2262 的数据端可接单片机。 Q2 9 01 3 D1 红外发射管 R7 4 .7 VCC
附录 E 红外编解码接收端解码电路 VCC R15 1M PT14 D0 D1 D2 D3 JP2 1 18 17 2 16 3 15 4 14 5 13 6 12 7 11 8 9 10 PT2272-L4 D5 D4 J2 123 HS0038B VCC Q1 9013 R16 10K 4 1 T P VCC HS0038 的 vcc 和 gnd 之间可接 0.1uf 的电容,以便滤除干扰,同时 PT2272 的数据端可接单片机。
分享到:
收藏