打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
按键(独立按键、矩阵键盘)——附带程序_按键程序设计流程图_Guan

按键

  • 一、独立按键:
    • 简介:
    • 消抖:
    • 代码:
  • 二、矩阵键盘 :
    • 行列反转扫描法:
    • 按键对照表:
  • 三、矩阵键盘实验
    • 效果展示:
    • 仿真电路图:
    • 代码:

一、独立按键:

简介:

接触式按键,又叫轻触开关

接触式按键是靠机械的接触来实现开和关。这种接触方式存在接触不稳定的状态,即存在抖动。

该图为理想状态下的按键波形,无抖动

该图为实际中按键波形,存在抖动


一般抖动时间为10~20ms

消抖:

①硬件消抖:
成本高;影响产品集成度,一般不采用。

②软件消抖:
编程实现,不增加硬件成本,不影响产成品集成度。

代码:

void delay(int xms){  //延时函数    x ms
	unsigned int i, j;
	for(i=0; i<xms; ++i)
		for(j=0; j<110; ++j)
			;
}

void key(){
	if(key_down==0){  //第一次检测按下
		delay(20);  //一般延时20ms,进行消抖
		if(key_down==0){  //第二次检测按下,按键是真正的按下了
			.
			.   //按键处理
			.
		}
		while(!key_down);  //检测按键是否松开(弹起),按键松开则退出
	}
}

二、矩阵键盘 :

当按键较少时,可以采用独立按键,
但当需要多个按键时,接独立按键就会占用单片机珍贵的 I/O 资源,所以当需要大量按键时,常采用矩阵键盘。

矩阵键盘的检测方法有很多,本文介绍行列反转扫描法。

行列反转扫描法:

①先进行行扫描
P2 ^0 ~ P2 ^3 置低电平,P2 ^4 ~ P2 ^7置高电平,按键,保存 P0 口状态到 temp1

②再进行列扫描
P2 ^0 ~ P2 ^3 置高电平,P2 ^4 ~ P2 ^7置低电平,按键,保存 P0 口状态到 temp2

③计算
将 temp1 与 temp2 进行或运算,将结果 result 转化为 HEX 数据,在按键表中查询,确定是哪个按键按下


按键对照表:

手算真累!!!


三、矩阵键盘实验

效果展示:

51单片机 矩阵键盘 行列扫描法

仿真电路图:

简略仿真一下,接线粗糙,大神勿喷!!

代码:

#include<reg51.h>

typedef unsigned char uchar;
typedef unsigned int uint;

uchar code num[16]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x08, 0x03, 0x46, 0x21, 0x06, 0x0E};  // 0~f 字码

uchar code key_check[16]={0xEE, 0xDE, 0xBE, 0x7E, 0xED, 0xDD, 0xBD, 0x7D, 0xEB, 0xDB, 0xBB, 0x7B, 0xE7, 0xD7, 0xB7, 0x77};  // 按键检查表


void delay(int xms){  // 延时函数
	uint i, j;
	for(i=0; i<xms; ++i)
		for(j=0; j<110; ++j)
			;
}

void main(){

	uchar i, temp, result;

	P3 = 0xff;  // 未按键时,数码管不显示

	while(1){
	
		P2 = 0xf0;  // 行扫描

		if(P2 != 0xf0){

			delay(15);  // 延时消抖

			if(P2 != 0xf0){
				
				temp = P2;

				P2 = 0x0f;  //列扫描

				result = temp | P2;  //计算结果,与按键检查表对照

				for(i=0; i<16; ++i){  // 检查按键表, 找出是哪个按键按下
					if(result == key_check[i]){
						break;	// 保留 i 值
					}
				}
			}
			while(P2==0xf0)	 ;
				
			P3 = num[i];  // i 值对应 num 字码表的数
		}
	}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
矩阵键盘原理与结构
单片机4*4矩阵键盘-Changing's Blog
矩阵键盘C语言程序+电路图(51单片机)
51入门系列教程| 第一次被控制
【新提醒】基于proteus的51单片机仿真实例八十二、4X4矩阵键盘应用实例
一个51单片机的键盘扫描程序,算法简单有效
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服