51单片机 02 独立按键

一、独立按键控制LED亮灭

轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。

cs 复制代码
#include <STC89C5xRC.H>
void main()
{
//	P2=0xFE;
	while(1)
	{
		if(P31==0)
		{
			P20=0;
		}
		else P20=1;
	}
}

二、独立按键控制LED状态

对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。

cs 复制代码
#include <STC89C5xRC.H>
void delay(unsigned int x)		//@11.0592MHz
{
	unsigned char i, j;
	while(x){
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
		x--;
	}
}

void main()
{
	while(1)
	{
		if(P31==0){
			delay(20); //Eliminating jitter through delay
			while(P31==0); // 监测松手(松按键)
			delay(20);
			P20=~P20;
		}
	}
}

三、独立按键控制LED显示二进制

cs 复制代码
#include <STC89C5xRC.H>
void Delay(unsigned int x)		//@11.0592MHz
{
	unsigned char i, j;
	while(x--){
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}

void main()
{
	while(1)
	{
		if(P31==0)
		{
			Delay(20);
			while(P31==0);
			Delay(20);
			P2--;
		}
	}
}

四、独立按键控制LED流水线

cs 复制代码
#include <STC89C5xRC.H>
void Delay(unsigned int x)		//@11.0592MHz
{
	unsigned char i, j;
	while(x--){
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}
void main()
{
	unsigned char pattern=0xFE;
	while(1)
	{
		if(P31==0)
		{
			Delay(20);
			while(P31==0);
			Delay(20);
			P2=pattern;
			pattern=(pattern<<1)|0x01;
			if(pattern==0xFF) pattern=0xFE;
		}
	}
}
cs 复制代码
#include <STC89C5xRC.H>
void Delay(unsigned int x)		//@11.0592MHz
{
	unsigned char i, j;
	while(x--){
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}
void main()
{
	unsigned char pattern=0xFE;
	P2=pattern;
	while(1)
	{
		if(P31==0)
		{
			Delay(20);
			while(P31==0);
			Delay(20);
			pattern=(pattern<<1)|0x01;
			if(pattern==0xFF) pattern=0xFE;
			P2=pattern;
		}
		if(P30==0)
		{
			Delay(20);
			while(P30==0);
			Delay(20);
			pattern=(pattern>>1)|0x80;
			if(pattern==0xFF) pattern=0x7F;
			P2=pattern;
		}
	}
}
相关推荐
SY师弟7 小时前
蓝桥杯单片机第七届省赛
c语言·c++·单片机·嵌入式硬件·职场和发展·蓝桥杯
云山工作室8 小时前
基于WiFi的智能照明控制系统的设计与实现(论文+源码)
单片机·毕业设计·毕设
天外高人8 小时前
实验六 项目二 简易信号发生器的设计与实现 (HEU)
单片机·嵌入式硬件·fpga开发·实验
文科比理科更擅长的工科男12 小时前
012-51单片机CLD1602显示万年历+闹钟+农历+整点报时
单片机·嵌入式硬件·51单片机
云山工作室14 小时前
基于单片机的盲人智能水杯系统(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·毕设
2401_8437852317 小时前
STM32 PWM驱动舵机
stm32·单片机·嵌入式硬件
Ching·18 小时前
物联网 STM32【源代码形式-使用以太网】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】
stm32·嵌入式硬件·物联网
charlie11451419121 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(OLED设备层封装)
c语言·stm32·单片机·教程·oled·嵌入式软件
云山工作室1 天前
基于fpga技术的脉冲信号源设计(论文+源码)
stm32·嵌入式硬件·fpga开发·毕业设计·毕设