S1升压充电键,EN升压模块开关。
S2放电并开启OUT,
S3没用NC,
S4脉冲时间调整,
S5点焊触发。
对于LED可以用P0=0xff;表示,代码会更短,只是那样跟我一样的小白可能就看不懂了!
单片机功能演示程序如下:
#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; } } } }
复制代码