电子工程专辑
电子技术设计
国际电子商情
在线研讨会
直播
白皮书
高性能电源模块揭秘
报名IIC Shanghai 2025
2025 IC设计成就奖投票
杂志免费订阅
汽车电子专题
Studio
CEO专栏
行业及技术活动
微信入群
全球联播
汽车电子专题
Datasheets查询
电子计算工具
小测验
会员活动中心
原厂技术站
首页
论坛
热门板块
技术问答
电子技术基础
电路图
模拟技术
电源技术与新能源
EDA工具与IC设计
测试测量技术
可编程器件
嵌入式系统与MCU
技术创意与DIY
通信与网络
消费电子与智能设备
机器人技术与设计
采购与销售
分销与供应链
工程师职场
热门主题
求助 请推荐一款8脚的DCDC , 12V 变5V的,
桥式变换电路
【工程师故事】+2024年:资深嵌入式工程师
成立公司好还是一个做好?
〖思路〗 反偏PN结的 四种状态
altium Designer19使用问题20250115
全系列电路防护器件!浪拓电子
【电子DIY】+ 我来语音控制一下你的可调直
精华主题
【资料汇总】最全实用电路合计,新的一年从
硬件描述语言入门好书:数字设计和计算机体
下载:工程师必读的10本射频/微波/无线经典
IIC Shanghai 2025专业观众预登记全线开启
全民票选IC设计先锋:2025年度中国IC设计成
限时预报名IIC抽天文望远镜车载冰箱露营睡
【瑞萨RA4E1评估板】实现杀虫灯的精准控制
电流检测基本原理与容易忽视的细节
下载
热门类别
基础知识
电源/功率
PCB
单片机/嵌入式
FPGA
模拟/数字
处理器/DSP
测试测量
通信/RF/网络
软件/EDA/IP
AI/机器人/无人机
制造与封装
书籍
源码
原理图
电路图
热门资料
电子元器件检测技能速成
静电学手册 21312321
晶体管电路设计-铃木雅臣(上).pdf
开关电源设计 反激控制思路的了解-4
开关电源设计 反激电路设计
开关电源设计 反激控制思路的了解-2
最新技术白皮书
LTspice 24仿真工具:优化、简化电路仿真,并加快仿真速度
【国际电子商情2025年1月杂志】2025年电子行业十大市场及应用趋势
【2025年1月电子工程专辑杂志】构筑2025电子行业“芯”技术
在物联网的新时代运用 Wi-Fi 6 的力量
【 2024年12月分销与供应链特刊】2024分销行情回顾,四巨头营收排名生变
增强定位服务的全新 Bluetooth
®
6.0
【2024年12月电子工程专辑杂志】宽禁带半导体:电力电子技术的新革命
【国际电子商情2024年12月杂志】当元器件供应链遇上AI,会擦出怎样的火花?
英飞凌全新IoT Wi-Fi 6 助力未来智能设备的无“限”连接
2024蓝牙趋势应用研讨会——演讲PPT资料
博客
热门板块
FPGA/CPLD
MCU/嵌入式
模拟
电源/新能源
测试测量
通信
PCB
汽车电子
软件与OS
采购与分销
供应链管理
工程师职场
EDA/IP/设计与制造
无人机
机器人/AI
推荐博文
2025年刚开始,就收到了“橄榄枝”!
聊聊RISC-V MCU技术
人形机器人疯狂进厂打工!银河通用、智元、
【工程师故事】+2024年总结之做技术不能想
SHEIN基金会成立 助力解决全球纺织废弃物问
【政策措施】山东:重点发展碳化硅、氮化镓
论PN结的四种逆向电导模式
2025年计划
最新博文
【电子DIY】智能天气监控站
Air724UG软件指南:UART示例(下篇)
Air724UG软件指南:UART示例(中篇)
Air724UG软件指南:UART示例(上篇)
高速光模块中的并行光学和WDM波分光学技术
如何使用SPI读写外部Flash——Air201资产定
Air724UG软件指南:ADC示例
低功耗4G模组:Air780E内部硬件看门狗(wdt)
评测
极简图解电磁学基本原理
查看详情
米尔MYD-LT536开发板
查看详情
慧能泰USB Type-C & PD DRP控制器
查看详情
我在硅谷管芯片 - 芯片设计公司运营之道
查看详情
元能芯24V全集成电机专用开发板
查看详情
MYC-LR3576核心板及开发板
查看详情
芯语
热门板块
半导体
通信网络
消费电子/手机
汽车电子
物联网
工控
硬件设计
嵌入式/FPGA
电源/能源
测试测量
人工智能/机器人
科技前沿
供应链
工程师职场
最新芯语
瑞宏科技滤波器之路:从初识到国产化领航
物联网即时检测+微流控芯片,实现呼吸道病毒自动诊断
安培龙:2025年压力传感器营收增量较大,氧及氮氧传感器有望实现重大突破
唯捷创芯:射频前端芯片市场竞争激烈,导致营收下降且净利润亏损
刘钦明:红外轴温探测领域的奋进者,攻关高灵敏度红外光子探测器
便携式自动化微流控系统即时检测葡萄酒中多种霉菌毒素
从变色龙汲取灵感的超构材料,调谐电磁波轻松切换隐形模式
65亿元碳化硅8英寸晶圆厂落地香港,大湾区集成电路产业向“芯”发展
新年首月销量出炉!卖得好的和卖得不好的都沉默了?
英特尔率先推出DeepSeek产品!
DeepSeek:为何90%的AI芯片企业血本无归?
典型的2P排座装配防呆设计,低端小家电中的精品设计-拆解抽水泵
文库
热门类别
模拟设计
电源技术
PCB设计
元器件知识
硬件开发经验
封装/工艺
EDA/IC设计
单片机/嵌入式
C语言/编程开发
可编程/FPGA
处理器/DSP
RF/通信
人工智能/机器人
开源设计/DIY
最新文库
万能表怎么用的?
门电路有几种工作状态
减速起动机不转故障现象
主机开了显示器没反应
直流有刷电机与无刷电机的区别
在数字电路中,所谓的“门”
可控硅整流器相关技术介绍
什么是整流器?整流器性能参数介绍
什么是水银整流器?何为倍压整流器?
电动机型号是便于使用、设计、制造
直流电机与交流电机的区别
三相电机机械
活动
技术论坛
更多>
2022电机驱动与控制论坛
深圳市南山区
2022年6月17日
2022全球MCU生态发展大会
深圳市南山区
2022年6月17日
射频与微波技术及应用研讨会
西安天朗森柏大酒店
2022年06月23日
热点活动
更多>
IIC Shenzhen - 2024国际集成电路展览会暨研讨会
深圳
2024.11.5-6
2024(第五届)国际 AIoT 生态发展大会
深圳
2024年06月20日
中国国际航空电子(低空经济)产业创新发展大会
四川成都
2024年05月22日
社群活动
更多>
资料下载:高级驾驶辅助系统 (ADAS) 技术指南
2024.09.19-2024.10.30
《电信基站应用指南》中文版发布!免费下载
2024.09.01-2024.09.30
Debug一秒看穿故障! Fluke 红外热像仪免费申领
2024.08.01-2024.09.20
投票中:2024全球电子元器件分销商卓越表现奖
2024.08.10-2024.09.11
商城
绿林游标卡尺高精度0.02mm机械式内外径深度测量开式游标卡尺0-150mm
E币:
1599
立即兑换
德力西R2897电笔智能测电压多功能测断线数显电工专用感应试电笔
E币:
1699
立即兑换
卡夫威尔零件收纳盒小零件/物料储物盒320*255*60mm NF4024
E币:
1099
立即兑换
《观点》2024版
E币:
199
立即兑换
得力 不锈钢镊子3件套
E币:
699
立即兑换
宝工(Pro'skit) 8S005 无酸焊油(50g) 助焊剂 焊锡膏
E币:
599
立即兑换
芯视频
兑奖中心
E聘
NEW
#热门搜索#
NFC
MCU
华为
原理图
论坛
嵌入式/开源硬件
厂商专区
大联大技术论坛
英飞凌技术社区
意法半导体社区
开步电子社区
硬件设计
电子技术基础
电路图
模拟技术
电源技术与新能源
测试测量技术
EDA工具与IC设计
硬件开发经验
电赛专区
制造与封装
拆解基地
评测
嵌入式/开源硬件
可编程器件
嵌入式系统与MCU
技术创意与DIY
MicroPython技术交流
开源硬件(树莓派Arduino)
学生创客专区
通信/手机/物联网
通信与网络
消费电子与智能设备
汽车电子与车联网
物联网与智能家居
ZigBee & IAR 小组
Qualcomm物联网技术论坛
机器人/工业电子
电机与控制
工业电子与自动化
机器人技术与设计
机器人应用
无人机专区
供应链专区
采购与销售
分销与供应链
资本与市场
方案/元器件供求
职场与创业
面包板社区活动
管理沙龙
工程师职场
新手反馈与建议
路边社娱乐
嵌入式系统与MCU
【灵动微电子 L0136 温控器...
3
0
发帖
提问
楼主
【灵动微电子 L0136 温控器/遥控器应用】万能遥控器实现
原创
qinyunti
109
主题
128
帖子
2079
积分
身份:
LV5 资深技术员
E币:
11222
发消息
1998
0
发表于 2022-12-28 14:21:31
显示全部楼层
本帖最后由 qinyunti 于 2023-4-11 10:23 编辑
ir.zip
(608.43 KB, 下载次数: 14)
2022-12-28 14:21 上传
点击文件名下载附件
开发环境搭建
开发板资料
https://www.mindmotion.com.cn/support/development_tools/evaluation_boards/evboard/mm32l0136c7p/
下载MDK支持包
加压双击打开MM32_KEIL_Pack\MindMotion.MM32L0130_DFP.0.2.0.pack
自动搜寻MDK路径安装
SDK
需要注册登录
解压下载的evb-l0130_mdk.zip
双击evb-l0130_mdk\demo_apps\coremark\coremark_basic\build\project.uvprojx
打开
编译OK
下载仿真
使用DAP-LINK
测试
串口 PA2 TX PA3 RX 波特率9600
void BOARD_InitPins(void)
{
/* PA3 - UART2_RX. */
GPIO_Init_Type gpio_init;
gpio_init.Pins = GPIO_PIN_3;
gpio_init.PinMode = GPIO_PinMode_In_Floating;
gpio_init.Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio_init);
GPIO_PinAFConf(GPIOA, GPIO_PIN_3, GPIO_AF_1);
/* PA2 - UART2_TX. */
gpio_init.Pins = GPIO_PIN_2;
gpio_init.PinMode = GPIO_PinMode_AF_PushPull;
gpio_init.Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio_init);
GPIO_PinAFConf(GPIOA, GPIO_PIN_2, GPIO_AF_1);
}
void BOARD_InitDebugConsole(void)
{
UART_Init_Type uart_init;
uart_init.ClockFreqHz = BOARD_DEBUG_UART_FREQ; /* 24mhz, APB1. */
uart_init.BaudRate = BOARD_DEBUG_UART_BAUDRATE;
uart_init.WordLength = UART_WordLength_8b;
uart_init.StopBits = UART_StopBits_1;
uart_init.Parity = UART_Parity_None;
uart_init.XferMode = UART_XferMode_RxTx;
uart_init.HwFlowControl = UART_HwFlowControl_None;
UART_Init(BOARD_DEBUG_UART_PORT, &uart_init);
UART_Enable(BOARD_DEBUG_UART_PORT, true);
}
复制代码
总结
官方的资料比较规范齐全的,这在国内众多芯片厂商中是做的比较好的,值得点赞。代码也类似STM风格.使用起来基本无感切换。MDK的支持适配也很好,仿真调试都没问题。
红万能遥控实现
引脚
从原理图可以看到,红外收发接到了串口UART1,原意应该就是想直接使用串口进行红外收发的。这对于自定义协议来说是没问题的,发送只需要叠加一个载波,然后通过TX串口发送即可,TX发送为低时载波被拉低,TX发送为高时载波就输出。接收因为是接收二极管已经从载波中滤出信号,直接串口接收即可。但是市面常用的各种红外协议,这样实际是不行的,红外协议有多种,基本都是不能直接使用串口解析的,一般都是不同占空比,不同高低脉宽的组合,所以发送必须是支持任意波形产生,接收能采集任意波形这样才能做到通用。所以一般TX需要使用支持TIM的PWM输出的引脚,接收使用支持TIM输入捕获的引脚,支持任意波形输出和任意波形采集。
红外发送
载波生成
载波生成。红外发送管使用的是IR26-61C/L510,我们需要生成38KHz的PWM载波信号。
从原理图可以看出对应的输出控制引脚为TX,PA9.
但是TA9对应的TIM1_CH2,本芯片没有TIM1,不能使用TIM1的PWM输出。
所以只能使用其他引脚,然后跳线到PA9.
我们这里使用PA7,对应TIM17的CH1,AF5.
代码
引脚初始化
/* PA7 - TIM17_CH1 AF5. */
gpio_init.Pins = GPIO_PIN_7;
gpio_init.PinMode = GPIO_PinMode_AF_PushPull;
gpio_init.Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio_init);
GPIO_PinAFConf(GPIOA, GPIO_PIN_7, GPIO_AF_5);
复制代码
定时器PWM初始化
void pwm_init(void)
{
RCC_EnableAPB2Periphs(RCC_APB2_PERIPH_TIM17,1);
RCC_ResetAPB2Periphs(RCC_APB2_PERIPH_TIM17);
/* Setup the counter counting step. */
TIM_Init_Type tim_init;
tim_init.ClockFreqHz = 48000000;
tim_init.StepFreqHz = 1000000;
tim_init.Period = 26-1; /* the counter would return to the base on next step. */
tim_init.EnablePreloadPeriod = false; /* no need preload, load period value immediately. */
tim_init.PeriodMode = TIM_PeriodMode_Continuous;
tim_init.CountMode = TIM_CountMode_Increasing;
TIM_Init((TIM_Type *)TIM17, &tim_init);
/* Setup the PWM output channel. */
TIM_OutputCompareConf_Type tim_out_conf;
tim_out_conf.ChannelValue = 0u;
tim_out_conf.EnableFastOutput = false;
tim_out_conf.EnablePreLoadChannelValue = false; /* disable preload, load channel value immediately. */
tim_out_conf.RefOutMode = TIM_OutputCompareRefOut_FallingEdgeOnMatch;
tim_out_conf.ClearRefOutOnExtTrigger = false;
tim_out_conf.PinPolarity = TIM_PinPolarity_Rising;
TIM_EnableOutputCompare((TIM_Type *)TIM17, TIM_CHN_1, &tim_out_conf);
TIM_PutChannelValue((TIM_Type *)TIM17, TIM_CHN_1, 13);
/* Start the output compare, only available for the TIM peripheral with this feature. */
TIM_EnableOutputCompareSwitch((TIM_Type *)TIM17, true);
/* Start the counter. */
TIM_Start((TIM_Type *)TIM17);
}
复制代码
其中注意,TIM17的时钟来源于APB2,但是如果APB2时2分频的话,定时器的时钟会2倍频,相当于定时器的时钟源始终是AHB时钟。
48MHz时钟,2分频得到APB2时钟,但是2分频的话TIMXCLK会2倍频,所以定时器17时钟为48MHz。
/* Setup the dividers for each bus. */
RCC->CFGR = RCC_CFGR_HPRE(0) /* div=1 for AHB freq. */
| RCC_CFGR_PPRE1(0x4) /* div=2 for APB1 freq. */
| RCC_CFGR_PPRE2(0x4) /* div=2 for APB2 freq. */
| RCC_CFGR_MCO(7) /* use PLL1 as output. */
;
复制代码
所以以上代码中写的是48000000.
这里设置定时器时钟为1000000Hz,即一个计数值1uS,周期为26uS,在13uS时翻转输出,即产生周期26uS,50%占空比的PWM波,即38.46KHz.
使用逻辑分析仪实测,输出正确。
任意波形产生
有了载波,还需要输出有效信号,为了兼容任意红外协议,我们需要实现任意波形发生器。
实际就是一组低输出时间,高输出时间的组合。
我们这里还是使用定时器实现,在定时器中断中,确定下一输出是高还是低,并确认保持时间,知道输出完。
首先定义一组结构体用于描述信号
typedef struct iostate
{
uint8_t level;
uint32_t holdtime;
}iostate_t;
复制代码
然后定义一个全局变量用于记录所有输出
iostate_t s_iostate[2][40]=
{
{
{0,3000}, /* 0 - 3mS 1000 25uS*/
{1,3000}, /* 1 - 3ms */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2,5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2.5mS */
{0,500}, /* 0- 500uS */
{1,4000}, /* 1 -4mS */
{0,500}, /* 0- 500uS */
{1,60000}, /* 1 -1000mS */
{0Xff,0}
}
};
复制代码
使用的是二维数组,表示支持5种输出波形,每组波形支持40个输出状态。以后需要扩充只需要扩充该数组即可。
定时器初始化
void time_init(uint32_t period)
{
TIM_Init_Type timinit;
TIM_Stop((TIM_Type *)TIM16);
RCC_EnableAPB2Periphs(RCC_APB2_PERIPH_TIM16,1);
RCC_ResetAPB2Periphs(RCC_APB2_PERIPH_TIM16);
timinit.ClockFreqHz = 48000000;
timinit.StepFreqHz = 1000000;
timinit.Period = period;
timinit.EnablePreloadPeriod = false;
timinit.PeriodMode = TIM_PeriodMode_Continuous;//TIM_PeriodMode_OneTimeRun;
timinit.CountMode = TIM_CountMode_Increasing;
TIM_Init((TIM_Type *)TIM16, &timinit);
TIM_DoSwTrigger((TIM_Type *)TIM16,1u<<0);
TIM_ClearInterruptStatus((TIM_Type *)TIM16,TIM_GetInterruptStatus((TIM_Type *)TIM16));
TIM_EnableInterrupts((TIM_Type *)TIM16,TIM_INT_UPDATE_PERIOD,1);
NVIC_EnableIRQ(TIM16_IRQn);
TIM_Start((TIM_Type *)TIM16);
}
复制代码
以上设置定时器16的计数精度为1uS。
定时器中断回调函数中进行输出处理
void TIM16_IRQHandler(void)
{
TIM_ClearInterruptStatus(TIM16,TIM_INT_UPDATE_PERIOD);
ir_handle();
}
复制代码
其中ir_handle();完成输出逻辑
static uint32_t s_ir_index = 0;
static uint32_t s_ir_done = 1;
static uint32_t s_ir_num = 0;
void ir_handle(void)
{
if(s_ir_index < sizeof(s_iostate[0])/sizeof(s_iostate[0][0]))
{
if(s_iostate[s_ir_num][s_ir_index].level != 0xFF)
{
if(s_iostate[s_ir_num][s_ir_index].level == 0)
{
ir_outl();
}
else
{
ir_outh();
}
time_init(s_iostate[s_ir_num][s_ir_index].holdtime);
}
else
{
TIM_Stop((TIM_Type *)TIM16);
s_ir_done = 1;
}
}
else
{
s_ir_done = 1;
TIM_Stop((TIM_Type *)TIM16);
}
s_ir_index++;
}
复制代码
以上处理读取下一次需要输出的电平输出,并设置定时器为保持时间,直到输出完。
启动时先读取第一个状态和时间设置输出电平,和定时器。
void ir_start(uint8_t num)
{
s_ir_index = 0;
s_ir_done = 0;
s_ir_num = num;
if(s_iostate[s_ir_num][s_ir_index].level == 0)
{
ir_outl();
}
else
{
ir_outh();
}
time_init(s_iostate[s_ir_num][s_ir_index].holdtime);
s_ir_index++;
}
复制代码
用于判断是否发送完
uint8_t ir_isdone(void)
{
return s_ir_done;
}
复制代码
输出即使能和禁止PWM输出即可。
#define ir_outh() TIM_Stop((TIM_Type *)TIM17)
#define ir_outl() TIM_Start((TIM_Type *)TIM17)
复制代码
测试
int main(void)
{
BOARD_Init();
gpio_init();
pwm_init();
while(1)
{
if(ir_isdone() != 0)
{
ir_start(0);
}
}
return 0;
}
复制代码
可以看到,TX发出的信号是载波叠加信号,同时RX红外接收管收到了发送的信号,中间有一个延迟。
测量时间也是正确的,至此就完成叠加载波信号的任意信号发生器。任意编码的红外信号发射只需要修改上述数组就行,具备通用性。
遥控测试
使用手里的电视遥控器,按电源按键,使用板子的红外接收,在PA10可以用逻辑分析仪抓到信号
可以看到同样的编码发了三次,我们解析其中的一次。
得到如下数组
iostate_t s_iostate[2][40]=
{
{
{0,3000}, /* 0 - 3mS 1000 25uS*/
{1,3000}, /* 1 - 3ms */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2,5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2.5mS */
{0,500}, /* 0- 500uS */
{1,1500}, /* 1 -1.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2.5mS */
{0,500}, /* 0- 500uS */
{1,2500}, /* 1 -2.5mS */
{0,500}, /* 0- 500uS */
{1,4000}, /* 1 -4mS */
{0,500}, /* 0- 500uS */
{1,22500}, /* 1 -22.5mS */
{0Xff,0}
}
};
复制代码
按键触发
使用PB2 按键1
/* PB2 . */
RCC_EnableAHBPeriphs(RCC_AHB_PERIPH_GPIOB,1);
gpio_init.Pins = GPIO_PIN_2;
gpio_init.PinMode = GPIO_PinMode_In_Floating;
gpio_init.Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &gpio_init);
int main(void)
{
static int keystate = 1;
static int prekeystate = 1;
BOARD_Init();
gpio_init();
pwm_init();
keystate = GPIO_ReadInDataBit(GPIOB,GPIO_PIN_2);
prekeystate = keystate;
while(1)
{
keystate = GPIO_ReadInDataBit(GPIOB,GPIO_PIN_2);
if(prekeystate != keystate)
{
prekeystate = keystate;
if(keystate != 0)
{
uint8_t t = 3;
do
{
if(ir_isdone() != 0)
{
ir_start(0);
t--;
}
}
while(t);
}
}
}
return 0;
}
复制代码
测试按键K1就会发送3次编码
总结
以上实现了红外任意波形的发送,即实现了万能遥控器。一下方面是可以继续优化部分,以达到更具被实用性的目的:
按键码可以通过串口等方式下发存储,或者实时下发,如果电脑联网,那么就可以远程下发实现远程控制。
按键编也可以通过捕获引脚采集,实现学习功能,这样就可以复制任何手里的遥控器。
写原创有奖励!2024面包板原创奖励正在进行中
举报
3
您需要登录后才可以评论
登录
立即注册
热门资料
电子元器件检测技能速成
静电学手册 21312321
晶体管电路设计-铃木雅臣(上).pdf ...
开关电源设计 反激控制思路的了解-4 ...
开关电源设计 反激电路设计
热门活动
【直播】可替代采样电阻的电流传感器技术
入门级示波器调查
【直播】创新芯片重塑机器人未来
芯片现货市场行情分析
示波器品牌知多少?
技术文库
STM32入门——SPI
大电流的电路设计发热烧毁怎么办啊? ...
为什么要使用恒流源电路?
DC-DCBuck芯片、提高效率、电感选型、消 ...
想要看懂电路图,先熟知基本单元电路 ...
全部回复 0
暂无评论,快来抢沙发吧
嵌入式系统与MCU
版主:
whik
交流单片机MCU、处理器、ARM技术、DSP,以及嵌入式系统硬件与软件的平台
展开更多
帖子
5177
回复
5698
置顶
精华1
限时预报名IIC抽天文望远镜车载冰箱露营睡袋秋千吊床......
精华2
【STM32F103C8T6教程】(八)0.96寸OLED屏幕【应用】
精华2
【STM32F103C8T6教程】(七)串口通信【应用】
置顶
精华2
【STM32F103C8T6教程】合集
精华2
【Arduino uno教程 】(十一)ESP-01S模块联网、获取API信息
置顶
精华2
【Arduino uno教程 】合集
评测文章
【元能芯24V全集成电机专用开发板】+建立Keil开发环境
《极简图解 半导体技术基本原理》+阅读总结
《我在硅谷管芯片 - 芯片设计公司运营之道》+读后感
【元能芯24V全集成电机专用开发板】+运转BLDC电机
【富芮坤FR3068x-C】+初体验
【富芮坤FR3068x-C】+初体验
【富芮坤FR3068x-C】+初体验
【元能芯24V全集成电机专用开发板】+集成驱动和控制的芯片
【富芮坤FR3068x-C】作为智能家居网关的探索+提问
免费申请
热帖
【E币话题】电子工程师深圳月薪15K,够吗?
走了,华为 —— 38岁起步,不算太晚。
【变废为宝】联想电脑自带鼠标,你看这质量
【变废为宝】紫外消毒灯拆解
【变废为宝】出口小音箱拆解
【E币话题】做嵌入式,硬件方向好还是软件
【变废为宝】光控开关的拆解和原理分析
【变废为宝】将智能插座接入米家,告别多个
C语言中如何将long数据转换成char型数据输
【变废为宝】高端音箱控制器拆解
大家都在看的技术资料
芯视频
更多>
00:56
【富芮坤 fr3068ec 智能家居控制终端】
随遇而安1992
401
DDS信号发生器支持单通道50个正弦载波!
CTH14丝杆模组
导轨故障原因:生锈(3)
【艾迈斯欧司朗】SAID 来袭,引领智能灯光未来
ASTRA 1620 物联网AI开发套件拆箱视频
无赞赏
举报
内容系网友发布,其中涉及到安全隐患的内容系网友个人行为,不代表面包板社区观点
请点击举报理由
关闭
站长推荐
/3
工程师写总结,送示波器、稳压电源、螺丝刀!
分享你的:职业生涯中故事、2024年年终总结、工作中的小故事,丰富多样的礼品等你哦!
面包板社区有奖活动汇总楼
1. DIY赢大奖!2. 写原创,有奖励!3.参与话题,奖励E币!4. 免费申领:开发板试用、书籍试读...
电子工程师DIY来分享,赢大疆无人机、小米手机、NAS存储、万用表 ...
展示您的 DIY 电子设计作品,社区将有丰富奖励送给您!
本网页已闲置超过10分钟,按键盘任意键或点击空白处,即可回到网页
X
最新资讯
去除示波器和数字化仪中的噪声和干扰
ASML发布2024年财报:业绩创纪录,展望2025年增长潜力
全年增长1.3%,全球个人电脑正温和复苏
准备好耳塞了吗?让我们制造点噪声吧!
利用自动代码生成技术开发电力电子转换器的控制功能
返回顶部
工具栏