欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機可控硅移相調壓程序和電路原理圖
[打印本頁]
作者:
ZFDQ
時間:
2023-6-12 17:19
標題:
單片機可控硅移相調壓程序和電路原理圖
電路原理圖如下:
原理圖.png
(97.65 KB, 下載次數: 70)
下載附件
2023-6-13 04:49 上傳
單片機源程序如下:
#include <STC15F2K60S2.H> //STC15系列單片機頭文件都是這個。
#define uchar unsigned char
#define uint unsigned int
#include <STC15F2K60S2.H>
#define MAIN_Fosc 24000000UL //定義主時鐘
uchar num=0; //對可控硅移相角控制
uchar jishuqi=0; //記錄中斷次數,有軟起動作用,值不電輸出電壓不變
uchar sec1=0;
uchar sec10=0;
uchar sec100=0;
uchar sec1000=0;
sbit cdqd=P3^3;//啟動充電信號0開1關
sbit fdqd=P3^4;//啟動放電信號0開1關
//sbit cdr=P3^5;//充電停止信號 1關,0開
sbit fd=P3^7;//充電可控硅通斷 0:放電 1:關閉
sbit pwm1=P3^5;//放電可控硅位通 0導通,1關閉
sbit pwm2=P3^6;//放電可控硅位通 0導通,1關閉
// sbit led=P1^0; 實驗板指示燈
sbit led=P1^2;
sbit cf=P1^0;
unsigned char i;
unsigned int ms;
void delay_ms( ms);
/////////////主程序
void main()
{ cdqd=1;
fd=1;
pwm1=1;
cf=1;
//初始化
TMOD=0x01;
// TL0 = 0xa6; //設置定時初始值 0.1ms
// TH0 = 0xFf; //設置定時初始值
// TL0 = 0x4a; //設置定時初始值0.2ms
// TH0 = 0xFf; //設置定時初始值
// TL0 = 0x91; //設置定時初始值0.4ms
// TH0 = 0xFe; //設置定時初始值
// TL0 = 0x38; //設置定時初始值0.5ms
// TH0 = 0xFe; //設置定時初始值
TL0 = 0x9c; //設置定時初始值 0.1ms
TH0 = 0xFf; //設置定時初始值
// TL0 = 0x68; //設置定時初始值 1ms
//TH0 = 0xFC; //設置定時初始值
EA=0;
ET0=1;
EX0=1;
IT0=0;//必須設外部中斷觸發方式為上升沿下降沿同時觸發。STC最新15系列單片機外部中斷INT0口有上下沿同時觸發功能
pwm1=1;
pwm2=1;
led=1;
// EA=1;
// TR0=1;
while(1){
while(cdqd==0){EA=1; } //充電啟動
// if(cdqd==0){EA=1; cf=0; } //充電啟動
jishuqi=0;
if(cdqd==1){EA=0; jishuqi=0; } //充電關閉
if(fdqd==0){jishuqi=0; fd=0; for(i=0;i<3;i++); fd=1; for(i=0;i<3;i++); }//放電延時2us};
// fd=1;
// if(cf==0) {
////////////////////////////////////////
// delay_ms(500);
led=~led;
// pwm=0;
// delay_ms(500);
// pwm=1;
// led=0;
// }
/////////////////////////////////////////////
}
}
//延時程序
void delay_ms(ms)
{
unsigned int i;
do{
i = 200;
while(--i) ; //14T per loop
}while(--ms);
}
void Timer0Init(void) //1000微秒@24.000MHz
{
AUXR |= 0x80; //定時器時鐘1T模式
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01; //設置定時器模式
TL0 = 0x40; //設置定時初始值
TH0 = 0xA2; //設置定時初始值
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
}
//1毫秒定時器中斷程序
void t0() interrupt 1
{
unsigned char i;
TL0=0x9c;
TH0=0xff; //1haomiandingshi
// TL0 = 0xa6; //設置定時初始值 0.1ms
// TH0 = 0xFf; //設置定時初始值
// TL0 = 0x4a; //設置定時初始值0.2ms
// TH0 = 0xFf; //設置定時初始值
// TL0 = 0x91; //設置定時初始值0.4ms
// TH0 = 0xFe; //設置定時初始值
// TL0 = 0x38; //設置定時初始值0.5ms
// TH0 = 0xFe; //設置定時初始值
// TL0 = 0x9c; //設置定時初始值 0.1ms
// TH0 = 0xFf; //設置定時初始值
// led=~led;
// pwm=~pwm;
num++;
// jishuqi=8; 固定電壓輸出
// if(jishuqi>4) {jishuqi=5; if(cdqd==0){}} //全導通
//jishuqi=4;
//第一個半波
if(jishuqi==1){
if(num==75) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi==2){
if(num==70) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi==3){
if(num==65) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
//led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi==4){
if(num==60) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi>=5){
if(num==50) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi==6){
if(num==40) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi==7){
if(num==30) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi==8){
if(num==20) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
}
} //
if(jishuqi>=9){
if(num==60) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
{
TR0=0;
pwm1=0; //觸發MOC3021導通,即觸發可控硅導通
pwm2=0; //觸發MOC3021導通,即觸發可控硅導通
for(i=0;i<2;i++);//延時2us
pwm1=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
pwm2=1; //觸發MOC3021導通,即觸發可控硅導通
num=0; //清零變量 if(jish
// led=~led; //驗證指示LED
//led=0;
}
} //
//第二個半波
// if(jishuqi>=10){
// if(num==5) //延時1毫秒導通,改變num的值即可改變移相觸發時間,即改變負載功率大小。num的范圍:0<num<10
// {
// TR0=0;
// pwm=0; //觸發MOC3021導通,即觸發可控硅導通
// for(i=0;i<2;i++);//延時2us
// pwm=1; //延時2us之后,關掉脈沖輸出,因為可控硅在非過零點情況下觸發信號丟失,會繼續保持導通。
// num=0; //清零變量
// led=~led; //驗證指示LED
//led=0;
// }
// } //
//第二個半波
//第10和大于10個半波
// pwm=1;
//if(num==7){led=~led;}
// led=~led; //驗證指示LED
//10MS計時器
// if(sec1>=10) {sec1=0;sec10++;}
// if(sec10>=10) {sec10=0;sec100++;}
// if(sec100>=10) {sec100=0;sec1000++;}
// if(sec1000>=8) {sec100=0;sec1000++;}
}
//中斷程序
void ex0() interrupt 0
{
IE0=0;
num=0;
// jishuqi++; //軟起過程的半波個數
TR0=1; //交流過零點的時候,清楚標志、計數變量并啟動定時器。 /
// cf=0;
sec1++;
if(sec1>=10){sec1=0;jishuqi++;} //sec可以改移相角導通時間
//jishuqi=1;
if(jishuqi>=7){jishuqi=7;} //sec可以改移相角導通時間
}
復制代碼
以上就是全部資料了,附件里面有可放大的pdf原理圖(僅供參考):
單片機可控硅移相調壓程序和電路原理圖.rar
(24.17 KB, 下載次數: 91)
2023-6-29 13:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
王秋冬
時間:
2023-6-14 21:25
謝謝分享,這個比較詳細。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1