欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機學習手記——紅外遙控解碼<一>【原創】 [打印本頁]

作者: xiaoms    時間: 2013-8-17 00:26
標題: 單片機學習手記——紅外遙控解碼<一>【原創】
-------------------------------------寫在前面的廢話-----------------------------------------------

    2013年暑假在學校沒回家,參加了2013TI杯湖北省電子設計大賽。比賽的時候,看到大家在比賽之前都準備了各種模塊(顯示模塊,電源模塊,矩陣鍵盤...)顯然他們比賽的時候就輕松多了,而我就是一個菜鳥,沒什么經驗,第一次參加比賽。也沒準備什么模塊。導致后來三天兩夜的比賽中吃了大虧。所以平時要準備各種模塊,和寫好的程序。


--------------------------------------------------------------------------------------------------
學習紅外解碼的步驟:
1,搜索相關資料。我已經幫你們搜索好了。
2,理解紅外解碼的原理。
弄清怎么發射的和怎么接收的,主要是怎么接收的。
3,編寫程序,調試,應用。

第一部分
原理:
我們先要弄清它是怎么發射的,和怎么接收的。



一、編碼
遙控發射器專用芯片很多,根據編碼格式可以分成兩大類,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現以日本NEC的uPD6121G組成發射電路為例說明編碼原理。當發射器按鍵按下后,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:
采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如下圖所示。






上述“0”和“1”組成的32位二進制碼經38kHz的載頻進行二次調制以提高發射效率,達到降低電源功耗的目的。然后再通過紅外發射二極管產生紅外線向空間發射。編碼數據,載波,發射,接收解碼如下圖所示:









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

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






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








這是最重要的:引導碼+用戶識別碼+用戶識別碼(反碼)+操作碼+操作碼(反碼)








二、接收部分






P32 連著外部中斷0
單片機上的外部中斷 0
    來一個下降沿就進入中斷。

#include
#define uchar unsigned char
#define uint unsigned int
int irtime;
uchar disp[8];
uchar startflag;//開始標志
uchar irdata[33];//數據一共33位加上引導碼
uchar bitnum;
uchar irreceok;//接收一幀數據完成
uchar ircode[4];//4個字節的數據
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)   //處理函數
{
uchar k,i,j;
uchar value;
k=1;
for(j=0;j<4;j++)
{
for(i=0;i<8;i++)
{
if(irdata[k]>10)//時間長度等于1.125ms就是0 等于2.25ms就是1;
{
value=value|0x80;
}
else
{
value=value;
}
if(i<8)
{
value=value>>1;
}
k++;
}
ircode[j]=value;//ircode[j]返回的是十六進制數。
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)//檢測引導碼9ms
{
bitnum=0;
}
irdata[bitnum]=irtime;
irtime=0;
bitnum++;
if(bitnum==33)
{
bitnum=0;
irreceok=1;
}
}
else
{
startflag=1;
irtime=0;
}

}



大家有什么疑問可以提出來(QQ:1874934688)。










資料: 紅外學習.zip (1.51 MB, 下載次數: 551)

源碼:
紅外源碼.zip (26.66 KB, 下載次數: 230)

http://player.56.com/v_NzM1OTQxMjU.swf

希望發燒友的新手們早點能學會紅外解碼,有什么不明白的可以問我。


作者: heicad    時間: 2013-9-6 14:37
好東東我頂,51hei(51黑)單片機論壇有你更精彩.
作者: 心念懺    時間: 2013-9-10 10:44
對于解碼這些東西還是不懂,樓主是不是使用任何一個紅外發射接收的管,都要解碼的?假如我使用PH303、PH302和單片機直接使用按鍵來 使一個led燈的亮滅應該怎樣弄編程?
作者: 13620819446    時間: 2013-10-14 00:24
#在這里快速回復#支持支持、、
作者: gdxxhe    時間: 2013-10-17 22:13
剛學單片機,對遙控與AD方面不是很明,請樓群主教下NTC測溫方面的知識.謝謝.QQ12812454
作者: xd_silly    時間: 2013-10-31 18:14
蠻有用的,不錯~
作者: 好運臨    時間: 2013-11-3 22:56
不錯~蠻有用的,不錯~
作者: 469396824    時間: 2013-11-3 23:14
很不錯,我要學學啊
作者: yin7667    時間: 2013-11-8 19:03
很有用謝謝學習了!!!
作者: 柔雪    時間: 2014-3-19 18:21
好評                              
作者: zxq9781    時間: 2014-4-13 22:32
收藏學習了
作者: zxq9781    時間: 2014-4-13 22:33
diy個試試看效果
作者: keepit    時間: 2014-4-13 22:51
謝謝分享
作者: a651738901    時間: 2014-4-28 22:07
謝謝樓主慷慨,謝謝了
作者: a651738901    時間: 2014-4-28 22:10
謝謝樓主慷慨,謝謝了
作者: qunhai    時間: 2014-6-2 15:51
學習下
作者: as66122932    時間: 2014-6-2 20:53
謝謝樓主慷慨,謝謝了
作者: cjhk    時間: 2014-6-3 13:11
比較不錯哦   樓主  謝謝
作者: botao258    時間: 2014-6-28 18:47
支持,謝謝分享,一定能學會的
作者: openpppp2008    時間: 2014-7-5 19:34
謝謝分享
作者: zwpkzw    時間: 2014-7-7 11:28
樓主好人一生平安!學習進步!感謝分享!
作者: luckydog800    時間: 2014-8-11 16:42
謝謝樓主啊
作者: h2o1    時間: 2014-8-22 21:09
好東西,收藏。。。。
作者: 周安松    時間: 2014-9-13 06:49
謝謝你的分享!
作者: xing3198    時間: 2014-9-18 23:54
收藏學習了

作者: xing3198    時間: 2014-9-18 23:55
很實用!謝謝分享!
作者: xing3198    時間: 2014-9-18 23:57
很不錯,謝謝樓主分享!!
作者: 雪中梅花    時間: 2014-9-19 10:26
謝謝樓主的奉獻。
作者: SXChen_    時間: 2014-10-29 21:04
學習學習
作者: ta8602208    時間: 2014-10-30 22:36
好東西
作者: ta8602208    時間: 2014-10-30 22:46
非常好
作者: zjf110    時間: 2014-11-25 02:49
真是不錯的資料
作者: jaffreyck    時間: 2014-11-30 07:05
蠻有用的,不錯~
作者: jaffreyck    時間: 2014-11-30 07:06
真是不錯的資料
作者: jaffreyck    時間: 2014-11-30 07:10
真是不錯的資料
作者: jaffreyck    時間: 2014-12-3 18:06
很有用謝謝學習了!!!
作者: pps111    時間: 2014-12-19 22:28
看看~~~~~
作者: pps111    時間: 2014-12-19 22:28
收下了,,不客氣
作者: pps111    時間: 2014-12-19 22:29
收下了,,不客氣
作者: pps111    時間: 2014-12-19 22:29
還差2個幣
作者: pps111    時間: 2014-12-19 22:29
夠了~開始下載
作者: linhuikui    時間: 2014-12-25 13:23
其實我想要的是用單片機編碼,解碼會了,編碼不會啊。
作者: fdc2011    時間: 2015-1-7 19:51

謝謝分享!
作者: 499705472    時間: 2015-1-14 10:13
很不錯,我要學學啊
作者: 236338364    時間: 2015-1-14 14:40
很詳細 謝謝
作者: jcyya    時間: 2015-1-17 00:02
很詳細的資料了,謝謝樓主。
作者: jcyya    時間: 2015-1-17 00:11
謝謝樓主分享。
作者: zouli415    時間: 2015-1-17 09:44
學習了
作者: fontex    時間: 2015-2-4 13:38
找了很久,謝謝!
作者: fontex    時間: 2015-2-5 09:05
很好,謝謝!
作者: fzg63031525    時間: 2015-2-5 09:25
謝謝樓主分享,下載來學習一下!
作者: bhjyqjs    時間: 2015-5-29 16:52
很好的東東
作者: 記得你    時間: 2015-6-3 01:44
信號發射和接受連接得單片機能是一個么?實物怎么制作?
作者: 51hei2004305    時間: 2015-7-19 17:31
正好需要
作者: chp    時間: 2016-12-25 18:45
好東東
作者: tomgay    時間: 2017-5-1 11:49

不錯~蠻有用的,不錯~




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1