基于单片机技术的按键扫描电路分析

摘 要: 单片机应用技术被广泛应用于各种智能控制系统中,是电子信息类专业学生必修的一门专业课。在单片机端口信息输入模块中,按键是主要元器件之一,笔者主要介绍矩阵键盘的电路设计及控制程序编写,分析了单片机端口连接按键的电路形式以及一个并行 IO 端口控制矩阵键盘的算法程序。所分析的软硬件系统,可用于学生自学参考资料,有助于学生进一步理解与学习。
关键词: 单片机;矩阵电路;程序
单片机应用技术是高职院校电子信息类专业课程之一。单片机是把 CPU 、存储器、中断系统、输入输出接口电路等集成在一块硅片上的微型计算机,有 4 位、 8 位、 16 位等。在工业控制领域广泛应用,如机器人应用、校园门禁系统、空调面板控制等。本文主要分析 STC89C51 单片机,它是一款 8 位单片机处理芯片,单片机端口按键电路设计,一般有独立按键、矩阵键盘,独立按键应用于按键数量较少的系统,矩阵键盘应用于按键数量较多的系统,如计算器应用电路。下面主要分析矩阵按键硬件电路及软件算法。

1 矩阵按键电路设计

按键是电子电路实验常用元器件之一,种类较多,应用于单片机外围接口复位电路、外部中断信号输入电路等。能仿真的集成开发平台中大部分都含有按键。单片机系统常用Proteus 仿真软件设计硬件电路,共 16 个按键,采用 4 4列模式,按键一端共行,另外一端共列,使用单片机 P3 端口连接行和列,低四位控制行,高四位控制列 。每个按键可代表任意需要显示的字符。具体电路如图 1 所示。
为显示按键值,本系统采用 LCD1602 液晶显示屏作为显示器件。LCD1602 为字符型液晶屏,共 2 行,每行可显示16 个字符 。控制端口连接单片机 P2^0 P2^1 P2^2 三个引脚,数据端 D0 D7 连接单片机 P1 端口,由于是仿真电路 LCD1602 电源端电路省略。具体电路如图 2 所示。

2 矩阵按键电路驱动程序分析

矩阵按键扫描算法较多,本文介绍其中的一种。单片 机 启 动 后 主 程 序 工 作 流 程: 首 先 初 始 化 LCD1602 ,然 后 调 用 按 键 扫 描 子 函 数, 如 有 按 键 按 下 进 行 显示 。按键值可以初始化为二维数组 a[4][4]={{ 1 ’, 4 , 7 , # },{ 2 , 5 , 8 , 0 } , {‘ 3 , 6 , 9 , * },{ A , B , C , D }} 。按键扫描子函数,首先假设 P3=0XF0 ,即高四位等于 1 ,低四位等于 0 ,经查看电路,可验证, 147# 任意一个按键按下,P3^4 将会变为低电平; 2580 任何一个按键按下, P3^5 会变为低电平;369* 任意一个按键按下, P3^6 将会变为低电平;ABCD 任意一个按键按下, P3^7 将会变为低电平。因此,当 P3=0XF0,只要有按键按下,读取 P3 端口值,就能确定是哪一行。同理,假设 P3=0X0F ,按照上述算法,能够确定列值。
按键扫描函数如下:
keyscan()
{ unsigned char h,l,key;
if(P3!=0x0f)
{
switch(P3&0x0f)
{
case 0x0e:l=0;break;
case 0x0d:l=1;break;
case 0x0b:l=2;break;
case 7:l=3;break;
}
P3=0xf0;
switch(P3&0xf0)
{
case 0xe0:h=0;break;
case 0xd0:h=1;break;
case 0xb0:h=2;break;
case 0x70:h=3;break;
}
key=a [h][l];
}
else
key=0;
return (key);
}
运行显示界面如图 3 所示。

3 结 语

近年来,仿真技术发展快速,在专业模拟教学、实践教学中应用广泛,推动了教育教学改革。本文采用 51 单片机分析了按键扫描电路,利用硬件仿真平台设计了矩阵按键电路,分析了其设计原理及程序算法,有助于帮助学生自主学习单片机 IO 端口的应用方法,提高自身编程能力。

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

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

相关文章

python-20-零基础自学python-用类和while设计一个掷多次、多面骰子的工具的基础

学习内容:《python编程:从入门到实践》第二版 知识点:类、random、while循环、把while循环和类结合起来 练习内容: 练习9-13:骰子 创建一个Die类,它包含一个名为sides的属性,该属性的默认值…

汽车电子行业知识:什么是电子后视镜

文章目录 1.什么是电子后视镜2.有哪些汽车用到了电子后视镜3.电子后视镜的原理及算法4.电子后视镜的优点5.电子后视镜的未来市场将继续增长 1.什么是电子后视镜 电子后视镜是一种集成了电子元件和显示屏的汽车后视镜,用于替代传统的机械后视镜。它通过内置的摄像头捕…

数字信号处理实验一(离散信号及离散系统的MATLAB编程实现)

实验要求: 离散信号及离散系统的MATLAB编程实现(2学时) 要求: 编写一程序,输出一定长度(点数),具有一定幅度、(角)频率和初始相位的实(或复&…

grpc学习golang版( 一、基本概念与安装 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、基本介绍1.1 什么是rpc1.2 什么是grpc1.3 grpc的作用1.4 grp…

PG备份与恢复

一、开启WAL归档 1、创建归档目录 我们除了存储数据目录pgdata之外,还要创建backups,scripts,archive_wals文件 mkdir -p /home/mydba/pgdata/arch mkdir -p /home/mydba/pgdata/scripts mkdir -p /home/mydba/backups chown -R mydba.myd…

docker网络功能介绍

一、 网络启动过程二、 修改容器dns和主机名① 临时处理(容器终止或重启后不会保存)② 通过参数指定 三、 容器内访问控制① 容器访问外部网络② 容器间互相访问(1)访问所有端口(2)访问指定端口 四、 docke…

SpringDataJPA系列(1)JPA概述

SpringDataJPA系列(1)JPA概述 SpringDataJPA似乎越来越流行了,我厂的mysql数据库和MongoDB数据库持久层都依赖了SpringDataJPA。为了更好的使用它,我们内部还对MongoDB的做了进一步的抽象和封装。为了查漏补缺,温故而知新,整理下…

统计分析利器:深入解读卡方检验与单因素方差分析的应用案例【练习题】

一、卡方检验 1.对400人进行问卷调查,询问对于教学改革的看法,调查结果如下表所示,请问不同学科不同性别的人意见是否相同。 学科 男生 女生 工科 80 40 理科 120 160 (性别,学科均无序分类>卡方检验&am…

grpc学习golang版( 二、入门示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、环境二、编写protobuf文件三、编写server服务端四、编写Clie…

前端路由管理

前端路由管理简介: 当谈到前端路由管理时,通常指的是在单页面应用程序(SPA)中管理页面间导航和URL的过程。路由管理器是一个工具,可以帮助前端开发者定义应用程序的不同视图之间的关系,同时能够响应URL的改…

Uboot重定位

Uboot重定位 一、重定位的意义二、介绍一些重定位相关的表项结构(节)三、uboot的重定位过程:一、重定位的意义 uboot的重定位有两次,第一次是在编译成镜像后,在makefile中调用进行处理的,其调用tools/riscv_prelink.c的代码进行重定位处理(主要就是对重定位表中的R_RIS…

如何快速使用JNI

文章目录 1_JNI是什么?2_使用3_扩展 1_JNI是什么? JNI 是Java Native Interface的缩写,通过JNI,允许Java代码与其他语言(通常是C或C)编写的本地应用程序或库进行交互。简而言之就是,Java可以通…

VUE的快速使用

使用步骤 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&…

ctfshow-web入门-命令执行(web56、web57、web58)

目录 1、web56 2、web57 3、web58 1、web56 命令执行&#xff0c;需要严格的过滤 新增过滤数字&#xff0c;只能采用上一题临时文件上传的方法&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

技术周总结2024.06.17~06.23(Doris数据库)

文章目录 一、06.18 周二1.1&#xff09; 问题01&#xff1a; doris数据表写入使用 stream load好还是 inser into好 一、06.18 周二 1.1&#xff09; 问题01&#xff1a; doris数据表写入使用 stream load好还是 inser into好 对于Doris数据表的写入操作&#xff0c;通常推荐…

2024-6-29 石群电路-33

2024-6-29&#xff0c;星期六&#xff0c;17:23&#xff0c;天气&#xff1a;雨转多云&#xff0c;心情&#xff1a;晴。经历了两周的雨天&#xff0c;今天终于见点儿阳光啦&#xff0c;虽然有点热&#xff0c;但是心情更好了&#xff0c;上午去给用了三年的电脑做了清灰换硅脂…

【python - 数据】

一、序列 序列&#xff08;sequence&#xff09;是一组有顺序的值的集合&#xff0c;是计算机科学中的一个强大且基本的抽象概念。序列并不是特定内置类型或抽象数据表示的实例&#xff0c;而是一个包含不同类型数据间共享行为的集合。也就是说&#xff0c;序列有很多种类&…

Ubuntu22.04 源码安装 PCL13+VTK-9.3+Qt6,踩坑记录

Ubuntu 22.04LTS;cmake-3.25.0;VTK-9.3;PCL-1.13;Qt6.6 PCL可以通过 apt 命令直接安装(sudo apt install libpcl-dev),apt 命令安装的 VTK 是简略版,没有对 Qt 支持的包,所以笔者使用源码安装 PCL 和 VTK。 1. 安装 VTK 1) 安装 ccmake 和 VTK 依赖项: sudo apt-g…

Stylized Modular Character (Female)(程式化的模块化角色(女性)“运动型”)

一套程式化的角色模块化部件。 在这样的插槽中定制&#xff1a; 头 躯干 手 裤子 靴子 头发 每个插槽都有 2 到 5 个在 URP 中工作的 PBR 材料的选项。 该项目基于官方 Unity Standard Assets 包中的 Ethan 默认角色。 不包含动画。 皮肤网格的 SSS 是由自发光贴图伪造的。 如果…

怎样查看自己的Windows电脑最近弄了哪些内容

一、需求说明 有时候我们的电脑别人需要使用&#xff0c;你不给他使用又不行&#xff0c;且你也不在电脑身边&#xff0c;你只能告诉他自己的电脑密码让他操作&#xff0c;此时你并不不知道他操作了哪些内容。 还有一个种情况是自己不在电脑旁边&#xff0c;且电脑没有锁屏&…