本帖最后由 qq88046220 于 2022-2-6 22:55 编辑
现在不能出门,做个多功能的点焊机+升压反充+汽车启动点焊时间根据大家用的单片机自行调试,充电可以自行用ADC检测开关EN脚也可以根据法拉电容容量改一下时间!仿真演示只写了一个延时程序!代码虽然有点乱,学习过程中至少实现了所需要的功能!自己过年学习了51黑论坛的各种帖子纯手工码的!
S1升压充电键,EN升压模块开关。
点焊机 反充启动器.zip
(50.15 KB, 下载次数: 14)
S2放电并开启OUT,
S3没用NC,
S4脉冲时间调整,
S5点焊触发。
对于LED可以用P0=0xff;表示,代码会更短,只是那样跟我一样的小白可能就看不懂了!
PCB
单片机功能演示程序如下:
#include<reg52.h>
#include <intrins.h>
sbit S1=P3^7;
sbit S2=P3^6;
sbit S3=P3^5;
sbit S4=P3^4;
sbit S5=P1^7;
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit OUT=P1^5;
sbit EN=P1^6;
unsigned char XX;
unsigned int OO=0;
void dianhan();
void delay(xms)
{
unsigned char i,j;
while(xms--)
{
i=12;j=169;
do
{
while(--j);
}while(--i);
}
}
void dianhan()//S4选择脉冲时间
{
if(S4==0)
{
delay(10);
if(S4==0)
LED6=0;
{
OO++;
if(OO==8)
OO=0;
}
while(!S4);
}
if(OO==0)
{
XX=0;LED1=1;LED2=1;LED3=1;LED4=1;
}
if(OO==1)
{
XX=1;LED1=1;LED2=1;LED3=1;LED4=0;
}
if(OO==2)
{
XX=2;LED1=1;LED2=1;LED3=0;LED4=1;
}
if(OO==3)
{
XX=5;LED1=1;LED2=0;LED3=1;LED4=1;
}
if(OO==4)
{
XX=10;LED1=0;LED2=1;LED3=1;LED4=1;
}
if(OO==5)
{
XX=20;LED1=0;LED2=1;LED3=1;LED4=0;
}
if(OO==6)
{
XX=30;LED1=0;LED2=1;LED3=0;LED4=0;
}
if(OO==7)
{
XX=50;LED1=0;LED2=0;LED3=0;LED4=0;
}
}
void main(void)
{
while(1)
{
dianhan();//PUL
if(S1==0) //S1充电
{
delay(10);
if(S1==0)
{
EN=0;LED7=0;LED6=1;
LED1=0;LED2=1;LED3=1;LED4=1;delay(500)EN=1;LED7=1;
}
}
if(S2==0)//S2放电
{
delay(10);
if(S2==0)
{
OUT=0;LED5=0;LED6=1;
LED1=0;LED2=0;LED3=0;LED4=0;delay(500);OUT=1;LED5=1;
}
}
if(S5==0)//点焊触发
{
delay(1);
if(S5==1)
{
OUT=0;delay(1*XX);OUT=1;delay(10);//双脉冲输出
OUT=0;delay(1*XX);OUT=1;
}
}
}
}
|