Ⅰ 单片机控制led灯亮度原理
单片机控制LED亮度原理:控制单片机输出pwm信号的占空比,占空比越大,灯越亮。反之,越暗。
Ⅱ 怎样用单片机io口控制大功率led灯亮灭,用1117芯片
1117芯片是3.3V稳压芯片,采用该芯片说明使用的单片机也是3.3V供电,为控制大功率LED灯,可以采取以下措施:
1、大功率的LED灯一般电压都为12V或24V,所以不能由单片机IO直接控制,需要加三极管驱动。
2、为了避免干扰,单片机与外部LED驱动电路之间,加光电隔离。
3、内部逻辑电路和外部驱动电路电源不共地。
Ⅲ 单片机驱动大功率LED的问题
单片机 PWM 信号输出 控制 大功率LED 灯的 亮度,
一般 1W 的 LED 灯 电流 大约在 300 mA 左右,三极管 功率 要大一些,
或者可以 用 MOSFET 管。
Ⅳ 求教如何用单片机控制LED灯的亮度
控制ked亮度不难,你硬件直接连连接好led灯,串个限流电阻。如果引脚一直给电平那么灯肯定最亮,那你如果改变给灯的时间灯就能调亮度了,如你用定时器或者延时多少个时间引脚电平取反一次。例如每间隔1毫秒电平取反一次就可以改变亮度。那你在用个变量值来给这个时间赋值。就能调亮度了啊,比如你接个电位器电位器值改变你程序你就让定时器时间也相应跟着变动
程序名称:一只按键控制两只LED灯十种亮度显示
编程人:xx
备注:此程序简单
#include<stc12c2052ad.h>
*** it d1=P1^7;、、 定义LED灯1
*** it d2=P1^6; 定义LED灯2
*** it key1=P3^0; 定义按键灯
void delay(unsigned int a){ 延时程序
unsigned int i;
while( a-- != 0){
for(i = 0; i < 100; i++);
}
}
void main(){
while(1){
unsigned int a,b,c,d;
if(key1==0)d++; 按键判断
switch(d) 按键信息比较
{
case 1: b=9;;a=1;break;
case 2: b=8;;a=2;break;
case 3: b=7;;a=3;break;
case 4: b=6;;a=4;break;
case 5: b=5;;a=5;break;
case 6: b=4;;a=6;break;
case 7: b=3;;a=7;break;
case 8: b=2;;a=8;break;
case 9: b=1;;a=9;break;
}
while(key1==0); 判判断按键是否松开
if(d==10)d=0; 按键9种亮度判断,是否是第9种,如果是,则d=0
for(c=0;c<2;c++){ 亮度模式循环显示
d1=0;
d2=1;
delay(a);
d1=1;
d2=0;
delay(b);
}
}
}
、2010.10.05 20;06修改
此程序是我写的简单程序,已做过实验,并且通过!
用pic的脉宽调制功能就可以了,只需要给单片机不同的占空比的值,单片机就可以产生不同占空比的信号,将这个信号用三极管放大驱动LED就行了。还有什么问题可以给我留言
第一,要理解中断在这里的作用是固定的“一小段”时间进入一次。 第二,PWM_ON在程序中的作用很大,它会由0------>CYCLE------>0并且一直循环下去。可以把它看成一个有规律的变化的量。 第三,每进入中断一次count++,满足条件count==PWM_ON或coun..
接好单片机的硬件电路,然后编写程序,再然后烧写程序,然后就可以程序了,没问题的话就可以按你的要求点亮了
# include<reg51.h>
void delay(unsigned int j)
{
unsigned int i;
for (;j>0;j--)
{
for(i=0;i<1000;i++)
;
}
}
void main()
{
while(1)
{
P1^0=0;
delay(100);
P1^0=1;
delay(100);具体数值根据你单片机晶振频率而定
}
}
原理是PWM波占空比不同,其功率亦不同,只要PWM频率很大,人眼分辨不出其闪烁,就可通过控制占空比(高电平时间和周期之比)的大小来控制其亮度。
才用PWM调制
LED灯不好控制亮度,在电流变化较大的范围中,亮度变化不明显
如果是电灯泡还可以的
控制LED灯的亮度 这个其实有难度的, 先练习声音控制开关灯,成功后再考虑控制亮度
LED亮度是通过的电流决定的,控制亮度其实就是控制电流.这一点至今没办法做到便宜又简单.
当然,也有种简易的办法是PWM控制亮关比,优点是容易,缺点是闪烁.
还有就是目前灯亮度有几种控制方式,连续变化的贵,高中低分档位的便宜些.
void main()
{
unsigned int temp,i;
temp=1;
while(1)
{
P1=temp&0x00ff; 取temp低8位
P2=(temp&0xff00)>>8; 取temp高8位
for(i=0;i<65535;i++)
{} 延时
if(temp!=0x8000)
temp<<=1; temp左移一位
else temp=1;
}
}
如果不需要控制转速,一个三极管一个继电器就可以控制马达了。
Ⅳ 单片机利用pwm对大功率led灯调光是出现闪烁是什么原因
1、软件问题,用示波器看看频率是否足够高。
2、硬件问题,用示波器看看是否LED功率太大引起的电源电压波动导致的MCU工作不稳定。