文档详情

红外遥控器软件解码原理跟程序 - 21ic中国电子网.pdf

发布:2018-08-26约8.76千字共7页下载文档
文本预览下载声明
红外遥控器软件解码原理和程序 红外一开始发送一段13.5ms 的引导码,引导码由9ms 的高电平和4.5ms 的低电平组成,跟 着引导码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段 重复码,重复码由9ms 的高电平,2.25ms 的低电平,跟着是一个短脉冲,本程序经过试用, 能解大部分遥控器的编码! #include at89x52.h #define NULL 0x00//数据无效 #define RESET 0X01//程序复位 #define REQUEST 0X02//请求信号 #define ACK 0x03//应答信号,在接收数据后发送ACK 信号表示数据接收正确, 也位请求信号的应答信号 #define NACK 0x04//应答信号,表示接收数据错误 #define BUSY 0x05//忙信号,表示正在忙 #define FREE 0x06//空闲信号,表示处于空闲状态 #define READ_IR 0x0b//读取红外 #define STORE_IR 0x0c//保存数据 #define READ_KEY 0x0d//读取键值 #define RECEIVE 0Xf400//接收缓冲开始地址 #define SEND 0xfa00//发送缓冲开始地址 #define IR 0x50//红外接收缓冲开始地址 #define HEAD 0xaa//数据帧头 #define TAIL 0x55//数据帧尾 #define SDA P1_7 #define SCL P1_6 unsigned char xdata *buf1; //接受数据缓冲 unsigned int buf1_length; //接收到的数据实际长度 unsigned char xdata *buf2; //发送数据缓冲 unsigned int buf2_length; //要发送的数据实际长度 bit buf1_flag; //接收标志,1 表示接受到一个数据帧,0 表示没有接受到数据帧或数据 帧为空 bit buf2_flag; //发送标志,1 表示需要发送或没发送完毕,0 表示没有要发送的数据或 发送完毕 unsigned char state1,state2; //用来标志接收字符的状态,state1 用来表示接 收状态,state2 用来表示发送状态 unsigned char data *ir; union{ unsigned char a[2]; unsigned int b; unsigned char data *p1[2]; unsigned int data *p2[2]; unsigned char xdata *p3; //红外缓冲的指针 unsigned int xdata *p4; }p; //union{ // // unsigned char a[2]; // // unsigned int b; // unsigned char data *p1[2]; // unsigned int data *p2[2]; // unsigned char xdata *p3; // unsigned int xdata *p4; //地址指针 //}q; // union{ unsigned char a[2]; unsigned int b; }count; union{ unsigned char a[2]; unsigned int b; }temp; union{ unsigned char a[4]; unsigned int b[2]; unsigned long c; }ir_code; union{ unsigned char a[4]; unsigned int b[2]; unsigned long c; unsigned char data *p1[4]; unsigned int data *p2[4]; unsigned char xdata *p3[2]; unsigned int xdata *p4[2]; }i;
显示全部
相似文档