C语言遥控器程序,红外遥控

news/2025/2/23 2:36:13/

红外遥控器的发送装置和接收装置以及关于载波等一些原理大家可参看《手把手教你学51单片机》文档第16章知识内容,这里笔者只简单说明如何运用该模块并讲解代码的实现。

1.接收装置

HS0038这个元器件是用来接收红外遥控器发送来的信号做处理的,我们知道红外遥控器有21个按键,按下不同的按键,HS0038的信号引脚就会产生不同的时序,我们解析这些时序就可以判断按下的是什么按键。

比如我们用红外遥控器对准开发板上的接收装置HS0038,按下左上角的按键,那么HS0038的信号引脚就会产生一系列的变化如下:

首先是引导码,也就是一开始HS0038信号引脚会拉低信号线9ms左右的时间,然后是4.5ms的高电平时间,这段时序叫做发送端的引导码。

接着HS0038信号引脚会接收到用户码,只要信号线被拉低560us之后又拉高560us的时间,那么我们就认为这段时序是这种字节的一位,为0。

如果信号线被拉低560us之后又拉高1.68ms的时间,那么这段时序就是代表1。

比如信号线的时序如下

7d3262d7b8f13909e20c0902437c4e3b.png

这样我们就知道接收到的字节为0x0C。

0x0C是某个按键所发送的字节,我们要知道按键的发送有5个阶段,分别为:引导码、用户码、用户反码、按键数据码、按键数据反码。

引导码已经说明过它的时序。

然后是用户码,用户码一直是0x00,也就是HS0038信号引脚是如下所示

2e44213c9efcaad1a7313ecc45b4cd63.png

接着用户反码就是0xFF。

按键数据码如果是0x0C,那么按键数据反码就是0xF3。

0x0C:00001100

0xF3:11110011

2.代码的实现原理

在第八章第11讲我们已经学过输入捕获,那么解析红外遥控就是使用这种方式,看到宋老师的例程lesson16_1里面的函数“void EXINT1_ISR() interrupt 2”。

在main.c中“InitInfrared();”就是为输入捕获做好设置,只要信号引脚被拉低就会进入外部中断函数。

当我们在遥控器上按下某个按键时,信号引脚首先接收到的是引导码,也就是9ms的低电平+4.5ms的高电平,由于一开始接收到低电平所以就会进入“void EXINT1_ISR() interrupt 2”函数,函数里就是一关关的判断是否一开始接收到9ms低电平,如果是,那么又接着判断后面是不是产生4.5ms左右的高电平,如果是,接着就是进行判断后面的用户码、用户反码、按键数据码、按键数据反码的字节,并存入全局变量的数组ircode[4]中。


http://www.ppmy.cn/news/208550.html

相关文章

单片机红外线遥控

项目简介: (TC9012)红外遥控器发送红外信号, 红外接收模块接收到信号后,通过外部中断0传送给(51)单片机; 单片机对接收到的每帧数据解码后将相应的按键值显示在LCD1602上; 并实现对相应外设的控制:0-开buzzer, 1-关buzzer; 2-开LED, 3-关LED。 TC9012遥控器相关参数…

我谈学习型红外遥控(一)

跟着项目组长一起做了几个空鼠项目,一直觉得自己长劲不大,因为自己只负责简单的键盘定义部分,最终的整个软件架构其实自己都不太了解。从去年11月份开始,一直都很忙,一个接着一个做,我的任务也只是键盘部分…

arduino笔记20:红外遥控

红外LED 红外接收器 红外遥控的通讯协议 用到一个库: arduino红外接收器: IRrecvDemo 。 decode()库函数用于判断红外接收器所接收到的红外信号是否可以被解析。 如可以成功解析,则返回非零数值。并将解析结果存储于results中。…

红外遥控学习,万能遥控解决方案

红外遥控学习,万能遥控解决方案 1. 原理2. 思路3. 红外遥控接收3.1 初始化定时器3.2 定时器输入捕获3.3 获取数据3.4 红外接收测试3.5 测试过程 4. 发送程序4.1 初始化定时器和定时器的通道4.1发送函数 1. 原理 目前电视机、空调等家电大部分还是采用的红外遥控的&…

红外遥控器

文章目录 前言续言一、红外基础知识二、数据协议三、编码1.编码基础2.编码格式 四、红外解码过程五、控制空调1.准备阶段2.解码3.编写程序4.烧写程序 六、遥控器硬件制作1.主控芯片2.红外发射3.OLED显示屏4.稳压电路5.升压电路6.充电电路7.矩阵按键8.时钟电路9.存储芯片10.WIIF…

【红外遥控器】基于FPGA的学习型红外遥控器verilog开发

1.软件版本 quartusii12.1 2.系统设计概述 技术的发展使得视频和音频设备越来越智能化,红外遥控具有抗干扰,电路简单,编码及解码容易,功耗小,成本低的优点,因此对这些设备的控制,红外遥控仍然是首选,目前几乎所有的视频和音频设备都支持这样的控制方式。光谱位于红色…

Arduino-IRremote-红外遥控器,发射与接收

红外线接收示例 本文使用的红外接收器为:HX1738,连接方法如下 /** IRrecvDemo* 功能说明* 演示如何利用Arduino开发板接收红外遥控器控制信号,* 并将接收到的红外遥控器信号内容通过串口监视器显示出来。* * 本程序基于Ken Shirriff开发的IRremote库。如需获得该…

Arduino红外遥控(附代码)

库文件 arduino中可以用红外遥控来做许多事情&#xff0c;例如可以用红外遥控来控制小车的移动等。 红外遥控要用的话需要安装其库文件IRremote.h&#xff0c;其库文件下载地址IRremote.h库文件 硬件连线 Arduino UNO<---> 红外发射模块5V <---> VCCGND <…