SPMC65P2404A做行列式键扫描

控制/MCU

1879人已加入

描述

本文主要介绍利用SPMC65P2404A单片机做行列式键扫描的处理,可作为用户系统设计的参考。
关键词:SPMC65P2404A、行列式键扫描

1 引言

  本系统应用凌阳科技8位工业级单片机SPMC65P2404A*28p做行列式键扫描,可作为用户设计参考。

2 芯片特性简介

  SPMC65系列单片机是凌阳科技公司设计开发的8位工业级通用型单片机,具有超强的抗干扰能力,广泛应用于家用电器、工业控制、仪器仪表等控制领域。SPMC65P2404A单片机功能特点如下:

● SPMC65 CPU
  - 支持 182 条指令
  - 支持 11 种寻址方式
  - 系统时钟频率最高可达 8MHz
  - 支持位操作指令(置 1 、清零、取反、测试)
 
● 存储空间
  - 4K 字节的程序空间( OTP ),并且可设置保密功能。
  - 192 字节的 RAM (含堆栈空间)
 
● I/O 端口
  - 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 键盘扫描流程图

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分