基于51单片机的可控硅触发脉冲控制器
时间: 2023-12-12 17:02:21 浏览: 34
基于51单片机的可控硅触发脉冲控制器,可以实现对交流电的调节,常用于电炉、电焊机等电器设备。具体的实现步骤如下:
1. 设计电路,包括可控硅、触发电路、脉冲控制电路等部分。
2. 编写51单片机程序,实现对可控硅的控制。可以采用定时器、串口通信等方式,将控制信号发送给可控硅。
3. 调试程序和电路,确保控制器能够正常工作。
需要注意的是,可控硅触发脉冲控制器设计需要考虑电压、电流等参数,以确保安全性和稳定性。同时,程序的编写需要考虑实时性和可靠性,以确保控制器能够稳定地工作。
相关问题
基于51单片机的可控硅调压调光程序-带过零检测
这是一个基于51单片机的可控硅调压调光程序,带有过零检测功能,可以实现对交流电灯的亮度调节和电压调节。
程序主要包括以下几个部分:
1. 时钟初始化
2. IO口初始化
3. 定时器初始化
4. 过零检测
5. 调压调光控制
以下是详细的程序说明:
```c
#include <reg52.h>
#define ON 0
#define OFF 1
sbit triac = P1^0; //可控硅控制引脚
unsigned char cnt = 0; //计数器
void init_timer0() //初始化定时器0
{
TMOD &= 0xf0; //清空低四位
TMOD |= 0x01; //设置定时器0为模式1
TH0 = 0xfc; //设置定时器初值
TL0 = 0x18;
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
}
void init_ext0() //初始化外部中断0
{
IT0 = 1; //设置为下降沿触发
EX0 = 1; //打开外部中断0
EA = 1; //打开总中断
}
void main()
{
init_timer0(); //初始化定时器0
init_ext0(); //初始化外部中断0
while(1)
{
if(cnt >= 100) //计数到100时,输出低电平,控制可控硅导通
{
triac = OFF;
}
else
{
triac = ON;
}
}
}
void timer0() interrupt 1 //定时器0中断服务程序
{
TH0 = 0xfc; //重新设置初值
TL0 = 0x18;
cnt++; //计数器加1
if(cnt >= 100) //计数器达到100时清零
{
cnt = 0;
}
}
void ext0() interrupt 0 //外部中断0中断服务程序,过零检测
{
cnt = 0; //计数器清零
}
```
程序在main函数中初始化了定时器0和外部中断0,其中定时器0用于产生PWM波形,外部中断0用于过零检测。在定时器中断服务程序中,每当定时器0计数到100时,计数器cnt就会加1,当cnt达到100时,控制可控硅导通,灯亮度较大;当cnt小于100时,控制可控硅截止,灯亮度较小。
在外部中断0中断服务程序中,每当检测到交流电的过零点时,计数器cnt就会清零,以实现精准的亮度调节和电压调节。
需要注意的是,可控硅控制引脚的电平需要根据具体的可控硅型号和电路连接进行调整。
写一份51单片机可控硅调光的代码
以下是一份简单的51单片机可控硅调光的代码,基于定时器和PWM控制实现:
```c
#include <reg51.h>
sbit SCR = P1^0; // 可控硅控制引脚
void delay(unsigned int t) // 延时函数
{
unsigned int i;
while(t--)
for(i=0;i<122;i++);
}
void InitTimer0(void) // 定时器0初始化
{
TMOD |= 0x01; // 16位定时器模式
TH0 = 0xFC; // 初始值
TL0 = 0x67;
ET0 = 1; // 允许定时器0中断
TR0 = 1; // 启动定时器0
}
void InitPWM(void) // PWM初始化
{
TMOD |= 0x10; // 定时器1为8位自动重装模式
TH1 = TL1 = 0x00; // 初始值
ET1 = 1; // 允许定时器1中断
TR1 = 1; // 启动定时器1
}
void main(void)
{
InitTimer0(); // 初始化定时器0
InitPWM(); // 初始化PWM
while(1)
{
SCR = 1; // 可控硅导通
delay(200); // 延时一段时间,控制灯亮度
SCR = 0; // 可控硅截止
delay(800); // 延时一段时间,控制灯亮度
}
}
void Timer0_ISR(void) interrupt 1 // 定时器0中断服务程序
{
TH0 = 0xFC; // 重新赋初始值
TL0 = 0x67;
P1 ^= 0x01; // 翻转P1.0口
}
void Timer1_ISR(void) interrupt 3 // 定时器1中断服务程序
{
static unsigned char cnt = 0;
cnt++;
if(cnt == 200)
{
P1 ^= 0x02; // 翻转P1.1口
cnt = 0;
}
TH1 = TL1 = 0xFF - P1^0; // 根据SCR控制PWM占空比
}
```
其中,定时器0用于控制LED闪烁,定时器1用于产生PWM信号控制可控硅。定时器0中断服务程序用于控制LED翻转,定时器1中断服务程序用于控制PWM占空比。通过调整可控硅导通时间和延时时间,可以实现灯的调光效果。