100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 红外通信学习

红外通信学习

时间:2021-01-06 12:35:42

相关推荐

红外通信学习

上面的电路,当发送端为1时,三极管导通,接受端接收到的是低电平;接收端接在高电平上,当发送端发送0时,三极管不导通,接收端为高电平。

下面是测试代码:

通过38译码器将遥控器的按键的引导码,用户码,数据码,数据反码,显示到数码管上面

#include <reg51.h>

typedef unsigned int u16;

typedef unsigned char u8;

sbit IRIN=P3^2;

sbit LSA=P2^2;//38译码器的ABC3个输入

sbit LSB=P2^3;//实现位选

sbit LSC=P2^4;

u8 IrValue[6];//保存接收到的红外码

u8 Time;

u8 DisplayData[8];

char code smgduan[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0x76};

void delay(u16 i)

{

while(i–);

}

void DigDisplay()

{

u8 i;

for(i=0;i<3;i++)//??

{

switch(i)

{

case 0:

LSA=0;

LSB=0;

LSC=0;

//P0=~num[i];//???

break;

case 1:

LSA=1;

LSB=0;

LSC=0;

//P0=~num[i];//???

break;/**/

case 2:

LSA=0;

LSB=1;

LSC=0;

//P0=~num[i];//???

break;

}

P0=DisplayData[i];//???

delay(100);

P0=0;//消隐

}

}

void Int0Int()//将接收端接在P3^2口上面

{//通过外部中断0来对起始码进行判断

IT0=1;//下降沿触发

EX0=1;//打开外部中断0

EA=1;//打开总中断

IRIN=1;//初始化端口P3^2端口

}

void ReadIr() interrupt 0

{//外部中断0处理

u8 j,k;

u16 err;

Time=0;

delay(700);//7ms,引导码有9ms的低电平

if(IRIN0)//确认真的接收到正确的信号

{

err=1000;//1000*10us=10ms,超过说明接收到的是错误信号

while((IRIN0)&&(err>0))//等待9ms的低电平过去就

{//退出循环

delay(1);

err–;

}

if(IRIN1)//开始4.5ms的高电平

{

err=500;

while((IRIN1)&&(err>0))

{//等待4.5ms的高电平过去

delay(1);

err–;

}

for(k=0;k<4;k++)//共有4组数据

{

for(j=0;j<8;j++)//8个字节

{

err=60;

while((IRIN0)&&(err>0))//PPM脉冲位置调制

{//等待信号前的560us过去

delay(1);

err–;

}

err=500;

while((IRIN1)&&(err>0))

{//计算高电平的时间

delay(10);//0.1ms

Time++;

err–;

if(Time>30)

{//超过3ms就退出,

//数据的长度不超过3ms

return;

}

}

IrValue[k]>>=1;//k表示第几组数据

if(Time>=8)//高电平时间大于565us,就是1,否则就是0

{

IrValue[k]|=0x80;

}

Time=0;//用完时间要重新赋值

}

}

}

if(IrValue[2]!=~IrValue[3])

{

return;

}

}

}

void main()

{

Int0Int();

while(1)

{

DisplayData[0]=~smgduan[IrValue[2]/16];//取高4位

DisplayData[1]=~smgduan[IrValue[2]%16];//取低4位

DisplayData[2]=smgduan[17];//显示H

DigDisplay();

}

}

//通过测试家里的移动遥控器的所有按键的

//用户码1都是0x22

//用户码2都是0xdd

//数据码是变化的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。