现在不能出门,做个多功能的点焊机+升压反充+汽车启动点焊时间根据大家用的单片机自行调试,充电可以自行用ADC检测开关EN脚也可以根据法拉电容容量改一下时间!仿真演示只写了一个延时程序!代码虽然有点乱,学习过程中至少实现了所需要的功能!自己过年学习了51黑论坛的各种帖子纯手工码的!
S1升压充电键,EN升压模块开关。 zip.gif
S2放电并开启OUT,
S3没用NC,
S4脉冲时间调整,
S5点焊触发。
对于LED可以用P0=0xff;表示,代码会更短,只是那样跟我一样的小白可能就看不懂了!
image.png

image.png
单片机功能演示程序如下:
#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;
  •             }
  •                                         }
  •                  }
  •    }
  • 复制代码
    image.png
  • if(mosi==3)          //点焊模式
  • /**********************************************************/
  •         if(MODE==0)
  •         {
  •                 Delay_ms(10);
  •                 if(MODE==0)
  •                 {
  •                 mosi++;
  •                 if(mosi==4)//<<<<<<<<<<<<<<<<<<改为4
  •                 mosi=0;
  •         }
  • 复制代码