单片机控制红外发射和接收,六个按键控制六个发光二级管,请问线路接法有什么需要注意的?

希望有详细的程序

这是用红外控制数码管的 你在稍微一改动就可以了
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code wela[]={0,1,2,3,4,5,6,7};
uchar i,j,num,a,b,num1,num2;
uchar irtime,startflag,bitnum,irreceok,irprosok;
uchar irdat[33];
uchar ircode[4];
uchar disp[8];
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
void delay(uint z)
{
for(i=z;i>0;i--)
for(j=19;j>0;j--);
}
void timer0init()
{
TMOD=0x02;
TH0=0x00;
TL0=0x00;
ET0=1;
EA=1;
TR0=1;
}
void int0init()
{
IT0=1;
EX0=1;
EA=1;
}
void irwork(v)
{
disp[0]=ircode[0]/16;
disp[1]=ircode[0]%16;
disp[2]=ircode[1]/16;
disp[3]=ircode[1]%16;
disp[4]=ircode[2]/16;
disp[5]=ircode[2]%16;
disp[6]=ircode[3]/16;
disp[7]=ircode[3]%16;

}
void display()
{
for(num=0;num<8;num++)
{
if(num==4)
{
a=disp[num];
}
if(num==5)
{
b=disp[num];
}
}
}
void dis()
{
for(num2=0;num2<8;num2++)
{
P2=wela[num2];
P0=dula[num1];
delay(5);
}
}
void play()
{
switch(a)
{
case 0:switch(b)
{

case 12:P1=0xfe;num1=1;break;

case 8:P1=0xf7;num1=4;break;

}break;
case 1:switch(b)
{
case 6:P1=0x00;num1=0;break;

case 8:P1=0xfd;num1=2;break;

case 12:P1=0xef;num1=5;break;

}break;
case 4:switch(b)
{

case 2:P1=0xbf;num1=7;break;

case 10:P1=0xff;num1=9;break;
}break;
case 5:switch(b)
{

case 14:P1=0xfb;num1=3;break;

case 10:P1=0xdf;num1=6;break;

case 2:P1=0x7f;num1=8;break;

}break;
}
}
void irpros()
{
uchar k,value,x,y;
k=1;
for(x=0;x<4;x++)
{
for(y=0;y<8;y++)
{
value=value>>1;
if(irdat[k]>6)
{
value=value | 0x80; //最高位置一

}
k++;
}
ircode[x]=value;
}
irprosok=1;//接收完毕
}
void main()
{
timer0init();
int0init();
while(1)
{
if(irreceok)
{
irpros();
irreceok=0;
}
if(irprosok)
{
irwork();
irprosok=0;
}

display();
play();
dis();
}
}
void timer0()interrupt 1
{
irtime++;//红外时间 最大255

}
void int0()interrupt 0
{
if(startflag)
{
if(irtime>32)//检测引导码
{
bitnum=0;//清零
}
irdat[bitnum]=irtime;//装入引导码
irtime=0;//清零
bitnum++;//准备下一次读
if(bitnum==33)//是否接收完毕
{
bitnum=0;
irreceok=1;//红外接收完毕
}
}
else
{
startflag=1;
irtime=0;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-22
没有,按电路要求做据可以了。
第2个回答  2011-12-22

用单片机如何对6个红外接收管同时解码?6个接收管子可能同时受到红外数 ...
以51单片机为例比如发射管分别接在P1口的低6位,为0代表驱动发射管发射。接收管分别接P2口的低6位,为0代表收到信号。且各位相对应。程序按如下模式进行 P1口送1111 1110 判断P2口是否为1111 1110然后延时1ms P1送1111 1111延时2ms P1口送1111 1101 判断P2口是否为1111 1101然后延时1ms P1送...

红外接收二极管多路控制的红外遥控系统
首先,脉冲输出在发射端按键时,接收端对应输出端会产生一个宽度大约为100ms的“有效脉冲”,脉冲的高低取决于输出脚的静态状态,即静止时的电平。其次,电平输出是按下键时,输出端显示“有效电平”,按键松开时电平消失,电平的高低同样取决于静态电平的高低。“自锁”输出则在每次按键后改变状态,如将...

单片机红外发射电路不用单片机吗,只有接收电路的一端与单片机的定时器连...
红外对管你搞那么复杂干嘛,不需要发射芯片,发射管的接法就和普通的LED一样,串联接个限流电阻到电源两端就可以了。接收管的话看接收波形情况,一般也是加个上拉或者下拉电阻,输出端接到单片机的INT0引脚就可以了。两个管子要能对得上,就是发射管要能射向接收管,有东西挡在他们之间的话,就会有...

六位数码管时钟
10.110KV变电所一次系统设计 11.报警门铃设计论文 12.51单片机交通灯控制 13.单片机温度控制系统 14.CDMA通信系统中的接入信道部分进行仿真与分析 15.仓库温湿度的监测系统 16.基于单片机的电子密码锁 17.单片机控制交通灯系统设计 18.基于DSP的IIR数字低通滤波器的设计与实现 19.智能抢答器设计 20.基...

请教几个关于红外发射接收模块的问题,电路图如下
你好:——★1、LM 393 为电压比较器线路,原理是:当+(同向输入端)电位比-(反向输入端)电位高时,LM 393 输出高电平;而-端电位比+端电位高时,LM 393 输出低电平。——★2、当光耦之间没有物体时,光耦内部的三极管导通、但存在一定的电压降,LM 393 +端也就有一定的电位。电位器的...

红外发射和接收同步?
本身红外发射管和红外接收头是没有同步的说法,就如你用遥控器遥控电视一样,遥控器发出信号,然后红外接收头接收信号,指令电视工作,应该是先后顺序,不是同步的。所以你的应用应该是发射和接收都保持一直工作的状态,那你单片机里要把先后顺序的时间差算上,把这个差值用程序忽略掉才能 同步。这只是个人...

红外线接发射管和接收管制作一个开关电路
然后将Q4接入电路,试用手挡住D6或Q1时,Q5应导通,继电器动作即可。工作原理 接通电源后,红外发光二极管D6即发出红外光线,光敏三极管Q1在红外光线的照射下,c-e极间呈低阻状态,致使Q2的基极b处于高电平,Q2导通。Q3、Q4随之导通。Q5则因Q4的导通,基极b呈现低电平处于截止状态,继电器不工作。当有...

关于单片机 发射红外线遥控电视机疑问?
STC1205A32S2比传统51单片机有所改进,有很多扩展功能,只要你将它的各项功能大概了解,上面的程序只是小问题了。不建议:使用中断产生38K载波。推免驱动发射二极管。用软件或者PWM产生38K载波更好:方便调制,可以调节占空比,提高脉冲电流峰值,实现低功耗发射远的目的。推免驱动允许最大电流20mA,一般6米左右...

请问一下这个电路中的红外发射和接收电路能否用同一块单片机控制。
红外发射模块仅仅是一手持遥控器,由AT89C2051单片机及键盘电路、按键K及红外发光二极管组成。发射电路原理图如图2所示。发射模块设置的密码必须与本机接收模块相同(设置密码方法见2.2.1节),所设密码保存在RAM存储器的31H~38H单元。在待机状态下,系统工作在空闲方式,当按键K按下时,系统上电工作,...

单片机的红外遥控的原理
1、发送端由单片机和红外发光二极管组成。单片机控制红外发光二极管发射38KHz左右的红外光,这个红外光就可能起到传递信号的作用。你可以在你的程序中规定发射红外线时表示二进制的一个位‘1’无红外线时表示二进制的‘0’。这样你就可以发出一系列由‘1’和‘0’所级成的信号。2、接收端是由红外接收...

相似回答
大家正在搜