全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

基于51单片机的红外遥控LED实验

时间:2023-06-25 15:31

人气:

作者:admin

标签: 基于  红外  单片机  遥控   

导读:基于51单片机的红外遥控LED实验-本次介绍一下红外遥控的使用方法,使用的红外接收头是HX1838,接收头和遥控器是遵循NEC编码协议的,感兴趣的同学可以去搜索一下,深入了解,下面附...

一、实验原理

本次介绍一下红外遥控的使用方法,使用的红外接收头是HX1838,接收头和遥控器是遵循NEC编码协议的,感兴趣的同学可以去搜索一下,深入了解,下面附上图片,想学习的可以直接去购买。

红外遥控器在发送数据时也会同时发送出一个频率为38KHz的电磁波,作为载波;顾名思义,“载波”就是运载数据的,避免数据在传播过程中出现问题,外部干扰的信号太多了,所以用一个合适的频率电磁波和数据脉冲调制在一起,一起发送出去,避免外部干扰,接收头接收到脉冲后再进行解调操作,把38KHz的电磁波“过滤”掉,因为这款红外接收头内部有解调电路,所以咱们在使用时就不用再进行解调操作了,直接取出数据就可以了。

我们学习任何一个外设,都要先了解这些外设和我们的单片机是如何进行通信的,通信协议使用的是哪一种,常见的就是IIC、SPI、CAN总线、单总线等等,还有一些要根据时序图自己用IO口模拟时序进行通信,本质上都是需要模拟这些时序,用来接收和发送数据,只不过是有些单片机型号把这些功能直接集成在了单片机内部,这样使用起来比较方便,直接操作寄存器调用就好了。

图片

上图是起始信号、发送“0”、发送“1”以及连发信号的时序图

图片

P3^2引脚对应STC89C52RC单片机的外部中断引脚

一帧数据是从起始信号开始的,单片机的IO口需要一直检测起始信号是否到了,检测到起始信号后开始接收发送过来的数据信号,所以,为了能够第一时间接收到起始信号,防止数据出错,红外接收模块的数据引脚要和单片机的外部中断引脚连接在一起;数据构成是:起始信号+接收到的数据,数据=地址码+地址反码+命令码+命令反码,地址码和命令码都是8位,所以一个完整的数据有32位。于是,我们接收数据时,要把第三位数据(命令码)取出来进行判断。

命令码:咱们在购买遥控器和红外接收头时可以让卖家提供,得到命令码后,在函数中宏定义一下就可以直接使用了,初始化完成基本的函数后,在主函数中,运用if判断语句或者switch case语句,判断对应的命令码使其完成你想要的效果。

二、关键代码

void Int0_Init(void)//初始化外部中断
{
  IT0=1;
  IE0=0;
  EX0=1;
  EA=1;
  PX0=1;
}

外部中断0初始化,在外部中断函数中检测起始信号。

void main()
{
  IR_Init();  //红外遥控初始化
  while(1)
  {
    if(IR_GetDataFlag() || IR_GetRepeatFlag())  //如果收到数据帧或连发帧
    {
      Command=IR_GetCommand();    //获取遥控命令码


      if(Command==IR_0)
       {
         led=0;
       }
       if(Command==IR_POWER)
       {
         led=1;
       }
    }
  }
}

主函数:运用if判断句,当所按下的按键返回回来的命令码是正确的时,咱们让LED点亮或者熄灭。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信