久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機可控硅移相調壓程序和電路原理圖 光耦過零檢測
[打印本頁]
作者:
51hei圓圓
時間:
2023-10-27 01:48
標題:
單片機可控硅移相調壓程序和電路原理圖 光耦過零檢測
電路原理圖如下,左邊是由光耦組成的過零檢測電路:
51hei.png
(213.1 KB, 下載次數: 32)
下載附件
2023-10-27 01:47 上傳
單片機源程序如下(多路可控硅移相調壓)程序注釋很詳細:
#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可以改移相角導通時間
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美日韩亚洲系列
|
可以看黄的视频
|
中文字幕久久久
|
亚洲成人精品在线观看
|
97精品超碰一区二区三区
|
国产黄色免费网站
|
美日韩免费视频
|
免费视频一区
|
成人精品久久
|
国产电影精品久久
|
欧洲精品一区
|
国产91色在线 | 亚洲
|
国精日本亚洲欧州国产中文久久
|
国产精品一区二区精品
|
国内精品99
|
欧美精品99
|
成人亚洲精品
|
国产乱码精品一区二区三区五月婷
|
欧美日韩成人在线观看
|
中文字幕亚洲视频
|
日韩免费1区二区电影
|
久久精品国产久精国产
|
成人在线视频免费观看
|
日本一区二区三区在线观看
|
免费观看毛片
|
中文字幕在线视频免费视频
|
视频一区在线观看
|
久久一
|
黑人精品
|
国产视频久
|
日本一二三区电影
|
亚洲狠狠丁香婷婷综合久久久
|
999久久久
|
国内自拍真实伦在线观看
|
日韩乱码av
|
欧美精品一区二区在线观看
|
亚洲高清视频一区二区
|
日本一区二区高清视频
|
在线播放国产一区二区三区
|
久久久.com
|
国产探花在线精品一区二区
|