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

51单片机完全学习——红外遥控

一、红外接收模块原理

红外接收头内部本身有一个反相,意思就是:平时发送方无信号时接收到的是1,发送方有发送载波时接收头引脚输出的是0,写代码的时候注意这一点。红外协议,你也可以理解成,他对0和1重新做了一些定义:560微秒的高电平加上1.69毫秒定义为逻辑1,560微秒的高电平加上560微秒的低电平定义为逻辑0。需要注意的是这里有一个反相,写代码一定要注意。简单点就是上面说的低电平其实是高电平,高电平其实是低电平。也就是下面的黑色部分其实是低电平,没有黑色的部分是高电平。

二、红外解码实现

首先我们这里的红外解码,针对的是NEC协议进行,其他协议类似处理即可。我们解码只需要根据他发送的时序进行接受就可以了,我们先上程序,然后在对程序里面需要注意的一些问题做进一步解释。我这里红外解码的处理程序全部放到了,中断里面进行处理,由于红外解码时间较长,只要一进入中断至少需要50毫秒,才能出去,如果主程序有一些对刷新率要求很高的事情在里面,使用这个中断函数就会导致,主程序的模块产生一些问题。如果不想出现这个问题,就需要使用定时器延时的方法来进行处理。对于定时器这种方法我们之后在讨论。关于程序里面的一些注意事项,大家看后面的注释就可以啦。

void ir_int0(void) interrupt 2  //我们这里使用外部中断1
{uchar i = 0, dat[4] = 0, k = 0, j = 0;if (IR_PORT == 0)       //判断确实是来了红外数据{delay8ms();         //将前面9毫秒的低电平先过去一段时间if (IR_PORT == 0)   //在进行确认确实是来了红外起始信号{delay4ms();     //将4.5毫秒的高电平过去一段时间if (IR_PORT == 1)//在进行判断确实是其实信号里面高电平那一段来了{while (IR_PORT == 1); //使用while循环将其实信号里面剩余的高电平给消耗掉for (j=0; j<4; j++)   //由于总共有4个字节的数据{for (i=0; i<8; i++) //每个字节有8位,从LSB->MSB依次接收{k = 0;          //每次开始必须将k清零,k保存的是上一次传输的数据while (IR_PORT == 0); //使用while循环将0或1开始的560微秒给消耗掉//由于0和1剩余的高电平信号的长短不一致,我们并不能知道来的是0还是1//因此我们首先需要记录来的高电平持续的时间长短//然后根据时间长短在进行判断是0还是1while (IR_PORT == 1)  //使用while将来的高电平消耗一下{delay10us();      //这里的每隔10微秒做一次计数k++;              //根据k的大小我们就可以判断是0还是1}if (k <= 60) //由于逻辑0的高电平只有560微妙,因此只要少于60的传过来就是0{k = 0;}else                  //否则传输过来的就是1{k = 1;}					dat[j] = ((dat[j] >> 1) | (k << 7)); //将接收到的数据保存在数组里面	}}if ((dat[0] == 0x00) && (dat[1] == 0xff))  //对数据做进一步的校验{uart_send_byte(dat[2]);  //将正确的键值通过串口进行打印uart_send_byte(dat[3]);	}}}}}

相关文章:

51单片机完全学习——红外遥控

一、红外接收模块原理 红外接收头内部本身有一个反相&#xff0c;意思就是&#xff1a;平时发送方无信号时接收到的是1&#xff0c;发送方有发送载波时接收头引脚输出的是0&#xff0c;写代码的时候注意这一点。红外协议&#xff0c;你也可以理解成&#xff0c;他对0和1重新做…...

群控系统服务端开发模式-应用开发-业务架构逻辑开发BaseAPI

一、加密工具开发 首先在根目录下extend文件中创建Encipher文件夹&#xff0c;用于专门开发加解密工具&#xff0c;新建RSA算法控制器并命名为Encrypt.php。然后在根目录下config文件夹中创建rsa.php文件&#xff0c;用于配置RSA算法参数。 1、秘钥生成算法 <?php /*** RS…...

【AI日记】24.10.27 了解AI的未来

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 工作1 内容&#xff1a;挑选AI大佬的访谈&#xff0c;跳着看了几个时间&#xff1a;2小时 工作2 内容&#xff1a;OpenAI Sam Altman最新访谈&#xff1a;GPT-4o和AI未来 2024.5时间&#xff1a;2小时收…...

【时间之外】IT人求职和创业应知【19】

认知决定你的赚钱能力。以下是今天可能影响你求职和创业的热点新闻&#xff1a; 今日关键字&#xff1a;深圳长沙&#xff08;备注&#xff1a;我都没有去过&#xff09; 2024中国&#xff08;长沙&#xff09;民营企业科技创新发展大会召开 内容概述&#xff1a; 2024年10月…...

MOE混合专家模型总结(面试)

目录 1. MOE介绍 2.MOE出现的背景 3.有哪些MOE模型 4.门控网络或路由 5.为什么门控网络要引入噪声 6.如何均衡专家间的负载 7.“专家”指什么 8.专家的数量对预训练有何影响 9.什么是topk门控 10.MOE模型的主要特点 11.MOE和稠密模型的对比 12.MOE的优势 13.MOE的挑…...

第8次CCF CSP认证真题解

1、最大波动 题目链接&#xff1a;https://sim.csp.thusaac.com/contest/8/problem/0 100分代码&#xff1a; #include <iostream> #include <algorithm> using namespace std; int main(int argc, char *argv[]) {int n;cin >> n;int a[1010];for(int i …...

2024昆明ICPC A. Two-star Contest(直观命名+详细注释)

Problem - A - Codeforces 思路&#xff1a; 按照等级排序&#xff0c;维护同等级最大评分&#xff0c;每个等级的总评分至少比其第前一个等级的最大评分大1分 吐槽&#xff1a; 思路不难&#xff0c;但坑好多&#xff0c;感觉全踩了一遍 坑&#xff1a;&#xff08;按解决…...

【算法刷题指南】双指针

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…...

HTML,CSS,JavaScript三件套

前言 1.HTML 就是用来写网页的 就是超文本标记语言 1.1快速入门 标签是根标签&#xff0c;就是开始的地方 head就是头&#xff0c;加载一些资源信息&#xff0c;和展示title标题的地方&#xff0c;比如html快速入门那几个字就是title标题标签 body是身体&#xff0c;就是正…...

react 总结+复习+应用加深

文章目录 一、React生命周期1. 挂载阶段&#xff08;Mounting&#xff09;补充2. 更新阶段&#xff08;Updating&#xff09;补充 static getDerivedStateFromProps 更新阶段应用补充 getSnapshotBeforeUpdate3. 卸载阶段&#xff08;Unmounting&#xff09; 二、React组件间的…...

关于 API

关于 API $set 问法&#xff1a;有没有遇到过数据更新了但视图没有更新的情况&#xff1f; <template><div>{{arr}}<button click"btn"></button></div> </template><script> export default {name:"Home"da…...

第15次CCF CSP真题解

1、小明上学 题目链接&#xff1a;https://sim.csp.thusaac.com/contest/15/problem/0 本题是模拟红绿灯计时的题&#xff0c;根据红绿灯转换规则可知&#xff0c;红灯后面通常是绿灯&#xff0c;绿灯后面是黄灯&#xff0c;黄灯过后又是红灯。根据题意&#xff0c;当k 0时&…...

STM32硬件平台

STM32 系列是 STMicroelectronics 设计的高度灵活、广泛应用的微控制器&#xff08;MCU&#xff09;系列&#xff0c;支持从低功耗应用到高性能处理的需求&#xff0c;适用于工业、汽车、消费电子和物联网等广泛领域。STM32 系列具有广泛的硬件种类和丰富的功能&#xff0c;以下…...

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

1. 背景介绍 如果你拿到了两台8卡A100的机器&#xff08;做梦&#xff09;&#xff0c;你的导师让你学习部署并且训练不同尺寸的大模型&#xff0c;并且写一个说明文档。你意识到&#xff0c;你最需要学习的就是关于分布式训练的知识&#xff0c;因为你可是第一次接触这么多卡…...

【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践

文章目录 一、决策树简介二、决策树的构建原理2.1 决策树的优缺点优点缺点 三、随机森林简介3.1 随机森林的构建过程3.2 随机森林的优缺点优点缺点 四、Python实现决策树和随机森林4.1 导入必要的库4.2 加载数据集并进行预处理4.3 创建决策树模型并进行训练4.4 可视化决策树4.5…...

时间序列预测(九)——门控循环单元网络(GRU)

目录 一、GRU结构 二、GRU核心思想 1、更新门&#xff08;Update Gate&#xff09;&#xff1a;决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门&#xff08;Reset Gate&#xff09;&#xff1a;用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。…...

李东生牵手通力股份IPO注册卡关,三年近10亿“清仓式分红”引关注

《港湾商业观察》施子夫 9月27日&#xff0c;通力科技股份有限公司&#xff08;以下简称&#xff0c;通力股份&#xff09;再度提交了注册申请&#xff0c;实际上早在去年11月6日公司已经提交过注册&#xff0c;看起来公司注册环节面临卡关。公开信息显示&#xff0c;通力股份…...

Android13、14特殊权限-应用安装权限适配

Android13、14特殊权限-应用安装权限适配 文章目录 Android13、14特殊权限-应用安装权限适配一、前言二、权限适配三、其他1、特殊权限-应用安装权限适配小结2、dumpsys package查看获取到了应用安装权限3、Android权限系统&#xff1a;应用操作管理类AppOpsManager&#xff08…...

DMVPN协议

DMVPN&#xff08;Dynamic Multipoint VPN&#xff09;动态多点VPN 对于分公司和分总公司内网实现通信环境下&#xff0c;分公司是很多的。我们不可能每个分公司和总公司都挨个建立ipsec隧道 &#xff0c;而且如果是分公司和分公司建立隧道&#xff0c;就会很麻烦。此时我们需…...

leetcode动态规划(十八)-零钱兑换II

题目 322.零钱兑换II 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...