Ⅰ 单片机调光程序
//程序两个按键接的是外部中断0、1的输入口,按下键就触发相应的中断
//变量和变暗是PWM来控制的,具体在定时中断中说明
#include <reg51.h>
sbit K1 =P3^2 ; //亮度增加键
sbit K2 =P3^3 ; //亮度减少键
sbit led=P0^0;
bit t=0;
unsigned char zhankongbi=0;
unsigned char a=0;
void delay (unsigned char i);
void main ()
{
EA=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
TR0=1; //启动定时器
ET0=1; //允许定时器0中断
TMOD=0x02;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
while(1);
}
void delay (unsigned char i)
{
unsigned char a;
while(i--)
{
for(a=120;a>0;a--);
}
}
void zengjia () interrupt 0 // 变亮按键
{
if(K1==0)
{
delay (1);
if(K1==0)
{
t=1;
}
}
}
void jianshao () interrupt 2 // 变暗按键
{
if(K2==0)
{
delay (1);
if(K2==0)
{
t=0;
}
}
}
void time () interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
if(t) //当按下变量按键时
{
a++;
if(a<=3)
{
led=1; //LED控制高电平为7毫秒
}
else if(a<=10)
{
led=0; //LED控制低电平为3毫秒
}
else if(a==11)
{
a=0;
}
}
else //当按下变暗键时
{
a++;
if(a<=7)
{
led=1; //LED控制高电平为3毫秒
}
else if(a<=10)
{
led=0; //LED控制低电平为7毫秒
}
else if(a==11)
{
a=0;
}
}
}
//可见变亮开关按下LED控制PWM脉宽比为7:3
//变暗开关按下LED控制PWM脉宽比为3:7
//这样就达到了控制LED亮暗的目的,这个程序没有实现亮到按的逐步变化。
Ⅱ 单片机PWM调光原理
1.PWM
脉冲宽度调制(PWM),是英文“Pulse Width Molation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
2.单片机中的PWM
指的是此单片机有部分I/O口具有输出PWM信号的功能。
比如说部分单片机的I/O口可以输出时钟信号,时钟信号的脉宽和占空皮可调,可以根据实际需要调整寄存器位来设定。
3.基本思想就是利用单片机具有的PWM端口,在不改变PWM方波周期的前提下,通过软件的方法调整单片机的PWM控制寄存器来调整PWM的占空比,从而控制充电电流。以此来调整亮度
Ⅲ 求单片机 pwm 控制led调光程序
CYCLE=10;在初始化中,在程序中不会改变;pwm周期
PWM_ON只在主循环来改变;延时程序很长delay(1000); 中断函数执行很多次,第一次count=0时,就把led灭了,当PWM_ON=2时,有了亮度,此亮度保持到,PWM_ON=2,加亮,直到PWM_ON=10,最亮,开始执行变暗程序。
Ⅳ 51单片机做遥控调光
给你个思路,
找个遥控器,
用单片机把它解码,
根据他的码值,
做个不同的DA数据标
控制台灯可控硅的导通时间,
即可实现调光,
遥控关闭,
等等功能。
Ⅳ 我用51单片机做了个LED的PWM调光电路,在0%-100%之间已经分了250级了,可是调光的时候还是感觉到有跳变闪
大概可以这样做。
在图中采用2个隔离二极管将充电回路和放电回路的电阻分开,再用调整电位器的方法使充电电阻和放电电阻阻值发生变化来改变脉冲占空比。
这样就可以实现宽范围的占空比可调PWM电路了。
我所用的555工作在无稳态方式,也就是多谐振荡,请楼主考虑下,希望能提供些参考价值。
将可调电阻选一个阻值10M以上的(越大越好),其他电阻均选择1K,可以实现占空比0.01%~99.99%
向左转|向右转Ⅵ 单片机 控制可控硅调光是什么原理呀通过调整什么改变光的亮度呀
把电源砍成碎片,再把碎片丢给负载,丢得多灯就亮丢得少灯就暗。
Ⅶ 单片机可以用可控硅调光吗,相比pwm调光缺点是什么
1、现在很多单片机都有PWM输出口。
2、可控硅也是可以用于PWM控制的。
3、PWM是脉宽开关调制,没有PWM接口的单片机也是可以用软件模拟的。
4、估计你的意思是单片机控制模拟电压线性调光,这个功能单片机是可以实现的。
5、线性电压调光没有频闪,保护眼睛;
缺点是电路复杂、成本高。
6、PWM调光有频闪,危害眼睛。
Ⅷ 用51单片机 调光
你的电路构思不太好,目的一样但是电路构成的方法有很多的,你这种办法比较耗费元件,并且因为过多的原件而导致可靠性下降。实现你的要求有简单的办法,就是采用单片机产生可控的PWM(PWM(PulseWidthMolation)控制——脉冲宽度调制技术。通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。)通过光电耦合隔离电路并经过驱动放大对双向可控硅G极控制,可控硅和220v电源相连串在灯上。参考电路:
Ⅸ 51单片机pwm调光电路
51单片机pwm调光电路参考源程序:
int potpin=0;//定义模拟接口0
int ledpin=11;//定义数字接口11(PWM 输出)
int val=0;// 暂存来自传感器的变量数值
void setup()
{
pinMode(ledpin,OUTPUT);//定义数字接口11 为输出
Serial.begin(9600);//设置波特率为9600
//注意:模拟接口自动设置为输入
}
void loop()
{
val=analogRead(potpin);// 读取传感器的模拟值并赋值给val
Serial.println(val);//显示val 变量
analogWrite(ledpin,val/4);// 打开LED 并设置亮度(PWM 输__________出最大值255)
delay(10);//延时0.01 秒
}
原理图:
PWM简介:
Pulse Width Molation 就是通常所说的PWM,译为脉冲宽度调制,简称脉宽调制。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,只能输出0 或5V 的的数字电压值,我们就通过使用高分辨率计数器,利用方波的占空比被调制的方法来对一个具体模拟信号的电平进行编码。
Ⅹ 求个单片机PMW程序,实现一个LED无极调光的效果
这个简单# include<reg51.h>
sbit K1 =P1^0; //增加键
sbit K2 =P1^1 ; //减少键
sbit BEEP =P1^2 ; //蜂鸣器
unsigned char PWM=0x12 ; //赋初值