简述
本文主要介绍了三点
- 灯
- 蜂鸣器
- 按键
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;
}
}
}