首页 > 其他分享 >RISC芯片/红外NEC应用教程/实操/含可运行代码~

RISC芯片/红外NEC应用教程/实操/含可运行代码~

时间:2024-09-03 17:54:54浏览次数:12  
标签:脉冲 RISC NEC 红外 实操 ms 载波 接收

红外NEC协议

一、NEC简介
        红外(Infrared,IR)遥控是一种无线、非接触控制技术,常用于遥控器、无线键盘、鼠标等设备之间的通信。IR协议的工作原理是,发送方通过红外线发送一个特定的编码,接收方通过识别该编码来执行相应的操作。

        IR协议是指红外线通信协议的总称,而NEC协议是IR协议中的一种具体实现。红外遥控系统分为发射和接收两部分,发射部分的发射元件为红外发光二极管,它发出的是红外线而不是可见光;接收电路的红外接收管是一种光敏二极管。

二、NEC传输格式
        NEC协议采用PPM(Pulse Position Modulation,脉冲位置调制)的形式进行编码,数据的每一位(Bit)脉冲长度为560us,由38KHz的载波脉冲 (carrier burst) 进行调制,推荐的载波占空比为 1/3至 1/4。有载波脉冲的地方,其宽度都为 560us,而载波脉冲的间隔时间是不同的。

        逻辑“1”的载波脉冲+载波脉冲间隔时间为2.25ms;逻辑“0”的载波脉冲+载波脉冲间隔时间为逻辑“1”的一半,即1.125ms. 

        每次信息都是按照引导码 (9ms载波脉冲+4.5ms 空闲信号)地址码、地址反码、控制码和控制反码的格式进行传输,因此,单次信息传输的时间是固定不变的。

        当红外遥控器上的按键被一直按下时,红外遥控器只会发送一次完整的信息,其后会每隔 110ms 发送一次重复码(连发码)。重复码的数据格式比较简单,同样是由 9ms的载波脉冲开始,紧接着是2.25ms的空闲信号,随后是560us的载波脉冲。

        红外接收头通常被厂家集成在一个元件中,成为一体化红外接收头。红外接收头内部的三极管电路具有信号反向的功能,也就是将1变为0,0变为1,即数据0是0.56ms的低电平和0.56ms的高电平,数据1是0.5ms的低电平和1.69ms的高电平,9ms是高电平变为低电平。

红外发送接收器件介绍

红外发光管

红外发光管:

红外发光二极管通常使用砷化镓(GaAs)、砷铝化镓(GaAlAs)等材料,采用全透明或者浅蓝色或者黑色树脂封装。

红外接收管

红外接收管:

下图为一常用的红外接收模块。内部包含有高频的滤波电路,专门用来滤除红外线合成信号的载波信号(38KHZ),并送出接收到的信号。当红外线合成信号进入到红外接收模块,在其输出端便可以得到原先发射器发出的数字编码,便可以通过MCU程序解码出相应的键码。

应用电路

红外协议

发送信号波形图:

接收信号波形图:

从示波器上看到红外接收管采集到的波形的波形,可以看出采集的·信号与发出的信号反向

红外信号特点

1.地址码与地址反码,以及命令码与命令反码,具有数据校验作用,增强结果的准确性

2.脉冲距离调制,调制占空比

3.载波频率38KHZ

4.逻辑位时间为逻辑0:1.125ms或逻辑1:2.25ms

5.发送的信号与接收到的信号是反向的

代码编写

引脚定义代码

省略

每个单片机的代码都有所区别,这里不写了

获取低电平时间函数

  • 运行一下代码需要另外设置定时器1的分频和系统时钟
  • 本代码定时器的计数周期为256ms,频率为1/256
  • 即定时器产生溢出一次的时间为256ms

void low_time()
{  
    W_TEMP=0;//计数
     	T1CNT=255; //T1CNT初始值
     	while((!NEC)&&W_TEMP<3);//NEC为宏定义,为单片机采集红外信号的引脚
   {
        if(T1IF)//T1IF为定时器中断溢出标志
        {
          T1IF=0;//清除标志位
          W_TEMP++;//计数加一
         }     
   }
}

高电平时间

该代码与上面代码基本一致

void high_time()
{   
    W_TEMP=0;
     	T1CNT=255; 
     	while(NEC&& W_TEMP<8)
     	{
        if(T1IF)
        {
          T1IF=0;  
          W_TEMP++;    
         }      
    } 
}

NEC信号读取

 void NEC_rec()
{

     	if(!NEC)
     	{
        delayms(8);//可以自己用for循环代替只需要延迟这么多时间即可
        if(!NEC)
        {
         	 delayms(5);//可以自己用for循环代替只需要延迟这么多时间即可
          if(NEC)
         	  {
     	   	   high_time();
         	  for(char i=0;i<4;i++)//读取4个字节的数据
         	       	{
                     	STA_TEMP=0;//临时变量
         	   	   	for(char j=0;j<8;j++)
         	   	   	  {
         	   	   	   	  low_time();//等待低电平
         	   	   	   	  high_time();
 /*获取高电平时间,判断是0还是1主要看高电平持续的时间,低电平时间是一样的*/                
         	   	   	   	   	if(W_TEMP<5)
/*实际上高电平的话STA_TEMP的值为6,因为一次时间为256ms根据自己定时器时间自行调整W_TEMP值*/
                 	   	   	   	 {
                 	   	   	   	   	STA_TEMP<<=1;//data>>=1;
                 	   	   	   	 }
                 	   	   	 else if(W_TEMP>4)//高电平持续时间长
                 	   	   	   	 {
                     	   	   	   STA_TEMP<<=1;//data>>=1;
                               STA_TEMP|=0x01; //0000 0001
             	   	   	   	   	
         	   	   	   	   	     } 	   	   	   	  
     	   	   	     }
             if(!i)//0和1的值为相反数,可以检测读取的数值是否正确
             {
     	   	   	   	NEC_CODE1=STA_TEMP;
     	           	T1DATA=NEC_CODE1;
     	   	   	 }
             else if(i==1)
     	   	   	  {
     	   	   	   //写判断读取正确错误代码
     	   	   	   	}

     	   	 else if(i==2)
     	   	   	  {
     	   	   	   	NEC_CODE2=STA_TEMP;
                 	T1DATA=NEC_CODE2;
     	   	   	   	}
 	         else if(i==3)
     	   	   	  {
     	   	   	    //写判断读取正确错误代码
     	   	   	   	}

         	    }
        }
    }
 }
}  

标签:脉冲,RISC,NEC,红外,实操,ms,载波,接收
From: https://blog.csdn.net/2401_85236922/article/details/141429114

相关文章

  • 直播预约丨《袋鼠云大数据实操指南》No.5:数字营销新策略 构建高效客户洞察平台
    近年来,新质生产力、数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮,持续冲击并革新着企业数字化转型的观念视野,昭示着一个以数据为核心驱动力的新时代正稳步启幕。面对这些引领经济转型的新兴概念,为了更好地服务于客户并提供切实可行的实践指导,自3月20日起,袋鼠云将推出全新......
  • Nectar AI融资390万美元,打造无删减沉浸式AI伴侣
    NectarAI——一个沉浸式的AI陪伴平台,今日宣布已筹集390万美元的资金。本轮种子融资由MechanismCapital和Karatage共同领投,参与方包括Synergis、Maelstrom(ArthurHayes)、BuilderCapital、Baboon和Decima。知名天使投资人包括TekinSalimi和GeorgeLambeth(Dao5),以及AlbertCho......
  • AI绘画实操 Stable Diffusion 到底怎么玩儿,新手必看的AI绘画入门安装使用教程
    大家好,我是灵魂画师向阳2024年,是AI绘画技术飞速发展的一年,各种AI绘画工具层出不穷,为了让大家在了解和学习AI绘画的过程中少走弯路,今天我将详细介绍目前世界上使用用户最多,社区最大,生态最丰富的免费图像生成模型——StableDiffusion,并为你提供详细的安装教程,让你轻松踏入AI......
  • 11.吐血整理sed入门到精通,sed语法,脚本命令,打印,替换,删除,插入,行替换,字符替换,保
    文章目录前言sed介绍1.sed介绍2.sed语法介绍3.sed脚本命令1.打印2.s替换3.删除脚本命令d3.插入脚本命令a/i4.行替换脚本命令c4.字符替换脚本y5.保存内容脚本w6.插入其他文本r6.中断退出脚本命令q脚本命令当中的地址[address]正则表达式sed[选项]1.sed-i选项2.sed-e......
  • QT connect的使用
    connect是Qt框架中用于连接信号和槽的函数,它是Qt的核心机制之一。通过connect,可以将一个对象的信号与另一个对象的槽(或同一个对象的槽)连接起来,这样当信号被触发时,槽函数就会被调用。这种机制实现了对象之间的松耦合通信。基本语法在Qt5和Qt6中,connect函数的......
  • 关键点检测(6)——yolov8-neck的搭建
    话接上文。之前学习了backbone,这里就学习neck了。我这里还是会以先以yolov8-pose的网络结构为例进行展示,然后再学习其neck层如何搭建。而Neck(颈部,连接部)是一个中间层,用于对来自backbone的特征进行融合,以提升模型地性能。yolov8并没有使用Neck这个概念,但其中架构图中Head中......
  • 渗透测试基础-反射型XSS原理及实操
    只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力......
  • 致远互联-分析云 getolapconnectionlist 逻辑漏洞
       声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。一、漏洞描述致远分析云是由北京致远互联精心打造的一站式数据分析平台,旨在助力企业实现数字化转型升级。二,fofa语法body="js/lib/ba.co......
  • C#之中SqlConnection的Close和Dispose的区别和在使用using语句管理SqlConnection对象
    SqlConnection的Close和Dispose的区别在C#中,SqlConnection对象的Close和Dispose方法都可以用来释放数据库连接资源,但它们的作用和使用场景有所不同。Close方法SqlConnection.Close方法用于关闭与数据库的连接。当你调用这个方法时,它会关闭连接,但不会释放与连接关联的所有......
  • ESP8684 系列芯片搭载 RISCV 32 位单核处理器的极低功耗 SoC 支持(2.4 GHz WiFi) 和 B
    ESP8684系列芯片搭载RISCV32位单核处理器的极低功耗SoC支持(2.4GHzWiFi)和Bluetooth5(LE)ESP8684系列芯片搭载RISCV32位单核处理器的极低功耗SoC支持IEEE802.11b/g/n(2.4GHzWiFi)和Bluetooth5(LE)在4×4mm的QFN封装中叠封1MB、2MB或4MBf......