3.3 51单片机-独立按键
【摘要】
3.3 独立按键
3.3.1 按键原理图
图3-3-1
图3-3-2
JP165跳线帽断开、JP10连接J12(为了实现按键控制LED灯的效果)、JP5连接JP8、J21接左边
3.3.2 示例代码
下面代码都使用多文件编程模型,这里贴出每个文件的主要代码。
下面代码实现的效果是,按下按键控制LED灯。 ...
3.3 独立按键
3.3.1 按键原理图
图3-3-1
图3-3-2
JP165跳线帽断开、JP10连接J12(为了实现按键控制LED灯的效果)、JP5连接JP8、J21接左边
3.3.2 示例代码
下面代码都使用多文件编程模型,这里贴出每个文件的主要代码。
下面代码实现的效果是,按下按键控制LED灯。
Main.c文件:
-
#include <reg51.h>
-
#include "delay.h"
-
#include "key.h"
-
#include "type.h"
-
#include "led.h"
-
-
int main()
-
{
-
u8 key;
-
LED=0; //关闭所有LED灯,51单片机默认输出高电平,LED默认高电平点亮
-
while(1)
-
{
-
key=Key_Scan();
-
if(key)
-
{
-
LED=~LED; //控制8盏灯
-
}
-
}
-
}
Key.h文件代码:
-
#ifndef KEY_H
-
#define KEY_H
-
#include <reg51.h>
-
#include "type.h"
-
#include "delay.h"
-
#include "led.h"
-
u8 Key_Scan(void);
-
#define KEY P1 //定义按键
-
sbit key1=KEY^0;
-
sbit key2=KEY^1;
-
sbit key3=KEY^2;
-
sbit key4=KEY^3;
-
sbit key5=KEY^4;
-
sbit key6=KEY^5;
-
sbit key7=KEY^6;
-
sbit key8=KEY^7;
-
#endif
Key.c文件代码:
-
#include "key.h"
-
/*
-
按键扫描函数
-
*/
-
u8 Key_Scan(void)
-
{
-
static u8 flag=0;
-
if((KEY!=0xFF)&&(flag==0)) //判断有没有按键按下
-
{
-
DelayMs(20); //消抖
-
flag=1; //标志按键已经被按下
-
if(key1==0)return 1;
-
if(key2==0)return 2;
-
if(key3==0)return 3;
-
if(key4==0)return 4;
-
if(key5==0)return 5;
-
if(key6==0)return 6;
-
if(key7==0)return 7;
-
if(key8==0)return 8;
-
}
-
else if(KEY==0xFF) //判断按键是否全部松开
-
{
-
flag=0; //清除按下标志位
-
}
-
return 0;
-
}
Led.h文件代码:
-
#ifndef LED_H
-
#define LED_H
-
#include <reg51.h>
-
#include "type.h"
-
#include "delay.h"
-
-
#define LED P0 //定义LED引脚
-
sbit LED1=P0^0;
-
sbit LED2=P0^1;
-
sbit LED3=P0^2;
-
sbit LED4=P0^3;
-
sbit LED5=P0^4;
-
sbit LED6=P0^5;
-
sbit LED7=P0^6;
-
sbit LED8=P0^7;
-
#endif
Type.h文件代码:
-
#ifndef TYPE_H
-
#define TYPE_H
-
typedef unsigned char u8;
-
typedef unsigned short u16;
-
typedef unsigned int u32;
-
#endif
文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaolong.blog.csdn.net/article/details/121016733
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)