mspfPWM红外解码(C语言).doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
mspfPWM红外解码(C语言)

基于msp430f149的PWM红外解码的研究 摘要: 由于红外遥控的实用与经济性,本文研究PWM方式调制的红外解码的实现。 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 1红外遥控系统 通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如下所示: (一)发射部分 键盘矩阵、编码调制、LED红外发送器 (二)接收部分 研究中应用VS0038一体化红外接收头(实物图如下:) 红外接收头 VS0038能够正常接收的角度 2 遥控发射器及其编码 (1)遥控发射器专用芯片很多 (2)根据编码格式可以分成:脉冲宽度调制和脉冲相位调制两大类 现在我们研究以运用比较广泛,解码比较容易实现的脉冲宽度调制来加以说明。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码 以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0” 以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1” 遥控器发出由“0”和“1”组成的32位二进制码,经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码用于核对数据是否接收正确。 (其中的地址码为用户识别码,它又分为用户码与用户反码) 当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。 解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右即可。 根据红外编码的格式,程序应该等待9ms的起始码和4.5ms的结果码完成后才能读码。 接收器及解码 这是测试的结果,前三行是红外信号的编码,最后一行是8位数据码的十六进制格式,因为我的遥控器采用的是32位二进制码,所以后十位是无效位。如果是对42位二进制码的遥控器解码时,前26位是系统码,后16位是8位数据码和8位数据反码。不过此时第四行的十六进制是无效哦。 软件设计思想及流程: (1)程序使用到的msp430f149单片机的I\O口主要有P4与P6(用于12864液晶驱动)P1.3与P5.2(分别用来实现红外数据的接收和红外数据的发送)。 (2)程序的关键部分是红外解码,而根据红外线发出的红外信号编码的规则可以看出,二进制码“0”和“1”最主要的区别在于脉冲时间的长短,所以根据判断脉冲时间便可以判断是“1”还是“0”。 其程序如下: (程序已调试通过直接移值就可以用) #include msp430x14x.h #include config.h #define CPU_F ((double)8000000) //CPU主频8MHZ #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define uchar unsigned char #define uint unsigned int /*************红外接收端口定义**************/ #define HW_I P1DIR =~BIT3 #define HW_O P1DIR |= BIT3 #define HW_L P1OUT =~BIT3 #d

文档评论(0)

ipad0b + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档