矩阵式键盘的控制

       键盘扫描是最 为常用的工作方式,扫描方式又可分为程序程扫描、定时扫描和中断扫描。程序扫描是指在 特定的程序位置段上安排键盘扫描程序读取键盘状态。定时扫描是指利用单片机内部或扩展 的定时器产生定时中断,在中断中进行键盘扫描的工作方式。中断扫描指有按键按下时,键
盘电路发出中断申请,中断程序负责扫描键盘的工作方式。程序扫描和定时扫描电路结构完 同,只是在程序设计实际上有差别。不论哪一种扫描方式,键盘程序都应当完成,判断 键是否被按下、按键削抖处理、按键定位等操作键盘。
扫描法实际上是先使列(行)线全输出低电平,然后判断行(列)线状态 ,若行线全为
高电平,表示无键被按下;若行线不全为高电平表示有键被按下,然后依次使列线为低电平,
再判断行线状态,当行线全为高电平时,表示被按下的键不在本列;当行线不全为高电平时,
表示被按下的键在本列,把此时的行线状态与列线状态和在一起即为被按下的键的位置
1 )检测出是否有键铵下。方法是 P1.4 P1.7 输出全 1 ,然后读 P1.0 P1.3 的状态,若
为全 1 则无键闭合,否则表示有键闭合。
2 )有键闭合后,调用 10 20ms 延时子程序消除按键抖动的影响。
3 )确认键已稳定闭合后,接着判断为哪一个键闭合。方法是对键盘进行扫描,即依次
给每一条列线送 0 ,其余各列都为 1 ,并检测每次扫描的行状态。每当扫描输出某一列为 0
时,相继读入行线状态。若为全 1 ,表示为 0 的这列上没有键闭合。若不为全 1 ,表示为 0
的这列上有键闭合。确定了闭合键的位置后,就可计算出键值,即产生键码
     为了避免cpu无效运行,可引入中断。利用中断方式,无键按下时,CPU 处理其他工作而不必进行键的扫描;有键被按下时,
通过硬件电路向 CPU 申请键盘中断,在键盘中断服务程序中完成键盘处理。这样可提高 CPU
的工作效率
扫描法对键的识别采用逐行(列)扫描的方法获得键的位置,当被按下的键在最后一行
时需要扫描 N 次( N 为行数),当 N 比较大时键盘工作速度较慢,而线反转法则不论键盘有
多少行和多少列只需经过两步即可获得键的位置,下面详细说一下反转法扫描键盘的算法
线反转法的第一步是把列线置低电平,行置高电平然后
读行状态;第二步与第一步相反把行线置低电平,列线置高电平然后读列线状态,若有键按
下则两次所读状态的结果即为键所在的位置。这样通过两次输出和两次读入可完成键的识别,
比扫描法要简单

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/320578.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国产业园运营排名前十!树莓集团助推载体运营高质量发展

树莓集团,作为数字产业生态链的杰出建设者,以及在全国产业园运营中名列前茅的领航者,其独特的集团核心文化——高效、友善、敢为,成为了推动其不断前行的强大动力。树莓集团深谙在数字化时代,政、产、企、校四个板块之…

硬件设计 之 压敏电阻简单介绍

1. 什么是压敏电阻(Varistor Voltage): 压敏电阻(Varistor)是一种特殊类型的电阻器件,具有非线性电阻特性。它的主要作用是保护电子电路免受过电压或过电流的损害。 测定电流为1mA,此时TNR端子…

纯血鸿蒙APP实战开发——页面间共享组件实例的案例

介绍 本示例提供组件实例在页面间共享的解决方案:通过Stack容器,下层放地图组件,上层放Navigation组件来管理页面,页面可以共享下层的地图组件,页面中需要显示地图的区域设置为透明,并参考触摸交互控制&am…

HTML_CSS学习:定位

一、相对定位 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>相对定位</title><style>.outer{width: 500px;background-color: #999ff0;border: 1px solid #000;p…

BEV下统一的多传感器融合框架 - FUTR3D

BEV下统一的多传感器融合框架 - FUTR3D 引言 在自动驾驶汽车或者移动机器人上&#xff0c;通常会配备许多种传感器&#xff0c;比如&#xff1a;光学相机、激光雷达、毫米波雷达等。由于不同传感器的数据形式不同&#xff0c;如RGB图像&#xff0c;点云等&#xff0c;不同模态…

【Docker学习】docker start深入研究

docker start也是很简单的命令。但因为有了几个选项&#xff0c;又变得复杂&#xff0c;而且... 命令&#xff1a; docker container start 描述&#xff1a; 启动一个或多个已停止的容器。 用法&#xff1a; docker container start [OPTIONS] CONTAINER [CONTAINER...] 别名&…

标准IO学习

思维导图&#xff1a; 有如下结构体 struct Student{ char name[16]; int age; double math_score; double chinese_score; double english_score; double physics_score; double chemistry_score; double bio_score; }; 申请该结构体数组&#xff0c;容量为5&#xff0c;初始…

Android手写自己的路由SDK

实现自己的路由框架 ​ 在较大型的Android app中常会用到组件化技术&#xff0c;针对不同的业务/基础功能对模块进行划分&#xff0c;从上到下为壳工程、业务模块、基础模块。其中业务模块依赖基础模块&#xff0c;壳工程依赖业务模块。同级的横向模块&#xff08;比如多个业务…

小微公司可用的开源ERP系统

项目介绍 华夏ERP是基于SpringBoot框架和SaaS模式的企业资源规划&#xff08;ERP&#xff09;软件&#xff0c;旨在为中小企业提供开源且易用的ERP解决方案。它专注于提供进销存、财务和生产功能&#xff0c;涵盖了零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询…

【SpringMVC 】什么是SpringMVC(二)?如何整合ssm框架以及使用mybatisPlus?

文章目录 SpringMVC第三章1、ssm整合1、基本步骤1-3步4-5步6步7步8-12步13步14-15步2、添加数据3、删除数据4、配置事务5、修改数据2、pageHelpe分页1、基本步骤第四章1、mybatisPlus1、基本步骤1-45-7892、基本方法的使用查询2、新ssm项目1、基本步骤1-5678-910-111213-15Spri…

[C++][数据结构]红黑树的介绍和模拟实现

前言 之前我们简单学习了一下搜索树和平衡搜索树&#xff0c;今天我们来学习一下红黑树 简介 概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着…

数据结构学习/复习8--树与二叉树的概念与基本性质练习

一、树 1.概念 2.树的表示 二、二叉树 1.二叉树的概念 2.与性质相关的题

有什么方便的教学口语软件?6个软件教你快速练习口语

有什么方便的教学口语软件&#xff1f;6个软件教你快速练习口语 以下是六个方便实用的教学口语软件&#xff0c;它们可以帮助您快速练习口语&#xff1a; AI外语陪练: 这是一款知名的语言学习软件&#xff0c;提供多种语言的口语练习课程。它采用沉浸式的学习方法&#xff0…

【iOS】NSOperation、NSOperationQueue

文章目录 前言一、NSOperation、NSOperationQueue 简介二、NSOperation、NSOperationQueue 操作和操作队列三、NSOperation四、NSOperationQueue五、NSOperationQueue 控制串行执行、并发执行六、 NSOperation 操作依赖七、NSOperation 优先级八、NSOperation、NSOperationQueu…

【python】基础语法

目录 一.注释和常见规则 二.变量及类型 1.数据类型 2.Numbers数字数据类型 3. 字符串类型 &#xff08;1&#xff09;字符串访问 &#xff08;2&#xff09;字符串拼接 4.List&#xff08;列表&#xff09;类型 &#xff08;1&#xff09; 定义 &#xff08;2&#…

STM32开启停止模式,用外部中断唤醒程序运行

今天学习了一下STM32的停止模式&#xff0c;停止模式下&#xff0c;所有外设的时钟和CPU的电源都会被关闭&#xff0c;所以会很省电&#xff0c;打破这种停止模式的方式就是外部中断可以唤醒停止模式。要想实现这个功能&#xff0c;其实设置很简单的&#xff0c;总共就需要两步…

websevere服务器从零搭建到上线(四)|muduo网络库的基本原理和使用

文章目录 muduo源码编译安装muduo框架讲解muduo库编写服务器代码示例代码解析用户连接的创建和断开回调函数用户读写事件回调 使用vscode编译程序配置c_cpp_properties.json配置tasks.json配置launch.json编译 总结 muduo源码编译安装 muduo依赖Boost库&#xff0c;所以我们应…

五月节放假作业讲解

目录 作业1&#xff1a; 问题&#xff1a; 结果如下 作业2&#xff1a; 结果: 作业1&#xff1a; 初始化数组 问题&#xff1a; 如果让数组初始化非0数会有问题 有同学就问了&#xff0c;我明明已经初始化定义过了&#xff0c;为啥还有0呀 其实这种初始化只会改变第一个…

Fluent 区域交界面的热边界条件

多个实体域公共交界面的壁面&#xff0c;Fluent 会分拆为 wall 和 wall-shadow 的两个壁面&#xff0c;两者为配对关系&#xff0c;分别从属于一个实体域。 配对面可使用热通量、温度、耦合三类热边界条件&#xff0c;前两者统称为非耦合热边界条件。 耦合为配对面默认的热边界…

MYSQL基础架构、执行过程分析、事务的实现、索引的选择、覆盖索引

本文是mysql45讲的1-5的总结 文章目录 基础架构连接器分析器优化器执行器SQL查询执行过程详细执行步骤 SQL更新执行过程重要的日志模块&#xff1a;redo log重要的日志模块&#xff1a;binlog阶段性提交 事务事务隔离的实现启动 索引数据库索引模型InnoDB索引组织结构主键选择…