欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機解碼的紅外遙控一個led燈亮和滅,遙控器鍵碼有,可是不會程序,求大神

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82852 發(fā)表于 2015-6-12 22:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想制作一個用單片機解碼的紅外遙控開關(guān),只需要控制一個led燈的亮和滅就可以了,各位大神誰有程序呢?下面是遙控器的鍵碼,和實物圖,只需要第一個鍵控制第一個等就可以,謝謝



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:81118 發(fā)表于 2015-6-13 21:19 | 只看該作者
判斷接受到在鍵碼 跟 你所按的鍵相同 點亮LED燈就可以了

LCD1602顯示紅外值.rar

40.72 KB, 下載次數(shù): 552

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:82852 發(fā)表于 2015-6-13 23:11 | 只看該作者
歡騰智能科技 發(fā)表于 2015-6-13 21:19
判斷接受到在鍵碼 跟 你所按的鍵相同 點亮LED燈就可以了

我也有這個,我一開始就拿這個改的,一直改不對,不知道怎么改。。。。
回復(fù)

使用道具 舉報

地板
ID:82852 發(fā)表于 2015-6-13 23:18 | 只看該作者
歡騰智能科技 發(fā)表于 2015-6-13 21:19
判斷接受到在鍵碼 跟 你所按的鍵相同 點亮LED燈就可以了

恩,你發(fā)的和我的是一個程序,可是我改了好多次,沒改對,要是你的話你會怎么改呢,大神?
回復(fù)

使用道具 舉報

5#
ID:72947 發(fā)表于 2015-6-15 17:43 來自觸屏版 | 只看該作者
喔哎呀呀 發(fā)表于 2015-6-13 23:18
恩,你發(fā)的和我的是一個程序,可是我改了好多次,沒改對,要是你的話你會怎么改呢,大神?

這個很好改嘛,他提供的程序應(yīng)該是接收到鍵值之后在1602液晶上顯示出來,你只要把他的顯示部分程序去掉,改成判斷鍵值的程序,按你的要求,判斷接收到的鍵值等于0x45就點亮第一個燈,不等就忽略!這樣改成功一路之后,就可以多加幾路判斷,實現(xiàn)控制8個燈了!

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:72947 發(fā)表于 2015-6-15 19:56 來自觸屏版 | 只看該作者
這是我做的紅外遙控項目,你可以參考一下!http://m.raoushi.com/bbs/forum.php?mod=viewthread&tid=34267&mobile=2
回復(fù)

使用道具 舉報

7#
ID:78515 發(fā)表于 2015-6-16 16:19 | 只看該作者
個人認為要看你的遙控器用的是什么通訊協(xié)議的。其實對于你這個控制用戶碼并不太重要,重要的是鍵碼。
現(xiàn)市場上的紅外遙控器多部分用的小日本NEC通訊協(xié)議的,你可以參考一下。希望能幫到你

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

8#
ID:81118 發(fā)表于 2015-6-22 21:56 | 只看該作者
喔哎呀呀 發(fā)表于 2015-6-13 23:11
我也有這個,我一開始就拿這個改的,一直改不對,不知道怎么改。。。。

下面是我改的 沒試過  不懂行不行!
如果你已經(jīng)解決就好,沒解決的話下面可以參考




#include<reg51.h>

sbit IRIN=P3^2;

sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;

unsigned char IrValue[6];
unsigned char Time;
void IrInit();
void DelayMs(unsigned int );
/*******************************************************************************
* oˉêyÃû         : main
* oˉêy1|Äü                   : Ö÷oˉêy
* êäèë           : ÎT
* êä3ö                  : ÎT
*******************************************************************************/

void main()
{
        IrInit();       
        while(1)
        {
//                IrValue[5]=IrValue[2]>>4;                          //¸ßλ
//                IrValue[6]=IrValue[2]&0x0f;                //μíλ       
                if( IrValue[2] == 0x45 ) LED1 = 0; // áá
                if( IrValue[2] == 0x46 ) LED2 = 0; // áá               
                if( IrValue[2] == 0x47 ) LED3 = 0; // áá
        }
}                                                                         
/*******************************************************************************
* oˉêyÃû         : DelayMs()
* oˉêy1|Äü                   : Ñóê±
* êäèë           : x
* êä3ö                  : ÎT
*******************************************************************************/

void DelayMs(unsigned int x)   //0.14msÎó2î 0us
{
unsigned char i;
  while(x--)
{
  for (i = 0; i<13; i++)
{}
}
}
/*******************************************************************************
* oˉêyÃû         : IrInit()
* oˉêy1|Äü                   : 3õê¼»ˉoìíaÏß½óêÕ
* êäèë           : ÎT
* êä3ö                  : ÎT
*******************************************************************************/

void IrInit()
{
        IT0=1;//ϽμÑØ′¥·¢
        EX0=1;//′ò¿aÖD¶Ï0ÔêDí
        EA=1;        //′ò¿a×üÖD¶Ï

        IRIN=1;//3õê¼»ˉ¶Ë¿ú
}
/*******************************************************************************
* oˉêyÃû         : ReadIr()
* oˉêy1|Äü                   : ¶áè¡oìíaêyÖμμÄÖD¶Ïoˉêy
* êäèë           : ÎT
* êä3ö                  : ÎT
*******************************************************************************/

void ReadIr() interrupt 0
{
        unsigned char j,k;
        unsigned int err;
        Time=0;                                         
        DelayMs(70);

        if(IRIN==0)                //è·èÏêÇ·ñÕæμĽóêÕμ½Õyè·μÄDÅoÅ
        {         
               
                err=1000;                                //1000*10us=10ms,3¬1yËμÃ÷½óêÕμ½′íÎóμÄDÅoÅ
                /*μ±á½¸öìõ¼t¶¼ÎaÕæêÇÑ-»·£¬èç1ûóDò»¸öìõ¼tÎa¼ùμÄê±oòìø3öÑ-»·£¬ÃaμÃ3ìDò3ö′íμÄê±
                o3ìDòËàÔúÕaàï*/       
                while((IRIN==0)&&(err>0))        //μè′yÇ°Ãæ9msμÄμíμçÆ½1y襠                
                {                       
                        DelayMs(1);
                        err--;
                }
                if(IRIN==1)                        //èç1ûÕyè·μèμ½9msμíμçÆ½
                {
                        err=500;
                        while((IRIN==1)&&(err>0))                 //μè′y4.5msμÄÆe꼸ßμçÆ½1yè¥
                        {
                                DelayMs(1);
                                err--;
                        }
                        for(k=0;k<4;k++)                //12óD4×éêy¾Y
                        {                               
                                for(j=0;j<8;j++)        //½óêÕò»×éêy¾Y
                                {

                                        err=60;               
                                        while((IRIN==0)&&(err>0))//μè′yDÅoÅÇ°ÃæμÄ560usμíμçÆ½1yè¥
//                                        while (!IRIN)
                                        {
                                                DelayMs(1);
                                                err--;
                                        }
                                        err=500;
                                        while((IRIN==1)&&(err>0))         //¼ÆËã¸ßμçÆ½μÄê±¼ä3¤¶è¡£
                                        {
                                                DelayMs(1);//0.14ms
                                                Time++;
                                                err--;
                                                if(Time>30)
                                                {
                                                        EX0=1;
                                                        return;
                                                }
                                        }
                                        IrValue[k]>>=1;         //k±íê¾μú¼¸×éêy¾Y
                                        if(Time>=8)                        //èç1û¸ßμçÆ½3öÏÖ′óóú565us£¬ÄÇÃ′êÇ1
                                        {
                                                IrValue[k]|=0x80;
                                        }
                                        Time=0;                //óÃíêê±¼äòaÖØD¸3Öμ                                                       
                                }
                        }
                }
                if(IrValue[2]!=~IrValue[3])
                {
                        return;
                }
        }                       
}

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

9#
ID:88498 發(fā)表于 2015-8-17 21:58 | 只看該作者
kan kan!!!!!!!!!
回復(fù)

使用道具 舉報

10#
ID:79544 發(fā)表于 2015-8-23 22:49 | 只看該作者
在主函數(shù)里換成switch

  1. switch(IrValue[2])
  2.                 {
  3.                 //        case 0x45: LED=0 ;break;
  4.                 //        case 0x46:LED1=0;break;
  5.                 //        case 0x47: KED2=0;break;
  6.                 //        case 0x08: YOUZHUAN;break;
  7.                 //        case 0x04: STOP ;   break;

  8.                         case 0x02: xzqianjin(); break;//電視遙控器鍵值
  9.                         case 0x0a: xzhoutui()  ;break;//電視遙控器鍵值
  10.                         case 0x07: xzzuozhuan();break;//電視遙控器鍵值
  11.                         case 0x05: xzyouzhuan(); break;//電視遙控器鍵值
  12.                         case 0x06: tingsha();  break;//電視遙控器鍵值
  13.                         case 0x18: tingsha();  break;

  14.                         case 0x17: shoushen(); break;
  15.                         case 0x14: shouzhua(); break;

  16.                         case 0x16: wanzuo();   break;
  17.                         case 0x13: wanyou();   break;

  18.                         case 0x15: zhoushang();break;
  19.                         case 0x12: zhouxia();  break;

  20.                         case 0x11: zhouzuo();  break;
  21.                         case 0x1a: zhouyou();  break;

  22.                         case 0x10: jianqian(); break;
  23.                         case 0x0e: jianhou();  break;

  24.                         case 0x0f: jianshang();break;
  25.                         case 0x19: jianxia();  break;

  26.                

  27.                
  28.                         default:break;
  29.                 }       
復(fù)制代碼
回復(fù)

使用道具 舉報

11#
ID:92810 發(fā)表于 2015-10-21 20:19 | 只看該作者
學(xué)習(xí)了,,謝謝大家的分享和意見了。。。
回復(fù)

使用道具 舉報

12#
ID:93339 發(fā)表于 2015-10-23 17:00 | 只看該作者
#在這里快速回復(fù)##include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit ir=P3^2; //紅外線一體接收器的接口 sbit led=P2^1;//此處寫led燈的連接IO口 unsigned int timer1;  uchar irtime; uchar irdata[33]; uchar bitnum; uchar startflag; uchar irok; uchar ircode[4]; uchar irprosok; void delay(uchar x); void timer0init(void) //256*(1/12m)*12=0.256ms {         TMOD=0x02;          TH0=0x00;          TL0=0x00;         ET0=1;         EA=1;         TR0=1; } void irpros(void) // 紅外碼值處理 {         uchar mun,k,i,j;         k=1;         for(j=0;j<4;j++)         {                 for(i=0;i<8;i++)                 {                         mun=mun>>1;                         if(irdata[k]>6)                         {                                 mun=mun | 0x80;                         }                                 k++;                 }                 ircode[j]=mun;         }         irprosok=1; } void delay(uchar x) {         uchar a,b;         for(a=x;a>0;a--)                 for(b=200;b>0;b--); } void int0init(void) {  IT0=1;  EX0=1;  EA=1; } void main() {         timer0init();         int0init();         while(1)         {                 if(irok==1)                 {                         irpros();                         irok=0;                 }                  if(ircode[2]==0x08)                  {                     led=!led;                 }                  }                 } void int0 () interrupt 0  { if(startflag)  {   if(irtime>32&&irtime<63)           {            bitnum=0;         }         irdata[bitnum]=irtime;         irtime=0;         bitnum++;         if(bitnum==33)           {            bitnum=0;            irok=1;           }  } else  {  irtime=0;  startflag=1;  } }  void timer0 () interrupt 1 {         irtime++; }
回復(fù)

使用道具 舉報

13#
ID:86421 發(fā)表于 2015-11-7 07:38 | 只看該作者
  1. /*-----------------------------------------------
  2.   名稱:遙控器紅外控制繼電器

  3.   內(nèi)容:三種遙控器控制兩個繼電器
  4. ------------------------------------------------*/
  5. #include<reg52.h>    //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

  6. sbit IR=P3^2;  //紅外接口標志
  7. sbit jd1=P1^0;
  8. sbit jd2=P1^1;

  9. /*----------------------------------------------
  10.                 全局變量聲明
  11. ------------------------------------------------*/

  12. unsigned char  irtime;//紅外用全局變量

  13. bit irpro_ok,irok;
  14. unsigned char IRcord[4];
  15. unsigned char irdata[33];

  16. /*------------------------------------------------
  17.                   函數(shù)聲明
  18. ------------------------------------------------*/

  19. void Ir_work(void);
  20. void Ircordpro(void);

  21. /*------------------------------------------------
  22.                   定時器0中斷處理
  23. ------------------------------------------------*/

  24. void tim0_isr (void) interrupt 1 using 1
  25. {
  26.   irtime++;  //用于計數(shù)2個下降沿之間的時間
  27. }

  28. /*------------------------------------------------
  29.                   外部中斷0中斷處理
  30. ------------------------------------------------*/
  31. void EX0_ISR (void) interrupt 0 //外部中斷0服務(wù)函數(shù)
  32. {
  33.   static unsigned char  i;             //接收紅外信號處理
  34.   static bit startflag;                //是否開始處理標志位

  35. if(startflag)                        
  36.    {
  37.     if(irtime<63&&irtime>=33)//引導(dǎo)碼 TC9012的頭碼,9ms+4.5ms
  38.                         i=0;
  39.                     irdata[i]=irtime;//存儲每個電平的持續(xù)時間,用于以后判斷是0還是1
  40.                     irtime=0;
  41.                     i++;
  42.                             if(i==33)
  43.                               {
  44.                                    irok=1;
  45.                                  i=0;
  46.                                   }
  47.           }
  48.            else
  49.                 {
  50.                 irtime=0;
  51.                 startflag=1;
  52.                 }

  53. }

  54. /*------------------------------------------------
  55.                 定時器0初始化
  56. ------------------------------------------------*/
  57. void TIM0init(void)//定時器0初始化
  58. {

  59.   TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
  60.   TH0=0x00; //重載值
  61.   TL0=0x00; //初始化值
  62.   ET0=1;    //開中斷
  63.   TR0=1;   
  64. }
  65. /*------------------------------------------------
  66.                   外部中斷0初始化
  67. ------------------------------------------------*/
  68. void EX0init(void)
  69. {
  70. IT0 = 1;   //指定外部中斷0下降沿觸發(fā),INT0 (P3.2)
  71. EX0 = 1;   //使能外部中斷
  72. EA = 1;    //開總中斷
  73. }
  74. /*------------------------------------------------
  75.                   鍵值處理
  76. ------------------------------------------------*/

  77. void Ir_work(void)//紅外鍵值散轉(zhuǎn)程序
  78. {
  79.        switch(IRcord[3])//判斷第三個數(shù)碼值
  80.                  {


  81.                          case 0x53:jd1=0;break;
  82.                          case 0x5f:jd1=1;break;
  83.                          case 0x4b:jd2=0;break;
  84.                          case 0x4f:jd2=1;break;

  85.                          case 0x9c:jd1=0;break;
  86.                          case 0x9d:jd1=1;break;
  87.                          case 0x9a:jd2=0;break;
  88.                          case 0x98:jd2=1;break;

  89.                          case 0xbb:jd1=0;break;
  90.                          case 0xbf:jd1=1;break;
  91.                          case 0xf8:jd2=0;break;
  92.                          case 0xea:jd2=1;break;



  93.              default:break;
  94.                          }

  95.                   irpro_ok=0;//處理完成標志

  96.   }
  97. /*------------------------------------------------
  98.                 紅外碼值處理
  99. ------------------------------------------------*/
  100. void Ircordpro(void)//紅外碼值處理函數(shù)
  101. {
  102.   unsigned char i, j, k;
  103.   unsigned char cord,value;

  104.   k=1;
  105.   for(i=0;i<4;i++)      //處理4個字節(jié)
  106.      {
  107.       for(j=1;j<=8;j++) //處理1個字節(jié)8位
  108.          {
  109.           cord=irdata[k];
  110.           if(cord>7)//大于某值為1,這個和晶振有絕對關(guān)系,這里使用12M計算,此值可以有一定誤差
  111.              value|=0x80;
  112.           if(j<8)
  113.                     {
  114.                          value>>=1;
  115.                         }
  116.            k++;
  117.          }
  118.      IRcord[i]=value;
  119.      value=0;     
  120.      }
  121.          irpro_ok=1;//處理完畢標志位置1
  122. }

  123. /*------------------------------------------------
  124.                     主函數(shù)
  125. ------------------------------------------------*/
  126. void main(void)
  127. {
  128. EX0init(); //初始化外部中斷
  129. TIM0init();//初始化定時器


  130. while(1)//主循環(huán)
  131.    {
  132.     if(irok)                        //如果接收好了進行紅外處理
  133.           {   
  134.            Ircordpro();
  135.            irok=0;
  136.           }

  137.     if(irpro_ok)                   //如果處理好后進行工作處理,如按對應(yīng)的按鍵后顯示對應(yīng)的數(shù)字等
  138.           {
  139.            Ir_work();
  140.             }
  141.    }
  142. }
  143.   
  144.   這是我用來控制繼電器的,你可以改成控制LED燈。這個程序可以用三種遙控器。你可以用來參考。
復(fù)制代碼
回復(fù)

使用道具 舉報

14#
ID:95022 發(fā)表于 2015-11-7 20:27 | 只看該作者
你在KEIL里面仿真時就可以看到按鍵的值了
回復(fù)

使用道具 舉報

15#
ID:138233 發(fā)表于 2016-9-2 09:28 | 只看該作者
程序方面測試可以,前提是12M的晶振,我現(xiàn)在用要的到24M的晶振,請否問下需要如何修改,謝謝
回復(fù)

使用道具 舉報

16#
ID:194896 發(fā)表于 2017-4-29 23:23 | 只看該作者
uestchina 發(fā)表于 2015-6-25 16:47
紅外解碼出來,改一下主程序
void main()
{

試了,不行
回復(fù)

使用道具 舉報

17#
ID:194896 發(fā)表于 2017-4-29 23:28 | 只看該作者
騰飛的龍 發(fā)表于 2015-8-23 22:49
在主函數(shù)里換成switch

試了,不行
回復(fù)

使用道具 舉報

18#
ID:79544 發(fā)表于 2017-4-30 11:07 | 只看該作者
延時和定時器的值修改一下試試。
回復(fù)

使用道具 舉報

19#
ID:195270 發(fā)表于 2017-5-1 15:58 | 只看該作者
網(wǎng)上示例程序 很多的,并且都是有源碼
回復(fù)

使用道具 舉報

20#
ID:222772 發(fā)表于 2017-8-1 11:27 | 只看該作者
參考一下。不知道用在stc15f104w怎么樣
回復(fù)

使用道具 舉報

21#
ID:241659 發(fā)表于 2017-10-21 20:17 | 只看該作者
                                  /**************************************************************************************
*                              紅外通信實驗                                                                                                  *
實現(xiàn)現(xiàn)象:        具體接線操作請參考視頻
                        下載程序后,數(shù)碼管顯示紅外遙控鍵值數(shù)據(jù)
注意事項:        紅外遙控模塊的短接片J1短接,
                        紅外遙控器內(nèi)的電池絕緣片一定要抽掉                                                                                                                                                          
***************************************************************************************/

#include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
       
typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;

u16 Time;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit led5=P0^4;
sbit led6=P0^5;
sbit led7=P0^6;
sbit led8=P0^7;

sbit IRIN=P3^2;

u8 IrValue[6];

/*******************************************************************************
* 函 數(shù) 名         : delay
* 函數(shù)功能                   : 延時函數(shù),i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);       
}


/*******************************************************************************
* 函數(shù)名         :DigDisplay()
* 函數(shù)功能                 :數(shù)碼管顯示函數(shù)
*******************************************************************************/
void DigDisplay()
{
        u8 i;
        for(i=0;i<8;i++)
        {
                switch(IrValue[2])         //位選,選擇點亮的led,
                {
                        case(0x16):
                                LSA=0;LSB=0;LSC=0;
                                led1=0;
                                 break;//顯示第0位
                        case(0x0c):
                                LSA=1;LSB=0;LSC=0;
                                led2=0;
                                 break;//顯示第1位
                        case(0x18):
                                LSA=0;LSB=1;LSC=0;
                                led3=0;
                                 break;//顯示第2位
                        case(0x5e):
                                LSA=1;LSB=1;LSC=0;
                                led4=0;
                                break;//顯示第3位;
                        case(0x08):
                                LSA=0;LSB=0;LSC=1;
                                led5=0;
                                 break;//顯示第四位;
                        case(0x1c):
                                LSA=1;LSB=0;LSC=1;
                                led6=0;
                                 break;//顯示第五位;
                        case(0x5a):
                                LSA=0;LSB=1;LSC=1;
                                led7=0;
                                break;//顯示第六位;
                        case(0x42):
                                LSA=1;LSB=1;LSC=1;
                                led8=0;
                                 break;//顯示第七位
                }
                delay(100); //間隔一段時間掃描       
        }               
}
/*******************************************************************************
* 函數(shù)名         : IrInit()
* 函數(shù)功能                   : 初始化紅外線接收
*/
void IrInit()
{
        IT0=1;//下降沿觸發(fā)
        EX0=1;//打開中斷0允許
        EA=1;        //打開總中斷

        IRIN=1;//初始化端口
}
/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
*******************************************************************************/
void main()
{       
        IrInit();
        while(1)
        {       
            DigDisplay();//利用人眼的視覺暫留效應(yīng),其實是動態(tài)顯示,只不過刷新時間太快               
        }               
}

/*******************************************************************************
* 函數(shù)名         : ReadIr()
* 函數(shù)功能                   : 讀取紅外數(shù)值的中斷函數(shù)
*******************************************************************************/

void ReadIr() interrupt 0
{
        u8 j,k;
        u16 err;
        Time=0;                                         
        delay(700);        //7ms
        if(IRIN==0)                //確認是否真的接收到正確的信號
        {         
               
                err=1000;                                //1000*10us=10ms,超過說明接收到錯誤的信號
                /*當兩個條件都為真是循環(huán),如果有一個條件為假的時候跳出循環(huán),免得程序出錯的時
                侯,程序死在這里*/       
                while((IRIN==0)&&(err>0))        //等待前面9ms的低電平過去                 
                {                       
                        delay(1);
                        err--;
                }
                if(IRIN==1)                        //如果正確等到9ms低電平
                {
                        err=500;
                        while((IRIN==1)&&(err>0))                 //等待4.5ms的起始高電平過去
                        {
                                delay(1);
                                err--;
                        }
                        for(k=0;k<4;k++)                //共有4組數(shù)據(jù)
                        {                               
                                for(j=0;j<8;j++)        //接收一組數(shù)據(jù)//總共32位數(shù)據(jù)4個字節(jié)
                                {

                                        err=60;               
                                        while((IRIN==0)&&(err>0))//等待信號前面的560us低電平過去
                                        {
                                                delay(1);
                                                err--;
                                        }
                                        err=500;
                                        while((IRIN==1)&&(err>0))         //計算高電平的時間長度。//重點
                                        {
                                                delay(10);         //0.1ms
                                                Time++;
                                                err--;
                                                if(Time>30)
                                                {
                                                        return;
                                                }
                                        }
                                        IrValue[k]>>=1;         //k表示第幾組數(shù)據(jù)
                                        if(Time>=8)                        //如果高電平出現(xiàn)大于565us,那么是1
                                        {
                                                IrValue[k]|=0x80;//是或的關(guān)系,數(shù)據(jù)從高位到低位讀取和0或完成保存在數(shù)組里面
                                        }                                     //  1000 0000  比如和1010 1000或完保存      
                                        Time=0;                //用完時間要重新賦值                                                       
                                }
                        }
                }
                if(IrValue[2]!=~IrValue[3])
                {
                        return;
                }
        }                       
}
修改的不完美,但是基本可以用,就是只能按一下,滅一個led,按完led全滅了,不能實現(xiàn)按兩下led重新亮
回復(fù)

使用道具 舉報

22#
ID:558248 發(fā)表于 2019-7-18 17:14 | 只看該作者
仿真圖有嗎
回復(fù)

使用道具 舉報

23#
ID:558248 發(fā)表于 2019-7-18 17:19 | 只看該作者
仿真圖有嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表