请问明基的VW2245滤蓝光不闪屏是DC调光,还是PWM调光,使?
您好,不闪屏采用的是非PWM调光技术。此款最佳分辨率是1920 x 1080,推荐您使用该分辨率,以实现显示器的最佳效果。
dc调光有什么用
DC调光是一种调节屏幕亮度的方式,现在的手机等便携设备都拥有光线传感器,可以在感知当前环境亮度的情况下自动调节屏幕的亮度,而DC调光就是通过提高或降低屏幕面板电路功率的方式来改变屏幕的亮度,由于功率等于电压乘以电流,因此只需改变电压或电流都能够改变屏幕亮度。
哥们我想问一下 怎样用PWM实现多路LED的调光呢 没有分了 希望你帮帮我 非常感谢
用单片机控制啊!给个参考程序你!我参考的这个程序能通过PWM控制亮度
用R G B 三色LED合成任何颜色及渐变!呵呵!很有意思!自己再改改可以随便你PWM怎么控制几路亮度及不同颜色亮度合成
注意: 定时时间由晶振决定,我暂时给你按12MHz晶振计算定时时间,你接上6MHz晶振期效果也差不多,只是变化得慢一倍
此程序我已用ARM进行硬件模拟了LED的变化(在Keil中也用软件调试通过),应可以直接使用,你在端口上请注意选择合适的上拉电阻
另外你可根据你的需要及LED的效果来修改其定时时间、周期时间、脉冲宽度常数表与同一脉冲出现次数等
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
//宏定义
//*********************************************************
#define LEDP1_2//LED端口定义
#define _Timer0_Time_1//Timer0定时时间
#define _Cycle_Time_20//周期时间为20ms
#define _Times_5//同一宽度脉冲出现的周期数
//变量定义
//*********************************************************
uint8 Cycle_Time;//周期时间
uint8 Pulse_Time;//脉冲时间(宽度)
const uint8 Pulse_Time_Buf[20]=//脉冲宽度常数表
{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
/*********************************************************
Time0中断函数
**********************************************************/
void Time0(void) interrupt 1 using 1
TH0=0xFC;//1ms定时
TL0=0x18;
if(Pulse_Time) Pulse_Time--;
if(Cycle_Time) Cycle_Time--;
//主函数
//*********************************************************
main()
uint8 i,j;
uint16 count;
P0=0xff;//P0口初始状态
TMOD=0x01;
TH0=0xFC;//1ms定时
TL0=0x18;
EA=1;//启动定时器,开定时器中断
ET0=1;
TR0=1;
LED=1;
while(1) {//进入主循环
//for(i=20; i; i--){//脉冲宽度从20~0ms渐变
for(i=0; i<20; i++){//脉冲宽度从0~20ms渐变
for(j=0; j
#include
#define uchar unsigned char
#define uint unsigned int
uchar Count,timecount;
bit temp;
/*********************************************************
*********************************************************/
void Delay(uint num)//延时函数
while( --num );
/********************************************************
*********************************************************/
main()
P0=0xff;
Count=0x00;
TMOD=0x01;
TH0=0x4c; TL0=0x00;//50ms定时
EA=1; ET0=1; TR0=1;
while(1)
if(temp)
p1^2=!p1^2;
delay(200);
/*********************************************************
Time0中断函数
**********************************************************/
void Time0(void) interrupt 1 using 0
TH0=0x4c;//50ms定时
TL0=0x00;
timecount++;
if(timecount==20)
temp=!temp;
/*********************************************************/
#endif你好!
LED主要是电流驱动,所以你做个电流型的整流器吧
如果对你有帮助,望采纳。
led pwm调光程序
/*======================================================================
程序名: 可调光LED台灯
CPU说明: AT89C2051型单片机12MHZ晶体振荡器
======================================================================*/
//====================================================================//
#include
//===========================定义部分=================================//
#define LED_lamp P1_7
#define LED_disP3_4
void delay(unsigned int d);
void delay1(unsigned int d);
bit Power_flag=0;
bit On_off_flag=0;
bit On_off_press_flag=0;
bit Set_bri_flag=0;
sbit On_off=P3^0;
sbit Step_ctr= P3^1;
sbit Inc_bri = P3^2;
sbit Dec_bri = P3^3;
//=========================键值读取函数===============================//
unsigned char Key(void)
if(On_off==1)return(1);//当开关灯键接下时,返回值为1。
if(Step_ctr==1)return(2);//当八级调光键接下时,返回值为2。
if(Inc_bri==1)return(3);//当增加亮度键接下时,返回值为3。
if(Dec_bri==1)return(4);//当降低亮度键接下时,返回值为4。
else return(0);//当无键接下时,返回值为0。
//=======================状态指示灯闪烁函数===========================//
void Led(void)
LED_dis=0;
delay(50000);
LED_dis=1;
delay(10000);
//========================LED台灯主函数===========================//
void main(void)
unsigned char a, b; //a控制延时长度,b控制循环周期。
P1=0x00;//初始化,LED台灯关闭。
P3=0x00;//初始化,关闭状态指示灯,键盘接口置低电平。
while(1)
{
//------------------------------开灯------------------------------//
while((On_off==1)&&(Power_flag==0)) //按下开关灯键,开灯标志为0,则开灯。
Power_flag=1;//置开关灯标志为1。
while(On_off==1);//等待开关灯按键释放。
On_off_press_flag=0;//开关灯按键释放标志置0。
LED_lamp=0;
LED_dis=0;
a=0x00;
//---------------开灯亮度逐渐增加至1/3过程----------------//
for(b=80;b>0;b--)//开机亮度默认为1/3,但感觉上会认为是一半亮度。
{
a++;//每份时间内点亮的时间逐渐增加。
delay(a);//每份时间内点亮的时间延时。
LED_lamp=0; //每份时间内的关闭时间开始。
//LED_dis = 0;
a = ~a; //a取反后的值即为每份时间减点亮的时间,即关闭时间。
delay(a);//每份时间内关闭的时间延时。
LED_lamp=1; //点亮LED,准备进行下一份时间的动作。
//LED_dis = 1;
a = ~a; //a再次取反,此时a值还原为点亮时间值。
}
while(1)
{
//------------------保持亮度--------------------------//
delay1(a); //每份时间内点亮的时间延时。
LED_lamp=0; //每份时间内的关闭时间开始。
//LED_dis=0;
a=~a;//a取反后的值即为每份时间减点亮的时间,即关闭时间。
delay1(a); //每份时间内关闭的时间延时。
LED_lamp=1; //点亮LED,进行下一份时间的动作。
//LED_dis=1;
a=~a;//a再次取反,此时a值还原为点亮时间值。
//-----------------按键动作处理-----------------------//
if(Key()==1)On_off_press_flag=1;//开关灯按键按下,释放标志置1。
if((Key()==2)&&(Set_bri_flag==0)){a+=30;Set_bri_flag=1;if(a>=240)a=10;} //八级调光。
if(Step_ctr==0)Set_bri_flag=0; //当八级调光键释放,置其释放标志为0。
if(Key()==3){a++;if(a>=240)a=240;} //减光。
if(Key()==4){a--;if(a<=10)a=10;}//加光。
if((On_off_press_flag==1)&&(On_off==0))break;//当开关灯键释放才动作,到关灯过程。
break;
//--------------------------关灯------------------------------//
while(Power_flag==1) //当开关灯标志为1,则关机。
Power_flag=0;//置开关灯标志为0。
for(b=250;b>0;b--)//因为a值最大为240,所以b值要比a值大才能使a值减小到0(即亮度为0)。
if(a<=1)break; //当a值不大于1时,此时灯已灭,跳出关灯函数。
a--;//每份时间内点亮的时间逐渐减小。
LED_lamp=1; //每份时间内的点亮时间开始。
//LED_dis = 1;
delay(a);//每份时间内点亮的时间延时。
a=~a;//a取反后的值即为每份时间减点亮的时间,即关闭时间。
LED_lamp=0; //每份时间内的关闭时间开始。
//LED_dis = 0;
delay(a);//每份时间内关闭的时间延时。
a=~a;//a再次取反,此时a值还原为点亮时间值。
}
LED_lamp=0; //关闭LED台灯。
//LED_dis = 0;
while(On_off==1);//等待开关灯按键释放。
Led(); //Led状态指示灯闪烁提示,已经关机。
//===================带按键开关灯按键中断延时函数=====================//
void delay(unsigned int d) //d决定延时时间的长短
unsigned char i;
while(--d!=0)
for(i=0;i<10;i++);
if(On_off==1)break; //加入开关键判断,可在延时中也迅速作出动作。
}
//============================延时函数================================//
void delay1(unsigned int t) //t决定延时时间的长短
unsigned char j;
while(--t!=0)
for(j=0;j<2;j++);
}
//================================完==================================//