0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

紅外遙控解碼原理講解

CHANBAEK ? 來(lái)源:SmoS嵌入式開發(fā) ? 作者:By Cosmos ? 2023-07-24 11:32 ? 次閱讀

學(xué)習(xí)紅外解碼的步驟:

1,搜索相關(guān)資料。我已經(jīng)幫你們搜索好了。

2,理解紅外解碼的原理。

弄清怎么發(fā)射的和怎么接收的,主要是怎么接收的。

3,編寫程序,調(diào)試,應(yīng)用。

第一部分

原理:

我們先要弄清它是怎么發(fā)射的,和怎么接收的。

一、編碼

遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成兩大類,這里我們以運(yùn)用比較廣泛,解碼比較容易的一類來(lái)加以說(shuō)明,現(xiàn)以日本NEC的uPD6121G組成發(fā)射電路為例說(shuō)明編碼原理。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:

采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,其波形如下圖所示。

圖片

上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過(guò)紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。編碼數(shù)據(jù),載波,發(fā)射,接收解碼如下圖所示:

圖片

UPD6121G產(chǎn)生的遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶識(shí)別碼,能區(qū)別不同的電器設(shè)備,防止不同機(jī)種遙控碼互相干擾。該芯片的用戶識(shí)別碼固定為十六進(jìn)制01H;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多額128種不同組合的編碼。

遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進(jìn)制碼,周期約為108ms。一組碼本身的持續(xù)時(shí)間隨它包含的二進(jìn)制“0”和“1”的個(gè)數(shù)不同而不同,大約在45~63ms之間,發(fā)射波形圖如下圖所示。
圖片

當(dāng)一個(gè)鍵按下超過(guò)36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個(gè)起始碼(9ms),一個(gè)結(jié)果碼(4.5ms),低8位地址碼(9ms ~ 18ms),高8位地址碼(9ms ~ 18ms),8位數(shù)據(jù)碼(9ms ~ 18ms)和這8位數(shù)據(jù)的反碼(9ms~18ms)組成。如果鍵按下超過(guò)108ms仍未松開,接下來(lái)發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼(2.5ms)組成。

圖片

這是最重要的:引導(dǎo)碼+用戶識(shí)別碼+用戶識(shí)別碼(反碼)+操作碼+操作碼(反碼)
圖片

二、接收部分
圖片

P32 連著外部中斷0
單片機(jī)上的外部中斷 0
    來(lái)一個(gè)下降沿就進(jìn)入中斷。

#include 
#define uchar unsigned char
#define uint unsigned int
int irtime;
uchar disp[8];
uchar startflag;//開始標(biāo)志
uchar irdata[33];//數(shù)據(jù)一共33位加上引導(dǎo)碼
uchar bitnum;
uchar irreceok;//接收一幀數(shù)據(jù)完成
uchar ircode[4];//4個(gè)字節(jié)的數(shù)據(jù)
uchar irprosok;//處理完成

sbit SH_CP=P2^4;
sbit DS=P2^5;
sbit ST_CP=P1^5;

uchar code wei[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code duan[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //0123456789abcdef


void send_dat(unsigned dat)
{
unsigned char i;
for(i=0;i< 8;i++)
{
DS=dat&0x80;
SH_CP=1;
SH_CP=0;
dat< <=1;
}
}



void timer0init(void)
{
TMOD=0X02;
TH0=0;
TL0=0;
ET0=1;
EA=1;
TR0=1;
}

void int0init(void)
{
IT0=1;
EX0=1;
EA=1;
}

void irwork()
{
//disp[0]=ircode[0]/16;
//disp[1]=ircode[0];
//disp[2]=ircode[1]/16;
//disp[3]=ircode[1];
// disp[4]=ircode[2]/16;
// disp[5]=ircode[2]/100;
// disp[6]=ircode[2]0/10;
// disp[7]=ircode[2];

switch (ircode[2])
{
  case 6 : disp[6]=0;disp[7]=1;break;
case 12 :disp[6]=0;disp[7]=2 ;break;
case 47 :disp[6]=0;disp[7]=3;break;
case 4 : disp[6]=0;disp[7]=4;break;
case 14 :disp[6]=0;disp[7]=5 ;break;
case 45 :disp[6]=0;disp[7]=6;break;
case 33: disp[6]=0;disp[7]=7;break;
case 41 :disp[6]=0;disp[7]=8 ;break;
case 37 :disp[6]=0;disp[7]=9;break;

default : disp[5]=0;
disp[6]=15;
disp[7]=15 ;
}

}

void irpros(void)   //處理函數(shù)
{
uchar k,i,j;
uchar value;
k=1;
for(j=0;j< 4;j++)
{
for(i=0;i< 8;i++)
{
if(irdata[k] >10)//時(shí)間長(zhǎng)度等于1.125ms就是0 等于2.25ms就是1;
{
value=value|0x80;
}
else
{
value=value;
}
if(i< 8)
{
value=value >>1;
}
k++;
}
ircode[j]=value;//ircode[j]返回的是十六進(jìn)制數(shù)。
value=0;
}
irprosok=1;
}

void display(void)
{
uchar i;
for(i=5;i< 8;i++)
{
   send_dat(duan[disp*]);       //定義段   0亮
send_dat(wei*); //定義位 1亮  
   ST_CP=1;
ST_CP=0;
//delay(2);
}
}

void main()
{
timer0init();
int0init();
while(1)
{
if(irreceok)
{
irpros();
irreceok=0;
}
if(irprosok)
{
irwork();
irprosok=0;
}
display();
}
}

void timer0 () interrupt 1
{
irtime++;
}

void int0 () interrupt 0
{
if(startflag)
{
if(irtime< 126&&irtime >=66)//檢測(cè)引導(dǎo)碼9ms
{
bitnum=0;
}
irdata[bitnum]=irtime;
irtime=0;
bitnum++;
if(bitnum==33)
{
bitnum=0;
irreceok=1;
}
}
else
{
startflag=1;
irtime=0;
}

}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49636

    瀏覽量

    417172
  • 振蕩器
    +關(guān)注

    關(guān)注

    28

    文章

    3758

    瀏覽量

    138500
  • 遙控發(fā)射器
    +關(guān)注

    關(guān)注

    1

    文章

    11

    瀏覽量

    7737
  • 遙控解碼
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    1710
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    最簡(jiǎn)單的51單片機(jī)紅外遙控解碼程序

    介紹本人自編的51單片機(jī)紅外遙控解碼程序,自認(rèn)為是可能是史上最簡(jiǎn)的紅外遙控解碼程序。
    發(fā)表于 03-20 10:05 ?1.6w次閱讀

    紅外遙控解碼

    紅外要控解碼 1602上顯示紅外遙控編碼
    發(fā)表于 08-13 18:00

    紅外遙控+1602解碼

    紅外遙控+1602解碼
    發(fā)表于 02-10 20:43

    如何去制作紅外遙控解碼器?

    紅外遙控解碼器的電路原理是什么?如何去制作紅外遙控解碼器?其步驟流程是怎樣的?
    發(fā)表于 04-19 07:00

    BC7210 低成本通用紅外遙控解碼芯片

    BC7210 低成本通用紅外遙控解碼芯片:BC7210 是一款低成本通用紅外遙控解碼芯片,可以完
    發(fā)表于 11-29 08:42 ?40次下載

    紅外遙控器軟件解碼及其應(yīng)用

    通過(guò)對(duì)紅外遙控器各按鍵發(fā)送沖波形的分析可以識(shí)別碼型,從而為軟件解碼提供依據(jù)。本文以實(shí)例介紹紅外遙控
    發(fā)表于 07-19 17:46 ?116次下載

    pt2262紅外遙控解碼電路

    pt2262紅外遙控解碼電路 UHF Band 4 Data Transmitter Circuit is recommended.
    發(fā)表于 11-29 09:00 ?4100次閱讀
    pt2262<b class='flag-5'>紅外</b><b class='flag-5'>遙控</b><b class='flag-5'>解碼</b>電路

    紅外遙控解碼全攻略

    紅外遙控器的解碼并對(duì)電器進(jìn)行遙控是單片機(jī)學(xué)習(xí)者得一個(gè)心愿,自己動(dòng)手實(shí)現(xiàn) 紅外遙控
    發(fā)表于 07-12 13:09 ?433次下載
    <b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>編<b class='flag-5'>解碼</b>全攻略

    紅外遙控解碼程序詳情

    紅外遙控解碼程序詳情
    發(fā)表于 09-23 14:41 ?195次下載

    紅外遙控解碼DIY

    紅外遙控解碼DIY,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 01-14 15:29 ?60次下載

    ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)_紅外遙控解碼

    電子專業(yè)單片機(jī)相關(guān)知識(shí)學(xué)習(xí)教材資料——ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)02紅外遙控解碼
    發(fā)表于 09-13 17:23 ?0次下載

    紅外遙控解碼相關(guān)資料分享

    本文分享了紅外遙控解碼的相關(guān)資料。
    發(fā)表于 11-16 14:40 ?43次下載

    基于STM32的紅外遙控解碼遙控程序解析

    文 本主要包含 兩個(gè)內(nèi)容:一、紅外遙控協(xié)議的的講解;二、解碼程序解析(參考正點(diǎn)原子的代碼) 紅外的介紹、優(yōu)點(diǎn)、缺點(diǎn)就不給大家說(shuō)了,網(wǎng)上書上都
    發(fā)表于 11-30 01:57 ?4761次閱讀
     基于STM32的<b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>和<b class='flag-5'>解碼</b><b class='flag-5'>遙控</b>程序解析

    紅外遙控解碼全面講解

    紅外的簡(jiǎn)單發(fā)射接收原理:在發(fā)射端,輸入信號(hào)經(jīng)放大后送入紅外發(fā)射管發(fā)射,在接收端,接收管收到紅外信號(hào)后,由放大器放大處理后還原成信號(hào)。紅外遙控
    的頭像 發(fā)表于 03-06 13:51 ?8.3w次閱讀
    <b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>編<b class='flag-5'>解碼</b>全面<b class='flag-5'>講解</b>

    使用Arduino解碼任何遙控器的紅外遙控信號(hào)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino解碼任何遙控器的紅外遙控信號(hào).zip》資料免費(fèi)下載
    發(fā)表于 10-27 11:51 ?4次下載
    使用Arduino<b class='flag-5'>解碼</b>任何<b class='flag-5'>遙控</b>器的<b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>信號(hào)