概要
学习普中51单片机的独立按键模块
独立按键模块原理图

原理:
当按键按下时,串口接地线,表现为低电平,表示按键被按下。
使用方式
设置按键的对应的窗口,检测按键是否被按下,例如: key = P2^0;
基础练习
- 按下按键K1,使D1的灯光翻转
实现原理:设置K1的串口,通过串口的高低电平变化,设置对应灯光的效果(检测按键后注意软件消抖)
#include "reg52.h"
typedef unsigned int u16;
sbit key = P0^7;
sbit led = P2^0;
void Delay_10us(u16 ten_us)
{
while(ten_us--);
}
void main()
{
led = 1;
while(1)
{
if(key == 0) //检测按键是否被按下
{
Delay_10us(100); //按键消抖
if(key == 0)
{
led = ~led;
}
while(!key); //等待按键松开
}
}
}
扫描独立按键函数封装
#include "reg52.h"
typedef unsigned int u16;
sbit key1 = P2^0;
sbit key2 = P2^1;
sbit key3 = P2^2;
sbit key4 = P2^3;
sbit key5 = P2^4;
sbit key6 = P2^5;
sbit key7 = P2^6;
sbit key8 = P2^7;
u16 key;
//延时函数
void Delay_10us(u16 ten_us)
{
while(ten_us--);
}
u16 key_scan()
{
if(key1 == 0)
{
Delay_10us(1000); //软件消抖
if(key1 == 0)
{
key = 1; //将按键的值标记
}
while(!key1);
}
if(key2 == 0)
{
Delay_10us(1000); //软件消抖
if(key2 == 0)
{
key = 2; //将按键的值标记
}
while(!key2);
}
//.........封装此函数可以在后续代码中直接调用此方法获得按下的键值
return key;
}
void main()
{
while(1)
{
}
}
该封装函数可以直接调用获得对应的key值,并且做出其他的操作。
本文介绍了如何在51单片机中使用独立按键模块,包括原理阐述、设置按键窗口、基本练习(通过D1灯控制)以及扫描并封装多个按键的函数,以便于后续操作。
6319

被折叠的 条评论
为什么被折叠?



