在嵌入式开发的世界里,即使只是一颗小小的LED灯,也能成为无尽创意的舞台。
当你的开发板上仅有一颗LED时,如何让它呈现出丰富多彩的闪烁效果?
接下来,让我们通过对RL78/G15的编程实践,为这颗简单的LED注入灵动的“生命力”。
LED(发光二极管)是一种半导体光源,当有电流通过时就会发光。在本次使用的开发板上,我们可以通过控制GPIO引脚的高低电平来实现这一过程:
LED的工作模式看似简单,但当我们巧妙地融入"时间"这个维度,在程序中控制亮灭的节奏、频率和规律,一颗LED就能呈现出丰富多彩的变化。
慢闪模式是LED最基础的闪烁模式,如同平静而沉稳的心跳,传递着稳定、可靠的信号,非常适合用作状态指示灯,向用户传达“系统正常运行”的信息
当闪烁频率加快,LED瞬间变得“急促”起来,常用于警告、报警或提醒场景。
相同的硬件,不同的节奏,却能传递出截然不同的信息。在程序开发中,我们可以通过调整延时函数的参数,控制LED闪烁节奏,轻松切换LED的“情绪”。
如果说闪烁频率帮助LED传达“情绪”,那么摩斯码则是赋予LED“语言”的能力。
短闪(点):点亮0.2秒
长闪(划):点亮0.6秒
间隔:熄灭0.2秒(字符内)/0.6秒(字符间)
通过长短闪烁的巧妙组合,LED能够“说出”字母、数字甚至完整的单词。例如,字母"S"由三个短闪(···)组成,字母"O"由三个长闪(---)组成,当它们连在一起,就成了国际通用的求救信号"SOS"(···---···)。
如果说前面的模式是“数字化”的开关控制,那么呼吸灯则是“模拟化”的艺术呈现。
LED从熄灭状态逐渐转换到最高亮度,再从最高亮度逐渐熄灭,循环往复,如同生物呼吸般自然流畅。
通过快速开关LED并调整“亮”的时间占比,人眼会产生亮度变化的错觉:
占空比10%:低亮度
占空比50%:中等亮度
占空比90%:最高亮度
呼吸灯常见于高端电子产品的待机指示,它传递的不仅是状态信息,更是一种细腻而优雅的用户体验。
相信各位对LED的不同模式的设置原理有了基本的了解,那么如何在开发板上实现这些模式呢?下面让我们一同探索。
https://www.renesas.cn/zh/products/rl78-g15?queryID=41e2d7a40d04b1f445157d80d24daf7f
RL78/G15 Fast Prototyping Board
https://www.renesas.cn/zh/design-resources/boards-kits/rtk5rlg150c00000bj
e 2 studio v2025-07(瑞萨电子开发)
https://www.renesas.cn/zh/software-tool/e2-studio?queryID=45393453489528bf724cdf10406bf5ad
RL Smart Configurator V1.14.0
https://www.renesas.cn/zh/software-tool/smart-configurator?queryID=17de87a50c6c621cc3cd60ffaf3161f7
https://www.renesas.cn/zh/software-tool/c-compiler-package-rl78-family-cc-rl
如上图所示,开发板上的J10、J11和J12跳线帽均需要连接2-3,这样才能使用E2 Lite进行调试。
在开发板上有两个LED:LED1和LED2,选取LED1作为控制对象,通过查看原理图可知,LED1对应的RL78/G15输出引脚为P20,LED1正极接VDD,负极接P20,因此,只要控制P20引脚电平高低,就可以控制LED1的亮灭。
此外,控制LED的快闪慢闪、摩斯码模式、呼吸灯模式需要引入Interval Timer模块和PWM模块。各模块的功能和用途见下表:
在Smart Configurator中对这两个模块做如下设置:
设置IT模块Interval value为100ms
设置PWM模块Cycle value为2ms,选取Channel 3作为slave,占空比设置为90%
实现LED不同模式的代码流程如下图所示,首先定义参数“LED_MODE”,通过设置“LED_MODE”,调用不同的函数,实现LED不同模式控制。
“LED_MODE=0”时,调用LED_FAST_FLASH(),LED进入快闪模式
“LED_MODE=1”时,调用LED_FAST_SLOW(),LED进入慢闪模式
“LED_MODE=2”时,调用LED_Morse_SOS(),LED显示“SOS”摩斯码
“LED_MODE=3”时,调用LED_Breathing(),LED进入呼吸灯模式
下面两个流程图分别对应LED的快闪模式和慢闪模式,在这两个模式下,只需要利用Interval Timer模块,调整LED延时时间即可实现。
下方是LED摩斯码和LED呼吸灯的流程图,LED显示摩斯码通过调整延时时间实现,而LED的呼吸灯模式则是通过调整PWM中的占空比实现。
按照上述流程,实现LED不同模式的示例工程如下:

| |
| |
| |
| |
r_Config_IT_interrupt(void) | |
wait_ms(uint16_t wait_time) | |
r_Config_TAU0_0_channel3_interrupt (void) | |
| |
| |
| |
| |
从基础的快慢闪烁,到能"说话"的摩斯码,再到充满生命感的呼吸灯,每一种模式都是逻辑思维与创意表达的结晶。希望你也能从中获得启发,点亮更多创意的“灯泡”。
如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。
https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/