新闻中心

EEPW首页>嵌入式系统>设计应用> 基于单片机系统的红外遥控器应用

基于单片机系统的红外遥控器应用

作者: 时间:2012-03-30 来源:网络 收藏

这里需要合理设置定时器的预分频值,笔者多次实验,得出较为合理的预分频值为1∶8,定时器时间分辨率为8μs,最大定时时间为 (4×256+252)×8×1μs=10.2 ms,测量精度达到最高,误差为32μs。通过对所得数据分析,得出的信号码格式如图4所示。

18.jpg

图中“头”(即引导脉冲):低8.84 ms,高4.40 ms。 “1”:低0.60 ms,高1.62 ms;“0”:0.60 ms低,0.50ms高;16 b识别码:19D6H采用PIC16C72,最多可以检测54 b的信号码,足以满足一般情况下的需求。

4 软件解码程序

在已知信号码格式的条件下,可以通过软件程序实现解码。以笔者手中的为例,根据上面已测得的信号码,采用PIC16C54,4 MHz晶振,提供一种软件解码的程序。

PIC16C54单片机是一款有着较高性能价格比的低档单片机,最适合低价格、低功耗、小体积的设备。PIC16C54没有中断,程序采用软件查询法,查询输入引脚的电平变化,采用定时器定时,根据定时器的记录值和已知的信号格式比较,判断各部分接收是否正确以及分辨键码并执行相应的命令。

由于遥控器脉宽时间值是在一个小范围内波动,而且检测过程中定时器也存在误差。因此,对信号的识别不能采取精确比较法,本程序采用了区间比较法,即判断定时器的记录值是否在预先计算的区间内。由88于引导脉冲和数据脉冲的时间相差很大,解码时对定时器采用不同的预分频,以尽量提高解码的准确度。  

①引导脉冲判断:低8.84 ms,高4.40 ms,预分频1∶64,理论计算得定时器值应为:低8AH,高44H。如实际所得低部分在85H和90H之间、高部分在40H和4AH之间,则认为引导脉冲接收正确。

②“0”,“1”判断:数据脉冲流的低电平脉宽相同,忽略不判断;高电平脉宽是判断数据流每位是“0”还是“1”的依据。“0”对应高0.50 ms,“1”对应高1.62 ms,预分频1∶8,理论计算得定时器值应为:“0”对应高3EH,“1”对应高0CAH。如所得“0”对应高在39H和42H之间、“1”对应高在 0C5H和0D0H之间则认为接收正确。

③判断16 b识别码是否和已知的识别码(19D6H)相同。

④判断8 b键码是否与8 b键码的反码相对应。⑤根据键码,选择所应执行的命令。

由于篇幅所限,仅给出判断“0”部分程序:  

19.jpg

注意,在程序容易发生死循环或者出错的地方,要检验定时器是否溢出。一旦发生溢出,要立即使程序复位,以便程序能够在出错之后返回到程序开始部分,增强的可靠性。以上设计思想可以在多种单片机上实现遥控器的解码。读者可自行尝试中断方法实现遥控器的信号解码。

本文所介绍的遥控器接收发送原理及信号码识别和解码程序,可以方便地移植到其他,其方法简洁灵活。此方法具有一般性,对于具体的应用,可自行变通。

参考文献
[1]窦振中.PIC系列单片机原理和程序设计[M].北京:北京航空航天大学出版社,1998.

红外遥控器相关文章:红外遥控器原理

万能遥控器相关文章:万能遥控器代码


晶振相关文章:晶振原理
脉冲点火器相关文章:脉冲点火器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭