新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 最簡單的51單片機紅外遙控解碼程序

        最簡單的51單片機紅外遙控解碼程序

        作者: 時間:2012-03-28 來源:網絡 收藏

        用單片機進行解碼,對大多數初學者來說是很麻煩的一個問題。下面介紹本人自編的解碼的C51程序,自認為是可能是史上最簡的。此程序是針對uPD6121系列的遙控器的取碼程序,解碼值在Im[2]中,當IrOK=1時解碼有效。

          /* */

          /* 適用uPD6121系列 */

          #include

          #define DIGPORT P2

          #define WORDPORT P0

          unsigned char code LED_num[]={0x3f,0x18,0x76,0x7c,0x59,0x6d,0x6f,0x38,0x7f,0x7d};

          #define Imax 14000 //此處為晶振為11.0592時的取值,

          #define Imin 8000 //如用其它頻率的晶振時,

          #define Inum 1450 //要改變相應的取值。

          unsigned char Im[]={0x00,0x00,0x00,0x00};

          unsigned long m,Tc;

          unsigned char i,IrOK;

          void DelayMy(unsigned int t){

          while(--t);

          }

          void Display_LED(unsigned long num)

          {

          unsigned int ii;

          unsigned int jj=0;

          unsigned long aa,bb;

          unsigned int xx[8]={0,0,0,0,0,0,0,0};

          do {

          bb=num/10;

          aa=num-bb*10;

          xx[jj]=aa;

          num=bb;jj++;

          }

          while(num>0);

          DIGPORT=0x80;

          for(ii=0;ii8;ii++) {

          WORDPORT=LED_num[xx[ii]];

          DelayMy(60);

          DIGPORT=DIGPORT>>1;

          };

          WORDPORT=0;

          }

          //外部中斷

          void intersvr1(void) interrupt 2 using 1

          {

          Tc=TH0*256+TL0; //提取中斷時間間隔時長

          TH0=0; TL0=0; //定時中斷重新置零

          if((Tc>Imin)(Tc

          if(Tc>Inum) Im[m/8]=Im[m/8]>>1|0x80; else Im[m/8]=Im[m/8]>>1; //取碼

          if(m==32) if((Im[2]|0x01)==~Im[3]) IrOK=1; else IrOK=0; //取碼完成后判斷讀碼是否正確

          m++; //準備讀下一碼

          }

          /*演示主程序*/

          void

        紅外遙控器相關文章:紅外遙控器原理

        萬能遙控器相關文章:萬能遙控器代碼


        51單片機相關文章:51單片機教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        晶振相關文章:晶振原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 夏津县| 布尔津县| 北川| 祁东县| 涟源市| 高碑店市| 噶尔县| 蛟河市| 麦盖提县| 原平市| 马鞍山市| 得荣县| 盐亭县| 增城市| 岑溪市| 遂平县| 吉安县| 张家港市| 屏东县| 永善县| 犍为县| 南靖县| 花莲县| 监利县| 同江市| 张掖市| 古丈县| 珲春市| 桑日县| 宜城市| 博乐市| 漳平市| 峨眉山市| 卢龙县| 无为县| 娄底市| 汉源县| 木兰县| 广昌县| 中牟县| 高青县|