本帖最后由 周兆鹏 于 2017-5-6 13:46 编辑
本电路是让可控硅工作在2、3象限。本人写的程序只能控制半波,负载电压只能在0V-110V或者110V-220V之间调,不能全波调压,分析原因应该是程序不对,本人分析原因是一个完整的交流波形有2个过零点信号,而我的程序每次只能检测到一个过零信号,每次都丢一个,类似于只控制到第1 第3 第5 第7……点的过零信号,丢掉了第2 第4 第6 ……点过零信号。现在请大家鉴定下我分析的原因对不对,还有就是程序该怎么重新写?
#include <STC12C2052AD.H>
#define uchar unsigned char
#define uint unsigned int
sbit pwm=P1^7;
uchar num=0;
void main ()
{
EA=1;
EX0=1;
ET0=1;
TMOD=0x01;
TH0=0xFC; //定时1ms
TL0=0x18;
IT0=0;
pwm=0; //初始输出0,可控硅不导通
while(1);
}
void delay (uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
void timer0() interrupt 1
{
TH0=0xFC; //定时1ms
TL0=0x18;
num++;
if(num==10)
{
pwm=0;
TR0=0;
num=0;
}
if(num==1)
{
pwm=1;
}
}
void ext0() interrupt 0
{
TR0=1;
}
|