当前位置: 首页 > news >正文

51单片机学习笔记_14 红外遥控

红外传感器

遥控器通过红外 LED 发送调制后的信号,开发板上的红外接收模块接收遥控器的红外线。

单工异步,940nm 波长(还有一种 250nm 的N,可见光),EC 通信标准。

image-20230328000312504

38KHz:红外线频率。

IN:发送的方波。

image-20230328001955152

红外接收模块中会自动帮我们滤出 In 部分。

image-20230328002724563

空闲状态:OUT 输出高电平。

发送高电平:OUT 输出高电平。

发送低电平:OUT输出低电平,代表有数据。

image-20230328004940943

38kHz 属于是底层信息,所以协议层不给予展示,类似类的封装。

9ms 低+4.5ms 高:start。

后面跟四个字节数据。反码用于数据验证。

560us 低+560us 高表示0,560us 低+1690us 高表示1. 结束的最后一个高电平后面要跟一个下降沿表示终止。

一直扫描是效率很低的做法,所以 out 是接在外部中断上的。

外部中断

image-20230328115258479

void main(){LCD_Init();LCD_ShowString(1,1,"A");IT0=1;IE0=0;EX0=1;EA=1;PX0=1;while(1){LCD_ShowNum(2,1,num,2);}
}void Int0_Routine() interrupt 0 {num++;
}

中断和第三个按键 P3^2 接在一起,因此按下按键3时就会下降沿触发中断。

如果改为低电平触发,即 IT0=0,按下按键就一直触发。

接收到的数据会以2位的二进制位展现在数码管上,这里遥控器上的按钮并不是按几数码管就会显示几的注意一下。重点只是在于看遥控器不同的信号单片机能否区分和识别。

image-20230328145734093

//ired.h
#ifndef _ired_H
#define _ired_H#include "public.h"//管脚定义
sbit IRED=P3^2;//声明变量
extern u8 gired_data[4];//函数声明
void ired_init(void);#endif//ired.c
#include "ired.h"u8 gired_data[4];//存储4个字节接收码(地址码+地址反码+控制码+控制反码)/*******************************************************************************
* 函 数 名         : ired_init
* 函数功能		   : 红外端口初始化函数,外部中断0配置 
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void ired_init(void)
{IT0=1;	//下降沿触发EX0=1;	//打开中断0允许EA=1;	//打开总中断IRED=1;	//初始化端口
}void ired() interrupt 0	//外部中断0服务函数
{u8 ired_high_time=0;u16 time_cnt=0;u8 i=0,j=0;//引导信号有9ms的低电平和4.5ms的高电平,先把这两部分读掉,并且如果太长时间引导信号没有发生相应的变化就先跳出,省的系统死机。我们给引导信号10ms和5ms的机会。if(IRED==0){time_cnt=1000;while((!IRED)&&(time_cnt))//等待引导信号9ms低电平结束,若超过10ms强制退出{delay_10us(1);//延时约10ustime_cnt--;if(time_cnt==0)return;		}if(IRED)//引导信号9ms低电平已过,进入4.5ms高电平{time_cnt=500;while(IRED&&time_cnt)//等待引导信号4.5ms高电平结束,若超过5ms强制退出{delay_10us(1);time_cnt--;if(time_cnt==0)return;	}//接下来是读取地址、地址反码、控制、控制反码。for(i=0;i<4;i++)//循环4次,读取4个字节数据{for(j=0;j<8;j++)//循环8次读取每位数据即一个字节{time_cnt=600;while((IRED==0)&&time_cnt)//等待数据1或0前面的0.56ms结束,若超过6ms强制退出{delay_10us(1);time_cnt--;if(time_cnt==0)return;	}time_cnt=20;while(IRED)//等待数据1或0后面的高电平结束,若超过2ms强制退出{delay_10us(10);//约0.1msired_high_time++;if(ired_high_time>20)return;	}gired_data[i]>>=1;//先读取的为低位,然后是高位if(ired_high_time>=8)//如果高电平时间大于0.8ms,数据则为1,否则为0gired_data[i]|=0x80;//最高位赋1ired_high_time=0;//重新清零,等待下一次计算时间}}}if(gired_data[2]!=~gired_data[3])//校验控制码与反码,错误则清空后返回{for(i=0;i<4;i++)gired_data[i]=0;return;	}}		
}

main.c:

void main()
{	u8 ired_buf[3];ired_init();//红外初始化while(1){				ired_buf[0]=gsmg_code[gired_data[2]/16];//将控制码高4位转换为数码管段码ired_buf[1]=gsmg_code[gired_data[2]%16];//将控制码低4位转换为数码管段码ired_buf[2]=0X76;//显示H的段码smg_display(ired_buf,6);	}		
}

相关文章:

51单片机学习笔记_14 红外遥控

红外传感器 遥控器通过红外 LED 发送调制后的信号&#xff0c;开发板上的红外接收模块接收遥控器的红外线。 单工异步&#xff0c;940nm 波长&#xff08;还有一种 250nm 的N&#xff0c;可见光&#xff09;&#xff0c;EC 通信标准。 38KHz&#xff1a;红外线频率。 IN&…...

【我是土堆 - Pytorch教程】 知识点 学习总结笔记(五)

此文章为【我是土堆 - Pytorch教程】 知识点 学习总结笔记&#xff08;五&#xff09;包括&#xff1a;完整的模型训练套路&#xff08;一&#xff09;、完整的模型训练套路&#xff08;二&#xff09;、完整的模型训练套路&#xff08;三&#xff09;、利用GPU训练&#xff08…...

JUC篇:CopyOnWriteArrayList的应用与原理

系列文章目录 JUC篇&#xff1a;volatile可见性的实现原理 JUC篇&#xff1a;synchronized的应用和实现原理 JUC篇&#xff1a;用Java实现一个简单的线程池 JUC篇&#xff1a;java中的线程池 JUC篇&#xff1a;ThreadLocal的应用与原理 JUC篇&#xff1a;Java中的并发工具类 文…...

【总结】爬虫1-requests

爬虫1-requests 1. requests的基本用法 requests需要提前导入&#xff0c;才能使用 1.1 请求网络数据&#xff1a;requests.get(请求地址) response requests.get(https://cd.zu.ke.com/zufang)1.2 设置解码方法&#xff08;罗马的是需要设置 - 一定要在获取请求结果之前设…...

基于springboot实现学生综合成绩测评系统【源码】分享

基于springboot实现学生综合成绩测评系统演示开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包…...

uniapp初体验———uView组件库的使用与钉钉小程序的运行

这周学长给了我一个校企合作的项目&#xff0c;要求是用uniapp开发&#xff0c;最终打包成钉钉小程序&#xff0c;不过我并不会uniapp&#xff0c;也是学了一段时间&#xff0c;开始写项目&#xff0c;中间也遇到过很多问题&#xff0c;比如开发者工具还有如何运行到开发者工具…...

初始Go语言2【标识符与关键字,操作符与表达式,变量、常量、字面量,变量作用域,注释与godoc】

文章目录Go语言基础语法标识符与关键字操作符与表达式变量、常量、字面量变量类型变量声明变量初始化常量字面量变量作用域注释与godoc注释的形式注释的位置go docgodocGo语言基础语法 标识符与关键字 go变量、常量、自定义类型、包、函数的命名方式必须遵循以下规则&#xff…...

Vue计算属性详解

目录 ​编辑 1、什么是计算属性 2、为什么要有计算属性 1. 为什么不是使用模板语法 2. 为什么不是使用method对于复杂逻辑 3. 什么时候要用计算属性 4. 定义计算属性fullName 5. 计算属性的配置项 1、什么是计算属性 写在computed对象中的属性&#xff0c;本质上是…...

rk3568-AD按键驱动调试

rk3568-AD按键驱动调试转载请备注&#xff1a;daisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主dts设备树节点 /rk356x_linux_220118/kernel/arch/arm64/boot/dts/rockchip/rk3568.dtsi 板级设备树dts /home/scooper/jkD7/20221221/ido_evb3568_v2_android11_sdk/kernel/…...

Docker三剑客之swarm

一、什么是docker swarm Swarm是Docker公司推出的用来管理docker集群的平台&#xff0c;几乎全部用GO语言来完成的开发的&#xff0c;代码开源在https://github.com/docker/swarm&#xff0c; 它是将一群Docker宿主机变成一个单一的虚拟主机&#xff0c;Swarm使用标准的Docker…...

Lucene Solr Elasticsearch三者之间的关系,怎么选?

Lucene简介&#xff1a; Lucene主要用于构建文本搜索应用程序&#xff0c;包括Web搜索引擎、桌面搜索工具和商业应用程序。它提供了诸如单词分析、查询解析、搜索结果排序等功能&#xff0c;可以轻松地在大量文档中快速搜索和查找相关信息。 Lucene具有以下特点&#xff1a; …...

为你的网站加上Loading等待加载效果吧 | Loading页面加载添加教程

为你的网站加上Loading等待加载效果吧 | Loading页面加载添加教程 效果图 : 教程开始 新建一个loading样式css 将以下代码放进去 然后引用这个文件 code #Loadanimation{ background-color:#fff; height:100%; width:100%; position:fixed; z-index:1; ma…...

Redis安装和配置

网上有海量的Redis文章&#xff0c;写的都很详细。这里就是简单记录一下自己查aof问题过程中遇到的问题&#xff0c;主要是aof文件所在目录在redis.conf里的位置 1。在ubuntu16上安装Redis sudo apt-get install -y redis-server 2。修改redis配置 sudo vim /etc/redis/re…...

MobTech|如何使用秒验

什么是秒验&#xff1f; 秒验是MobTech公司提供的一款实现一键验证功能的产品&#xff0c;从根源上降低企业验证成本&#xff0c;有效提高拉新转化率&#xff0c;降低因验证带来的流失率&#xff0c;3秒完成手机号验证&#xff08;一键登录&#xff09;。 秒验主要整合了三大…...

CSS实现自动分页打印同时每页保留重复的自定义内容

当需要打印的内容过长时系统会产生自动分割页面&#xff0c;造成样式不太美观。使用CSS的 media print 结合 <table> 可以实现对分页样式的可控。效果如下&#xff1a; 假设有50条数据&#xff0c;打印时系统会自动分成两页&#xff0c;同时每页保留自定义的header和foo…...

基于prometheus的监控告警怎么实现?

基于 Prometheus 的监控告警实现一般需要以下几个步骤&#xff1a; 安装和配置 Prometheus&#xff1a;安装 Prometheus 并配置好需要监控的目标。可以使用 Prometheus 的配置文件&#xff08;prometheus.yml&#xff09;来指定需要监控的目标&#xff0c;例如服务、主机、容器…...

2007年4月全国计算机等级考试二级JAVA笔试试题及答案

2007年4月全国计算机等级考试二级JAVA笔试试题及答案 一、选择题 &#xff08;1&#xff09;已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF&#xff0c;则该二叉树的后序遍历为 A&#xff0e;GEDHFBCA B&#xff0e;DGEBHFCA C&#xff0e;ABCDEFGH D&#xff0e;…...

灌水玩玩 ChatGPT AIGC生成的有栈协同程序实现(例子)

CO&#xff1a; 你是一名 C/C 高级软件工程师。 请使用 stackful 协程&#xff0c;实现一个 Sleep 随眠的协同程序&#xff0c;注意并非 stackless 协程&#xff0c;不允许使用 C/C 17 以上的语言标准实现&#xff0c;允许使用 boost 基础框架类库。 ChatGPT&#xff1a; 好的…...

【砝码称重】暴力DFS(一半分)+ dp(可AC)

题目描述&#xff1a; 题目分析&#xff1a; 我也没有完全搞太明白&#xff0c;简单说说我的理解 1.dp【i】【j】表示前 i 个砝码&#xff0c;是否可以称出来重量为 j 的物品&#xff0c;如果可以的话&#xff0c;值为1&#xff0c;不可以 为0&#xff1b; 2.针对当前第 i 个…...

科大奥瑞物理实验——霍尔效应实验

实验名称&#xff1a;霍尔效应实验 1. 实验目的&#xff1a; 了解霍尔效应测量磁场的原理和方法&#xff1b;观察磁电效应现象&#xff1b;学会用霍尔元件测量磁场及元件参数的基本方法。 2. 实验器材&#xff1a; QS-H型霍尔效应实验仪 磁针 QS-H型霍尔效应测试仪 双刀开关…...

从医院PACS到你的Python脚本:手把手教你用pydicom库读写和修改DICOM文件

从医院PACS到Python脚本&#xff1a;pydicom实战医学影像处理指南 医学影像数据正以每年30%的速度增长&#xff0c;而DICOM作为医疗影像存储与传输的国际标准&#xff0c;承载着CT、MRI等设备产生的海量数据。在临床研究、AI模型训练和医疗信息化建设中&#xff0c;开发者经常需…...

C语言状态模式实战:从设计思想到嵌入式状态机实现

1. 项目概述&#xff1a;从“状态”到“模式”的思维跃迁在嵌入式开发、游戏逻辑、网络协议解析乃至日常的业务流程控制中&#xff0c;我们常常会面对一个核心挑战&#xff1a;如何优雅地管理一个对象随着内部条件改变而表现出的不同行为&#xff1f;比如&#xff0c;一个自动售…...

命令行媒体管理工具amem:本地化素材归档与自动化实践

1. 项目概述&#xff1a;一个被低估的本地化媒体管理工具最近在整理个人数字资产时&#xff0c;我遇到了一个老生常谈但又无比棘手的问题&#xff1a;如何高效、优雅地管理那些散落在硬盘各个角落的短视频、图片和音频文件&#xff1f;无论是手机拍摄的生活片段&#xff0c;还是…...

从零构建知识图谱:基于NLP的实体关系抽取与Neo4j存储实践

1. 项目概述&#xff1a;从文本到知识的桥梁最近几年&#xff0c;知识图谱这个概念在自然语言处理&#xff08;NLP&#xff09;和人工智能领域火得不行。简单来说&#xff0c;它就是把散落在海量文本里的“知识点”——比如实体&#xff08;人物、地点、概念&#xff09;和它们…...

量子电路反编译技术:原理、实现与应用

1. 量子电路反编译技术概述量子计算领域近年来快速发展&#xff0c;但量子算法的可解释性始终是一个关键挑战。当我们面对一段量子汇编代码(QASM)时&#xff0c;往往难以直观理解其对应的算法逻辑。这就如同拿到一段机器码却不知道它实现的是什么功能。量子电路反编译技术正是为…...

Jetson TX2 NX扩容实战:用M.2固态硬盘告别存储焦虑(附完整分区与挂载命令)

Jetson TX2 NX存储扩容终极指南&#xff1a;M.2固态硬盘实战与性能调优 当你在Jetson TX2 NX上部署YOLOv5模型时&#xff0c;突然发现eMMC存储空间不足——这个场景对于许多边缘计算开发者来说再熟悉不过。16GB或32GB的板载存储&#xff0c;在当今动辄几个GB的AI模型和数据集面…...

NodeJS-Learning包管理艺术:npm高级用法与私有仓库搭建

NodeJS-Learning包管理艺术&#xff1a;npm高级用法与私有仓库搭建 【免费下载链接】NodeJS-Learning This page contains collection of curated links to blog posts, articles, videos, tutorials, books, frameworks, modules, IDEs, testing tools, hosting providers, et…...

基于SpringBoot的广西特色水果电商平台的设计与实现

本课题的选题依据及研究意义 一、选题依据和意义 &#xff08;一&#xff09;选题依据 随着互联网经济的深入发展&#xff0c;电子商务在推动全球经济发展中发挥了重要作用。其中生鲜电商已成为农产品销售的重要渠道。广西作为我国热带水果的重要产区&#xff0c;对其传统水果产…...

【2026年拼多多暑期实习/春招- 5月17日-第四题- 多多的道路修建Ⅱ】(题目+思路+JavaC++Python解析+在线测试)

题目内容 多多现在在负责多多乡村的修建。 道路修建问题可以看作是在一条直线上,有NNN个单位。 经过认真分析,他发现每一段路有两种修建的方案,分别为“修111”和“修22...

Windows下pthread开发环境搭建:MinGW-w64与winpthreads实战指南

1. 项目概述&#xff1a;为什么要在Windows上折腾pthread&#xff1f;如果你是一个从Linux或Unix环境转向Windows平台的C/C开发者&#xff0c;第一次在Windows上尝试编译一个依赖pthread&#xff08;POSIX线程&#xff09;库的老项目时&#xff0c;大概率会碰一鼻子灰。编译器会…...