遥控器原理小知识

遥控器原理小知识(附加程序)

1.红外遥控简介

主要器件:红外遥控器、红外接收头。

2.红外遥控器

Ht6221标准红外线解码遥控器,采用NEC的UPD6121G编码标准(如图1),由38K载波调制的红外编码。

图1 UPD6121G编码标准

Ht6221标准红外线解码遥控器发射的一帧数据如下图2,每帧数据由引导码开始,随后共32位数据,分别位16位用户编码,8位键数据码和8位键数据反码。

遥控器原理小知识_第1张图片
图2 Ht6221标准红外线解码遥控器发射的一帧数据

3.红外接收头

红外一体化接收头VS1838B,这种一体化接收头内部集成了红外接收电路:内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。实现红外遥控信号的拾取、放大和解调,检波输出信号可以直接由微处理器解码,红外一体化接收头VS1838B解调后的波形如图3。

遥控器原理小知识_第2张图片
图3 红外一体化接收头VS1838B解调前后的波形图

4.红外遥控信号解码程序代码分析

void delay_hongwai(unsigned char x)    //红外延时x*0.14MS

{

 unsigned char i;

 while(x--)

  {

   for (i = 0; i<13; i++) {}

  }

}

void IR_IN() interrupt 0 using 0 //INT0外部中断0

{

  unsigned char j,k,N=0;

     EX0 = 0;   //关闭外部中断0中断

 delay_hongwai(15);//延时2.1ms,检测高电平出现

 if (IRIN==1)               //确认IR信号出现

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

   return;

  }

  while (!IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。

    {delay_hongwai(1);}

for (j=0;j<4;j++)         //收集四组数据

 {

  for (k=0;k<8;k++)        //每组数据有8位

  {

   while (IRIN)            //等 IR 变为低电平,跳过4.5ms的前导高电平信号。

     {delay_hongwai(1);}

    while (!IRIN)          //等 IR 变为高电平

     {delay_hongwai(1);}

     while (IRIN)           //计算IR高电平时长

      {

    delay_hongwai(1);

    N++;           

    if (N>=30)

 { EX0=1;

 return;}                  //0.14ms计数过长自动离开。

      }                        //高电平计数完毕                

     IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0”

     if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //数据最高位补“1”

     N=0;

  }

 }

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

   { EX0=1;

     return; }

   IRCOM[5]=IRCOM[2] & 0x0F;     //取键码的低四位

   IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位变为低四位

  EX0 = 1;

}

你可能感兴趣的:(遥控器原理小知识)