DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 165|回复: 0
打印 上一主题 下一主题

SPMC65P2404A做行列式键扫描

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-29 17:35:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文主要介绍利用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 键盘扫描流程图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-11-26 19:36 , 耗时 0.107213 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表