第二章-按键、蜂鸣器、灯

简述

本文主要介绍了三点

  • 蜂鸣器
  • 按键

1 LED灯

只有当引脚P2.0为低电平时,LED灯亮。

因为在main.h 中定义引脚时名称写的是大写的,所以LED亮的单句程序为

LED = 0;

2 蜂鸣器

和LED灯一样,只有当引脚P2.1为低电平时,蜂鸣器响,所以单句程序为

BEEP = 0;

3 按键

看出可知按键右边连接的是低电平,而单片机引脚默认的是高电平,所以按键按下后按键两边都是低电平(蓝色表示低电平)

按键按下的单句程序为

K1 = 0;

判断按键是否按下的程序

key.c

/**********************************
作者:特纳斯电子
网站:https://www.mcude.com
联系方式:46580829(QQ)
淘宝店铺:特纳斯电子
**********************************/

/**********************************
包含头文件
**********************************/
#include "key.h"


/**********************************
变量定义
**********************************/
#if  chiclet_keyboard
uchar key_Flag = 0;				//独立按键标志位
#endif/**********************************
函数定义
**********************************/
#if  chiclet_keyboard				//独立按键
/****
*******独立按键扫描函数
*******返回值:键值
*****/
uchar Chiclet_Keyboard_Scan(void)
{
        if(K1==1 && K2==1 && K3==1) key_Flag = 1;
	
	if(K1==0 && key_Flag==1)				//K1是否按下
	{	
		Delay_function(2);				//消抖
		if(K1==0 && key_Flag==1)			//再次判断K1是否按下
		{
			key_Flag = 0;
			return 1;				//返回1
		}
	}
	
	if(K2==0 && key_Flag==1)
	{
		Delay_function(2);
		if(K2==0 && key_Flag==1)
		{
			key_Flag = 0;
			return 2;
		}
	}
	
	if(K3==0 && key_Flag==1)
	{
		Delay_function(2);
		if(K3==0 && key_Flag==1)
		{
			key_Flag = 0;
			return 3;
		}
	}
	
	return 0;														//没有按键按下,返回0
}
#endif

4 按键控制LED灯和蜂鸣器

首先在main.h中定义引脚

/**********************************
PIN口定义
**********************************/
sbit LED = P2^0;
sbit BEEP = P2^1;

然后把头文件卸载main.c中

/**********************************
包含头文件
**********************************/
#include "main.h"
#include "key.h"k

控制LED灯和蜂鸣器的程序

/****
*******按键函数
*****/
void Key_function(void)
{
	key_num = Chiclet_Keyboard_Scan();				//键盘扫描
	if(key_num != 0)						//有按键按下
	{
		switch(key_num)
		{
			case 1:						//按键1,灯亮
				LED = 0;
			break;
			
			case 2:						//按键2,灯灭
				LED = 1;
			break;
			
			case 3:						//按键3,按下蜂鸣器响,再按下蜂鸣器不响
				BEEP = ~BEEP;
			break;
		}
	}
}

发表回复

登录... 后才能评论

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

如果您已经成功付款但是网站没有弹出成功提示,请联系售后客服QQ:1711381267 提供付款信息为您处理,为您处理事宜。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件和阿里云盘下载。 若排除这种情况,可在对应资源底部留言,或联系我们。

本站素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源。