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

摘 要: 单片机应用技术被广泛应用于各种智能控制系统中,是电子信息类专业学生必修的一门专业课。在单片机端口信息输入模块中,按键是主要元器件之一,笔者主要介绍矩阵键盘的电路设计及控制程序编写,分析了单片机端口连接按键的电路形式以及一个并行 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 ,然 后 调 用 按 键 扫 描 子 函 数, 如 有 按 键 按 下 进 行 显示 。按键值可以初始化为二维数组 a44={{ ' 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 hl;
}
else
key=0;
return (key);
}
运行显示界面如图 3 所示。

3 结 语

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

相关推荐
蓝斯4971 天前
从.到实现一个Windows上的虚拟hid键盘设备
windows·单片机·计算机外设
熙芯XiChip1 天前
硬实时与软实时RTOS核心区别
嵌入式硬件
伟大的前程1 天前
unsigned int 定义的变量 在 电脑的 64 位系统中 和 32 位 cortex-m0 和 8 位的 51 单片机
单片机·嵌入式硬件
小渔村的拉线工1 天前
1.HPM6E80 解析芯片整体工作原理和存储架构
单片机·嵌入式硬件·mcu·架构·hpm6e80
熙芯XiChip1 天前
CAN与CANopen的本质区别
单片机
lilihewo1 天前
Altium Designer 封装库的创建(分享pcb 3D封装库)
嵌入式硬件·51单片机
神罚天下ET1 天前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
碧海银沙音频科技研究院1 天前
蓝牙耳机使用WSDF5361锂保芯片进入船运模式实现方法
嵌入式硬件·算法
Zevalin爱灰灰1 天前
模拟信号链电路——基于TL431的电压基准电路
单片机·嵌入式硬件
csdn杰哥1 天前
瑞萨单片机开发教程[二十七] DTC 外部中断触发传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5