当前位置: 首页 > news >正文

广东网站开发公司网店运营计划书

广东网站开发公司,网店运营计划书,移动互联网站开发与维护招聘,任丘网站建设公司矩阵按键通常是为了节省IO口而设计的,当有多个按键时,如果每个按键都单独接一个IO口,会占用太多资源。所以采用矩阵排列,比如4x4的矩阵,只需要8个IO口(4行4列),可以支持16个按键&…

矩阵按键通常是为了节省IO口而设计的,当有多个按键时,如果每个按键都单独接一个IO口,会占用太多资源。所以采用矩阵排列,比如4x4的矩阵,只需要8个IO口(4行+4列),可以支持16个按键,这样效率更高。

一、矩阵按键原理

矩阵按键主要是通过逐列或者逐行的方式进行扫描输出低电平,检测列(或行)输入状态。当某行被激活时,若某列检测到低电平,则对应交叉点的按键被按下。

1.扫描过程

  • 步骤1:行线设置为输出模式,列线设置为输入模式(带内部或外部上拉电阻)。

  • 步骤2:逐行拉低每一行(如Row1拉低,其他行置高),读取列线状态。

  • 步骤3:若某列为低电平,则确定按键位置(如Row1+Column2对应按键5)。

  • 步骤4:循环扫描所有行,完成一轮检测。

2.按键消抖

当按键被按下时,我们可以通过延时函数来进行对按键的消抖,可以选择10~20ms的延时进行消抖,避免误触发的现象。

3.原理图

二、代码演示

#include <REGX52.H>
#include "Delay.h"/*** @brief 矩阵按键按下所显示的数字* @param  无* @retval KeyNum显示1~16*///矩阵按键进行逐列扫描
unsigned char MatrixKey(void)
{unsigned char KeyNum = 0;P1 = 0xFF;//P1置高电平有效P1_3 = 0;if(P1_7 == 0){	Delay(20);//消抖while(P1_7==0);//检测松手Delay(20);KeyNum = 1;}if(P1_6 == 0){	Delay(20);while(P1_6==0);Delay(20);KeyNum = 5;}if(P1_5 == 0){	Delay(20);while(P1_5==0);Delay(20);KeyNum = 9;}if(P1_4 == 0){	Delay(20);while(P1_4==0);Delay(20);KeyNum = 13;}P1 = 0xFF;P1_2 = 0;if(P1_7 == 0){	Delay(20);while(P1_7==0);Delay(20);KeyNum = 2;}if(P1_6 == 0){	Delay(20);while(P1_6==0);Delay(20);KeyNum = 6;}if(P1_5 == 0){	Delay(20);while(P1_5==0);Delay(20);KeyNum = 10;}if(P1_4 == 0){	Delay(20);while(P1_4==0);Delay(20);KeyNum = 14;}P1 = 0xFF;P1_1 = 0;if(P1_7 == 0){	Delay(20);while(P1_7==0);Delay(20);KeyNum = 3;}if(P1_6 == 0){	Delay(20);while(P1_6==0);Delay(20);KeyNum = 7;}if(P1_5 == 0){	Delay(20);while(P1_5==0);Delay(20);KeyNum = 11;}if(P1_4 == 0){	Delay(20);while(P1_4==0);Delay(20);KeyNum = 15;}P1 = 0xFF;P1_0 = 0;if(P1_7 == 0){	Delay(20);while(P1_7==0);Delay(20);KeyNum = 4;}if(P1_6 == 0){	Delay(20);while(P1_6==0);Delay(20);KeyNum = 8;}if(P1_5 == 0){	Delay(20);while(P1_5==0);Delay(20);KeyNum = 12;}if(P1_4 == 0){	Delay(20);while(P1_4==0);Delay(20);KeyNum = 16;}return KeyNum;
}
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"unsigned char KeyNumber;void main()
{LCD_Init();LCD_ShowString(1,1,"Show_KeyNumber:");while(1){KeyNumber = MatrixKey();if(KeyNumber)//判断按键按下{LCD_ShowNum(2,1,KeyNumber,2);}}
}

当矩阵按键被按下时,会显示该行该列对应的数字 

 

http://www.dtcms.com/a/542374.html

相关文章:

  • 网站备案注意网站分为
  • 菠菜网站如何做推广wordpress中常用插件安装包
  • HTML基础语法
  • 网站建设发布雅安移动网站建设
  • 王梓同亮相IMX国际音乐季,畅谈音乐创作理念
  • 企业网站管理百度网站打开
  • Hive安装部署
  • 初始网络通信
  • 从MSF载荷生成到Windows防火墙绕过
  • 成品网站设计网站网站设计优缺点
  • 广州建设工程交易中心网站软件定制网站优化 seo一站式
  • orchestrator Web API
  • 营销型网站免费企业网站模版单页网站seo如何优化
  • MySQL之慢查询sql排查及优化
  • 如何实现企业网站推广的系统性哪家公司做跳转网站
  • Redis Cluster集群理论
  • 广州网站开发定制设计北京做网站的大公司
  • 求个网站你会感谢我的西安大雁塔高多少米
  • 59网站一起做网店电商详情页设计思路
  • 网站建设预算表样本wordpress 上一篇 下一篇
  • 江西 网站 建设 开发永辉企业微信app下载安装
  • 提升学历是什么意思百度地图优化
  • 竹子林网站建设php网站开发实践指南
  • 【测试理论和实践 4.测试用例】
  • Java—接口
  • 移动网站源码兰州需要做推广的公司
  • 公司架设网站费用怎么做分录自学it怎么入门
  • 不用代码做网站杭州品牌网站设计
  • 商城建站模板广州从化建设网站官网
  • 免费的游戏网站建设建网站软件工具