首页 理论教育实战教程:红外遥控器解码程序设计

实战教程:红外遥控器解码程序设计

【摘要】:整个中断服务子程序主要分红外遥控器解码、蜂鸣器提示、键盘处理以及LCD显示等程序。红外遥控器解码程序分两步,第一步是读取并判断引导码是否正确,如果不是则直接返回并初始化检测参数;第二步是连续4次,按照每次8位读取4个字节的后续数据,其中,检测过程中对0和1的判断必须是在延时0.56ms之后,一般取0.8ms中间值,以减少因为程序执行而导致的测量时间长度上的误差。红外遥控接收的关键代码如下:图21-15 红外遥控器解码程序流程图

红外遥控的解码就是从遥控器过来的信号,经过接收电路处理之后,将在输出端给出一个脉冲序列,而解码就是从这个脉冲序列中把信息恢复出来,不过注意很重要的一点:收到的信号是发射端信号的反相电平

本设计对于UPD6121编码的解码,方法是获取电平的时间长度,然后按照给定参数识别出信息。本设计采用的解码方法是采用硬件外部中断的方法,这种方法占用的硬件资源较少,但软件在中断程序里逗留的时间比较长,在一些时间敏感的场合不合适使用。软件解码程序的流程图如图21-15所示。

单片机P3.2(IRIN)一检测到有红外数据发送过来,就进入中断服务程序。整个中断服务子程序主要分红外遥控器解码、蜂鸣器提示、键盘处理以及LCD显示等程序。红外遥控器解码程序分两步,第一步是读取并判断引导码是否正确,如果不是则直接返回并初始化检测参数;第二步是连续4次,按照每次8位读取4个字节的后续数据,其中,检测过程中对0和1的判断必须是在延时0.56ms之后,一般取0.8ms中间值,以减少因为程序执行而导致的测量时间长度上的误差。校验密码主要通过读入的4字节红外编码中,前两个是用户码和用户码的反码,后两个是键数据码和键数据码的反码,故只需将最后一个键数据反码取反后与键数据码相比较。若相等,则数据正确,将键值编码读入进行处理;若不相等,则数据读取错误,中断程序返回。红外遥控器发送过来的主要是以下五个键:正转、反正、加速、减速以及停止键。若是正转键按下,则电动机按照A→B→C→D→A方向依次通电;若是反转键按下,则电动机按照A→D→C→B→A方向依次通电;若是加速键按下,则减少单相通电的延时时间;若是减速键按下,则增加单相通电的延时时间;若是停止键按下,则电动机停止旋转。红外遥控接收的关键代码如下:

978-7-111-47690-0-Part03-136.jpg(www.chuimin.cn)

图21-15 红外遥控器解码程序流程图

978-7-111-47690-0-Part03-137.jpg

978-7-111-47690-0-Part03-138.jpg