CN100498866C - 用串口接收红外遥控信号的方法 - Google Patents
用串口接收红外遥控信号的方法 Download PDFInfo
- Publication number
- CN100498866C CN100498866C CNB200710143365XA CN200710143365A CN100498866C CN 100498866 C CN100498866 C CN 100498866C CN B200710143365X A CNB200710143365X A CN B200710143365XA CN 200710143365 A CN200710143365 A CN 200710143365A CN 100498866 C CN100498866 C CN 100498866C
- Authority
- CN
- China
- Prior art keywords
- remote control
- serial ports
- data
- serial port
- infrared remote
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Selective Calling Equipment (AREA)
- Optical Communication System (AREA)
Abstract
本发明公开了一种使用串口接收红外遥控信号来完成软件解码遥控信号脉冲的方法,旨在减少软件解码占用系统额外的外部中断资源,主要在于:将红外遥控接收器OUT引脚与串口的RXD引脚相连;根据当前使用遥控器的脉冲宽度计算串口波特率,并设置包括串口波特率在内的串口属性;获取符合当前使用遥控器前导码和用户识别码的串口数据,并保存串口数据及相应的串口状态寄存器的值;根据保存遥控器按键与串口数据和串口状态寄存器的值对应关系的遥控器按键映射表,将串口数据转换为遥控按键值。本发明方法不占用系统额外的外部中断资源,而且在其它中断负担重的时候也可以减少出错概率。
Description
技术领域
本发明涉及红外遥控技术,具体地说,是涉及用串口接收红外遥控信号的方法。
背景技术
红外遥控技术目前已较为成熟,具有使用方便、功耗低、抗干扰能力强和成本低等优点,在家电中得到了广泛的应用,也在智能仪器系统中受到重视。一般的红外遥控系统是由红外遥控信号发射器、红外遥控信号接收器和微控制器及其外围电路等3部分构成的。由遥控编码器产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头完成对遥控信号的放大、检波、整形,解调出遥控编码脉冲。遥控编码脉冲不能直接被程序识别,还需要对编码脉冲进行解码,获得包含用户信息的二进制码。
从遥控编码脉冲解出包含用户信息的二进制码可以用两种方法,一种是用专用的解码芯片,完全交给硬件处理;还有一种是用软件按照遥控编码脉冲的格式进行解码。采用硬件解码来说,对系统的负担小,而且出错概率小,但是成本比较高;用软件解码成本低,但是增加了系统负担,常规软件解码占用了系统外部中断资源和内部定时器资源,特别是在系统其它中断任务重的时候出错概率较大。
因此,需要提供一种新的红外遥控信号接收方法,来解决现有技术中的上述矛盾。
发明内容
本发明所要解决的技术问题是在于需要提供一种使用串口接收红外遥控信号来完成软件解码遥控信号脉冲的方法,避免了现有技术软件解码占用系统额外的外部中断资源。
为了解决上述技术问题,本发明提供了一种用串口接收红外遥控信号的方法,包括步骤:
(1)将红外遥控接收器OUT引脚与所述串口的RXD引脚相连,并将所述红外遥控接收器与所述串口均接地;
(2)根据当前使用遥控器的脉冲宽度计算串口波特率,并设置包括所述串口波特率在内的串口属性;
(3)获取符合当前使用遥控器前导码和用户识别码的串口数据,并保存所述串口数据及相应的串口状态寄存器的值;
(4)根据保存遥控器按键与串口数据和串口状态寄存器的值对应关系的遥控器按键映射表,将步骤(3)中的串口数据转换为遥控按键值。
上述方法中,所述红外遥控接收器OUT引脚与所述串口RXD引脚之间,可以进一步包括电平转换单元,用来实现电平转换。
上述方法中,步骤(2)中所述串口波特率的范围,可以为红外遥控信号波形最短高电平持续时间对应的波特率与红外遥控信号波形最短低电平持续时间对应的波特率之间。进一步地,所述串口波特率可以设置为红外遥控信号波形最短高电平持续时间和最短低电平持续时间中较小者对应的波特率。
上述方法步骤(2)中,所述串口属性可以包括串口的数据位、停止位和校验方式。进一步地,所述数据位可以为8位;所述停止位可以为1位;所述校验方式为奇校验或偶校验。
上述方法步骤(3)包括,可以抛弃不符合前导码和用户识别码的用户数据码。
上述方法步骤(3)中,获取当前使用遥控器前导码和用户识别码对应的串口数据,可以包括对当前遥控器上不同按键对应的串口数据进行分析,或对串口传输数据格式和遥控编码脉冲格式进行分析来获得。
上述方法步骤(3)中,所述串口状态寄存器的值,可以是遥控码数据的一部分。
上述方法步骤(4)中,所述遥控器按键映射表的制作方式可以包括,按遥控器上的按键,记录每个按键对应的串口数据和串口状态寄存器的值,由此获得所述遥控器按键映射表。
上述方法中,可以通过改变串口的数据位个数来规避不同遥控器的红外遥控信号解为同一个遥控码。
与现有技术相比,本发明使用串口接收红外遥控的做法来达到软件解码遥控编码脉冲,不占用系统额外的外部中断资源,而且在其它中断负担重的时候也可以减少出错概率。用串口接收红外遥控的方法不同于常规红外遥控接收方法,可以保证在中断任务重的系统中不出现误码、减少系统资源的占用。硬件连接方法和软件解码方法都比较简单,可以省去额外的红外解码芯片,降低系统成本,特别适合用于嵌入式系统。本发明不占用系统额外的外部中断资源,在其他中断负担重的时候也可以减少出错概率,而且降低了系统成本。
附图说明
图1串口和红外遥控接收器连接示意图。
图2是串口初始化步骤示意图。
图3是本发明软件收取遥控码数据的串口处理步骤示意图。
图4是NEC格式遥控码波形示意图。
图5是本发明方法步骤示意图。
具体实施方式
以下结合附图和对本发明作进一步的详细说明。
红外线遥控是目前使用最广的一种遥控手段。红外线遥控装置具有体积小、功耗低、功能强、成本低等特点而被大量使用。本发明方法的思路是,使用串口连接红外遥控接收器,通过从串口读取数据,并对数据进行分析,转换成相应的遥控码,从而实现对接收到的遥控码进行解码。硬件连接方法参见附图1,红外遥控接收器OUT引脚与串口RXD引脚相连,如果需要进行电平转化的话,则红外遥控信号从红外遥控接收器OUT引脚输出之后,经过一电平转换单元转换电平,再传输至串口RXD引脚;串口通过GND引脚接地,同时红外遥控接收器也需要接地。至于串口的TXD引脚本发明并不涉及,可以悬空。另外,红外遥控接收器由电源VCC1提供电能支持,串口由电源VCC2提供电能支持。
使用CPU的通用异步收发器(UART)(或UART芯片)接口的接收引脚连接红外遥控接收器输出引脚,将红外遥控接收器收到的编码脉冲信号送给串口,通过设置适当串口波特率、数据位、停止位、校验方式,将从串口收到数据进行适当解码后即可得到遥控码。串口初始化的步骤如图2所示,包括:
步骤201,设置串口波特率、数据位、停止位和校验方式;
步骤202,设置中断处理程序和中断类型;
步骤203,允许串口接收中断,串口初始化结束。
在软件处理上,需要处理正常串口接收中断(接收数据就绪)。正常中断处理方法是从串口的先进先出(FIFO)缓冲区收取数据,同时读取并保存串口的中断状态寄存器的内容,将串口中断状态寄存器的值作为遥控码数据的一部分,这样可以减少不同红外遥控编码脉冲信号对应同一遥控码的概率。串口的异常中断(奇偶校验错误、帧错误、FIFO溢出、break中断)可以不处理。当从串口收到了一系列数据后就需要对数据进行过滤,对于同一个遥控器来说,遥控码中的前导码和用户识别码是相同的,只有用户码部分不同,因此可以使用前导码和用户识别码对收到的数据序列进行过滤,只有符合前导码和用户识别码对应的串口数据序列才是正确的遥控码序列,序列中用户码对应的串口数据和这些串口数据相应的中断状态寄存器值的数据集合就是解码遥控器的按键值,这里收到的遥控码键值和实际的遥控码定义的值是不一样的,但是存在一个映射关系可以区分不同的遥控器按键。软件收取遥控码数据的串口中断处理流程,请参加附图3,包括步骤:
步骤301,判断接收FIFO是否为空,如果为空则退出中断处理(步骤3011),否则执行步骤302;
步骤302,读取接收FIFO数据和串口状态;
步骤303,检查当前接收状态,如果当前为检查引导码,则转步骤304,如果当前为检查用户识别码,转步骤305,如果当前为读取用户数据码,转步骤310;
步骤304,判断序列是否为引导码序列,是则转步骤306,否则转步骤307;
步骤305,判断序列是否为用户识别码序列,是则转步骤308,否则转步骤309;
步骤306,设置当前状态为检查用户识别码,并返回步骤301重新执行;
步骤307,抛弃这一错误序列,并返回步骤301重新执行;
步骤308,设置当前状态为读取用户数据,并返回步骤301重新执行;
步骤309,设置当前状态为检查引导码,并返回步骤301重新执行;
步骤310,读取串口数据、状态;
步骤311,将串口数据转换为遥控按键码,并保存或送出,之后返回步骤301重新执行。
以下从原理层面详细阐述本发明。遥控器发出的红外信号采用的是带38KHz或56KHz载波的脉冲调制信号,该信号由3部分组成:前导码、用户识别码、数据码,波形示意图见图4,该信号被红外遥控接收器接收后虑掉载波,整形得到原来的编码波形。
如图4所示,一段NEC格式遥控码的帧长为108ms,其中前导码的长度为13.5ms(9ms+4.5ms),用户识别码的长度为27ms,数据码的长度也为27ms。重复码的长度为11.5ms,其中高电平为9ms,低电平为2.5ms。位“0”的总长度为1.125ms,其中高电平为0.56ms;位“1”的总长度为2.25ms,其中高电平也为0.56ms。
串口每传送一个字节是以一个起始位开始,5~8个数据位和1~2个停止位结束,无数据前接收信号线上是高电平,一旦变为低电平时则说明有数据传送,相当于用下降沿做触发,中间依靠定时采样来判断数据位为‘0’还是‘1’。这正好和遥控码波形格式有相同之处,因此只需要把串口的波特率调整到和红外遥控码波形中最小脉冲对应波特率一致就可以用来接收遥控码数据,串口波特率设置公式如下:
串口波特率=1/最小脉冲时间。
最小脉冲时间为高电平和低电平持续时间中最短的那个时间,也即将串口波特率设置为红外遥控信号波形最短高电平持续时间和最短低电平持续时间中较小者的倒数。例如NEC遥控码中格式中,高电平持续时间最短为0.56ms,低电平持续时间最短为0.565ms,取最短时间为0.56ms,那么串口波特率应该设置为1/(0.56×10-3)=1786bps。考虑到实际会有误差,可以采用取最短高电平持续时间对应波特率和最短低电平持续时间对应波特率中间的值即:1770~1786bps之间的值,需要根据实际情况进行小范围调整。
除了设置串口波特率外,还需要设置串口的数据位和停止位以及校验方式,数据位可以设置为可允许设置值中的任意一种;停止为设置为1位;校验方式可以用奇校验或偶校验,不能设置为无校验,因为串口的接收状态也是接收遥控码中的数据;另外不需要设置流控方式。
在软件处理上,需要处理串口接收中断和键码映射的工作。串口接收中断的处理过程就是对接收到的数据序列进行识别,找到符合条件的序列,保存该序列中的用户识别码对应的串口数据和串口状态数据,这个过程可以使用状态转移图的方法实现。处理键码映射是将保存的有效串口数据和串口状态数据转换成某个遥控器按键的过程,使用查表的方法就可以实现。
本发明所描述的方法不是一种通用的接收方法,从原理上说,本发明描述的方法不能适用于接收所有遥控器发出的信号,可能出现不同的遥控调制脉冲信号解出同一个遥控码。为了解决这种情况带来的问题,除了之前所述的将串口中断状态寄存器的值作为遥控码数据的一部分的方法之外,还可以改变串口的数据位个数进行规避不同遥控器的红外遥控信号解为同一个遥控码,或者在设计遥控器的时候就将所有遥控器设计为不同遥控器的红外遥控信号解为不同的遥控码。
以下通过一个实施例,来说明本发明方法的具体实现。如图5所示,本发明方法的步骤包括:
步骤501,连接红外遥控接收器与串口;
步骤502,测量当前使用遥控器最小脉冲宽度,计算串口应该设置的波特率,计算波特率可以使用公式“串口波特率=1/最小脉冲时间”,并根据实际情况,在此基础上小范围调整;
步骤503,设置串口属性,串口波特率设置为步骤502获得的波特率值,1位停止位,无流控方式,奇或偶校验,串口允许的数据位,推荐使用8位数据位;
步骤504,获取当前使用遥控器前导码和用户识别码对应的串口数据,可以在打印出按遥控器上不同按键对应的串口数据,找到这些数据中前面相同的序列,这些序列就是前导码和用户识别码序列,不同的部分即为数据码序列,也可以根据串口传输数据格式和遥控编码脉冲格式分析得到;
步骤505,调整中断处理程序,只保存符合前导码和用户识别码的串口数据序列后面的数据序列和相应的串口状态寄存器的值,对不符合序列的串口数据进行抛弃;
步骤506,根据保存遥控器按键与串口数据和串口状态寄存器的值对应关系的遥控器按键映射表,将串口数据转换为遥控按键值;也即对于收到的串口数据,在遥控器按键映射表中进行查找,取出和其相同数据所对应的遥控按键值。
上述步骤506中的遥控器按键映射表,是在前述步骤505的基础上制作而成。通过按遥控器上的按键,记录每个按键对应的串口数据和串口状态寄存器的值,由此即可制作出一张串口数据和串口状态寄存器的值与遥控器按键一一对应的遥控器按键映射表。
值得注意的是,步骤502、步骤504和步骤506均为试验测量得到,对于不同型号的遥控器所测量的数据可能不同,但只要测量好后就不需要修改,其它步骤均相同。
本发明所述的用串口接收红外遥控的方法可以用在嵌入式系统领域,与传统使用红外遥控解码芯片相比,本发明可以省去解码芯片;与常规用外部中断方式接收红外遥控信号相比,在系统中断负担重的情况下,常规接收红外遥控信号的方法可能由于其它中断占用时间长或关毕中断时间长等原因,导致接收红外遥控中断不能及时响应而产生误码,而使用本方法,采用串口内部的接收FIFO缓冲区就可以缓存收到的遥控信号,避免了误码的生产。
从软件复杂度上讲,用串口接收红外遥控的方法省去了测量红外遥控信号的时间、对收到中断序列进行复杂解码过程,只是简单地从串口收取数据,转换成遥控码,降低了软件复杂度,也降低了系统负担。
Claims (13)
1、一种用串口接收红外遥控信号的方法,其特征在于,包括步骤:
(1)将红外遥控接收器OUT引脚与所述串口的RXD引脚相连,并将所述红外遥控接收器与所述串口均接地;
(2)根据当前使用遥控器的脉冲宽度计算串口波特率,并设置包括所述串口波特率在内的串口属性;
(3)获取符合当前使用遥控器前导码和用户识别码的串口数据,并保存所述串口数据及相应的串口状态寄存器的值;
(4)根据保存遥控器按键与串口数据和串口状态寄存器的值对应关系的遥控器按键映射表,将步骤(3)中的串口数据转换为遥控按键值。
2、如权利要求1所述的方法,其特征在于,所述红外遥控接收器OUT引脚与所述串口RXD引脚之间,进一步包括电平转换单元,用来实现电平转换。
3、如权利要求1所述的方法,其特征在于,步骤(2)中所述串口波特率的范围,为红外遥控信号波形最短高电平持续时间对应的波特率与红外遥控信号波形最短低电平持续时间对应的波特率之间。
4、如权利要求3所述的方法,其特征在于,所述串口波特率设置为红外遥控信号波形最短高电平持续时间和最短低电平持续时间中较小者对应的波特率。
5、如权利要求1所述的方法,其特征在于,步骤(2)中所述串口属性包括串口的数据位、停止位和校验方式。
6、如权利要求5所述的方法,其特征在于,所述数据位为8位。
7、如权利要求5所述的方法,其特征在于,所述停止位为1位。
8、如权利要求5所述的方法,其特征在于,所述校验方式为奇校验或偶校验。
9、如权利要求1所述的方法,其特征在于,步骤(3)包括,抛弃不符合前导码和用户识别码的用户数据码。
10、如权利要求1所述的方法,其特征在于,步骤(3)中获取当前使用遥控器前导码和用户识别码对应的串口数据,包括对当前遥控器上不同按键对应的串口数据进行分析,或对串口传输数据格式和遥控编码脉冲格式进行分析来获得。
11、如权利要求1所述的方法,其特征在于,步骤(3)中所述串口状态寄存器的值,是遥控码数据的一部分。
12、如权利要求1所述的方法,其特征在于,步骤(4)中所述遥控器按键映射表的制作方式包括,按遥控器上的按键,记录每个按键对应的串口数据和串口状态寄存器的值,由此获得所述遥控器按键映射表。
13、如权利要求1所述的方法,其特征在于,通过改变串口的数据位个数来规避不同遥控器的红外遥控信号解为同一个遥控码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710143365XA CN100498866C (zh) | 2007-08-21 | 2007-08-21 | 用串口接收红外遥控信号的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710143365XA CN100498866C (zh) | 2007-08-21 | 2007-08-21 | 用串口接收红外遥控信号的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101110159A CN101110159A (zh) | 2008-01-23 |
CN100498866C true CN100498866C (zh) | 2009-06-10 |
Family
ID=39042218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200710143365XA Expired - Fee Related CN100498866C (zh) | 2007-08-21 | 2007-08-21 | 用串口接收红外遥控信号的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100498866C (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944287B (zh) * | 2009-07-03 | 2013-03-27 | 炬力集成电路设计有限公司 | 一种用于红外遥控的解码方法和解码装置 |
CN101697249A (zh) * | 2009-11-02 | 2010-04-21 | 中兴通讯股份有限公司 | 解码红外遥控信号的方法和装置 |
CN101814233A (zh) * | 2010-04-08 | 2010-08-25 | 郑州炜盛电子科技有限公司 | 红外遥控软件解码方法 |
CN102063785B (zh) * | 2010-11-12 | 2013-03-13 | 四川长虹电器股份有限公司 | 红外线遥控信号自动发射方法及其系统 |
CN102625064B (zh) * | 2012-03-28 | 2014-04-16 | 深圳市茁壮网络股份有限公司 | 一种接收并识别红外遥控信号的方法和装置 |
CN103136930B (zh) * | 2013-02-25 | 2015-06-24 | 恬家(上海)信息科技有限公司 | 红外遥控系统的发射端及其实现方法 |
CN105068966B (zh) * | 2015-08-19 | 2018-07-06 | 长沙威胜信息技术有限公司 | 串口自动识别方法 |
CN105955914A (zh) * | 2016-06-02 | 2016-09-21 | 江西洪都航空工业集团有限责任公司 | 一种采用rs422串口实现的脉冲信号模拟方法 |
CN108734944B (zh) * | 2017-04-18 | 2021-07-13 | 陕西万方汽车零部件有限公司 | 一种无线遥控解码方法及其装置 |
CN110910629B (zh) * | 2019-11-04 | 2020-11-20 | 杭州海兴电力科技股份有限公司 | 基于单片机的红外遥控信号解码方法、系统及计量装置 |
-
2007
- 2007-08-21 CN CNB200710143365XA patent/CN100498866C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101110159A (zh) | 2008-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100498866C (zh) | 用串口接收红外遥控信号的方法 | |
CN102881150B (zh) | 红外遥控信号学习模组及遥控装置 | |
CN101404113B (zh) | 一种在嵌入式系统中用软件实现红外遥控解码的方法 | |
CN100545882C (zh) | 用于无线遥控接收芯片的自适应解码方法 | |
EP2716113B1 (en) | Standalone radio frequency wireless device having data acquisition capabilities | |
CN103426292B (zh) | 一种红外遥控器以及红外编码学习方法、发射方法 | |
CN103729995A (zh) | 具有超低功耗唤醒功能的无线远传抄表设备及其唤醒方法 | |
CN103810131A (zh) | 一种车载系统用蓝牙与can的数据转换装置及方法 | |
CN105469587A (zh) | 一种激光传递语音的方法及其装置 | |
CN101881948A (zh) | 基于无线移动通信网的远程空调机控制启动器设计方法 | |
CN104361374A (zh) | 一种射频信号的采集与处理系统及其方法 | |
CN101697249A (zh) | 解码红外遥控信号的方法和装置 | |
CN109120295B (zh) | 一种无线车载台主机功能单元模块及其实现方法 | |
CN101373460A (zh) | 嵌入式外设统一接入方法 | |
CN209962405U (zh) | 一种无线遥控发射器、接收器以及无线遥控系统 | |
CN203870786U (zh) | 具有超低功耗唤醒功能的无线远传抄表设备 | |
CN111352887B (zh) | 一种pci总线到可配置帧长度串行总线适配和传输方法 | |
CN103021149B (zh) | 一种基于单片机的无线编码解码的遥控器 | |
CN210222118U (zh) | 一种基于红外调制转换与无线通信的电表监控系统 | |
CN101814233A (zh) | 红外遥控软件解码方法 | |
CN201237769Y (zh) | 多功能电脑无线遥控装置 | |
CN109981499A (zh) | 一种综合基带数据链系统及数据传输方法 | |
CN104393889A (zh) | 用于人体通信的收发器结构、通信系统及方法 | |
CN202352065U (zh) | 具有学习遥控功能的监护仪 | |
CN106788560A (zh) | 一种基于sx1278的数传电台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090610 Termination date: 20160821 |