RYMCU

51单片机第7章-- 按键试验

Hugh 4 年前
# 51单片机 # 按键

所属作品集

概述

前面几章讲解的都是 I/O 口当成输出管脚使用,本章将通过按键实验学习 I/O 口的输入功能。按键作为一种输入设备,在实际应用中非常的广泛。本章将详细介绍按键的使用。

7.1 按键原理

独立按键的原理非常简单,如下图所示:
图7-1-独立按键原理图.png

如图所示,K17-K20 共 4 个按键分别与单片机的 P3.0-P3.3 管脚连接。例如当按下按键 K17 后,P3.0 管脚为低电平,在单片机中通过检测 P3.0 管脚是否为低电平,便可知道 K17 是否按下。

7.2 按键电路软件设计

下面我们学习独立按键的编写,这里要实现的功能为按键 K17 按下,点亮 led0,按键 K20 按下打开蜂鸣器,程序代码如下所示:

#include<reg52.h>

sbit led0 = P1^0;//LED小灯管脚定义
sbit FM = P2^4;//蜂鸣器管脚位定义

sbit Key17 = P3^0;//独立按键管脚定义
sbit Key20 = P3^3;

void main()
{
	while(1)
	{
		led0 = Key17;//按键17按下时,点亮led0
		FM = Key20;//  按键20按下时,打开蜂鸣器
	}
}

蜂鸣器打开、点亮 led0 小灯以及按键 K17、K20 按下均为低电平,因此赋值代码如上循环语句中所示。将程序下载到单片机中,当按下 K17,K20 时,led0 小灯点亮,蜂鸣器想起,弹起按键后,led0 小灯熄灭,蜂鸣器关闭。

在实际使用中,我们并不是经常一直按着按键,最常见的方式为先按下按键然后弹起,这个过程表示按键按下一次的完整过程。因此,在程序中首先检测按键是否按下,然后再检测按键是否弹起,代码如下图所示:

#include<reg52.h>

sbit led0 = P1^0;//LED小灯管脚定义
sbit FM = P2^4;//蜂鸣器管脚位定义

sbit Key17 = P3^0;//独立按键管脚定义
sbit Key20 = P3^3;

  bit flag=1;
void main()
{
	while(1)
	{
		if(Key17==0)//按键按下
		{
			if(Key17==1)//按键弹起
			{
				led0 = ~led0;//数值取反
			}	 
		}

		if(Key20==0)//按键按下
		{
			if(Key20==1)//按键弹起
			{
				FM = ~FM;//数值取反
			}	 
		}
	}
}

如上代码所示,在程序中首先检测按键 K17 是否按下,如果按下了再检测 K17 是否弹起,若检测到弹起,让 led0 小灯的状态变化,每完成一次按键操作,led0 小灯亮灭状态会翻转一次。K20 按键与此类推。

7.3 下载验证

将上述代码下载至单片机便可验证了。

所属作品集

后发布评论