摘 要:
单片机应用技术被广泛应用于各种智能控制系统中,是电子信息类专业学生必修的一门专业课。在单片机端口信息输入模块中,按键是主要元器件之一,笔者主要介绍矩阵键盘的电路设计及控制程序编写,分析了单片机端口连接按键的电路形式以及一个并行 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
端口的应用方法,提高自身编程能力。