久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3727|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

GPS+12864+18B20+IR+Key萬(wàn)年歷,遙控求助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿做了這個(gè)萬(wàn)年歷,遙控一直不能用,有那位大俠指教下看改動(dòng)那里,才能配上這個(gè)遙控

#ifndef  _IR_H_
#define  _IR_H_

unsigned char keya,keyb,keyc,keyd,keye,keyf,keyg,keyh,keyi,keyj;
unsigned char key_add,key_minus,key_set,key_ok,key_up,
                          key_down,key_alarm,key_voioff,key_voion,key_light;

//bit  ala_flag=0;  //鬧鐘使能標(biāo)志位
//bit  back_light_flag=0;//背光使能
sbit IRIN = P3^5; //紅外接收器數(shù)據(jù)線

unsigned char IRCOM[]={0x00,0x00,0x00,0x00,0x10,0x10};
/***************************************************************
            外部中斷0響應(yīng)函數(shù),完成對(duì)紅外遙控的解碼
-------------------------協(xié)議--------------------------   
----開(kāi)始拉低9ms,接著是一個(gè)4.5ms的高脈沖,通知器件開(kāi)始傳送數(shù)據(jù)了
----接著是26位前導(dǎo)脈沖,用于識(shí)別該型號(hào)的搖控。                                 
----然后是發(fā)送8位數(shù)據(jù)的原碼,接著又發(fā)送8位數(shù)據(jù)的反碼.
----最后是一個(gè)長(zhǎng)脈沖,和開(kāi)始位一樣,拉低9ms和一個(gè)4.5ms脈沖表示結(jié)束。
----每個(gè)按鍵不同這處只在于那8位數(shù)據(jù)的原碼和反碼,因些只須要識(shí)別
----8位原碼就可以識(shí)別按鍵了
****************************************************************/
void delayA(unsigned char x)    //x*0.14MS
{
  unsigned char i;
  while(x--)
{
  for (i = 0; i<13; i++) {}
}
}
//=====================================================
void IR_IN() interrupt 0 //using 0
{
  unsigned char j,k,N=0;

     EX0 = 0;   
         delayA(15);
         if (IRIN==1)
     { EX0 =1;
           return;
          }
                           //確認(rèn)IR信號(hào)出現(xiàn)
  while (!IRIN)            //等IR變?yōu)楦唠娖剑^(guò)9ms的前導(dǎo)低電平信號(hào)。
{delayA(1);}

for (j=0;j<4;j++)         //收集四組數(shù)據(jù)
     {
      for (k=0;k<8;k++)        //每組數(shù)據(jù)有8位
                  {
                           while (IRIN)            //等 IR 變?yōu)榈碗娖剑^(guò)4.5ms的前導(dǎo)高電平信號(hào)。
                     {delayA(1);}//
                    while (!IRIN)          //等 IR 變?yōu)楦唠娖?br />                            {delayA(1);}  //
                     while (IRIN)           //計(jì)算IR高電平時(shí)長(zhǎng)
                      {
                      delayA(1);
                      N++;           
                      if (N>=30)
                                 { EX0=1;
                                 return;}                  //0.14ms計(jì)數(shù)過(guò)長(zhǎng)自動(dòng)離開(kāi)。
                      }                        //高電平計(jì)數(shù)完畢               
              IRCOM[j]=IRCOM[j] >> 1;                  //數(shù)據(jù)最高位補(bǔ)“0”
              if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //數(shù)據(jù)最高位補(bǔ)“1”
              N=0;
             }//end for k
    }//end for j

    if (IRCOM[2]!=~IRCOM[3])   //接收時(shí)間是否正確
    {
      EX0=1;
      return;
    }
/*================紅外編碼處理====================*/  
     switch(IRCOM[2])
            {
                case 0x00: keya=1;                  break;   //1
                case 0x01: keyb=1;                  break;   //2
                case 0x02: keyc=1;                  break;   //3
                case 0x03: keyd=1;                  break;   //4
                case 0x04: keye=1;                  break;   //5
                case 0x05: keyf=1;                  break;   //6
                case 0x06: keyg=1;                  break;   //7
//                case 0x07: keyh=1;                  break;   //8
                case 0x08: keyi=1;                         break;   //9
//                case 0x09: keyj=1;                  break;   //0
//遙控器1(電視遙控器)
/*
                case 0x13: key_minish=1;          break;   //-
                case 0x12: key_add=1;                  break;   //+
                case 0x18: key_manue=1;          break;   //菜單
                case 0x19: key_ok=1;                  break;   //OK
                case 0x15: key_alarm=1;     break;   //關(guān)鬧鐘的開(kāi)與關(guān)
*/
//遙控器2(ALETNK遙控器)
                case 0x15: key_add=1;                 break;   //+
                case 0x07: key_minus=1;         break;   //-  
                case 0x44: key_set=1;                 break;   //菜單       
                case 0x40: key_ok=1;                  break;   //OK       
                case 0x47: key_alarm=1;     break;   //關(guān)鬧鐘的開(kāi)與關(guān)
                case 0x45: key_light=1;        break; //背光控制

                case 0x10: key_up=1;        break;   //上
                case 0x11: key_down=1;      break;   //下
                case 0x14: key_voioff=1;    break;   //靜音
                case 0x17: key_voion=1;     break;   //聲音
                default:                                           break;   //別的鍵按下
        }
/*   if(key_alarm==1)//鬧鐘的開(kāi)與關(guān)的設(shè)置標(biāo)志位
           {
                key_beep();
                key_alarm=0;
                ala_flag=~ala_flag;
                key_alarm=0;
           }
    if(key_light==1)
          {
           key_beep();
           key_light=0;
       back_light_flag=~back_light_flag;
           key_light=0;
           }
*/          
     EX0 = 1; //開(kāi)中斷
}
/**************************
  ALIENTEK遙控器鍵碼值
        45H | 46H | 47H       
        ---------------
        44H | 40H | 43H
        ---------------
        07H | 15H | 09H
        ---------------
        16H | 19H | 0DH
        ---------------
        0CH | 18H | 5EH
        ---------------
        08H | 1CH | 5AH
        ---------------
        42H | 52H | 4AH
***************************/
#endif


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2015-6-1 22:50 | 只看該作者
遙控不能用。應(yīng)該是編碼格式或者是按鍵編碼值的問(wèn)題。建議樓主,多用幾個(gè)遙控器測(cè)試一下。
回復(fù)

使用道具 舉報(bào)

板凳
ID:44267 發(fā)表于 2015-9-5 14:20 | 只看該作者
太強(qiáng)了,太強(qiáng)了,太強(qiáng)了,太強(qiáng)了,
回復(fù)

使用道具 舉報(bào)

地板
ID:18867 發(fā)表于 2015-9-15 12:56 | 只看該作者
#ifndef  _HW_H_
#define  _HW_H_
/**********************************************************
設(shè)置
**********************************************************/
uchar IRCOM[]={0x00,0x00,0x00,0x00,0x10,0x10};
/***************************************************************
            外部中斷0響應(yīng)函數(shù),完成對(duì)紅外遙控的解碼
-------------------------協(xié)議--------------------------   
----開(kāi)始拉低9ms,接著是一個(gè)4.5ms的高脈沖,通知器件開(kāi)始傳送數(shù)據(jù)了
----接著是26位前導(dǎo)脈沖,用于識(shí)別該型號(hào)的搖控。                                 
----然后是發(fā)送8位數(shù)據(jù)的原碼,接著又發(fā)送8位數(shù)據(jù)的反碼.
----最后是一個(gè)長(zhǎng)脈沖,和開(kāi)始位一樣,拉低9ms和一個(gè)4.5ms脈沖表示結(jié)束。
----每個(gè)按鍵不同這處只在于那8位數(shù)據(jù)的原碼和反碼,因些只須要識(shí)別
----8位原碼就可以識(shí)別按鍵了
****************************************************************/
void delayA(uchar x)    //x*0.14MS
{
  uchar i;
  while(x--)
{
  for (i = 0; i<13; i++) {}
}
}



void IR_IN() interrupt 0 using 0
{
  uchar j,k,N=0;
     EX0 = 0;   
         delayA(15);
         if (IRIN==1)
     { EX0 =1;
           return;
          }
                           //確認(rèn)IR信號(hào)出現(xiàn)
  while (!IRIN)            //等IR變?yōu)楦唠娖剑^(guò)9ms的前導(dǎo)低電平信號(hào)。
{delayA(1);}

for (j=0;j<4;j++)         //收集四組數(shù)據(jù)
     {
      for (k=0;k<8;k++)        //每組數(shù)據(jù)有8位
                  {
                           while (IRIN)            //等 IR 變?yōu)榈碗娖剑^(guò)4.5ms的前導(dǎo)高電平信號(hào)。
                     {delayA(1);}//
                    while (!IRIN)          //等 IR 變?yōu)楦唠娖?br />                            {delayA(1);}  //
                     while (IRIN)           //計(jì)算IR高電平時(shí)長(zhǎng)
                      {
                      delayA(1);
                      N++;           
                      if (N>=30)
                                 { EX0=1;
                                 return;}                  //0.14ms計(jì)數(shù)過(guò)長(zhǎng)自動(dòng)離開(kāi)。
                      }                        //高電平計(jì)數(shù)完畢               
              IRCOM[j]=IRCOM[j] >> 1;                  //數(shù)據(jù)最高位補(bǔ)“0”
              if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //數(shù)據(jù)最高位補(bǔ)“1”
              N=0;
             }//end for k
    }//end for j
   
    if (IRCOM[2]!=~IRCOM[3])   //接收時(shí)間是否正確
    {
      EX0=0;
      return;
    }
/*================紅外編碼處理====================*/  
     switch(IRCOM[2])
            {
                case 0x0C: key_0=1;                  break;   //1
                case 0x18: key_1=1;                  break;   //2
                case 0x5E: key_2=1;                  break;   //3
                case 0x08: key_3=1;                  break;   //4
                case 0x1C: key_4=1;                  break;   //5
                case 0x5A: key_5=1;                  break;   //6
                case 0x42: key_6=1;                  break;   //7
                case 0x52: key_7=1;                  break;   //8
                case 0x4A: key_8=1;                 break;   //9
                case 0x16: key_9=1;                  break;   //0
                case 0x40: key_minish=1;          break;   //音量-
                case 0x43: key_add=1;                  break;   //音量+
                case 0x46: key_manue=1;          break;   //播放
                case 0x45: key_ok=1;                  break;   //OFF
                case 0x15: key_up=1;        break;   //上
                case 0x09: key_down=1;      break;   //下
                case 0x19: key_alarm=1;     break;   //RPT
                case 0x47: key_voioff=1;    break;   //靜音
                case 0x0D: key_voion=1;     break;   //U/SD                default:    break;   //別的鍵按下
        }
   

     EX0 = 1; //開(kāi)中斷
}

#endif
你把編碼數(shù)據(jù)改一下看行不行!
回復(fù)

使用道具 舉報(bào)

5#
ID:18867 發(fā)表于 2015-9-15 12:56 | 只看該作者
#ifndef  _HW_H_
#define  _HW_H_
/**********************************************************
設(shè)置
**********************************************************/
uchar IRCOM[]={0x00,0x00,0x00,0x00,0x10,0x10};
/***************************************************************
            外部中斷0響應(yīng)函數(shù),完成對(duì)紅外遙控的解碼
-------------------------協(xié)議--------------------------   
----開(kāi)始拉低9ms,接著是一個(gè)4.5ms的高脈沖,通知器件開(kāi)始傳送數(shù)據(jù)了
----接著是26位前導(dǎo)脈沖,用于識(shí)別該型號(hào)的搖控。                                 
----然后是發(fā)送8位數(shù)據(jù)的原碼,接著又發(fā)送8位數(shù)據(jù)的反碼.
----最后是一個(gè)長(zhǎng)脈沖,和開(kāi)始位一樣,拉低9ms和一個(gè)4.5ms脈沖表示結(jié)束。
----每個(gè)按鍵不同這處只在于那8位數(shù)據(jù)的原碼和反碼,因些只須要識(shí)別
----8位原碼就可以識(shí)別按鍵了
****************************************************************/
void delayA(uchar x)    //x*0.14MS
{
  uchar i;
  while(x--)
{
  for (i = 0; i<13; i++) {}
}
}



void IR_IN() interrupt 0 using 0
{
  uchar j,k,N=0;
     EX0 = 0;   
         delayA(15);
         if (IRIN==1)
     { EX0 =1;
           return;
          }
                           //確認(rèn)IR信號(hào)出現(xiàn)
  while (!IRIN)            //等IR變?yōu)楦唠娖剑^(guò)9ms的前導(dǎo)低電平信號(hào)。
{delayA(1);}

for (j=0;j<4;j++)         //收集四組數(shù)據(jù)
     {
      for (k=0;k<8;k++)        //每組數(shù)據(jù)有8位
                  {
                           while (IRIN)            //等 IR 變?yōu)榈碗娖剑^(guò)4.5ms的前導(dǎo)高電平信號(hào)。
                     {delayA(1);}//
                    while (!IRIN)          //等 IR 變?yōu)楦唠娖?br />                            {delayA(1);}  //
                     while (IRIN)           //計(jì)算IR高電平時(shí)長(zhǎng)
                      {
                      delayA(1);
                      N++;           
                      if (N>=30)
                                 { EX0=1;
                                 return;}                  //0.14ms計(jì)數(shù)過(guò)長(zhǎng)自動(dòng)離開(kāi)。
                      }                        //高電平計(jì)數(shù)完畢               
              IRCOM[j]=IRCOM[j] >> 1;                  //數(shù)據(jù)最高位補(bǔ)“0”
              if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //數(shù)據(jù)最高位補(bǔ)“1”
              N=0;
             }//end for k
    }//end for j
   
    if (IRCOM[2]!=~IRCOM[3])   //接收時(shí)間是否正確
    {
      EX0=0;
      return;
    }
/*================紅外編碼處理====================*/  
     switch(IRCOM[2])
            {
                case 0x0C: key_0=1;                  break;   //1
                case 0x18: key_1=1;                  break;   //2
                case 0x5E: key_2=1;                  break;   //3
                case 0x08: key_3=1;                  break;   //4
                case 0x1C: key_4=1;                  break;   //5
                case 0x5A: key_5=1;                  break;   //6
                case 0x42: key_6=1;                  break;   //7
                case 0x52: key_7=1;                  break;   //8
                case 0x4A: key_8=1;                 break;   //9
                case 0x16: key_9=1;                  break;   //0
                case 0x40: key_minish=1;          break;   //音量-
                case 0x43: key_add=1;                  break;   //音量+
                case 0x46: key_manue=1;          break;   //播放
                case 0x45: key_ok=1;                  break;   //OFF
                case 0x15: key_up=1;        break;   //上
                case 0x09: key_down=1;      break;   //下
                case 0x19: key_alarm=1;     break;   //RPT
                case 0x47: key_voioff=1;    break;   //靜音
                case 0x0D: key_voion=1;     break;   //U/SD                default:    break;   //別的鍵按下
        }
   

     EX0 = 1; //開(kāi)中斷
}

#endif
你把編碼數(shù)據(jù)改一下看行不行!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久久久久青青日本 | 在线免费观看黄色 | 看黄在线| 亚洲国产精品区 | 国产美女精品视频 | 亚洲一二三区精品 | 精精国产xxxx视频在线野外 | 精品日韩一区 | 91久久| 日韩精品一区在线 | 欧美日高清 | 91麻豆精品国产91久久久更新资源速度超快 | 久久国内精品 | 国产午夜精品视频 | 欧美成人一区二区三区 | 欧美人人 | 久久久久国产精品午夜一区 | 天天操天天天 | 日本h片在线观看 | 在线观看亚洲专区 | 亚洲成人免费av | 午夜电影一区 | 天天躁人人躁人人躁狂躁 | 极品销魂美女一区二区 | 丁香综合 | 精品国产一区二区国模嫣然 | 国产成人精品在线播放 | 免费观看www| 欧美一级久久 | 欧美一区二区免费视频 | 成人精品国产一区二区4080 | 日韩欧美网 | 欧美精品久久久久 | 欧美精品一区三区 | 久草在线在线精品观看 | 黄色在线免费观看 | 成人一区二区三区在线观看 | 欧美性受xxxx白人性爽 | 日本手机看片 | 成年男女免费视频网站 | 色综合一区二区 |