51单片机红外通讯

本文详述了51单片机利用外部中断和定时器0实现红外信号解码的过程,包括红外通信的NEC编码特性、电路分析、定时器设置和中断服务。通过实际操作,解析红外遥控器的地址码和命令码,实现不同按键的识别。
摘要由CSDN通过智能技术生成

    本文是武汉市海联天下物联网有限公司技术团队内部学习笔记,将详细讲解红外遥控的基本原理以及51单片机如何利用外部中断和定时器0对红外信号进行解码。——技术部 张傲

现象描述

    使用红外遥控器对准HL-STC51开发板红外接收头,按下不同的按键,在开发板数码管上将显示对应按键的数字。

红外线简介

    在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。目前所有的视频和音频设备都可以通过红外遥控的方式进行遥控,比如电视机、空调、影碟机等,都可以见到红外遥控的影子。
    红外遥控系统一般由红外发射装置和红外接收设备两大部分组成。红外发射装置可由键盘电路、红外编码芯片、电源和红外发射电路组成。红外接收设备可由红外接收电路、红外解码芯片、电源和应用电路组成。通常为了使信号能更好的被传输发送端将基带二进制信号调制为脉冲串信号,通过红外发射管发射。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。
红外发射与接收信号
红外接收管电路

红外通信特征(NEC编码)

  1. 8位地址码,8位命令码
  2. 完整发射两次地址码和命令码,以提高可靠性
  3. 脉冲时间长短调制方式
  4. 38KHz载波频率;
  5. 位时间1.12ms(逻辑0)或2.25ms(逻辑0);

NEC编码
    NEC协议根据脉冲时间长短解码。每个脉冲为560us长的38KHz载波(约32个载波周期)。逻辑“1”脉冲时间为2.25ms,逻辑“0”脉冲时间为1.12ms。推荐的载波周期为1/4或者1/3。
NEC协议的典型脉冲链
    NEC协议规定低位首先发送,如上图所示的情况,发送的地址码为“59”,命令码为“16”。每次发送的信息首先是用于调整红外接收器增益的9ms AGC(自动增益控制)高电平脉冲,接着是4.5ms的低电平,接下来便是地址码和命令码。地址码和命令码发送两次,第二次发送的是反码(如:1111 0000的反码是0000 1111),用于验证接收的信息的准确性。

电路分析

sbit IR = P3 ^ 2;
sbit smg_duan = P3 ^ 4;

    IR与数码管段显示可根据原理图来定义:
在这里插入图片描述
    红外接收管的输入引脚与单片机P32引脚相连,而P32又是单片机外部中断0引脚。使用数码管第一位显示解码的提示信息,数码管第一位的使能脚与单片机P34引脚相连,查看原理图定义引脚后,便于理解接下来的代码。

定时器0计数时间计算

使用定时器0作为红外接收端脉冲宽度检测计数器,将定时器0初始化为工作方式2,8位自动重载。定时器初值为0,则256个计数周期产生溢出中断,定时器每计数1次的时间为=1S/(SYSCLK/12)=1.085us;因此每次溢出的时间为=1.085us*256=0.277MS。

void TIM0init(void)            //定时器0初始化
{
   
    TMOD = 0x02;            //定时器0工作方式2,TH0是重装值,TL0是初值
    TH0 = 0x00;              //重载值
    TL0 = 0x00;              //初始化值
    ET0 = 1;                 //开中断
    TR0 = 1;
}

    定时器0中断服务函数,中断服务函数中对全局变量irtime进行++操作,由上面的分析可知,irtime每加1表示的时间长度为0.277ms,即irtime*0.277则表

  • 19
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值