OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 综合技术 » 单片机系统中红外通信接口的设计

共1条 1/1 1 跳转至

单片机系统中红外通信接口的设计

菜鸟
2003-08-26 18:39:00    评分
在许多基于单片机的应用系统中,系统需要实现遥控功能,而红外通信则是被 采用较多的一种方法。一般市场上的遥控器协议简单、保密性不强、抗干扰能力较 弱。这里,我们介绍一种基于字节传输的红外遥控系统,可以适合于各种复杂的应 用场合。   红外通信的基本原理   红外通信的基本原理是发送端将基带二 进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。常用的有通 过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实 现信号调制的脉时调制(PPM)两种方法。本系统采用的为脉时调制方法。数据比 特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据 比特,如图1所示。   硬件电路设计   复费率电能表系统可分为手持遥控 器和复费率电能表两部分。手持遥控器为发射部分,其基本电路如图2所示。采用 塑封的SE303ANC-C发射二极管,波长为940nm。CPU按照协议规定导通或截止发射二 极管,从而产生特定频率的发射信号,这里选用的频率为38.9kHz。复费率电能表 红外接收部分的基本电路如图3所示。接收管采用日本光电子公司的PIC-12043,其 接收频率为37.9kHz,它直接将37.9kHz的调制信号解调为基带信号,提供给接收 CPU。该芯片接收灵敏度高,性能稳定。其基本工作过程为:当接收到37.9kHz信 号时,输出低电平,否则输出为高电平。电能表部分采用的是51系列单片机,以中 断方式检测接收信号。这里的非门对接收信号起整形作用。   软件设计    发射部分的程序相对来说非常简单,主要是产生不同时间间隔的37.9kHz脉冲串信 号去控制发射管的通断。在发射端,CPU不断扫描键盘,一旦发现有键按下,即启 动发射子程序将相应的数值发送出动。在我们的设计中,采用的是4×4的小键盘, 正好和0~F编码对应,为了提高可靠性,采用最简单的纠错编码——将 每位数重复发送一次,即和键盘数字对应的编码为00~FF。这样,一个键值要发送 8比特。接收端接收满8比特信号后,再进行纠错处理,不正确的编码认为无效。收 足规定的号码后,即调用号码分析程序进行处理。当每收到一个脉冲串信号后即启 动一个定时器。下次中断发生时,通过定时器的计数值判断是0还是1。如果定时器 溢出,则清除本次接收的号码,恢复到接收初始状态。接收部分的基本程序流程如 图4所示。   在程序设计时,应该注意MCU的中断方式采用下边沿触发;接收端 通过T0计数值来判断发送比特,一般采用硬判决,即取0和1比特时宽的平均值为判 决门限A,当T0值大于A时判接收信号为0,小于A时判为1。   复费率电能表中 的红外接收程序如下(MCU为Intel 8052,采用C语言编写): #include #include #include #pragma OPTIMIZE(5,SPEED) sbit RECV=P3^3; bdata unsigned char SIGN, RECVBYTE; sbit RECVBG=SING^0; sbit US1AT=SIGN^6; sbit RECVBITO=RECVBYTE^0; unsigned char RECVBIT; //------------------------------------- timer0() interrupt 1 //entrance: 8*n+3=0Bh; { IE=0×8d; //1(EA)0(X)0(X)0(X)_1(ET1)1(EX1)0(ET0)1(EX0) Recvbg=0; } //-------------------------------------- EX_INT1() interrupt 2 //接收 红外信号 { TCON=0×45; //0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0) If(RECVBG==0) {RECVBG=1; RECVBIT=8; } else{ RECVBYTE=RECVBYTE<<1; if(TH0<=4)RECVBIT0=1; else RECVBIT0=0; RECVBIT--; if(RECVBIT==0) { RECVBG=0; US1AT=1; } } TH0=0; TL0=0; TCON=0×55; //0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0) IE=0×8f; //Enable the timer0 interrupt } //---------------------------------------------------- void main() { RECVBYTE=0; SIGN=0; TMOD=0×11; TCON=0×55; //0(TF1)1(TR1)0(TF0)1(TR0)_0(IE1)1(IT1)0(IE0)1(IT0) IP=0×00; IE=0×8d; //1(EA)0(X)0(X)0(X)_1(ET1)1(EX1)0(ET0)1(EX0) //基本循环程序 while(1){ ? ?(略) ? if(US1AT==1) { //红外接收处理 ? ?(略) ? } } }   结语   以上设计方案在复费率电能表中应用后,效果良好,达 到了设计要求。整个系统外围元件少,调试方便;软件工作量也较小。如果应用来 传送大量数据时,还可以根据需要改变相应的编码形式,提高数据传送速率。 ※ 来源:.碧海青天 bbs.dlut.edu.cn



关键词: 单片机     系统     红外     通信     接口     设计     信号     发射         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]