关键词:SPMC65P2404A、行列式键扫描
1 引言
本系统应用凌阳科技8位工业级单片机SPMC65P2404A*28p做行列式键扫描,可作为用户设计参考。
2 芯片特性简介
SPMC65系列单片机是凌阳科技公司设计开发的8位工业级通用型单片机,具有超强的抗干扰能力,广泛应用于家用电器、工业控制、仪器仪表等控制领域。SPMC65P2404A单片机功能特点如下:
● SPMC65 CPU
- 支持 182 条指令
- 支持 11 种寻址方式
- 系统时钟频率最高可达 8MHz
- 支持位 *** 作指令(置 1 、清零、取反、测试)
● 存储空间
- 4K 字节的程序空间( OTP ),并且可设置保密功能。
- 192 字节的 RAM (含堆栈空间)
- 23/15 个具有复用功能的双向 I/O 端口
- 所有 I/O 端口的输入均由施密特触发器构成
- 可编程设置为带上拉 / 下拉电阻输入或者悬浮输入
- I/O 具备 LED 驱动能力
- 其中 2 个 I/O 端口能提供 20mA 的吸入电流
● 中断管理
- 外部中断选项:非屏蔽中断 NMI 或可屏蔽中断 IRQ
- 支持 4 个外部中断,其中的一个可设置为非屏蔽中断 NMI
- 12 个内部中断
● 复位管理
- 上电复位 (POR)
- 低电压复位 (LVR)
- 看门狗复位 (WDR)
- 外部复位 (ERST)
- 非法地址复位 (IAR)
● 时钟管理
- 3 种时钟源:晶体 / 陶瓷振荡器、 RC 振荡器、外部时钟输入
- 在 RC 振荡模式下,能够输出时钟信号
● 电源管理
- 2 种省电模式: STOP 模式、 HALT 模式
● 2 个外围模拟电路
- 8 通道 10 位精度的 A/D 转换器( 100KHz )
- 低电压复位( 2.5V/4V )
● 2 通道 8 位定时 / 计数器 (TImer0,TImer2)
- 定时、计数功能
- 捕获功能( 8 位脉宽测量)
- 8 位比较输出功能
● 2 通道 16 位定时 / 计数器 (TImer1,TImer3)
- 定时、计数功能
- 捕获功能( 8 位脉宽 / 周期测量,或 16 位脉宽测量)
- 16 位比较输出功能
- 12 位 PWM 输出功能
● 时基定时器
- 频率选择: 1KHz ~ 62.5KHz @8MHz
- 7 级分频选择
● 蜂鸣器输出
- 频率选择: 1KHz ~ 2MHz @8MHz
- 12 级分频选择
● 可编程看门狗定时器
- 中断频率选择: 1.5Hz ~ 195Hz
● 串行总线接口
- SPI 总线频率:最高为 2MHz @8MHz
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条)