導航:首頁 > 操作系統 > 單片機紅外控制燈

單片機紅外控制燈

發布時間:2022-09-19 09:52:53

㈠ 用單片機設計一個智能紅外控制台燈,成本大概是多少

大概50元左右吧,看你用什麼樣的單片機咯。還有智能智能在哪裡,這都不一樣的。我這里有一些資料,需要可以來找我,在線,等待回復。*****
到論壇,精華貼對你更有幫助的.潮之家就是力量---->

㈡ 求一個簡單的單片機紅外遙控控制led燈的收發程序

這是我以前寫的紅外遙控器。。。你看看,有幫助的

#include <AT89X51.h>

static bit
OP; //紅外發射管的亮滅
static unsigned int
count; //延時計數器
static unsigned int endcount; //終止延時計數
static unsigned char
flag; //紅外發送標志
char
iraddr1; //十六位地址的第一個位元組
char iraddr2; //十六位地址的第二個位元組

void SendIRdata(char p_irdata);
void delay();

void main(void)
{
count = 0;
flag = 0;
OP = 0;
P3_4 = 0;

EA = 1; //允許CPU中斷
TMOD = 0x11; //設定時器0和1為16位模式1
ET0 = 1; //定時器0中斷允許

TH0 = 0xFF;
TL0 = 0xE6; //設定時值0為38K 也就是每隔26us中斷一次
TR0 = 1;//開始計數

iraddr1=3;
iraddr2=252;

do{
delay();
SendIRdata(12);
}while(1);
}

//定時器0中斷處理
void
timeint(void) interrupt
1
{
TH0=0xFF;
TL0=0xE6; //設定時值為38K 也就是每隔26us中斷一次
count++;

if (flag==1)
{
OP=~OP;
}
else
{
OP = 0;
}
P3_4 = OP;
}

void
SendIRdata(char p_irdata)
{
int i;
char irdata=p_irdata;

//發送9ms的起始碼
endcount=223;
flag=1;
count=0;
do{}while(count<endcount);

//發送4.5ms的結果碼
endcount=117
flag=0;
count=0;
do{}while(count<endcount);

//發送十六位地址的前八位
irdata=iraddr1;
for(i=0;i<8;i++)
{

//先發送0.56ms的38KHZ紅外波(即編碼中0.56ms的低電平)
endcount=10;
flag=1;
count=0;
do{}while(count<endcount);

//停止發送紅外信號(即編碼中的高電平)
if(irdata-(irdata/2)*2)
//判斷二進制數個位為1還是0
{
endcount=41;
//1為寬的高電平
}
else
{
endcount=15; //0為窄的高電平
}
flag=0;
count=0;
do{}while(count<endcount);

irdata=irdata>>1;
}

//發送十六位地址的後八位
irdata=iraddr2;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count<endcount);

if(irdata-(irdata/2)*2)
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count<endcount);

irdata=irdata>>1;
}

//發送八位數據
irdata=p_irdata;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count<endcount);

if(irdata-(irdata/2)*2)
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count<endcount);

irdata=irdata>>1;
}

//發送八位數據的反碼
irdata=~p_irdata;
for(i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
do{}while(count<endcount);

if(irdata-(irdata/2)*2)
{
endcount=41;
}
else
{
endcount=15;
}
flag=0;
count=0;
do{}while(count<endcount);

irdata=irdata>>1;
}

endcount=10;
flag=1;
count=0;
do{}while(count<endcount);
flag=0;
}

void delay()
{
int i,j;
for(i=0;i<400;i++)
{
for(j=0;j<100;j++)
{
}
}
}

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

以下文件是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_();
}
}
}

㈣ 你好,我想用紅外對管以及單片機來控制LED燈得熄滅及亮度,想請教一下電路該怎麼設計,謝謝啦 ··

這個簡單,你先找個單片機的IO口,通過控制光耦或者三極體來控制燈的接地段。

㈤ 紅外控制16個燈流水燈電路圖(單片機C51)

其實紅外遙控就是一個無線按鍵
你先把流水燈(多花式)做好,按鍵作為開關,流水燈花樣、樣式選擇等,具體看你的想法
然後你就可以選擇普通遙控器,比如電視的,然後解碼
或者自己用另一個單片機模擬紅外遙控器,協議可參考現有常用紅外協議或是自定義一個簡單的

㈥ 單片機的紅外遙控的原理

1、發送端由單片機和紅外發光二極體組成。
單片機控制紅外發光二極體發射38KHz左右的紅外光,這個紅外光就可能起到傳遞信號的作用。你可以在你的程序中規定發射紅外線時表示二進制的一個位『1』無紅外線時表示二進制的『0』。這樣你就可以發出一系列由『1』和『0』所級成的信號。
2、接收端是由紅外接收二極體和單片機組成。
前面我們讓發射端發出信號,現在接收頭就開始收信號。

㈦ 哪位大佬有STC89c51單片機紅外通信控制LED燈開關的程序呢,這是個遙控器控制數碼管的程序。

會解碼就好辦了,假設收到的4個位元組數據存於tableaa[4]中,根據第三位元組內容來控制LED
只需主程序中添加:
if(tableaa[2]==1) led1=0;
if(tableaa[2]==2) led1=1;
if(tableaa[2]==3) led2=0;
if(tableaa[2]==4) led2=1;
.............

㈧ 關於C51單片機紅外線驅動LED發射和接收問題

單片機的電流一般不大,除了工作電流微小的工作對象以外,單片機的輸出一般通過三極體後再控制相應的對象。紅外發射管其實也是LED,工作電流一般設計為幾~十幾mA。單片機直接推動太免強了,應以三極體放大後再推動紅外發射管。
在此說明一下:
1,三極體基極電阻可在1K~10K內選用。
2,與紅外發射管串聯的限流電阻主要由電源電壓決定,電流5~50mA以內10~20mA為宜。
3,用PNP管的電源電壓不得高於單片機的輸出電壓(5V)。
4,在NPN管的B極與地間(或PNP管B極與正電源間)接一隻幾百K電阻。
5,靜態時單片機的輸出是0,三極體用NPN型,靜態時單片機的輸出是1,三極體用PNP型。
具體程序參考樓下
最簡單的,發送端:按一下鍵發一個脈沖;接收端:進行脈沖計數,用led顯示。

㈨ 用單片機控制熱釋紅外模塊的程序思路,比如怎麼用它控制燈的亮滅

這個項目我做過的,就是模塊檢測到紅外的時候發出一個信號,當接收到的時候讓燈亮
沒檢測到的時候是另一個信號讓等滅!!

㈩ 51單片機紅外遙控小夜燈按鈕有些問題幫忙看看唄!!!!!!!!!!

程序調用了一個initinfrated()函數,但你沒有寫這個函數。

閱讀全文

與單片機紅外控制燈相關的資料

熱點內容
新科學pdf 瀏覽:744
現在還有c語言編譯嗎 瀏覽:672
哪裡買到單片機 瀏覽:478
linux文件打開數量 瀏覽:510
編譯原理中什麼是l屬性文法 瀏覽:367
硬碟加密時出現的問題 瀏覽:59
如何退域命令 瀏覽:108
看書的app哪裡看 瀏覽:291
伺服器怎麼調大 瀏覽:3
android天氣apijson 瀏覽:984
為什麼創建id會出現伺服器錯誤 瀏覽:837
代碼中有不必編譯的單詞嗎 瀏覽:563
鉤子與資料庫編程 瀏覽:563
安卓光遇錄歌怎麼設置 瀏覽:485
虛擬機怎麼和雲伺服器搭建集群 瀏覽:896
python倒計時代碼turtle 瀏覽:492
cad命令mv 瀏覽:928
nexus7一代androidl 瀏覽:306
linux使用靜態庫編譯過程 瀏覽:103
android平滑滾動效果 瀏覽:841