抽水泵实验

接线:蓝色 ------ 5v

​ 绿色------01

注意

接反会倒吸

main.c

# include "reg52.h"
 
 
typedef unsigned int u16;
typedef unsigned char u8;
//定义4个按键管脚
sbit K1=P3^1;
sbit K2=P3^0;
sbit K3=P3^2;
sbit K4=P3^3;
sbit LED1=P2^0;
 
 //--定义使用的IO口--//
sbit PWM=P1^0;



//宏定义如果按下则返回
# define K1_PRESS	1
# define K2_PRESS	2
# define K3_PRESS	3
# define K4_PRESS	4
//没按下
# define K_UNPRESS 0
 //--定义一个全局变量--//




void delay_10us(u16 ten_us)
{
	while(ten_us--);
}
 
u8 Detection_Key(u8 mode)
{
	static u8 key=1;
	if(mode)
		key=1;
	if(key==1 && (K1==0 || K2==0 || K3==0 || K4==0))
	{
		key=0;
	
		delay_10us(1000);//消抖
		if(K1==0)
		return K1_PRESS;
		else if(K2==0)
			return K2_PRESS;
		else if(K3==0)
			return K3_PRESS;
		else if(K4==0)
			return K4_PRESS;
	}
	else if(K1==1 && K2==1 && K3==1 && K4==1)
	{
		key=1;
	
	}
	return K_UNPRESS;
	
}


void main()
{
	
	while(1)
	{
		u8 key=Detection_Key(0);//1代表长按和0代表只按一次
		if(key==K1_PRESS)
		{
			PWM=!PWM;	
		}
		 
	}
	while(1);
}