红外遥控器的解码

2020-01-22 12:01发布

红外遥控器的解码
实测距离10米时不会错误或需要重复按遥控器 (*^__^*) ……


接收头 (原文件名:接收头.jpg.jpg)


正确解码 (原文件名:20110103426.jpg)
第一行显示的是:地址码+地址码+操作码+操作码反码  接受数据正确时第二行显示OK  旁边的数字是连_发次数


错误解码 (原文件名:20110103427.jpg)
第一行显示的是:地址码+地址码+操作码+操作码反码  接受数据错误时第二行显示error  旁边的数字是连_发次数


51开发板配的万能遥控器 (原文件名:20110103428.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
97条回答
yanshengdian
1楼-- · 2020-02-01 11:18
xuexi xuexi!xie!
lanjingjing
2楼-- · 2020-02-01 14:01
mark,准备学习一下
dragonbbc
3楼-- · 2020-02-01 16:34
 精彩回答 2  元偷偷看……
bluelool
4楼-- · 2020-02-01 17:16
xuexile
jeasen
5楼-- · 2020-02-01 21:15
回复【62楼】ye955
-----------------------------------------------------------------------

实际试了一下,还是蛮不错的,就是解出来的码是反的比如0X1F,用这个程序解出来是0XF8,另外这上面没连按的程序,楼主能不能发一下啊?谢谢,楼主请留个QQ,大家交流一下
tzsteel
6楼-- · 2020-02-01 22:57
回复【61楼】ye955
-----------------------------------------------------------------------

井底之蛙,你才见过几种遥控器,就敢说用中断是笨人?
遥控器用的最多的是电视,DVD,空调等,人家用的单片机会缺中断口?如果都用你的方法,就别干别的事了。
另外告诉你,人家90%都不是51单片机。

有用查询方式,但都是用在极简系统,就象你举的例子,风扇、电暖气之类的,那是不得已而为之。你们不用,只能说明你们做的产品档次太低。
-----------------------------------
回复 97 楼
你把解码子程序 Decode里移位顺序反过来
程序没细看,你试试下面程序
void Decode(void)
{
    unsigned char bitcounter,timecounter=0x00;
    EX0 = 0;   //外部中断无效
    for(bitcounter=12; bitcounter>0; bitcounter--)
    {
        {
            if((IR_time[timecounter]>IR_L_timer_min)&(IR_time[timecounter]<IR_L_timer_max))      //数据"0" 0.6ms低电平+0.6ms高电平
            {
                IR_12bit<<=1;        //逆序 //IR_12bit>>=1;
                IR_12bit&=0xfffe;    //逆序 //IR_12bit&=0xf7ff;  //16位int数的第12位置0
            }
            else if((IR_time[timecounter]>IR_H_timer_min)&(IR_time[timecounter]<IR_H_timer_max)) //数据"1" 1.2ms低电平+0.6ms高电平
            {
                IR_12bit<<=1;    //逆序 //IR_12bit>>=1;
                IR_12bit|=0x001; //逆序 //IR_12bit|=0x800;  //16位int数的第12位置1
            }
            timecounter++;
        }
    }

一周热门 更多>