小项目:单片机可控硅调光设计带光耦过零检测 元器件清单 源代码原理图等

有人托我做一个关于可控硅调光的毕业设计,我用51单片机做了一个,发出来和大家一起学习一下。

我用的是自己买的开发板上的52单片机, 晶振采用11.0592M, 光耦用了MOC3023 和P521-1两个 可控硅用的是BTA41 跟一块整流桥 电容用的是CBB 0.06μF 电阻那些由于我没有那么多 所以就找了相近值的 然后自己加了一个电源指示灯 和工作指示灯 按键我就直接修改成开发板上的独立按键。

通电调节过后那几个电阻发烫都挺严重的。 但过零检测那部分还是不大明白 之前我做了个点焊机根本没有过零检测 但是加了有脉冲宽度调节和电流调节。特别提醒各位爱好者在做的过程中千万要注意安全 检测检测再检测确认对了之后再通电 我也是在尝试中和大家共同进步。

先上实物图
小项目:单片机可控硅调光设计带光耦过零检测 元器件清单 源代码原理图等_第1张图片小项目:单片机可控硅调光设计带光耦过零检测 元器件清单 源代码原理图等_第2张图片
小项目:单片机可控硅调光设计带光耦过零检测 元器件清单 源代码原理图等_第3张图片
原理图
小项目:单片机可控硅调光设计带光耦过零检测 元器件清单 源代码原理图等_第4张图片
C语言参考源代码

#include “reg52.h”

sbit lamp_pwm=P0^0;//可控硅位
sbit key0=P3^4;//降低亮度按键位
sbit key1=P3^5;//增加亮度按键位

unsigned int inc;

void INT0s()interrupt 0 using 0//INT0外部中断,过零检测触发
{
TR0=0;
if(!key0)//降低亮度
{
inc+=50;
if(inc>=8000)inc=8000;
}
if(!key1)//增加亮度
{
inc-=50;
if(inc<=800)inc=800;
}
TH0=(65536-inc)/256;
TL0=(65536-inc)%256;
TR0=1;
}

void timer1()interrupt 1 using 0//可控硅触发中断
{
unsigned char i;
lamp_pwm=0;//灯亮
for(i=0;i<2;i++);//延时2us
lamp_pwm=1;//灯灭
}

/STC不断电下载用******/
sfr ISP_DOWNS=0xe7;//ISP软复位地址
sbit ISP_SW=P3^0;//串口数据接收
void DebugDownISP()//软复位
{

鉴于篇幅限制,只能写部分代码,如需要完整代码请自行下载

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,
如果需要 完整代码或设计文件,请在下方留言或者私信我,看到后会第一时间回复。

谢谢!

你可能感兴趣的:(模拟电子技术,编程)