最近自己在网上搜了很多资料,发现很多的红外解码,关于重码的处理的代码很少,分享一下红外解码包括重码的处理。 使用单片机:EN8F156 功能说明:红外遥控器解码,只使用定时器T0定时100us进行按键解码,处理按键短按与长按,将解码的数据通过串口打印。 /*************************************** 功能说明:红外遥控器解码,定时器T0定时100us进行按键解码,处理按键短按与长按,串口打印解码数据。 ****************************************/ #include SYSCFG.h #define uchar 本文主要介绍如何使用8位单片机EN8F156仅通过一个定时器T0实现红外遥控器的解码,同时处理按键的短按和长按事件,并通过模拟串口打印解码出的数据。红外遥控器解码是电子设备控制领域的一个常见应用,它允许用户通过遥控器对设备进行远程操作。 单片机EN8F156的定时器T0被设置为每隔100us进行一次中断,这个间隔时间对于红外遥控信号的解析非常关键。红外遥控信号通常由一系列的高电平和低电平脉冲组成,这些脉冲编码了不同的按键信息。通过精确地测量这些脉冲的长度,可以解码出遥控器发送的指令。 在这个设计中,定义了一些关键变量用于存储解码过程中的信息。例如,`Receive_Count`记录接收的脉冲数,`Low_Level_Time`和`High_Level_Time`分别记录低电平和高电平的时间,`UserCode_High`和`UserCode_Low`用于存储用户码的高位和低位,`Data_Code`用于存放数据码,而`Repeat_Count`用于统计重码出现的次数。此外,还有一系列的标志位,如`Data_Receive_Flag`、`Begin_Flag`等,用来标记解码的不同阶段和状态。 在初始化过程中,单片机的系统时钟被设置为2MHz,这对于定时器T0的精度非常重要。同时,红外输入端口IR_PIN(这里为PA2)被配置为输入模式,串口发射端口PIN_TX(这里为PC0)被配置为输出模式,以实现数据的串口通信。 中断服务程序ISR主要处理定时器T0的中断,当检测到红外输入端口的电平变化时,会根据当前的解码状态执行相应的操作。例如,如果检测到的是低电平,且已经找到了同步码(即`Data_Receive_Flag==1`),那么就会开始记录低电平的持续时间,这有助于区分不同类型的脉冲,从而解码出按键信息。 对于按键的短按和长按处理,可以通过设定一个阈值来判断。例如,如果连续接收到的信号在一定时间内没有变化,可能就表示用户持续按下某个按键,这就构成了长按;反之,如果信号在短时间内频繁变化,则表示用户快速按下并释放按键,即短按。 解码出的数据会通过模拟串口打印出来。在单片机中,模拟串口通常是指使用GPIO引脚模拟UART接口,实现与外部设备的通信,如电脑的串口调试助手。这种方式简化了硬件设计,但可能需要更复杂的软件协议来确保数据的正确传输。 这个设计巧妙地利用了一个定时器和一些基本的逻辑判断来实现红外遥控的解码,同时也考虑了重码的处理,提高了解码的可靠性。通过串口通信,可以方便地将解码结果输出,便于调试和分析。这样的实现方式在资源有限的8位单片机中是相当经济和实用的。
2025-04-14 18:25:13 58KB 串口
1
基于STM32模拟串口通信控制TM1628A显示数据以及按键采集。由于硬件连接显示屏部分没有一一对应,程序里有对这部分进行调整,如果参考请注意。并且由于只是作为测试,按键采集部分并没有完全处理。程序内有备注,看懂应该没啥问题
2025-04-11 09:41:45 6.52MB STM32 串口通信 模拟串口 TM1628A
1
Configure Virtual Serial Port Driver (VSPD) 串口调试工具,win10、win11系统亲测可用
2024-04-08 09:17:56 9.09MB VSPD 串口调试 虚拟串口 模拟串口
1
本模块由官方模拟串口改进而来,通用模块,增加注释,去掉CY寄存器的使用,方便移植,去掉while等待发送完才能继续发送第二个字节的,采用全异步通信方式。 程序由模拟串口接收数据,通过模拟串口发送到串口2,再由串口2发送到串口1,串口1上接PC,用串口助手可以显示出来。
2024-03-15 19:20:34 53KB STC12C5A 串口
1
基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+RS232+模拟串口通讯(源码+仿真)基于Keil+51单片机实现交通灯+R
2023-12-24 12:56:12 35KB
1
stm8 开发,IAR平台,C语言,普通IO模拟串口程序,程序默认IO是PD3 ,使用者需要其他IO可随意更改。
2023-05-09 22:39:22 1KB 模拟串口 驱动程序
1
利用单片机IO口模拟UART程序,系统用了一个定时器和一个外部中断,外部中断主要是用来检测串口起始位的到来。 利用单片机IO口模拟UART程序,系统用了一个定时器和一个外部中断,外部中断主要是用来检测串口起始位的到来。
1
STM32 GPIO模拟UART串口的例程。此为实现方式类型二《STM32 GPIO模拟UART串口:外部时钟及TIM》。介绍参见: https://blog.csdn.net/hwytree/article/details/127139693 。
2023-02-23 09:33:44 3.74MB STM32 GPIO模拟 模拟UART 模拟串口
1
本例程是用MSP430F1121单片机的TimerA(以下简称TA)模块实现简单的串行口功能。 有兴趣的朋友们可以将此制作来当一个430DIY实验练练功。能让你更进一步了解TA模块的功 能好处。在 本 例 中,波 特 率发 生 器 是以32768晶体 振荡器 (ACLK) 作为TA的时 钟 源输 入(ACLK=TACLK),每位时钟周期约为30us。若采用2400B/S作为波特率收发输出,那么传输出一位的时间周期为:1/2400=417uS。此时需要TA产生一个定时约为417uS的中断来作波特率发器。
2023-02-08 19:34:27 314KB MSP430 TimerA 串行口功能 例程
1
非常实用的IO模拟串口的三种方法,欢迎下载!!!
2022-11-21 17:44:36 38KB 模拟串口
1