红外遥控器的接收实验

发布者:心灵之窗最新更新时间:2017-12-17 来源: eefocus关键字:红外遥控器  接收实验 手机看文章 扫描二维码
随时随地手机看文章

   遥控发射器专用 芯片 很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本 NEC 的uPD6121G组成发射 电路 为例说明编码 原理 (一般家庭用的DVD、VCD、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
一、电路实现
    红外发射器很容易找到,我们平时家用的电视、DVD遥控器都可以用来进行实验。下面的 电路图 是红外接收部分的电路图,



二、红外接收原理
        关于红外发射部分,由于我们采用的是现成的遥控器,而不同的遥控器其实现电路各不相同,这里我们就不详细介绍。我们只需要知道遥控器发射出来的 数据 格式,然后通过红外接收器接收数据,并根据数据格式将其进行分解,得到相应键值即可。
     遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,发射波形图如下:


   当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射 代码 由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。其中32位数据格式如下:


    这种遥控码具有以下特征:
采用脉宽调制的 串行 码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,波形如下图:




三、 程序 实现
    

在本 实例 中,我们利用 串口 将 单片机 从一体化红外接收器接收到的红外遥控键值发送到计算机上,通过计算机的串口助手观察接收到的数据。

编程过程中,我们利用 单片机 的外部中断0口进行检测,一旦检测到有红外遥控信号出现,则程序进入外部中断处理程序,在处理数据过程中关闭外部中断,直到接收完数据,再将外部中断打开。注意使用串口助手查看数据的时候选择16进制显示

    红外遥控的数据接收主要在外部中断函数中进行处理:处理过程为:当有遥控键值发送的时候,红外一体化接收器的脉冲信号输出脚发生一个下降沿的电平变化,外部中断采用下降沿出发的方式接收到由外部中断事件发生,程序进入外部中断处理函数,首先关闭外部中断,然后根据一体化接收器脉冲信号输出引脚的高低电平变化时间判断红外遥控发送的数据,共有4个字节的数据,处理完这4个字节数据后,利用 单片机 的串口将数据发送到计算机。






下面是完整代码:其中串口数据发送部分的程序请查看前面关于串口的实现部分
#include         
#include
#include    //中断函数头文件
#include "usart.h"
void INT_Init(void);   //外部中断初始化
void Delayus(unsigned int lus);         //us延时函数
void Delayms(unsigned int lms);        //ms延时函数

int main(void)            
{
  
Port1_Init();
Usart1_Init();
INT_Init();
  
sei();          //使能全局中断  

while(1)
{
  
}
}
//外部中断初始化
void INT_Init(void)
{
EICRB |= (1 << ISC41);   //选择外部中断4,下降沿触发中断
EIMSK |= (1 << INT4);    //使能外部中断4

//
ISR(INT4_vect)
{
unsigned char i,j,k = 0,addr[4] = {0};

EIMSK = 0x00;    //禁止外部中断4   关闭外部中断,开始接受数据
for(i = 0;i < 14;i++)
{
  Delayus(400);
  if(PINE & (1 << PE4))    //9MS内有高电平,则判断为干扰,退出处理程序
  {
   EIMSK |= (1 << INT4);    //使能外部中断4
   return;
  }
}
while(!(PINE & (1 << PE4)));  //等待9ms低电平过去
for(i = 0;i < 4;i++)               //
{
  for(j = 0;j < 8;j++)           //
  {
   while(PINE & (1 << PE4)); //等待4.5ms高电平过去
   while(!(PINE & (1 << PE4))); //等待变高电平
   while(PINE & (1 << PE4))  //计算高电平时间
   {
    Delayus(100);
    k++;
    if(k >= 30)             //高电平时间过长,则退出处理程序
    {
     EIMSK |= (1 << INT4);    //使能外部中断4
     return;            //
    }
    
   }
   addr = addr >> 1;        //接受一位数据
   if(k >= 8)
   {
    addr = addr | 0x80;   //高电平时间大于0.56,则为数据1
   }
   k = 0;                  //计时清零
  }
}

Usart1_PutChar(addr[0]);         //通过串口发送接收到的4个字节
Usart1_PutChar(addr[1]);
Usart1_PutChar(addr[2]);
Usart1_PutChar(addr[3]);

EIMSK |= (1 << INT4);    //使能外部中断4
}
//
//us级别的延时函数
void Delayus(unsigned int lus)
{
while(lus--)
{
  _delay_loop_2(4);      //_delay_loop_2(1)是延时4个 时钟 周期,参数为4则延时16
             //个时钟周期,本实验用16M晶体,则16个时钟周期为16/16=1us
    }
}
//ms级别的延时函数
void Delayms(unsigned int lms)
{
while(lms--)
{
  _delay_loop_2(4000);        //延时1ms
    }
}

关键字:红外遥控器  接收实验 引用地址:红外遥控器的接收实验

上一篇:AVR 18B20程序
下一篇:ATMEGA8 SPI 总线读写 93C46

推荐阅读最新更新时间:2024-03-16 15:49

基于LPC1114的学习型红外遥控器程序设计
本设计就是采用LPC1114+OLED+红外接收头构成一个学习型红外遥控器   安 装LPCxpress,后插入LPC-Link 自动识别,   系统多出一个      然后打开11XX的例程,正常安装路径在C:\nxp \lpcxpresso_3.1\Examples\LPC1000\LPC11xx下   文件名字 LPCXpresso1114_v1.00.zip   然后点击GPIO程序,打开GPIOtest.c开始学习。   发现和普通的 8位机真的相差很多,用了很多类似函数(库)的东西。   别的不管,先来个最简单的闪烁灯。   找到函数   功能:(设置 GPIO口方向),参数(端口号,位,输
[模拟电子]
基于LPC1114的学习型<font color='red'>红外遥控器</font>程序设计
STC89C52单片机红外遥控器解码
////////////////////////////////////////////////////////////////////////// 实现功能: 按实验板所佩带的红外遥控器上面的数字键,把红外遥控器的代码显 示在1602液晶上面,通过此实验也可测试你手上所用红外遥控器的代 码编号,一定注意要跟红外探测头的距离不要太远,而且 程序里只编写了遥控器上的数字键的部分 实验板型号:KBL-XYD-C52 实验名称: 红外控制1602液晶的显示 编写人: 谢应东 编写日期: 2012-5-3 ////////////////////////////////////////
[单片机]
学习型红外遥控器汇编语言程序
;************红外线接收程序****************** ;********************************************* ;器件地址 EEPROM EQU 0A0H ;MODE EQU 070H ;高四位0111,是红外线设备型号 ;低四位 ,是红外线设备的地址 ;R2,R3 是延时计数器 ;R4 :脉冲电平宽度计时器,算法,计数26次(也就是26US)R4加1 ;R5 :脉冲个数计数器 ;内存数据定义 SP_STATR EQU 01H SP_END EQU 00H
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved