遙控器原理小知識(附加程序)
1.紅外遙控簡介
主要器件:紅外遙控器、紅外接收頭。
2.紅外遙控器
Ht6221標準紅外線解碼遙控器,采用NEC的UPD6121G編碼標準(如圖1),由38K載波調(diào)制的紅外編碼。

Ht6221標準紅外線解碼遙控器發(fā)射的一幀數(shù)據(jù)如下圖2,每幀數(shù)據(jù)由引導碼開始,隨后共32位數(shù)據(jù),分別位16位用戶編碼,8位鍵數(shù)據(jù)碼和8位鍵數(shù)據(jù)反碼。

3.紅外接收頭
紅外一體化接收頭VS1838B,這種一體化接收頭內(nèi)部集成了紅外接收電路:內(nèi)部電路包括紅外監(jiān)測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等。實現(xiàn)紅外遙控信號的拾取、放大和解調(diào),檢波輸出信號可以直接由微處理器解碼,紅外一體化接收頭VS1838B解調(diào)后的波形如圖3。

4.紅外遙控信號解碼程序代碼分析
void delay_hongwai(unsigned char x) ???//紅外延時x*0.14MS
{
?unsigned char i;
?while(x--)
??{
???for (i = 0; i<13; i++) {}
??}
}
void IR_IN() interrupt 0 using 0 //INT0外部中斷0
{
??unsigned char j,k,N=0;
?????EX0 = 0; ??//關(guān)閉外部中斷0中斷
?delay_hongwai(15);//延時2.1ms,檢測高電平出現(xiàn)
?if (IRIN==1)???????????????//確認IR信號出現(xiàn)
?????{ EX0 =1;//打開外部中斷0中斷
???return;
??}
??while (!IRIN) ???????????//等IR變?yōu)楦唠娖?,跳過9ms的前導低電平信號。
????{delay_hongwai(1);}
for (j=0;j<4;j++) ????????//收集四組數(shù)據(jù)
?{
??for (k=0;k<8;k++) ???????//每組數(shù)據(jù)有8位
??{
???while (IRIN) ???????????//等?IR 變?yōu)榈碗娖剑^4.5ms的前導高電平信號。
?????{delay_hongwai(1);}
????while (!IRIN) ?????????//等?IR 變?yōu)楦唠娖?/p>
?????{delay_hongwai(1);}
?????while (IRIN) ??????????//計算IR高電平時長
??????{
????delay_hongwai(1);
????N++; ??????????
????if (N>=30)
?{ EX0=1;
?return;} ?????????????????//0.14ms計數(shù)過長自動離開。
??????} ???????????????????????//高電平計數(shù)完畢????????????????
?????IRCOM[j]=IRCOM[j] >> 1; ?????????????????//數(shù)據(jù)最高位補“0”
?????if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} ?//數(shù)據(jù)最高位補“1”
?????N=0;
??}
?}
???if (IRCOM[2]!=~IRCOM[3])
???{ EX0=1;
?????return; }
???IRCOM[5]=IRCOM[2] & 0x0F; ????//取鍵碼的低四位
???IRCOM[6]=IRCOM[2] >> 4; ??????//右移4次,高四位變?yōu)榈退奈?/p>
??EX0 = 1;
}