news 2026/4/18 6:29:07

红外遥控器与红外一体化接收头仿真:带程序实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
红外遥控器与红外一体化接收头仿真:带程序实现

红外遥控器+红外一体化接收头部分的仿真 带程序 红外线编码是数据传输和家用电器遥控常用的一种通讯方法,其实质是一种脉宽调制的串行通讯。 家电遥控中常用的红外线编码电路有μPD6121G型HT622型和7461型等。 这里就以这些电路的编码格式来仿真怎样使用单片机的捕获中断功能来实现其解码。 红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。 接收部分则是完成红外线的接收、放大、解调,还原成同步发射格式相同(但高、低电位刚好相反的脉冲信号)。 这些工作通常由一体化的接收头来完成,主要输出TTL兼容电平。 最后通过解码把脉冲信号转换成数据,从而实现数据的传输。 本单元就是来完成一体化接收头接受到的红外遥控器编码后的输出数据,所以只要单片机完成本单元的解码任务,并成功实现之后,只要将IR引脚接上红外接收头之后就可以实现红外遥控的功能了。 这是我积累前人经验和自己实践的成果,并且已经有硬件的成功案例,并非只是理论.

大家好,今天咱们来聊聊红外遥控器和红外一体化接收头部分的仿真,还会带上相关程序,让大家更直观地理解其中的原理。

红外线编码在数据传输和家用电器遥控领域可是相当常用的一种通讯方法。其实它本质上就是一种脉宽调制的串行通讯。在家电遥控里,有不少常用的红外线编码电路,像μPD6121G型、HT622型和7461型等。咱们就以这些电路的编码格式为基础,来仿真一下怎样利用单片机的捕获中断功能实现解码。

红外线通讯原理

红外线通讯分为发送和接收两部分。发送部分的工作是把待发送的数据转换成特定格式的脉冲,然后驱动红外发光管将数据向外发送。接收部分则要完成红外线的接收、放大、解调,最后还原成和同步发射格式相同,但高、低电位刚好相反的脉冲信号。这些工作一般由一体化的接收头来完成,它主要输出TTL兼容电平。最后再通过解码把脉冲信号转换成数据,这样就实现了数据的传输。

本单元任务

咱们这个单元的主要任务就是处理一体化接收头接收到的红外遥控器编码后的输出数据。只要单片机完成解码任务并且成功实现,之后把IR引脚接上红外接收头,就能实现红外遥控的功能啦。这可是我积累前人经验再加上自己实践的成果,而且已经有硬件成功案例,可不是纸上谈兵哦!

代码实现与分析

下面是一段简单的基于51单片机的代码示例,用于实现红外解码:

#include <reg51.h> sbit IR=P3^2; // 定义红外接收引脚 unsigned int time; // 用于记录脉冲时间 unsigned char code_data[4]; // 存储解码后的数据 unsigned char i,j; // 外部中断0服务函数 void ex0() interrupt 0 { time = TH0 * 256 + TL0; // 读取定时器0的值 TH0 = 0; TL0 = 0; // 定时器0清零 // 这里可以根据时间判断是引导码、数据码等 if (time > 10000 && time < 13000) { // 判断引导码 i = 0; j = 0; } else if (time > 500 && time < 700) { // 判断数据0 code_data[i] = code_data[i] >> 1; } else if (time > 1400 && time < 1600) { // 判断数据1 code_data[i] = (code_data[i] >> 1) | 0x80; } j++; if (j == 8) { i++; j = 0; } } void main() { TMOD = 0x01; // 定时器0工作在模式1 TH0 = 0; TL0 = 0; // 定时器0初始化 IT0 = 1; // 外部中断0下降沿触发 EX0 = 1; // 使能外部中断0 EA = 1; // 全局中断使能 TR0 = 1; // 启动定时器0 while(1) { // 可以在这里处理解码后的数据 if (i == 4) { // 解码完成,处理数据 // 例如可以将数据显示在数码管上 i = 0; } } }

代码分析

  • sbit IR=P3^2;:定义了红外接收引脚,这里我们把它接到了P3.2口。
  • unsigned int time;:用于记录脉冲的时间,通过定时器0来测量。
  • unsigned char code_data[4];:用来存储解码后的数据,一般红外遥控编码会有4个字节的数据。
  • 外部中断0服务函数ex0():当红外接收引脚有下降沿信号时,会触发这个中断。在中断里,我们先读取定时器0的值,也就是脉冲的时间。然后根据时间来判断是引导码、数据0还是数据1。引导码的时间范围大概在10000 - 13000个定时器计数,数据0的时间在500 - 700,数据1的时间在1400 - 1600。每接收8位数据就存到一个字节里。
  • main()函数:初始化定时器0、外部中断0和全局中断,然后启动定时器0。在主循环里,当i等于4时,表示4个字节的数据都接收完了,就可以对解码后的数据进行处理了。

通过这样的仿真和代码实现,我们就能更好地理解红外遥控器和红外一体化接收头的工作原理啦。希望这篇文章能对大家有所帮助!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:55:44

桌面应用组件

[Rainmeter] Update16 BackgroundMode2 SolidColor0,0,0,1 DynamicWindowSize1[Metadata] NameMyDesktopHub AuthorYou Description桌面整合中心&#xff1a;快捷启动 系统状态 Version1.0 ; 查看整体宽度和高度的边框 [MeterBorder] MeterShape X0 Y0 ShapeRectangle 0,0,4…

作者头像 李华
网站建设 2026/3/24 15:59:28

【开题答辩全过程】以 基于Uni-APP的宠物领养系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/4/10 7:28:21

元宇宙虚拟世界中Sonic数字人担任导游角色

元宇宙中Sonic数字人如何重塑虚拟导游体验 在元宇宙的虚拟景区里&#xff0c;一位身着汉服的女性导游正站在古建筑前娓娓道来&#xff1a;“这座大殿始建于明代永乐年间……”她的唇形与语音精准同步&#xff0c;眼神自然流转&#xff0c;甚至随着讲解节奏微微点头。你几乎无法…

作者头像 李华
网站建设 2026/4/16 5:22:13

drone发版工具

Drone 本身并不是“一键发版”的独立工具&#xff0c;而是一套轻量级、基于 Docker 的 CI/CD 引擎。 把“发版”这件事交给 Drone 的做法&#xff0c;就是在仓库根目录放一个 .drone.yml&#xff0c;把“编译-打包-推送-部署”全部写成 Pipeline&#xff1b;以后只要 git push…

作者头像 李华
网站建设 2026/4/18 3:48:23

Sonic数字人CI/CD流水线搭建:GitLab Runner集成示例

Sonic数字人CI/CD流水线搭建&#xff1a;GitLab Runner集成实践 在内容创作节奏日益加快的今天&#xff0c;如何快速生成高质量的数字人视频&#xff0c;已经成为虚拟主播、电商带货、在线教育等领域的核心竞争力之一。传统的3D建模动作捕捉方案不仅成本高昂、周期漫长&#x…

作者头像 李华
网站建设 2026/4/18 3:49:56

滑铁卢大学颠覆性发现:AI学习错误答案竟比学对答案更聪明!

这项由滑铁卢大学的Abhranil Chandra和Ayush Agrawal领导的研究团队发表于2024年12月的预印本论文中&#xff0c;有兴趣深入了解的读者可以通过arXiv:2512.22255查询完整论文。研究团队成员还包括来自谷歌DeepMind、微软印度研究院、蒙特利尔大学MILA人工智能研究所等多个顶尖机…

作者头像 李华