打印
[其它应用]

基于中颖MCU的PWM控制LED亮度应用示例

[复制链接]
2186|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
帛灿灿|  楼主 | 2024-10-4 08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近我在使用中颖MCU(如NY8A系列)做一个简单的LED亮度调节项目,通过PWM(脉宽调制)技术来实现。PWM广泛用于电机控制、LED亮度调节等场景,原理是通过控制开关的占空比来调节输出的平均电压或功率。

应用场景本项目的主要目标是通过一个按键来控制LED亮度的增减,并且通过PWM信号调节LED亮度。按键按一次,亮度增加一个级别,按到最大后再按会返回最暗。

硬件准备
  • 中颖NY8A系列MCU开发板
  • LED灯
  • 按键
  • 5V电源

代码实现下面是我用中颖MCU写的简单PWM控制LED亮度的代码。
#include <NY8A051D.h>

// 定义PWM周期和亮度级别
#define PWM_PERIOD 255
#define BRIGHTNESS_LEVELS 5

unsigned char brightness = 0;  // 当前亮度级别

// PWM初始化函数
void PWM_Init() {
    PWMDIV = 0x00;  // 设置PWM分频
    PWMP = PWM_PERIOD;  // 设置PWM周期
    PWMCKS = 0x01;  // 启用PWM
    PWMCR = 0x01;   // 启用PWM通道
}

// 设置PWM占空比
void Set_PWM_Duty(unsigned char duty) {
    PWMD = duty;  // 设置占空比
}

// 按键处理函数
void Button_Handler() {
    if (!P3_2) {  // 如果按键按下
        brightness = (brightness + 1) % BRIGHTNESS_LEVELS;  // 循环切换亮度级别
        Set_PWM_Duty(brightness * (PWM_PERIOD / (BRIGHTNESS_LEVELS - 1)));  // 更新PWM占空比
        while (!P3_2);  // 等待按键释放
    }
}

void main() {
    PWM_Init();  // 初始化PWM
    Set_PWM_Duty(0);  // 初始亮度为0
   
    while (1) {
        Button_Handler();  // 按键控制
    }
}
代码说明
  • PWM_Init(): 初始化PWM模块,设置PWM的周期和分频等参数。
  • Set_PWM_Duty(): 设置占空比,用来控制LED的亮度。
  • Button_Handler(): 处理按键输入,当按键被按下时,改变亮度级别并更新PWM占空比。
  • 主循环中一直监听按键的状态,每次按下按键,LED的亮度就会改变。

应用效果通过按键,LED亮度从低到高逐步变化,非常适合需要动态调整LED亮度的场景。整个代码结构简单清晰,适合初学者学习PWM应用。

总结中颖MCU在低功耗和性价比方面都有不错的表现,在嵌入式开发中非常实用。希望这个简单的PWM控制LED亮度的例子能对大家有帮助!如果有任何问题或者改进建议,欢迎讨论!

使用特权

评论回复
沙发
公羊子丹| | 2024-10-4 08:33 | 只看该作者
这个例子太实用了!刚好我也在做PWM控制LED的项目,代码结构简洁明了,点赞!

使用特权

评论回复
板凳
周半梅| | 2024-10-4 08:33 | 只看该作者
原来PWM可以这么简单就调节LED亮度,学习了!下次我也试试用中颖的MCU来做。

使用特权

评论回复
地板
童雨竹| | 2024-10-4 08:33 | 只看该作者
按键控制亮度的方式很方便啊!有没有试过加个长按功能,快速调节亮度?

使用特权

评论回复
5
万图| | 2024-10-4 08:33 | 只看该作者
中颖的MCU用起来感觉如何?相比其他品牌的,有什么特别的优势吗?

使用特权

评论回复
6
Wordsworth| | 2024-10-4 08:34 | 只看该作者
感谢分享!一直想做个简单的LED调光项目,这下有参考了。

使用特权

评论回复
7
Bblythe| | 2024-10-4 08:34 | 只看该作者
这段代码是不是还可以扩展下,多加几个LED同时控制?

使用特权

评论回复
8
Pulitzer| | 2024-10-4 08:34 | 只看该作者
挺有意思的项目!PWM用在电机控制上是不是也是同样的原理?

使用特权

评论回复
9
Uriah| | 2024-10-4 08:35 | 只看该作者
按键控制亮度的思路很棒,不过我觉得如果加个调光旋钮,体验可能会更好。

使用特权

评论回复
10
Clyde011| | 2024-10-4 08:35 | 只看该作者
我用的不是中颖的MCU,但是这个代码应该可以稍微改改用在别的芯片上吧?

使用特权

评论回复
11
classroom| | 2024-10-4 19:13 | 只看该作者
非常棒的应用示例,楼主分享的好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

3732

帖子

0

粉丝