導航:首頁 > 操作系統 > 紅外接收頭單片機

紅外接收頭單片機

發布時間:2023-05-22 19:32:42

❶ 紅外發射 單片機 紅外接收

單片機一般都是 5V的,紅外先導通電壓一般在1.2V左右,你可以串一個220-560歐的電阻一灌流的方式連接在單片機任意一腳(如 P1.0)
接收頭3隻腳,一叫電源正,一腳電源負,一腳是信號腳直接接到單片機的 任意一腳(如 P3.2),這兩個東西功率都很低的,接收頭待機電流1毫安不到,接收的時候就10毫安左右。發射在電阻為220歐的時候電流也在20毫安不到,沒有問題的。
但我需要提示你的是,同一單片機即發送又接受肯定不行的,因為程序做不了,不比串口哦!所以我建議你用兩個來做(一個發,一個收),我用電視機遙控器來發送,單片機來接收,解碼,用來控制別的東西,效果不錯!!

❷ 單片機如何實現紅外遙控

以下文件是51單片機實現遙控解碼,通過數碼管顯示鍵碼的程序,P0口驅動數碼管段選,p2.6和p2.7為數碼管位選,接收頭連到P3.2口。此程序以通過驗證,可以直接編譯使用,另外還有一個繼電器和蜂鳴器的控制,不用可以屏蔽掉。

;********************************************************************************
;* 描述: *
;* 遙控鍵值讀取器 *
;* 數碼管顯示, P0口為數碼管的數據口 *
;* *
;********************************************************************************
;遙控鍵值解碼-數碼管顯示 *
;********************************************************************************/

#include <reg51.h>
#include <intrins.h>

void IR_SHOW();
void delay(unsigned char x);//x*0.14MS
void delay1(unsigned char ms);
void beep();

sbit IRIN = P3^2;
sbit BEEP = P3^7;
sbit RELAY= P1^3;
sbit GEWEI= P2^7;
sbit SHIWEI= P2^6;

unsigned char IRCOM[8];
unsigned char code table[16] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
main()
{
IE = 0x81; //允許總中斷中斷,使能 INT0 外部中斷
TCON = 0x1; //觸發方式為脈沖負邊沿觸發
delay(1);

IRIN=1;
BEEP=1;
RELAY=1;
for(;;)
{
IR_SHOW();
}

} //end main

void IR_IN() interrupt 0 using 0
{
unsigned char i,j,k,N=0;
EA = 0;
I1:
for (i=0;i<4;i++)
{
if (IRIN==0) break;
if (i==3) {EA =1;return;}
}
delay(20);
if (IRIN==1) goto I1; //確認IR信號出現
while (!IRIN) //等 IR 變為高電平
{delay(1);}

for (j=0;j<4;j++)
{
for (k=0;k<8;k++)
{
while (IRIN) //等 IR 變為低電平
{delay(1);}
while (!IRIN) //等 IR 變為高電平
{delay(1);}
while (IRIN) //計算IR高電平時長
{
delay(1);
N++;
if (N>=30) {EA=1;return;}
}
IRCOM[j]=IRCOM[j] >> 1;
if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
N=0;
}//end for k
}//end for j

if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}
IRCOM[5]=IRCOM[2] & 0x0F;
IRCOM[6]=IRCOM[2] & 0xF0;
IRCOM[6]=IRCOM[6] >> 4;
beep();
EA = 1;

}

void IR_SHOW()
{
P0 = table[IRCOM[5]];
GEWEI = 0;
SHIWEI = 1;
delay1(4);
P0 = table[IRCOM[6]];
SHIWEI = 0;
GEWEI = 1;
delay1(4);
}

void beep()
{
unsigned char i;
for (i=0;i<100;i++)
{
delay(5);
BEEP=!BEEP;
}
BEEP=1;
}

void delay(unsigned char x)//x*0.14MS
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}

void delay1(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i<120; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

❸ VS1838B紅外接收頭單片機編碼原理是什麼具體點的!

首先紅外發射接收可以用串口。。
但是我先講個比較簡單的吧,剛開始你紅外發射假設你發的是01010101(八位),以450us的低電平和900us的高電平代表「0」;以450us的低電平和1200us的高電平代表「1」;如果發01010101
波形這個你應該可以想像吧?
然後接收的話你用一個以38khz為載波的紅外一體化接收頭(如:1838);
載波是需要加在發射端的,這個先不講;
先說接收吧,既然發送的一個0,那怎麼去檢測一個0呢?
就用一個外部中斷加上一個定時器可以吧?(51一般都這么用。如果有捕捉中斷的話如avr那就跟方便了,但原理一樣),外部中斷以下降沿觸發;當這個下降沿來的時候開始用定時器計時,一直計時到下一個下降沿,前面說的,(以450us的低電平和900us的高電平代表「0」;以450us的低電平和1200us的高電平代表「1」)如果我檢測到兩個下降沿之間的時間是1350us那是不是就代表是0,如果是1650us就是1,剩下的就同理了~~~不管你發幾位,都是一位發過來我就記錄一位,都記錄好就開始處理你先接收到0然後是1(01010101) 那我等到這個值後,是不是就代表一種編碼? 你也可以是00000000,或者11111111,你發射接收明白了就可以控制了。。。

❹ VS1838B紅外接收頭單片機編碼原理是什麼具體點的!

接收紅外遙控信號,並進行翻轉放大
比如遙控發送
4.5ms高4.5低作為頭碼,0.56高+0.565低為0;0.56高+1.69低為1
則VS1838B接收輸出為
4.5ms低+4.5高作為頭碼,0.56低+0.565高為0;0.56低+1.69高為1
判斷時間長短區分01就OK了

閱讀全文

與紅外接收頭單片機相關的資料

熱點內容
單片機編程取反 瀏覽:897
51單片機課程設計課題 瀏覽:900
手機淘寶登錄怎麼加密碼 瀏覽:486
linux快捷方式圖標 瀏覽:38
陽光車險的app叫什麼名字 瀏覽:462
購買單片機的器件時需要給商家啥 瀏覽:535
並行編譯技術的發展 瀏覽:550
阿里雲伺服器安裝管理 瀏覽:551
java手機開發教程 瀏覽:675
我的世界怎麼刪除伺服器數據 瀏覽:672
linux內存子系統 瀏覽:973
加密思維幣 瀏覽:691
魅族訪客文件夾 瀏覽:53
添加的文件夾怎麼找 瀏覽:618
程序員涉黃 瀏覽:701
maven編譯resources下的js 瀏覽:522
ubuntu文件移動命令 瀏覽:230
安卓i怎麼查找蘋果手機 瀏覽:952
雲伺服器宕機概率 瀏覽:233
在線買葯用什麼app知乎 瀏覽:816