基于基于51单片机的可控硅调压调光程序单片机的可控硅调压调光程序-带过零检测带过零检测
这是一个用51单片机通过过零检测来调整可控硅的导通角从而实现调光调压,其中过零电路用一个p620光
耦,220v这端的电阻是40k,这是一个已经有成熟应用的例子。
以下是c51源代码部分:
#include <reg52.H>
#include "intrins.h"
#define _50msL_ 50000*0.9216
#define _50msH_ 50000*0.9216
#define _1ms_ 922
#define _10ms_ 9216
#define _50us 46 //50*0.9216
#define uchar unsigned char
#define uint unsigned int
void delaySTD_ms(uchar ms); // 延时毫秒@12M,ms最大值255
unsigned char scankey();
sbit PWM_PIN= P1^0;
sbit PWM_TESTLED= P1^2;
/*在
/INT0为过零检测,36v,注意安全!! 外接了两个按键,用来调整占空比;
注意由于P1.1口也控制继电器,因此杜绝字节赋值,不要出现如P1=1;
如果把 PWM 波形的频率提高,也可以用 LED 观察到渐亮渐暗的效果,目前看,只是闪烁的时间发生变化。
220v调光设定为1kHz@12M,每周期1000us,分为10次比较合理,每CELL为1000us!
*/
sbit key1pressed= P1^5;
sbit key2pressed= P1^6;
sbit key3pressed= P1^7;
#define LEVEL0 0
#define LEVEL1 1
#define LEVEL2 2
#define LEVEL3 3
#define LEVEL4 4
#define GRADE 10 //单位次,调光多少级?推荐10级,比较合理(实际只能显示7级,请加MAP映射处理!);20级的话到
13级就会出现误判读!
//GRADE固定为10,以便完成9级调光!!!sw除开灭是8级调光,号称10级!
#define CELL (9216/GRADE) //10为半个市电周期,一个波
//#define CELL 10000 //10000us,实际是9216
#define KEYPRESSTIME 7 //10ms,key bound delay time
评论0