控制/MCU
1 引言
本系统应用凌阳科技8位工业级单片机SPMC65P2404A*28p做行列式键扫描,可作为用户设计参考。
2 芯片特性简介
SPMC65系列单片机是凌阳科技公司设计开发的8位工业级通用型单片机,具有超强的抗干扰能力,广泛应用于家用电器、工业控制、仪器仪表等控制领域。SPMC65P2404A单片机功能特点如下:
● SPMC65 CPU |
● 电源管理 ● 2 个外围模拟电路 ● 2 通道 16 位定时 / 计数器 (Timer1,Timer3) ● 时基定时器 ● 蜂鸣器输出 |
3 系统总体方案介绍
本例采用芯片SPMC65P2404A*28p,外接4X4按键,当按键被按下后,相应的发光二极管便会被点亮来指示当前的键值。系统框图如图3-1所示。
图 3-1系统框图
原理图如图3-2所示,4行4列的键盘。PA口接4X4按键,PC3~PC0分别接4个发光二极管指示当前的按键值。图中电阻均为510欧。
图 3-2 4X4按键扫描原理图
PA3~PA0为行线输入端,初始化为带上拉电阻的输入口。
PA7~PA4为列线输出端,初始化为输出低电平。
PC3~PC0接4个发光二极管用做指示灯,其16种组合0000~1111分别表示键K0~K15被按下。
扫描方法:首先由输出口PA7~PA4向所有的列线输出低电平,读取各行线PA3~PA0的状态,若行线状态全为高电平,则表明无键按下,若行线状态中有低电平,则表明有键按下。若有键按下,先进行消抖,消抖结束,再对每一列进行扫描,即:PA7~PA4四条列扫描线分别输出低电平,在每次输出低电平期间,读取各行线PA3~PA0的状态,确定键值。例如:PA7~PA4输出"1011",此时若读取PA3~PA0的状态为"1110",则表明按键S2被按下。
扫描时序如图 3-3所示。K0表示列线全部为低电平时行线的状态;
图 3-3 按键扫描时序图
K1表示列线PA4为低电平时行线的状态,用于判断按键S0、S4、S8、S12的状态;
K2表示列线PA5为低电平时行线的状态,用于判断按键S1、S5、S9、S13的状态;
K3表示列线PA6为低电平时行线的状态,用于判断按键S2、S6、S10、S14的状态;
K4表示列线PA7为低电平时行线的状态。用于判断按键S3、S7、S11、S15的状态。
键值计算方法:
设置一个变量,高4位放列扫描线控制字,低4位放行扫描线状态字。按键S0~ S15分别对应不同的变量值,因而可以根据变量值确定当前的按键值。消抖方法:
在按键闭合和打开的瞬间会产生许多尖脉冲,持续时间约几毫秒到几十毫秒。因而在程序中,当检测到按键被按下后,便开始读取键值,每隔4ms读一次键值,直到连续7次读取的键值完全相同,则认为抖动已经消除。消抖时间为4ms X 7=28ms。
注意:本范例只响应单个按键,若同时按下两个或两个以上的按键,则程序不响应。
4 系统软件设计
4.1 主流程
程序主流程如图4-1所示。主程序每隔4ms扫描一次键盘,若有按键被按下,则点亮或熄灭相应的指示灯来指示键值。
图4-1 键盘主流程图
4.2 键盘扫描子流程
键盘扫描流程图如图4-2所示。
图4-2 键盘扫描流程图
全部0条评论
快来发表一下你的评论吧 !