Ⅰ 單片機調光程序
//程序兩個按鍵接的是外部中斷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 ; //賦初值