導航:首頁 > 操作系統 > 51單片機紅外解碼

51單片機紅外解碼

發布時間:2024-10-26 23:03:20

『壹』 51單片機 紅外控製程序中 if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; }是什麼意思

應該是接到的數據,正反碼吧,因為紅外線可能受干擾,需要校驗 一般會採取發兩個位元組,這兩個位元組的值是反碼關系,接受如果發現不是就認為數據出錯。。。。。EX0的作用就不知道了,也許是某個IO,猜測而已,你如果把源碼發出來可能分析一下,憑空寫個這東西很難知道幹啥的。。。

『貳』 51單片機怎麼用紅外線

--你是指紅外遙控解碼吧,給你一點提示,在單片機定義一個I/O口為紅外遙控的輸入埠,(紅外遙控解碼不一定要用到定時器和中斷方式.具體方法有很多的,看場合選取)當然輸入這個埠的信號是經過遙控接收電路處理過的一串數據,如TTL或者CMOS電平。再然後就是對這個輸入信號進行處理,也就是解調出遙控碼值出來,要解這個碼,首先又要知道其波形如何,即是邏輯電平和時序等問題...

建議你還是先熟知一下各種IR的遙控協議,有挺多的,典型的有NEC,飛利浦等。說說NEC的也有兩種,簡單的一種就是有32位數據,前16bit為地址碼,後16bit為遙控碼值的正碼與反碼,地址碼用於區分相同協議下不同的遙控所帶來的干擾等,正碼和反碼用於解調後進行校驗數據。不多說了,主要是找點相關資料研究研究就明白了。圖片是一個32bitNEC的遙控波形,這個波形的地址碼是807F,正碼是0x12,如果看懂了,用MCU解遙控碼就很容易了..

『叄』 最簡單51單片機紅外編碼獲取問題

這有個帖子,你看了就明白,看看是怎樣實現輸入晶振頻率自適應解碼。
#define CPU_Fosc 12000000L //輸入主頻,自適應解碼(單位:Hz,范圍:6MHz ~ 40MHz)

紅外線解碼程序+遙控器程序+模擬文件(可定義任意I/O作接收腳,支持長/短按,適應6MHz~40MHz)
http://www.ourdev.cn/thread-5155483-1-1.html

『肆』 51單片機紅外線發射時,數據是高位在前還是低位在前

高位在前,先是前導,後面是數據

『伍』 誰有51單片機紅外遙控亮滅LED代碼就只要一個鍵控制點亮,另一個鍵控制滅就行

答:編程思路兄穗 紅外遙控羨如卜解橡逗碼。

上面是 "0" / "1" 的表示方法

用中斷 測出 低脈沖的持續就可以知道 0 1 了, 最後通過鍵數據碼 來定義 單片機要干什麼事

『陸』 51單片機紅外遙控和按鍵怎麼連接

1、首先通過4個按鍵,可以直接按下觸發紅外線編碼。
2、其次發射出的紅外線與紅外線遙控器相同。
3、最後接通電源,系統進入工作狀態,等待接收命令即可。

『柒』 51單片機紅外解碼C程序

單片機採用外部中斷P3.3管腳和紅外接收頭的信號線相連,中斷方式為邊沿觸發方式。並用定時器0計算中斷的間隔時間,來區分前導碼、二進制的「1」、「0」碼。並將8位操作碼提取出來在數碼管上顯示。
// 解碼值在Im[2]中,當IrOK=1時解碼有效。 
/* 51單片機紅外遙控解碼程序 */
//用遙控器對准紅外接收頭,按下遙控器按鍵,在數碼管前兩位上就會顯示對應按鍵的編碼
#include <reg52.h>
#define uchar unsigned char 
sbit la=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar f;
#define Imax 14000    //此處為晶振為11.0592時的取值, 
#define Imin 8000    //如用其它頻率的晶振時,
#define Inum1 1450    //要改變相應的取值。
#define Inum2 700 
#define Inum3 3000
unsigned char Im[4]={0x00,0x00,0x00,0x00};
uchar show[2]={0,0};
unsigned long m,Tc;
unsigned char IrOK;
void delay(uchar i)
{
  uchar j,k; 
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
void display()
{
   la=0;
   P0=table[show[0]];
   la=1;
   la=0;
   wela=0;
   P0=0xfe;
   wela=1;
   wela=0;
   delay(5);
   P0=table[show[1]];
   la=1;
   la=0;
   P0=0xfd;
   wela=1;
   wela=0;
   delay(5);
} //外部中斷解碼程序
void intersvr1(void) interrupt 2 using 1
{
 Tc=TH0*256+TL0;                                               //提取中斷時間間隔時長
 TH0=0; 
    TL0=0;              //定時中斷重新置零
 if((Tc>Imin)&&(Tc<Imax))
      { 
  m=0;
        f=1;
  return;
      }       //找到啟始碼
   if(f==1)
      {
        if(Tc>Inum1&&Tc<Inum3) 
    {
   Im[m/8]=Im[m/8]>>1|0x80; m++; 
       }
      if(Tc>Inum2&&Tc<Inum1) 
        {
         Im[m/8]=Im[m/8]>>1; m++; //取碼
  }
  if(m==32) 
   {
         m=0;  
         f=0;
         if(Im[2]==~Im[3]) 
      {
           IrOK=1; 
   }
        else IrOK=0;   //取碼完成後判斷讀碼是否正確
     }
               //准備讀下一碼
   }
}
/*演示主程序*/
void main(void)
{
    unsigned int  a;
 m=0;
    f=0;
 EA=1;
 IT1=1;EX1=1;
 TMOD=0x11;  
 TH0=0;TL0=0;
 TR0=1;//ET0=1;
 while(1)
 {
       if(IrOK==1) 
  {
      show[1]=Im[2] & 0x0F;     //取鍵碼的低四位
           show[0]=Im[2] >> 4;  
           IrOK=0;
  }
           for(a=100;a>0;a--)
          {
    display();
   }
 }
}
解碼程序這個就能實現

閱讀全文

與51單片機紅外解碼相關的資料

熱點內容
阿里雲伺服器開通流程 瀏覽:101
如何開雲伺服器 瀏覽:977
網站小說源碼 瀏覽:301
php用什麼ide 瀏覽:867
網上預約課程app哪個好 瀏覽:152
android兼容測試工具 瀏覽:96
雲伺服器不支持虛擬化怎麼辦 瀏覽:189
加密方式的演變 瀏覽:364
java常用演算法pdf 瀏覽:734
伺服器數據遇到異常什麼原因 瀏覽:450
phpexif信息 瀏覽:542
單片機三位元組浮點數 瀏覽:756
命令與征服泰伯利亞戰爭下載 瀏覽:378
c窗口界面編程 瀏覽:23
hypermill編程能做模板嗎 瀏覽:782
計算機網路最經典的演算法 瀏覽:628
華為思科的配置命令 瀏覽:869
linux設置光碟啟動 瀏覽:361
程序員俱樂部注冊 瀏覽:20
洗潔精雞蛋盤解壓視頻 瀏覽:295