查看: 2588|回复: 0

NXP LPC1768宝马开发板 第十六红外接收

[复制链接]

该用户从未签到

发表于 2015-2-5 10:38:45 | 显示全部楼层 |阅读模式
分享到:
第十六章  宝马1768——红外接收
开发环境:集成开发环境μVision4 IDE版本4.60.0.0
主机系统:Microsoft Windows XP
开发平台:旺宝NXP LPC1768开发板


16.1 EEPROM
16.2 硬件描述
16.3 程序说明

16.4  实验现象

本章我们主要介绍的是宝马开发板的外设红外接收头及红外解码原理,学习本章可以了解到红外收发原理,及如何对遥控器进行解码操作。
1、红外编解码:
在光谱中波长自0.76400微米的一段称为红外线,红外线是不可见光线。为了防止自然界中的红外线干扰,一般对红外线进行编码调制后进行通信,一般使用38KHz进行调制,如今使用红外遥控有两种编码方式:PWM编码(脉宽调制)和PPM编码(脉冲位置调制)
图片11.png
二进制数调制
PWM编码:发射载波的占空比代表”0”和”1”,发射红外载波的时间固定,通过改变不发射载波的时间来改变占空比。
PPM编码:发射载波脉冲之间的时间的长短来代表”0”和”1”,本次实验使用的红外遥控是PPM格式的编码格式,编码格式参考http://www.cublog.cn/u3/105675/showart_2420421.html,当发射器按键按下后,将发射一组108ms的编码脉冲(对于不同的遥控器其编码格式不同)。遥控编码脉冲由前导码、16位地址码(8位地址码、8 位地址码的反码)和16位操作码(8位操作码、8位操作码的反码)组成。
图片10.png
如下图,当第一次发送时引导码9ms 的载波波形和4.5ms的关断时间构成,在发重复码时,引导码由一个9ms的载波波形和2.25ms的关断时间构成。
图片9.png
图片8.png
如下图以脉宽为0.56ms、周期为1. 12ms 的组合表示二进制的“0”,以脉宽为1. 68ms 、周期为2. 24ms 的组合表示二进制的“1”。
图片7.png
2、硬件描述:
     宝马1768使用HS0038作为红外接收探头,接收红外信号频率为38kHz,周期约26μs,同时能对信号进行放大、检波、整形,得到TTL电平的编码信号,如下图是HS0038LPC1768连接的电路图,使用5v供电,P4.28口连接至HS0038输出引脚,将跳线帽JP2连接至INFRAFED
图片6.png
红外线信号被红外接收头接收到后,经过HS0038内部的放大、检波、整型后滤除了38KHz的载波,如下图是接收到的波形与对应输出波形,输出的有用信号与原PPM编码信号相反
图片5.png
3、程序说明:
    本次实验使用LPC1768P4.28脚与红外接收头,因此通过配置P4.28为输入模式,当没有红外信号时HS0038输出高电平,接收到红外信号的引导码后输出低电平,进入函数对信号进行解码,信号接收完成后P4.28为高电平,通过判断高电平时间大于5ms时退出解码函数,并将接收到的32位数据存放在Remote_Odr
1)当res=250时,高电平时间大于5ms为无用信号,退出处理函数;
2)当250>res>200时,即5ms>t>4ms被认为是引导码4.5ms,并且OK=1,表明后面的为数据信号可以接收;
3)当200>res>85时,即4ms>t>1.7ms被认为是第二次发送引导码2.25ms
4)当85>res>50时,即1.7ms>t>1ms被认为是1.5ms代表“1”;
5)当50>res>10时,即1ms>t>0.2ms被认为是0.5ms代表“0”;
图片4.png
当进入解码后,通过判断高电平持续时间即高脉冲宽度来判断信号类型,使用Pulse_Width_Check函数来检测高电平时间,使用宏定义#define RDATA (LPC_GPIO4->FIOPIN & (1 << 28))读取P4.28的状态,如下当P4.28为高电平时,延时20us,同时t加一,直到P4.28变为低电平或高电平时间达到5ms退出返回t,高电平时间t*20us
图片3.png
在发送完成后Remote_Rdy1来标志接收到了数据,在主程序中循判断是否接收到数据,若接收到则进入Remote_Process进行键值处理,Remote_Odr中的24-31位为地址码,16-23位为地址反码,8-15位为键值,0-7位为键值反码。判断并返回键值,在主程序中显示出对应键值对应的按键码。
图片2.png
while (1)
{
if(RDATA == 0)                       
                {
                        Remote();                       
                }
if(Remote_Rdy)
{
        key=Remote_Process();
        LCD_DisplayNum(180, 130, key,       3);         
        LCD_DisplayNum(180, 160, Remote_Cnt, 3);        
        switch(key)
        {
                case 0:
                        LCD_DisplayString(180,190, "ERROR ");
                        break;
......
        }
}                       
}
4、实验现象:
下载程序后,安装3.2寸彩屏模块,重新上电,使用实验遥控对着开发板的红外接收头按下按键,在LCD屏上显示按键对应的标号,对于不同的遥控器编码也会有区别,本次使用“car mp3遥控器”。
图片1.png
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-22 14:57 , Processed in 0.117132 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.