控制LED亮度,原理很简单
担心大佬们不屑看下去
只好先抛一个噱头----此功能只需手工写一句代码
关键词:AutoGen、CTU、ADC、PWM
一、起因:
论坛里看到这个贴子,实现了可变电阻控制LED亮度:
https://bbs.21ic.com/icview-2983550-1-1.html
感觉这个创意很好啊,给人的观感不错。
原理当然简单:根据ADC的值,控制PWM的占当比,LED亮度就变化了。
我想自己实现它,于是就做了。
二、分析:
AC78013通用板的LED1(丝印是LED2),接在了PC9,而PC9恰好又可以复用为PWM1_CH6:
太好了,导线都省了,直接用PWM1控制LED。
基本的功能框图如下:
看一下AC7801x的CTU框图,PWM可以作为ADC的触发源:
也就是下图红色的路径:
既如此,不用它触发,岂不是浪费。
于是功能框图修改如下:
三、实现:
打开AutoGen Studio,使能ADC、CTU、PWM1:
配置ADC通道8(板载可变电阻接到了通道8):
在CTU中配置PWM1的计数器Init事件为ADC规则通道的触发源:
配置PWM1。注意,AC78013的ADC分辨率是12位,即0-4095。
把PWM的计数值正好设置为0-4095即可
PWM1的通道6缺省为PB6。点击图中的PC9引脚,选中“PWM1_CH6”,
把通道6配置到PC9上
好了,现在可以保存工程、生成代码。
打开生成的MDK工程,找到ADC中断服务函数,输入前面提到的所谓一句代码:
当然,一句只是噱头。因为这句代码用到的API需要引用其它头文件,所以还需添加以下两句#include:
OK,再也不需要写入代码,直接编译烧写看效果吧!
在下不会制作动图,请直接看本贴最上面借用的chongdongchen拍摄的动图吧。
ADC_PWM_LED.rar
(1.19 MB)
|
@lihuasoft :透露一下,我是用【xunlei影音】制作的。。播放界面右击就看到了
文中有笔误。占空比写成了“占当比”,不编辑了,阅者自明。