新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 易门县| 夹江县| 宣汉县| 全南县| 承德市| 田林县| 西华县| 克拉玛依市| 开平市| 宁陵县| 宣城市| 闻喜县| 遂平县| 甘谷县| 博乐市| 磴口县| 启东市| 洪泽县| 罗平县| 宜章县| 旌德县| 山丹县| 潞城市| 清徐县| 旺苍县| 城固县| 惠东县| 宁武县| 华蓥市| 麦盖提县| 蒲江县| 保定市| 临澧县| 阿合奇县| 土默特右旗| 扶沟县| 潼南县| 嵊州市| 莱西市| 繁峙县| 黔西|