|
用脈寬調(diào)制控制AC220V白熾燈程序,本人經(jīng)過(guò)試驗(yàn),基本正確?刂撇糠钟闷罩虚_(kāi)發(fā)板,SCR部分外接。詳見(jiàn)硬件連接圖:
開(kāi)發(fā)板與外接硬件SCR連接圖.jpg (308.6 KB, 下載次數(shù): 65)
下載附件
2017-6-29 11:02 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit K1=P1^0; //按鍵1,PWM脈沖寬度值增加
- sbit K2=P1^1; //按鍵2,PWM脈沖寬度值減少
- sbit LED=P1^3; //LED顯示
- sbit PWM_OUT=P1^4; //PWM輸出,SCR控制
- uchar PWM,num; //PWM設(shè)定脈沖寬度值,num計(jì)算中斷次數(shù);
- void delay(uint ms) //1ms延時(shí)
- {
- uchar i;
- while(ms--)
- {
- for(i=0;i<120;i++);
- }
- }
- void keyscan() //按鍵掃描函數(shù)
- {
- if(K1==0) //按鍵1是否按下
- {
- delay(50); //去抖延時(shí)
- if(K1==0) //按鍵1是否繼續(xù)按下
- {
- if(PWM<32) //PWM設(shè)定脈沖寬度值是否小于32
- {
- PWM++; //PWM設(shè)定脈沖寬度值加1
- delay(100);
- }
- }
- }
- if(K2==0) //按鍵2是否按下
- {
- delay(50); //去抖延時(shí)
- if(K2==0) //按鍵2是否繼續(xù)按下
- {
- if(PWM>1) //PWM設(shè)定脈沖寬度值是否大于1
- {
- PWM--; //PWM設(shè)定脈沖寬度值減1
- delay(100);
- }
- }
- }
- }
- void init_t0() //定時(shí)器T0初始化
- {
- TMOD=0x01; //方式1,16位定時(shí)器
- TH0=(65536-500)/256; //0,5ms定時(shí)
- TL0=(65536-500)%256; //0,5ms定時(shí)
- EA=1; //開(kāi)總中斷
- ET0=1; //開(kāi)定時(shí)器T0
- TR0=1; //啟動(dòng)定時(shí)器T0
- }
- void t0() interrupt 1 //T0中斷服務(wù)函數(shù)
- {
- TR0=0; //停止T0定時(shí)器
- TH0=(65536-500)/256; //0,5ms定時(shí)
- TL0=(65536-500)%256; //0,5ms定時(shí)
- num++; //num計(jì)算中斷次數(shù)+1
- if(num>32) //中斷次數(shù)大于32
- {
- num=0; //中斷次數(shù)=0
- }
- if(num<=PWM) //中斷次數(shù)<=PWM脈沖寬度
- {
- LED=0x01; //輸出高電平,小燈滅
- PWM_OUT=0x00; //輸出低電平,關(guān)閉SCR
-
- }
- else
- {
- LED=0x00; //輸出低電平,小燈亮
- PWM_OUT=0x01; //輸出高電平,啟動(dòng)SCR
- }
- TR0=1; //啟動(dòng)T0定時(shí)器,等待下一次中斷
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
0.png (49.39 KB, 下載次數(shù): 99)
下載附件
2017-6-29 22:34 上傳
所有資料51hei提供下載:
PWM_鍵調(diào)LED顯示脈寬控制SCR.rar
(71.82 KB, 下載次數(shù): 21)
2017-6-29 10:20 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|