控制LED灯的亮度,通过调节电压的方式可以达到,但不理想,而且可调的范围很小,电压稍高,还容易把LED烧毁,唯一可行的方法就是通过PWM(脉冲宽度调节)来控制其亮度。早期控制LED亮度的方法一般是采用模拟电路来调节LED的工作电流来实现,这种方式灵活性较差,很难达到智能控制的效果。本文将介绍如何通过一个普通MCS51单片机来产生PWM信号,达到调节LE
≥▂≤ PWM调节led等的亮度的程序#include
Arduino引脚RGB LED(共阴极) D11R D10B D9G GNDGND 所需器件控制代码控制RGB代码如下/*运行环境:Arduino 1.8.19*/#defineGREEN9#defineBLUE10#defineRED11intredValue;intgreenVL1 =0; TR0 =1;//开启定时器pwm =10;//设置led为10%的亮度flag =1;//flag = 1表示led处于10%亮度状态break; case1: pwm =50; flag =2; break; case2: pwm =9
ˋ^ˊ 脚本中INPUT_SIZE = 255 表示将LED的亮度(lightness)等分成256阶,即256灰阶度,OUTPUT_SIZE = 255 表示你用的是一个8-bit 的PWM。下面举个栗子:比如你的单片机PWMON = 1; //初始为PWM开启PWMVal = 0; //第一档OCR0A = PWM[PWMVal]; //更改占空比TCCR0A = 0x83; //开启PWM while(1) { if (!(PINB&0x08)) { keytime =