專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

51單片機(jī)紅外解碼庫文件

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2013年08月16日   【字體:


遙控器就是下面圖上的那種
完整的程序源碼下載地址:http://www.torrancerestoration.com/bbs/dpj-20623-1.html
紅外解碼文件 ir.h/*---------------------------------------------------
名稱:紅外驅(qū)動
編寫:YuMin_Dong
時間:2012.11.26
---------------------------------------------------*/
#ifndef _IR_H_
#define _IR_H_
uint8 irtime;
uint8 irdata[33]/*,irprodata[4]*/;
bit irreceive_ok,irpro_ok;
//uint8 code LCD_TAB[]={"0123456789ABCDEF"};
void Timer1_Init(void)
{
TMOD|=0X20;
TH1=0;
TL1=0;
//EA=1;
ET1=1;
TR1=1;
}

void Timer1_IRQ(void) interrupt 3
{
irtime++;
}

void ExtInt0_Init(void)
{
IT0=1;
IE|=0x81;
}

void ExtInt_IRQ(void) interrupt 0
{
static uint8 i;
uint8 j,k;
  if(irtime>32&&irtime<64)
  i=0;
  irdata[i]=irtime;//每次外中斷時i會自加1,可見是一個i靜態(tài)變量
  irtime=0;
  i++;
  if(i==33)
  {
  i=0;
  irtime=0;
  //irreceive_ok=1;
  ir_value=0;
  k=17;
  for(j=0;j<8;j++)
  {
  ir_value>>=1;
   if(irdata[k]>6)
   ir_value|=0x80;
  k++;
  }
  irpro_ok=1;
  }
  
  if(irpro_ok)
  {
   irpro_ok=0;
   if(matrix.S==FIRST)
   {
   if(ir_value==0x43)
   {
   ir_value=0xff;
   matrix.S=Second;
   }
    else if(ir_value==0x40)
     { 
     matrix.N++;
     if(matrix.N>MENU_COUNT)
     matrix.N=0;  //首頁翻動循環(huán)
     ir_value=0xff;
     }
    else if(ir_value==0x44)
     {
     matrix.N--;
     if(matrix.N<0)
     matrix.N=MENU_COUNT; //首頁翻動循環(huán)
     ir_value=0xff;
     }
    else if(ir_value==0x46)
     {
     PCON|=0x02;
     ir_value=0xff;
     }
    else if(ir_value==0x47)
     {
     PCON=0X01;
     ir_value=0xff;
     }
   }
   
   else
   {
    if(matrix.N==SNAKE)
    {
    Snake_Key();
     if(ir_value==0x07)
     {ir_value=0xff;snake_speed++;if(snake_speed>30);snake_speed=30;}
     else if(ir_value==0x15)
      {ir_value=0xff;snake_speed--;if(snake_speed<10) snake_speed=10;}
    }
    else if(matrix.N==JINIANRI)
    LeftMove_Key();
    
    else if(matrix.N==TIME)
    Time_Key();
      
    else if(matrix.N==SET)
    Time_Set_Key();
    
    else if(matrix.N==TEMPERATURE)
    Temperature_Key();
    
    //else if(matrix.N==RADIO)
    //Radio_Key();
    
   }
  }
}

#endif
 

 

關(guān)閉窗口

相關(guān)文章