|
下面分享一個單片機無級調光電路給大家。這個電路是在網上看到的,感覺簡單適用,只是愛好者在制作過程中,一定注意安全。這個單片機調光電路單片機采用的是STC12C2052AD,晶振采用11.0592M。程序附后,有需要的自己下載。單片機部分除了使用STC12C2052AD,也可以使用AT89系列單片機。程序適合單路可控硅控制,因為程序是利用外部中斷來控制定時器參數來完成過零延遲觸發可控硅的方式來調功的,如果是一片單片機控制多路可控硅,就必須改一種方式,定時器必須常開而且參數定為10MS(一個過零周期),外部中斷用來給定時器做同步調整(外部中斷時給定時器置入溢出值),各路可控硅調功參數可以通過預設值和查表方式獲得相應的延遲觸發時間點。
下載:
單片機可控硅無級調光程序.zip
(86.43 KB, 下載次數: 2054)
2015-4-11 22:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
視頻:
源程序:
- /*
- 單片機白熾燈調光程序 (晶振:11.0592MHz)
- */
- #include "reg52.h"
- sbit lamp_pwm=P1^0;//可控硅位
- sbit key0=P1^1;//降低亮度按鍵位
- sbit key1=P1^2;//增加亮度按鍵位
- unsigned int inc;
- void INT0s()interrupt 0 using 0//INT0外部中斷,過零檢測觸發
- {
- TR0=0;
- if(!key0)//降低亮度
- {
- inc+=50;
- if(inc>=8000)inc=8000;
- }
- if(!key1)//增加亮度
- {
- inc-=50;
- if(inc<=800)inc=800;
- }
- TH0=(65536-inc)/256;
- TL0=(65536-inc)%256;
- TR0=1;
- }
- void timer1()interrupt 1 using 0//可控硅觸發中斷
- {
- unsigned char i;
- lamp_pwm=0;//燈亮
- for(i=0;i<2;i++);//延時2us
- lamp_pwm=1;//燈滅
- }
- /************STC不斷電下載用******************/
- sfr ISP_DOWNS=0xe7;//ISP軟復位地址
- sbit ISP_SW=P3^0;//串口數據接收
- void DebugDownISP()//軟復位
- {
- if(!ISP_SW)ISP_DOWNS=0x60;
- }
- /********************************************/
- void main()
- {
- TMOD|=0x01;
- IT0=1;//INT0下降沿觸發
- EX0=1;//外部中斷允許
- ET0=1;
- EA=1;//開總中斷
- inc=8000;
- while(1)
- {
- DebugDownISP();
- }
- }
復制代碼
|
評分
-
查看全部評分
|