转自:http://www1.eccn.com/xsj07/xsj082831.asp

0 引言

在红外遥控系统中,不同的红外编码芯片发出的载波信号各有不同,因此,解码程序各也不相同。但是,它们基本上大同小异,本文以M50462为例来进行说明。

1红外信号编码

红外遥控的基本原理是编码芯片读取用户按键,并根据键号生成不同的编码,然后将此编码调制在38kHz的载波上,再通过电流放大电路后驱动红外LED发送数据。在接收端,则将恢复出编码信号以供CPU解码。目前广泛采用的红外接收头能直接输出原始载波信号。实际上,这个接收头是一个集成电路,它封装了红外光电管、前置放大器、限幅放大器、带通滤波器、检波和比较、积分器和整形电路。这种接收头的外型象一只3极管,只需要外接3

V或5 V电源就能工作,但要注意的是,它输出一般采用OC形式,这是为了起到电平转换的作用,使用时要外接一个上拉电阻。

遥控发射器的脉冲编码一般由用户码和数据码构成,用户码用来区别同一种遥控器的不同厂家或设备,数据码则对应按键。用户码和数据码一般都是8位,各有256种状态。在红外遥控系统中,一般为了省电,它们不采用高低电平来区别0、1,而是采用脉冲位置编码方式。图1是M50462传送1位0、1的波形编码图。

图中,在低电平部分,红外LED发光,此时不论发送0或1,其脉冲时间始终是0.25 ms,所不同的是占空比。由于实际发光时间很短,红外发光管的平均电流很低,因此,发射效率相当高,非常省电。

有时候,有些遥控编码器件会在发送数据之前先发送一个引导脉冲,有的还需要自动重复一次。但是,M50462芯片的编码却非常简洁,它只需要将用户码和数据码各发送一次即可。其传送波形如图2所示。

通过M50462发送编码信息时,低位先发,高位后发,一次传送后,4 ms之内不会再出现脉冲。接收头收到的波形也是如此,仔细观察发现。解码时可以不管脉冲宽度,而直接计算下降沿的间隔时间就可以了。

有一点要特别注意:由于系统所使用的环境、距离、各品牌接收头的参数不完全一样,因此,实际接收到的数据也不可能严格按上面图2中所给的时序那样,这样,在程序设计上就必须要有一定的适应范围,否则就会出现接收不稳定和跳接收头等奇怪的现象。

2解码程序的设计

以往的一些资料上,介绍的解码方法都是采用边沿中断触发以后,再用一个定时器来计算脉冲宽度,这是最简单的办法,一般的CPU都能处理。但在一些廉价的应用中,由于有些CPU资源非常有限,定时器只能共用,有鉴于此,笔者设计的这个解码程序特别考虑了硬件资源问题,该方法只需要占用一个具有边沿触发方式的外中断即可,其定时器可以共用,但基本思路还是采用中断触发定时器计数的方式,其源代码程序如下:

设计时,定时中断间隔时间的设置应根据实际情况确定,理论上是时间短一些为好。由于最小的间隔时间为1 ms,因此,设置为250μs基本能满足接收要求,设置的太短会使CPU负担过重。由于在定时中断中只有一句测试并自减,因此效率非常高。

当第一个下降沿到来时,红外接收中断被触发,在执行到(1)时,将脉冲个数计数器和脉冲宽度计数器都赋初值以准备测量;第二个下降沿到来时,执行到(2),由于M50462是先发送低位后发送高位,因此,stIRCode往右移动,新数据从高位进入。在(3)、(4)、(5)通过测试IRtimer的值,可判断是收到0还是1。实际上,第(3)是空语句,它只是为了加强程序的可读性。到(6)便收够了17个脉冲,此时,用户码和数据码都存在gstrIRdata结构体中,实际上,在(7)处还可以加入一个判断。此时如果用户码不符合,则可直接放弃数据。

3 结束语

本程序由于全部用C语言编写,而且没有使用51特有的位操作,因此,将该程序代码移植到其它系统非常方便。该程序在笔者开发的多个项目上得到应用,其CPU使用了51单片机MSP430和ARM微处理器,其效果都十分良好。稍微改动一下,该代码也能适合其它的遥控芯片。

本文摘自《电子元器件应用》

嵌入式Linux红外遥控,嵌入式系统中的红外遥控附加功能,嵌入式系统,红外遥控,发射...相关推荐

  1. win12服务器文件设置只读,如何在Win10系统中更改文件夹的只读或系统属性

    正常情况下通过右键属性只能更改文件的只读属性,系统win10属性则连相应选项都没有.那么如何在Win10系统中更改文件夹的只读或系统属性呢?下面跟着学习啦小编来一起了解下吧. 在Win10系统中更改文 ...

  2. win7 64位 系统中“打开或关闭Windows功能”列表空白

    参考Jayzai的博文: "win7 64 系统中打开或关闭windows功能空白" 下载微软补丁KB947812,这个补丁是一个系统更新准备工具. 32位补丁名称:Windows ...

  3. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十五)输入系统应用编程

    文章目录 1.输入系统应用编程 1.1 什么是输入系统 1.2 输入系统框架及调试 1.2.1 框架概述 1.2.2 编写APP需要掌握的知识 1.2.3 调试技巧 **1. 确定设备信息** **2 ...

  4. 计算机技术+智能化水电站,济南研祥嵌入式技术在水库信息智能化系统中的应用———济南研祥嵌入式技术在水库信息...

    [编辑简介]:本文分析了水库信息智能化系统的现状和需求,介绍以研祥EVOC嵌入式智能平台为基础构建的系统解决方案,给出系统结构框图及硬件配置.[摘要]:阐述水库信息智能化系统的组成以及如何采用EIP嵌 ...

  5. 【正点原子MP157连载】第二十一章 嵌入式Linux LED驱动开发实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  6. 嵌入式linux开发考试题目,练一练!3道经典嵌入式Linux面试题,答案在文末。

    原标题:练一练!3道经典嵌入式Linux面试题,答案在文末. 题一: 简述memcpy和strcpy的区别? 题二:信号量与互斥锁的区别? 题三:简述程序编译的过程? 题一答案: (1)复制的内容不同 ...

  7. 嵌入式linux应用程序开发详解_【精品套餐】嵌入式linux应用驱动开发完全学习路线...

    学习本课程,你将收获 本课程由<朱老师物联网大讲堂>推出,朱有鹏老师精心录制,提供从零开始.全面系统的学习体系,目的是让大家真正彻底的掌握嵌入式Linux应用和驱动程序开发知识和技能,真正 ...

  8. 嵌入式linux ecm,安勤推出最新高性价比3.5吋嵌入式单板计算机- ECM-BYT2及嵌入式模块计算机- ESM-BYT2-嵌入式系统-与非网...

    工业计算机专家,安勤科技,为Intel物联网解决方案联盟(Intel Internet of Things Solutions Alliance)会员之一,为专业嵌入式工业计算机制造商,致力于提供完整 ...

  9. 嵌入式linux音频驱动及简单播放器的设计与实现,嵌入式Linux音频驱动及简单播放器的设计与实现...

    摘要: 随着人们生活水平的提高,智能型产品越来越多的走进了人们的日常生活.大多数智能型产品采用嵌入式系统结构,因此人们的日常工作和生活都越来越离不开嵌入式系统的相关产品,如PDA,智能洗衣机,MP4, ...

  10. linux cst时间转换,linux系统中CST与EDT时间转换以及系统时间与网络时间同步

    初始时间:2012年 09月 14日 星期五 18:15:33EDT [root@test ~]# mv /etc/localtime /etc/localtime.bak [root@test ~] ...

最新文章

  1. ADO.NET 2.0中的SqlCommand.ExecutePageReader
  2. C#—使用InstallerProjects打包桌面应用程序
  3. linux内核模块编译出现找不到include/generated/asm/unistd_32.h” 问题解决
  4. 安装orb_slam 的坑解决方法
  5. java赋值兼容原则,多态问题抛出(赋值兼容性原则遇上父类与子类同名函数的时候)...
  6. Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
  7. java day29【DBC基本概念 、快速入门 、对JDBC中各个接口和类详解】
  8. LeetCode.206. Reverse Linked List(反转有序链表)C++ and PYTHON
  9. 信号与系统(二)——正交
  10. java世博会_世博会申请由xcode修改
  11. shell脚本使用getopts自定义传入参数选项
  12. URL转换成IP的过程
  13. 贴上AI标签的综艺,未来的模样你敢想象吗?
  14. PyCharm专业版破解
  15. CAD导入外部插件方法教程
  16. App 分辨率相关 - iOS
  17. pkg-php,node打包工具Pkg(详细教程)
  18. Java单例模式(Singleton)
  19. KLOOK客路旅行基于Apache Hudi的数据湖实践
  20. HTML/樱花爱心网页/

热门文章

  1. mongodb 下载
  2. 西门子仿真软件(S7-PLCSIM Advanced )与C#通过Profinet读写DB测试总结
  3. CIS坐标系统与投影变换
  4. java中yml后缀文件_YML文件扩展名 - 什么是.yml以及如何打开? - ReviverSoft
  5. java rest 知乎_JavaWeb开发之模仿知乎首页完整代码
  6. 学会这招,从此解决被知乎封号烦恼
  7. Adobe After Effects(AE)2022软件安装[MAC]
  8. plpgsql 编译执行
  9. java svg等值线_带有颜色填充的等值线画法研究
  10. 一键进入高通9008模式_高通3040芯片?游戏模式超低延迟?南卡lite pro全新升级!...