红外遥控器软件解码原理和程序.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
红外遥控应用领域非常广泛,给消费者带来了很大的便利,但由于红外通讯协议的庞杂,也给使用者造成了一定的麻烦,同样也给设备集成商造成了不变,不同种控制设备的遥控器均不相同,据统计全世界红外遥控码类型已经超过一万种,中国国内应用的红外码型已经超过600种,其中有很多都是生产厂家为避免与其他设备串码而自定义的,这样对于红外学习来说造成了很大的难度。 红外遥控学习的方法有很多,大体上归纳为两种,一拷贝波形,二分析波形,拷贝波形的优点是能学习所有波形,缺点是学习过程中波形畸变也完全复制了,另红外码有多种载波,拷贝波形如加载波一起拷贝显然数据量非常大,因而通行拷贝波形不会拷贝载波,这就导致了可能波形拷贝对了,但载波不对,依然不能控制设备;分析波形的优点是取得波形片段后无论波形如何畸变均能按标准波形发出红外码,缺点是需要建立一个庞大的标准码库,这个工作只能通过不断的积累来完成。 本红外学习模块折中了以上两种方式,对于普遍使用的码型采用波形分析的方法,对于不常用的码型采用拷贝波形的方式,并且对于所有的红外码均采用了特征纠偏的方法,经大量实验证明,这种学习方法比较优秀,可以学习电视、DVD、机顶盒、空调、CD、投影机等设备的红外控制信号,同时可以不断更新标准码库,如果已将本红外学习模块应用到产品上,依然可以通过标准串口更新标准码库。 本红外学习模块如果大量应用在产品上,为避免每个模块都要学习,可以先学习一个模块,测试成功后通过标准串口将学习好的红外数据传输到其他未学习的模块上,为批量产品提供了便利。 本红外学习模块提供了两种电气接口供使用者选择,SPI或TTL电平的串口,通过一个功能选择接口即可选择合适的接口,同时提供给用户三个额外的I/O口,用户可使用命令来控制或读取这三个I/O口,如使用SPI接口则用户可得到一个额外的标准串口,这对于使用多个串口的用户提供了便利,其中SPI接口和串口均为硬件接口,并非通过I/O口模拟的,因而用户可以放心使用,其中SPI接口提供了无SPI功能的MCU与之通讯的模拟程序,方便用户移植,串口则提供了从110~512000bps的波特率,用户可通过寄存器设置(使用SPI做为控制接口时) 本红外学习模块提供给用户一个状态复位控制引脚,在本模块上电前将此引脚接地则可以恢复到出厂前的设置,但已学习好的数据不会擦除。 本红外学习模块可提供外壳封装版本,可以为客户提供OEM版,为大客户提供单芯片版。 关于本模块的使用和应用上的任何问题,请来电或邮件咨询,升级信息及改版信息请见网站通告。 / QQEMAIL:czzhouyun@ 手机外遥控器软件解码原理和程序 #include at89x52.h #define NULL 0x00//数据无效 #define RESET 0X01//程序复位 #define REQUEST 0X02//请求信号 #define ACK 0x03//应答信号,在接收数据后发送ACK信号表示数据接收正确, 也位请求信号的应答信号 #define NACK 0x04//应答信号,表示接收数据错误 #define BUSY 0x05//忙信号,表示正在忙 #define FREE 0x06//空闲信号,表示处于空闲状态 #define READ_IR 0x0b//读取红外 #define STORE_IR 0x0c//保存数据 #define READ_KEY 0x0d//读取键值 #define RECEIVE 0Xf400//接收缓冲开始地址 #define SEND 0xfa00//发送缓冲开始地址 #define IR 0x50//红外接收缓冲开始地址 #define HEAD 0xaa//数据帧头 #define TAIL 0x55//数据帧尾 #define SDA P1_7 #define SCL P1_6 unsigned char xdata *buf1; //接受数据缓冲 unsigned int buf1_length; //接收到的数据实际长度 unsigned char xdata *buf2; //发送数据缓冲 unsigned int buf2_length; //要发送的数据实际长度 bit buf1_flag; //接收标志,1表示接受到一个数据帧,0表示没有接受到数据帧或数据 帧为空 bit buf2_flag; //发送标志,1表示需要发送或没发送完毕,0表示没有要发送的数据或 发送完毕 unsigned char state1,state2; //用来标志接收字符的状态,state1用来表示接 收状态,state2用来表示发送状态 unsigned char data *ir; union{ unsig

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档