基于单片机的红外线遥控系统

2020-05-26来源: elecfans关键字:单片机  红外线  遥控系统

  引言
  随着科学技术的不断发展,红外线遥控器因其具有体积小、功耗低、功能强、成本低等特点正在向各个领域渗透,在家用电器、安全保卫、工业控制以及人们日常生活中广泛应用,特别是在家用电器、安全保卫和人们日常生活中的应用就更广泛了。本文给出用软件方式实现红外遥控器译码的单片机程序,所有程序都经过实际单片机系统调试通过。对于硬件电路,发射由红外线遥控器完成,而接收部分则只需要在单片机系统中添加一个红外线接收管就可完成。


  1 红外线遥控系统
  红外线遥控系统就是指利用红外线来传递控制信号,实现对控制对象的远距离控制的目的;具体来讲,就是由发射器发出红外线指令信号,由接收器接收信号并对信号进行处理,最后实现对对象的各种功能的远距离控制。红外线遥控系统一般由发射器和接收器两部分组成:发射器包括指令键、指令信号产生电路、调制电路、驱动电路及红外线发射器件;接收器由红外线接收器件(如红外线接收头)、前置放大电路解调电路、指令信号检出电路、记忆及驱动电路、执行电路等组成。红外线遥控系统按照产生和区分控制指令的方式和特征来分类,常用的有频分制和码分制红外线遥控— —频分制红外线遥控就是信号产生电路以不同频率的电信号代表不同的控制指令:码分制红外线遥控是指信号产生电路以不同的脉冲编码代表不同的指令。


  2 红外线遥控信号码
  以一款台湾PTC公司出产的PT2222—1为编码芯片的DVD遥控器为例。红外线遥控器发送红外信号,红外线接收电路接收到的红外线信号可以通过高性能数字示波器触发锁存获得。红外线波形如图1所示:


图1 红外线波形图


  在平时没有接收到红外线信号时,接收器的输出电平为1;当某个键按下时。波形的开始是一个9ms的低电平0,然后是4.5ms的高电平1,接着是32个比特(4个字节)的数据,其中第一和第二字节是遥控器的地址码(对于一款已经设计好的遥控器,地址码是固定不变的),第三个字节是遥控器键值码。第四个字节是遥控器键值码的反码。其作用是用于解码后进行校验。


  NEC遥控器协议约定,当红外线遥控器发送的键值码数据为0时。波形应为如图2所示的上跳波形。


  波形总宽为1.15ms。高电平部分长度约为550us,低电平的长度约600US,波形如下图2。


图2 键值码为0时的波形图


  而当红外线遥控器发送的键值码数据的数据为1时,波形是一个总宽为2.25ms的上跳波形。高电平的长度约1.6ms.低电平的长度约650us,波形如下图3。


图3 键值码为1时的波形图


  很显然,0的波形长度和1波形的长度是不同的。若从波形的上升沿开始计时,当延时达到550us以后。数据“0”的电平为低电平,数据“1”的电平仍然为高电平,直到1 600us以后,才变为低电平。这就给我们留出了大约600US的“窗口”时间。换句话说,只要在监测到上升沿以后的550us到11 500us时间里进行采样,就可以使用软件的方法判断出遥控器键值码中的1和0。

  3 键值译码子程序




  上面的子程序中,为了保证数据的译码正确,在数据接收完成以后对数据进行了严格的校验,不但要校验遥控器的地址信息,还要对遥控器的键值码数据进行运算,只有当接收到的数据第三字节和第四字节相加为0xFF时才认为接收的数据正确,这保证了控制的可靠性。另外在程序中反复出现的time_onO实际上是一个中断定时程序,其作用是防止一旦El线电平出现错误时程序进入死循环,这一点对保证程序运行的可靠性非常重要。


  4 应用
  在单片机应用系统中,只要在主程序中反复调用这个子程序,然后根据接收到的键值产生相应的控制动作就可以了。一个典型的调用程序如下,程序的功能是当接收到1键是打开一个LED,接收到2键时打开第二个LED,接收到3键时同时关闭两个LED。

    主程序如下:



  硬件电路如下:


图4 硬件结构图


  5  结语
  本文的红外接收电路比较简单,稳定性好,用很小的代价就能实现红外遥控的译码。

关键字:单片机  红外线  遥控系统 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic498304.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于80C51单片机位寻址编程
下一篇:单片机IO口另外三种状态

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVR单片机EEPROM学习
生活中我们经常会犯眼高手低的毛病,很多东西看着别人弄很容易,但轮到自己的时候就会发现其实没有想象中的简单。学完51单片机时,我以为小小的单片机无非就是进行一些IO口的控制罢了,但今天在进行AVR系列单片机学习的时候,才发现原来单片机还有很多的不同,自己原来掌握的东西还远远不足,所以无论到什么时候只有虚心学习,不断努力才能真正的掌握一门技术,学习的过程也是自己人格丰富的过程。下面来说说对EEPROM学习的一些感受。AVR单片机内部已集成了512kb的EEPROM,对EEPROM的操作比51单片机相对简单一些。写EEPROM操作:读操作:主函数将记录打开开发板的次数,将开机数送EEPROM保存,开机后使用LED显示开发板的启动次数
发表于 2020-06-07
AVR单片机EEPROM学习
自制AVR高压编程器,解锁熔丝位错误的avr单片机
这段时间在用atmel的系列单片机at90usb128x/64x和atmega32u4设计键盘,有一块at90的单片机由于熔丝位设置错误被锁死,导致progisp无法给其刷程序,网上查了有几种方法解锁:用有源晶振的输出脚给到单片机的晶振输入脚。(前提是单片机的熔丝位中设置为外部时钟)用正常单片机对的晶振输出脚给到熔丝位错误的单片机的晶振输入脚。(前提是单片机的熔丝位中设置为外部时钟)用正常单片机编程输出时钟给到熔丝位错误的单片机的晶振输入脚。(前提是单片机的熔丝位中设置为外部时钟)由于我的单片机熔丝位设置成了内部时钟,以上三种方法无效,只能请出最后的救命稻草——高压编程。在百度上找的一些方案大都只支持atmega8/16这些低阶
发表于 2020-06-07
自制AVR高压编程器,解锁熔丝位错误的avr单片机
51单片机串行口及存储器工作原理分析
一、 51单片机串行口工作原理MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信。1.串行端口的基本特点8031单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同应用场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;方式1多用于双机之间或与外设电路的通信;方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统。串行端口有两个控制寄存器,用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。串行端口有一个数据寄存器SBUF(在特殊
发表于 2020-06-07
51单片机串行口及存储器工作原理分析
浅谈STC单片机特殊IO的用法
在正常情况下,51单片机在上电复位后,所有IO口默认都为高电平,都工作在准双向IO模式,但是STC15系列以后的单片机出现了IO的4种工作模式,一个带有复用功能的IO在上电复位后就会出现不是准双向IO模式的情况,这些引脚在使用时就需要我们多多关照啦。1、PWM相关的引脚在STC15系列单片机中,于PWM2到PWM7相关的12个IO,在上电复位后,默认为高阻输入模式,需要对外输出时,需要用户通过程序将其设置为推挽输出或者是准双向IO模式。在STC8系列单片机中,和PWM相关的所有IO复位后是准双向IO模式,用户可以在通过ISP软件烧写(下载)程序时,选择将其设置为开漏输出模式,同样用户也可以通过程序的方式设置为所需要的工作模式
发表于 2020-06-07
浅谈STC单片机特殊IO的用法
单片机的逻辑电路与逻辑运算的介绍
在数字电路,我们经常会遇到逻辑电路,而在 C 语言中,我们则经常用到逻辑运算,二者在原理上是相互关联的。首先,在“逻辑”这个概念范畴内,存在真和假这两个逻辑值,而将其对应到数字电路或 C 语言中,就变成了“非 0 值”和“0 值”这两个值,即逻辑上的“假”就是数字电路或C 语言中的“0”这个值,而逻辑“真”就是其它一切“非 0 值”。然后,我们来具体分析一下几个主要的逻辑运算符。我们假定有 2 个字节变量:A 和 B,二者进行某种逻辑运算后的结果为 F。以下逻辑运算符都是按照变量整体值进行运算的,通常就叫做逻辑运算符:以下逻辑运算符都是按照变量内的每一个位来进行运算的,通常就叫做位运算符:我们今后要看资料或芯片手册的时候,会经常遇到
发表于 2020-06-07
单片机的逻辑电路与逻辑运算的介绍
如何计算给单片机寄存器赋的值
在以前的文章中,我提到过,单片机在电学里面,属于很简单的一种器件,外表看,就是一个芯片,长着很多的脚。内部,就是一堆寄存器。不同的单片机,外部表现就是形状和引脚数量和引脚名称可能不一样,内部,就是寄存器名称不一样。我们要做的,就是写程序控制单片机里面的寄存器,然后通过引脚表现出来完成各种电子产品。所以,你在看别人写的程序的时候,会经常看到给单片机寄存器赋值的语句。下面就以最简单的控制51单片机引脚高低电平来说明一下。(不要总是存在51单片机已经淘汰的想法,51单片机至今任然是出货量最大的单片机,并且各大公司每年都有新款的51单片机推出,功能越来越强劲,做产品,要选最合适的单片机,而不要总想用牛逼的单片机。)例如,单片机P1口
发表于 2020-06-07
如何计算给单片机寄存器赋的值
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved