搜索
 找回密码
 立即注册

简单一步 , 微信登陆

IR遥控转码功能

作者:AlexWeng | 时间:2017-3-30 23:57:55 | 阅读:11623| 只看该作者
IR遥控转码功能
关键字:IR 转码 DVD 遥控
适用机种:MIPS架构平台所有机型
以下为遥控转码(NEC码)功能的参考代码,使用1个IO口来模拟IR波形给DVD或其它后端设备。
现只是使用延时而没有使用中断的方式来做,因为现系统中的MsOS_DelayTaskUs函数实际时间不准确,需加入修正值,具体的可通过
示波器测量波形来验证。
#if (ENABLE_DVD_IR_SEND_FUNCTION)
#define FIX_MUL_VAL     0.66

#define IR_LEADER_LOW      5940 //(9000*FIX_MUL_VAL)    // us
#define IR_LEADER_HIGH    3000 //(4500*FIX_MUL_VAL)    // us
#define IR_LOGIC_HIGH       385 //(560*FIX_MUL_VAL)     // us
#define IR_LOGIC0_LOW       385 //(560*FIX_MUL_VAL) //1120    // us
#define IR_LOGIC1_LOW       1155 //(1680*FIX_MUL_VAL) //2240    // us

#define IR_HEADCODE          0xBF00
U32 u32_SendIRtimerCounter;

#define IR_DELAY(X)  {MsOS_DelayTaskUs(X);}//{u32_SendIRtimerCounter = MsOS_GetSystemTime();while(MsOS_Timer_DiffTimeFromNow(u32_SendIRtimerCounter) >= X);}

void SendIRCode(U8 Datecode)
{
   U8 i;
   U32 j = 0x01;
   U32 SendDATA; //, HeadCode;

   //HeadCode = IR_HEADCODE;
   SendDATA = IR_HEADCODE |  (Datecode << 16) | ((~Datecode)<<24) ;

    // putstr("\r\n Set P0_6");
    printf("\r\n DATA = %x",SendDATA);

     DVD_IR_LOW();   

     IR_DELAY(IR_LEADER_LOW);

     DVD_IR_HIGH();  

     IR_DELAY(IR_LEADER_HIGH);

     for(i=0;i<32;i++)
     {

        DVD_IR_LOW();              
        IR_DELAY(IR_LOGIC_HIGH);
        DVD_IR_HIGH();  

         if(SendDATA&j)         
         {
            IR_DELAY(IR_LOGIC1_LOW);
         }
         else
         {
            IR_DELAY(IR_LOGIC0_LOW);   
         }      
          j <<=1;

       }
/*
       j = 0x01;
       for(i=0;i<16;i++)
       {
        DVD_IR_LOW();              
        IR_DELAY(IR_LOGIC_HIGH);
        DVD_IR_HIGH();  

         if(SendDATA&j)         
         {
           j <<=1;
            IR_DELAY(IR_LOGIC1_LOW);
         }
         else
         {
            j <<=1;
            IR_DELAY(IR_LOGIC0_LOW);   
         }      
        }
*/
        DVD_IR_LOW();      
        IR_DELAY(IR_LOGIC_HIGH);
        DVD_IR_HIGH();  


        printf("\r\n ONE BYTE SEND");
        //putstr("\r\n - ");  putstr(" - ");  putstr(" - ");
        MsOS_DelayTask(10);
        DVD_IR_HIGH();   
        return;
}

#endif


收藏
收藏1
分享
分享
点赞
点赞25
反对
反对0
该会员没有填写今日想说内容.
回复

使用道具 举报

大神点评5

沙发#
xuludestiny 发表于:2017-4-5 14:12:14
IO口来模拟IR波形给DVD或其它后端设备。谢谢
把水灌满
回复 支持 反对

使用道具 举报

板凳#
高天凡1993 发表于:2017-4-8 17:40:46
上海衡海投资管理有限公司。谢谢楼主,楼主太好人了
回复 支持 反对

使用道具 举报

地板#
fanwhu 发表于:2017-6-1 14:57:12
不错的方法,谢谢。
回复 支持 反对

使用道具 举报

5#
chen472015439 发表于:2017-7-27 14:23:53
留名备用参考,谢谢!
回复 支持 反对

使用道具 举报

6#
Jack.Lin 发表于:2017-12-31 23:49:15
这种应用给客户有一定参考价值。
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版