导航:首页 > 操作系统 > 单片机红外控制灯

单片机红外控制灯

发布时间: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()函数,但你没有写这个函数。

阅读全文

与单片机红外控制灯相关的资料

热点内容
怎么使用access的命令按钮 浏览:897
有点钱app在哪里下载 浏览:832
博途v15解压后无法安装 浏览:203
什么是根服务器主机 浏览:436
安卓手游怎么申请退款 浏览:553
安卓系统如何分享网页 浏览:278
ad如何编译pcb工程 浏览:412
除了滴滴app哪里还能用滴滴 浏览:399
截图怎么保存文件夹然后压缩 浏览:8
幻影服务器怎么样 浏览:27
具体哪些广东公司招程序员 浏览:870
嵌入式编译器教程 浏览:306
ssl数据加密传输 浏览:86
51单片机定时器方式2 浏览:331
命令行查看开机时间 浏览:813
python微博复杂网络分析 浏览:550
rf3148编程器 浏览:505
浙江标准网络服务器机柜云主机 浏览:589
设置网络的服务器地址 浏览:600
java图形界面设计 浏览:751