实验开发板为CT107D蓝桥官方板,编译环境为MDK5

目录

1 、红外发射和接收原理简述

2、蓝桥杯竞赛板所使用的红外一体化接收头

2.1、通信协议

2.2、实际驱动


工程下载地址:

https://gitee.com/Joseph_Cooper/blue-bridge-mcu/tree/master


1 、红外发射和接收原理简述

红外发射:通过单片机软件模拟发射出一定频率的红外信号,红外信号的发射类似于普通LED,不过红外发射头发射的是不可见的红外光,并且以一定的频率发射 。

红外接收头:L2为红外接收管收到的红外光越强则反向电流越大则3口电压越小通过运算后发向信号检测端口。

在这里先不深入研究原理,蓝桥的板子为一体化接收头先掌握驱动原理吧。

2、蓝桥杯竞赛板所使用的红外一体化接收头

2.1、通信协议

红外一体化接收头使用的是NEC通信协议。只用一个引脚来完成数据的接收因此对时间有严格的要求。

NEC数据格式:引导码、用户码、用户码(或者用户码反码)、按键键码和键码反码,
最后一个停止位。

引导码:9ms的载波+4.5ms的空闲。
比特值“0”:560us的载波+560us的空闲。
比特值“1”:560us的载波+1.68ms的空闲。

图片来源@金沙滩工作室

2.2、实际驱动

在使用红外接收头前要先将红J2跳线帽全部右移才能使用红外发射和接收。

一般红外接收引脚会接在外部中断方便接收到信号后直接读取信号,但是反人类的蓝桥开发板并没有,所以我用了一根杜邦线连接了P3^3和P1^1。

具体操作如下:

/**************************************************/
/*  需使用杜邦线将P1^1和P3^3短接                                  */
/**************************************************/
#include "infrared.h"bit irflag = 0;u8 ircode[4];//数码管接收缓冲区void InitInfrared()
{//AUXR &= 0x7F;//设置定时器为12T模式IR_INPUT = 1;TMOD = (TMOD & 0x0F) | 0x10;TR1 = 0;ET1 = 0;//定时器1中断关闭IT1 = 1;//设置外部中断1为下降沿触发
}u16 GetHighTime()
{TH1 = 0;TL1 = 0;TR1 = 1;while(IR_INPUT){if(TH1 >= 0x40) break;//高电平时间持续过长(约18ms)则跳出}TR1 = 0;return (TH1 * 256 + TL1);
}u16 GetLowTime()
{TH1 = 0;TL1 = 0;TR1 = 1;while(!IR_INPUT){if(TH1 >= 0x40) break;//低电平时间持续过长(约18ms)则跳出}TR1 = 0;return (TH1 * 256 + TL1);
}
//INT1外部中断服务函数,接收红外并解码
void Service_INT1() interrupt 2
{u8 i, j;u8 byt;u16 time;SMG_Display();time = GetLowTime();if( (time < 7833) || (time > 8755) )//判断是否为误码{IE1 = 0;//清除外部中断标志return;}time = GetHighTime();if( (time < 3686) || (time > 4608) )//判断是否为误码{IE1 = 0;return;}for(i = 0; i < 4; i ++){for(j = 0; j < 8; j ++){//先判断每位的数据中的低电平是否超时time  = GetLowTime();if( (time < 313) || (time > 718) ){IE1 = 0;return;}//接收判断每位高电平时间判断值time  = GetHighTime();if( (time > 313) && (time < 718) )//值为0{byt >>= 1;}else if( (time > 1345) || (time < 1751) )//值为1{byt >>= 1;byt |= 0x80;}else//不符合上述两种条件即为误码{IE1 = 0;return;}}ircode[i] = byt;}irflag = 1;IE1 = 0;}void HW_Get()
{if(irflag){irflag = 0;SMG_Buff[0] = SMG[ircode[0] >> 4];SMG_Buff[1] = SMG[ircode[0]&0x0F];SMG_Buff[6] = SMG[ircode[2] >> 4];SMG_Buff[7] = SMG[ircode[2]&0x0F];}
}/****************************infrared.h****************************/
#ifndef _INFRARED_H
#define _INFRARED_H#include "config.h"
#include "SMG.h"sbit IR_INPUT = P1^1;extern void InitInfrared();
extern u16 GetHighTime();
extern u16 GetLowRime();
extern void HW_Get();#endif

数码管上显示的是用户码的前两位和16进制的键码

【蓝桥杯单片机】红外接收及NEC红外通信协议相关推荐

  1. 【蓝桥杯单片机(24)】历届单片机客观题及答案解析

    目录 考前冲刺,专栏完结篇 ## 推荐链接: 推荐视频–小蜜蜂老师讲解 赛点资源包下载,提取码:brno 三极管基本知识总结 运算放大电路的基础 第十三届蓝桥杯单片机官方直播课录屏 目录 一些刷题后的 ...

  2. 蓝桥杯单片机学习11——PCF8591A/DD/A转换芯片

    上期我们学习了DS1302实时时钟的基本使用,现在我们来学习PCF8591A/D&D/A转换芯片的相关内容 蓝桥杯单片机学习11--PCF8591A/D&D/A转换芯片 PCF8591 ...

  3. 蓝桥杯单片机 赛后资料整理——NE555芯片模块与第十届省赛的总结

    蓝桥杯单片机 赛后资料整理--NE555芯片模块 电路原理 模块特性 驱动方法 代码模板 个人总结 本文适用于 CT107D竞赛板+ IAP15转接板 电路原理 模块特性 NE555是一种时钟芯片,输 ...

  4. 蓝桥杯单片机零基础到国二经验分享

    我参加的是第十三届蓝桥杯大赛,从最开始的零基础,毫无头绪,到拿下国二,颇有体会,在这里将我的备赛经验分享给大家,希望可以帮到一些正在备赛的蓝桥杯er 目录 一. 蓝桥杯-单片机组介绍 二 . 零基础到 ...

  5. 蓝桥杯单片机-ADC-A/D转换-测量PCF8591中AIN3通道(滑动变阻器Rb2)的电压

    文章目录 前言 实例程序: 题目 main.c iic.c iic.h 前言 蓝桥杯单片机开发板CT107D中的板载A/D转换芯片PCF8591可进行ADC和DAC的转换,该芯片有4个输入通道; 在该 ...

  6. 蓝桥杯单片机组——榨干选手资源包(芯片数据手册)

    文章目录 前言 DS18B20 原理图 1-Wire协议简介 赛场技巧 DS1302 原理图 SPI协议简介 赛场技巧 AT24C02 原理图 IIC协议简介 赛场技巧 PCF8591 原理图 赛场技 ...

  7. 第jiu届蓝桥杯单片机省赛真题_第九届蓝桥杯单片机组省赛试题.pdf

    第九届蓝桥杯单片机组省赛试题 "彩灯控制器"的程序设计与调试 (70 分) 一.基本要求 1.1 使用CT107D 单片机竞赛板,完成"彩灯控制器"功能的程序设 ...

  8. 蓝桥杯省赛考点_【蓝桥杯单片机01】从历年决赛真题中寻找单片机常见的考点...

    [蓝桥杯单片机01]从历年决赛真题中寻找单片机常见的考点 广东职业技术学院  欧浩源 [第三届:门禁系统] 1.功能简述 "门禁系统"主要有两种工作模式: 模式1:7:00-22: ...

  9. 蓝桥杯单片机DS18B20代码注释及部分时序图

    蓝桥杯单片机蓝桥杯单片机DS18B20代码注释及部分时序图 #include<STC15F2K60S2.H> #include<intrins.h>#define uchar ...

最新文章

  1. swift的基础语法(二)
  2. Linux下Kill函数用法
  3. oracle 减少回表,減少oracle sql回表次數 提高SQL查詢性能 | 學步園
  4. python形参中传入两个实参_C语言学习第3篇---形参-实参概念剖析
  5. 又一家知名社交电商平台倒下:并购重组失败,将启动破产清算或重整
  6. boost学习之安装
  7. [python] 在指定目录下找文件
  8. vba九九乘法表代码_VBA程序控制结构示例-九九乘法表
  9. dcdc 国产 电源芯片电路方案 选型小体积大功率高性价比推荐 不定期更新中..
  10. iphone之参数知识(一)
  11. 学习HTML+CSS有感
  12. TIPTOP、T100系统程序的内置函数使用详解
  13. oracle 产品宣传片,史上最牛宣传片!河南的美已惊艳了世界!
  14. 反垃圾邮件 linux,Linux中Postfix反病毒和垃圾邮件工具(十)
  15. 企业研发人员配备比例_一般公司职能结构及人员分布比例配备
  16. 等级保护2.0-大数据安全要求梳理
  17. 币小秘:币圈五度春秋几度忧愁?解读每位投资者心态
  18. 手动挡五个档位示意图_手动挡汽车档位图解?
  19. win10 打印机脱机怎么办
  20. 计算机绘图心得简短,cad画图心得体会(精选3篇)

热门文章

  1. php下载 微信头像图片_php 下载微信头像
  2. dos 退出for循环_循环?一次帮你搞定!
  3. java 栈的用法_让Java程序员再次生机勃勃,还是技术的力量
  4. 解决新版DBUtils使用连接池from DBUtils.PooledDB import PooledDB报错
  5. python从列表中随机选择一个元素
  6. 基于fitter库判断已知数据服从分布——python
  7. 动态代理和静态代理的区别_代理,是动态和静态的吗?
  8. Python“文件操作”Excel篇(上)
  9. 性能测试——接口、协议篇
  10. Docker监控方案之cAdvisor