在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

  • <dfn id="79stg"></dfn>
    <object id="79stg"><div id="79stg"><label id="79stg"></label></div></object>
    <ruby id="79stg"><dl id="79stg"><noscript id="79stg"></noscript></dl></ruby>

      新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的紅外線(xiàn)遙控程序編寫(xiě)代碼

      基于51單片機(jī)的紅外線(xiàn)遙控程序編寫(xiě)代碼

      作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
      #include
      #define uchar unsigned char
      #define uint unsigned int
      unsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
      unsigned char code smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78};
      uchar irtime;
      uchar startflag;
      uchar irdata[33];
      uchar bitnum;
      uchar irreceok;
      uchar ircode[4];
      uchar irprosok;
      uchar disp[8];
      //************************************************
      //延時(shí)函數(shù),在12MHz的晶振頻率下
      //大約50us的延時(shí)
      //************************************************
      void delay_50us(uint t)
      {
      uchar j;
      for(;t>0;t--)
      for(j=19;j>0;j--);
      }
      //************************************************
      //延時(shí)函數(shù),在12MHz的晶振頻率下
      //大約50ms的延時(shí)
      //************************************************
      void delay_50ms(uint t)
      {
      uint j;
      for(;t>0;t--)
      for(j=6245;j>0;j--);
      }
      void timer0init(void)
      {
      TMOD=0x02;
      TH0=0x00;
      TL0=0x00;
      ET0=1;
      EA=1;
      TR0=1;
      }
      void int0init(void)
      {
      IT0=1;
      EX0=1;
      EA=1;
      }
      void irwork(void)
      {
      disp[0]=ircode[0]/16;
      disp[1]=ircode[0]%16;
      disp[2]=ircode[1]/16;
      disp[3]=ircode[1]%16;
      disp[4]=ircode[2]/16;
      disp[5]=ircode[2]%16;
      disp[6]=ircode[3]/16;
      disp[7]=ircode[3]%16;
      }
      void display(void)
      {
      uchar i;
      for(i=0;i<8;i++)
      {
      P1=smg_du[disp[i]];
      P2=smg_we[i];
      delay_50us(20);
      }
      }
      void irpros(void) //0x1c
      {
      uchar k,i,j;
      uchar value;
      k=1;
      for(j=0;j<4;j++)
      {
      for(i=0;i<8;i++)
      {
      value=value>>1; //7
      if(irdata[k]>6) //8
      {
      value=value | 0x80;
      }
      k++;
      }
      ircode[j]=value;
      }
      irprosok=1;
      }
      void main()
      {
      timer0init();
      int0init();
      while(1)
      {
      if(irreceok)
      {
      irpros();
      irreceok=0;
      }
      if(irprosok)
      {
      irwork();
      irprosok=0;
      }
      display();
      }
      }
      void timer0 () interrupt 1
      {
      irtime++; //255
      }
      void int0 () interrupt 0
      {
      if(startflag)
      {
      if(irtime>32) //檢測(cè)引導(dǎo)碼
      {
      bitnum=0;
      }
      irdata[bitnum]=irtime;
      irtime=0;
      bitnum++;
      if(bitnum==33)
      {
      bitnum=0;
      irreceok=1;
      }
      }
      else
      {
      startflag=1;
      irtime=0;
      }
      }


      評(píng)論


      技術(shù)專(zhuān)區(qū)

      關(guān)閉