前情提要:

STM32 红外遥控器详解_Lzjusc2017的博客-CSDN博客

关于左移右移的问题:程序如图。

正点原子程序写的是左移,所以接收到的数据依次是同步码头、地址码、地址反码、数据码、数据反码、连发码。但是中间32位数据(RmtRec),每一部分(一共四部分)的位都是相反的,因为信号是低位发送,所以先接收到低位,例如发送按键1,应该是00001100(0X0C),但是左移接收便是00110000(0x30)。

【如果在此基础上直接改成右移,那么这32位数据(RmtRec)的数据最终顺序是数据反码、数据码、地址反码、地址码(猜测,还未验证)。改成右移之后发现程序出现问题,后续有时间会再更新,找到问题所在。。。RmtRec|=0 和 RmtRec&=0 在红框内应该是一样的。但按理说应该使用&,有0则0】

为了能够跟遥控器的键值对应上,我在键盘扫描函数中增加了颠倒位操作,把错误的数据码改成更正过来。程序如下:

u8 Remote_Scan(void)
{        u8 sta=0;u8 resta=0; u8 t1,t2,i,x;  if(RmtSta&(1<<6))//得到一个按键的所有信息了{ t1=RmtRec>>24;         //得到地址码,RmtRec最高的8位,通过右移位变为了00000000 00000000 00000000 xxxxxxxxt2=(RmtRec>>16)&0xff;   //得到地址反码 ,因为已知地址码是0,所以通过与全1相与得到地址反码if((t1==(u8)~t2)&&t1==0)//检验遥控识别码(ID)及地址 :(u8)是只对低8位进行判断{ t1=RmtRec>>8; //控制码t2=RmtRec;     //控制反码(低8位if(t1==(u8)~t2)sta=t1;//键值正确:(u8)是只对低8位进行判断for(i=0;i<7;i++)   //相当于移位了七次,i从0一直到6{x = sta>>i&(0x01);resta=resta|x;resta<<=1;  }}   if((sta==0)||((RmtSta&0X80)==0))//按键数据错误/遥控已经没有按下了{RmtSta&=~(1<<6);//清除接收到有效按键标识RmtCnt=0;      //清除按键次数计数器}}  return resta;
}

通过该段代码解决了问题:

for(i=0;i<7;i++) 
                {
                     x = sta>>i&(0x01);
                       resta=resta|x;
                       resta<<=1;    
                }

返回的值可以跟按键值一一对应。

注:待完善。

关于STM32红外遥控器的研究与分析相关推荐

  1. STM32 红外遥控器详解

    目录 本文将分为以下几个部分: 红外简介 红外原理 正点原子代码 疑问与改进 总结 另外本文是在输入捕获的基础上完成,关于输入捕获,请参考: STM32F103 实验 输入捕获 https://blo ...

  2. 基于STM32的万能红外遥控器

    本博客介绍一种基于STM32的可学习和存储已有红外发射设备的万能红外遥控器的设计思路. 一.首先需要了解设计一款这功能的遥控器需要什么硬件设备支持. 1.3.3V,5V电源模块,用作给系统模块供电和单 ...

  3. STM32 NEC红外遥控器解码

    STM32 NEC红外遥控器解码 红外遥控编码格式 一体化红外接收头 STM32显示遥控器按下的数字代码 代码片 总结 原文链接:https://www.yourcee.com/newsinfo/29 ...

  4. 【STM32 .Net MF开发板学习-14】红外遥控器编码识别

    一年前我写过一篇博文<自制电脑红外遥控接收器(PC软解码)>,文中介绍借助几个简单的器件通过PC串口,来获取红外遥控器的按键信息.现在我们已经学会了如何用PWM技术驱动智能小车(参见< ...

  5. 单片机毕业设计 stm32万能红外遥控器

    文章目录 1 简介 2 主要器件 3 实现效果 4 部分实现代码 5 最后 1 简介 Hi,大家好,学长今天向大家介绍一个学长做的单片机项目 基于单片机的万能红外遥控器 大家可用于 课程设计 或 毕业 ...

  6. stm32毕业设计 单片机万能红外遥控器

    文章目录 1 简介 2 主要器件 3 实现效果 4 部分实现代码 1 简介 Hi,大家好,学长今天向大家介绍一个学长做的单片机项目 基于单片机的万能红外遥控器 大家可用于 课程设计 或 毕业设计 选题 ...

  7. 【STM32 Net MF开发板学习-14】红外遥控器编码识别

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一年前我 ...

  8. Esp8266进阶之路16 esp8266的 基于Nonos移植红外线H1838,实现红外遥控器配网,远程控制一盏灯。(附带固件)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  9. 【测试】更新红外遥控信号读取,用示波器抓取红外遥控器NEC信号

    最近群里有问红外信号采集相关问题,我以为他问arduino,原来他问米思齐,然后我居然忘了之前我用米思齐也试过.今天再把资料整理一下,备战新项目. 红外遥控器应用非常广泛,大部分家电都使用它来控制 , ...

  10. 【测试】用示波器抓取红外遥控器NEC信号

    红外遥控器应用非常广泛,大部分家电都使用它来控制 ,具有价格低,省点等特点.一般红外遥控器发送数据采用NEC格式,今天我们用示波器抓取一下NEC格式的红外信号,看看他长什么样子. 工具  arduin ...

最新文章

  1. anaconda新建不同python版本环境_解决 Anaconda 与 ROS 冲突(python 版本与 opencv)
  2. python遇到Retry(total=4, connect=None, read=None, redirect=None, status=None)解决方案
  3. 《京东商业化数据分析师培养计划》
  4. SOL注入——基于联合查询的数字型GET注入(二)
  5. Java 获取linux根目录下的文件夹_Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
  6. mysql访问类型最好的_【干货满满】最全的MySQL性能指南(一):选择最佳的数据类型...
  7. php接口 含义,php晋级必备:一文读懂php接口特点和使用!
  8. unix文件描述符——socket
  9. 如何插卡虚拟机 mysql_怎么在虚拟机中搭建mysql服务器
  10. 【HDFS】HDFS与dfsadmin结合使用
  11. 超强1000个jquery极品插件!
  12. 领克无线carplay适配方案展示
  13. 金融领域的知识图谱搭建简单实操(基于Neo4J)
  14. 如何查看手机APP的包名,并快速查找
  15. 前端后端程序员必备的Linux基础知识
  16. 程序员的表白浪漫HTML生日礼物
  17. 计算用户输入的日期离1900年1月1日相距多少天
  18. 配置maven镜像不起作用 Unrecognised tag: ‘mirror‘ (position: START_TAG seen ...</mirror>
  19. 服务器客服获取小程序头像,微信小程序自动获取微信用户头像
  20. 2.89亿元寻求股权转让“接盘侠”!紫光存储风波未平,紫光德瑞风云再起

热门文章

  1. 大一高数下册笔记整理_高等数学下册知识点总结.doc
  2. linux下od命令的使用教程,linux od命令详解
  3. 关于微信小程序图标icon的五种实现方案
  4. ETL开发工具Kettle下载安装环境搭建及使用教程
  5. 微型计算机硬盘接口种类,硬盘接口类型
  6. 用极域课堂管理系统软件批量格式化D盘
  7. 【应急响应】Linux应急响应入侵排查思路
  8. COSMOS/DesignSTAR.v4.5 1CD
  9. C语言中字符串转数字的方法
  10. linux 命令打印,Linux终端打印命令使用介绍