我想用单片机控制红外发射管发射信号,无奈调试很久都没有成功。故发帖请各位前辈帮忙看看。
电路图:
51单片机程序:
#include<reg51.h>
sbit infrared=P1^5;
unsigned char i,signal,infrared_flag;
void delay9us(unsigned int n)
{
while(n--);
}
void main()
{
TMOD=0X10;
EA=1;
ET1=1;
TR1=0;
P1=0;
signal=0xff;
infrared=1;
TR1=1;
delay9us(1000);//发射红外线9ms
TR1=0;
infrared=0;
delay9us(500);//不发射红外线4.5ms
//引导码。
for(i=0;i<8;i++)
{
signal=signal<<1;
if(CY)
{
infrared=1;
TR1=1;
delay9us(62);
TR1=0;
infrared=0;
delay9us(63);//发射红外线0.56ms,不发红外线0.565ms,表示“1”。
}
else
{
infrared=1;
TR1=1;
delay9us(62);
TR1=0;
infrared=0;
delay9us(188);//发射红外线0.56ms,不发红外线1.69ms,表示“0”。
}
}
infrared=1;
TR1=1;
delay9us(500);
TR1=0;
infrared=0;
delay9us(500);
//结束码。
}
void infrared_timer1() interrupt 3
{
infrared_flag=~infrared_flag;
if(infrared_flag)
{
infrared=1;
TH1=255;
TL1=248;//定时8us。
}
else
{
infrared=1;
TH1=255;
TL1=238;//定时18us。
}
}
//用定时器1产生38kHz,占空比为1:3的红外线。
我想用单片机产生红外信号,用另一块单片机控制一体化红外接收头将接收到的信号显示在LCD12864上。接收部分应该没有问题,因为我用学习板配送的那种红外遥控器来发射信号,就能正常接收显示。
希望各位前辈帮忙看看,谢过了。 |