本文介绍了一种基于EU_IR_IC专用红外线学习芯片的型遥控器,并对其工作原理及软、硬件的设计和实现方法进行了详细的阐述。 关键词: 学习型遥控器; 红外遥控 ;宽频载波;自动识别。 引 言 远程控制技术日渐流行,远程控制家用电器成为一种需求。特别是一些特定场所的电器的远程控制如移动/电信/联通的基站的空调实现远程管理,可以节约大量的人力成本。还有象学校教室的电视的集中管理都需要远程来控制。而现有的家用电器通常都是红外接口。要把远程信号转成红外信号才可能控制现有的家用电器。本文介绍了一种基于专用红外芯片的学习型遥控器,以EU_IR_IC专用红外芯片为核心,通过测量并记录红外遥控信号,再生遥控信号来实现学习型遥控器。与现在流行的一些方案区别,可适应27K-75K的不同载波频率。各种制式可学习现有市面99.9%的遥控信号。 EU_IR_IC专用红外学习型遥控芯片介绍 EU_IR_IC专用红外学习型遥控芯片,是重庆易用科技公司开发的一款专用红外学习型遥控芯片详细资料可参考www.cqeukj.com。主要特点如下: 适应性强:可学习27K-75K的不同载波频率红外信号。能学习市场99.9%的遥控器信号 使用方便: 全双工UART用户接口,波特率可设。 指令简单:只需二条指令即可控制。 宽电压:3V-5.5V。 电路简单:外接元件少。 引脚及封装图如下:
学习型遥控器的硬件设计及实现
设计原理图如上图所示 EU_IR_IC的16脚接一只三极管推动红外发送.接收信号接EU_IR_IC的14脚红外学习接收电路。EU_IR_IC的27/28脚接24Cxx的EEPROM。根据按键的多少决定每个按键用32B的空间。用户的MCU通过UART串口连接。 学习型遥控器的软件设计及实现 用户单片机通过UART与EU_IR_IC通信。默波特率是9600bps,8位数据位,一个停止位。 一共二条指令 Sxxx,学习指令:学习一个按键并记录到xxx位置,xxx为000-999的数字. Fxxx发送指令,将xxx的红外指令发送出去, xxx为000-999的数字.
串口相关部分程序
#include <reg52.h> #define Uchar unsigned char #define Tdc 0xff #define Tcdh 0xff #define BUFFER_SIZE 64 #define TX_BUFFER_SIZE 16 #define COMMD_SIZE 4 //+++++++++++++Uart init 9600bps ++++++++++++++++++++ void Init_uart(void) { EA = 0; TMOD=0x22; PCON=PCON&0x7f; TH1=0xfd; TL1=0xfd; SCON=0x50; //11.0592Mhz 9600bps ES=1; EX0=1; PX0=0; RI=0; TI=0; IT0=1; TR1=1; EA=1; } //+++++++++End Uart init 9600bps ++++++++++++++++++++ //+++++++++++++++ Uart interrupt ++++++++++++++++++++ Void rcv_com(void) interrupt 4 using 2 { if(RI) { RI = 0; Serial_Buff[Buff_Count] = SBUF; Buff_Count++; Buff_Count=Buff_Count%BUFFER_SIZE; } else if(TI) { TI = 0; if (TDX_Buffer_Count-Sended_count==0) TDX_flag=0; else { SBUF=TDX_Buffer[Sended_count]; Sended_count=(Sended_count+1)%TX_BUFFER_SIZE; } } } //+++++++++++End Uart interrupt +++++++++++++++++++++ //++++++++++++++send data +++++++++++++++++++++++++++ Uchar send_char (Uchar *send_data,Uchar data_long) { Uchar *send_D,D_long,i; Uchar unused_buffer_size,unsend_data_long; send_D=send_data; D_long=data_long; unsend_data_long=TDX_Buffer_Count-Sended_count; if (unsend_data_long>=0) { unused_buffer_size=TX_BUFFER_SIZE-unsend_data_long; } else { unused_buffer_size=Sended_count-TDX_Buffer_Count; } if (unused_buffer_size<=D_long) return 0xff; else { if (TDX_flag==0) { SBUF=*send_D; send_D++; D_long--; TDX_flag=0xff; } EA=0; for(i=0;i<D_long;i++) { TDX_Buffer[TDX_Buffer_Count]=*send_D; send_D++; TDX_Buffer_Count=(TDX_Buffer_Count+1)%TX_BUFFER_SIZE; } EA=1; return 0; } } //+++++++++++++ end send data +++++++++++++++++++++++++++++++++++++++++++++
void main (void) { int long_count; unsigned char x; Buff_Count=0; USED_count=0; TDX_Buffer_Count=0; Sended_count=0; TDX_flag=0; Init_uart(); while(1) { } }
相关链接:https://bbs.21ic.com/upfiles/img/20078/200781141328400.pdf |