我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1115|回复: 1

基于S3C44BOX的键盘接口设计 - 消费电子 - 电子工程师俱乐部

[复制链接]

该用户从未签到

1万

主题

1424

回帖

3万

积分

管理员

积分
32023

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:52:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
<strong>1 引言</strong>

键盘越来越广泛地应用于嵌入式系统中。不同的应用领域键盘扫描方式的设计也各不相同,一般有以下=三种:①软件方法来实现对键盘的扫描。②采用专用芯片实现对键盘的扫描。这是嵌入式系统中设计键盘普遍使用的方法。常用的键盘控制芯片有zl97289A等。这些芯片的内部集成了键盘的驱动电路。配合一定的软件设计即可使用。③与方式②相仿,由于按键的状态变化体现在电平高低的变化,因此通过I/O口模拟键盘的驱动信号也可实现键盘的控制。

随着芯片技术的发展,处理器内部的资源越来越丰富。如韩国三星半导体公司的32位ARM处理器S3C44BOX芯片.其内部集成了外部存储器控制器、LCD控制器、4个DMA通道、2通道异步UART单元、1个同步串行口(SIO),1个多主I2C总线控制器、1个I2S总线控制器。5通道PWM定时器及1个内部定时器、71个通用I/O、8个外部中断源、实时时钟、8通道10位ADC等。由于其内部丰富的I/O口及I/O口扩展,可以通过S3C44BOX的I/O 口模拟键盘的驱动信号实现键盘的控制。

<strong>2 键盘工作原理</strong>

嵌入式系统中应用较多的为矩阵键盘.现以4x4的矩阵键盘为例,说明其下作原理。,4x4行、列结构的16按键矩阵键盘由行线和列线组成。按键位于其行列的交叉点上。结构图如图1所示。要与4x4的矩阵键盘接口,最多需要16根口线,为节省口线。在此选择“键盘循环扫描”方法来检测键盘.采用此方法只需8根口线。

按键设置在行、列交叉点上,行、列分别连接到按键开关的两端。行线通过上拉电阻接到+5V上。平时无按键动作时.行线电平状态将由通过此按键的列线电平决定:列线电平如果为低.行线电平为低;列线电平如果为高,则行线电平亦为高。因各按键之间相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。


<ignore_js_op>





2010-5-4 15:37:37 上传
<strong>下载附件</strong> (4.48 KB)




</ignore_js_op>

图1 矩阵式键盘结构

矩阵键盘循环扫描的识别方法,分两步进行:①识别键盘哪一行的键被按下。让所有列线均为低电平,检杳各行线电平是否为低。如果有行线为低,则说明该行有键被按下,否则说明无键被按下。②如果某行有键被按下。识别键盘哪一列的键被按下(亦称之为扫描法)。逐列置低电平,并置其余各列为高电平,检查各行线电平的变化。如果行电平变为低电平.则可确定此行此列交叉点处按键被按下。

<strong>3 S3C44BOX与键盘硬件接口电路</strong>

S3C44BOX核心ARM板具有71个多功能输入/输出脚,包含在以下7组端口中:1个lO位输出端口 A、1个11位输出端口B、1个16位输入/输出端口c、2个8位输入/输出端口D和G、2个9位输入/输出端口E和F。从端口A~G的功能描述看出.在一般的应用中,PA作为地址线使用;PB作为板块bank选择线和SDRAM的接口线使用;PC可以作为数据线、I2S接口、或LCD数据线等使用;在系统具备LCD的情况下,PD主要作为LCD的信号线使用;PE可以作为串口信号线和定时器输出使用;PF和PG则是多功能I/O口。在ARMsys平台中,很多端口线已被指定了一定的作用,例如PA,PB,PC,PD等;再者PF口集中分布在芯片右侧引脚上,便于硬件连接。因此,在此选取PF口作为检测键盘端口,并设定PF0~PF3为输出扫描码的端口,PF4~PF7为键值读入口。

<strong>4 系统的软件设计</strong>

键盘的扫描程序采用C语言编写。主要由三个部分组成:与S3C44BOX硬件有关的初始化程序、应用主程序、读键子程序。在编写与S3C44BOX硬件有关的初始化程序时主要是对S3C44BOX内部各寄存器进行初始化.首先通过设置PCONF(端口配置)寄存器,来实现端口功能配置。然后再分别设置PDATF(端口数据)及PUPF(端口上拉设置)寄存器。初始化设置程序如下:

//设置PF0~3为输出口(列线),PF4~7位输入口
rfPCONF = Ox55:
//设置PF0~3作为输出口输出扫描码
rPDATF = 0xf0;//PFO~3全写入0
//设置PF4~7作为输入口读入键值
Keyvalue = (rPDATF&Oxf0)>>4;
//设置内部上拉电阻
rPUPF = OxOO.//使能PFO~7的内部上拉电阻

主程序以一定的时间间隔反复调用读键字程序.从而实时响应键入。主、子程序流程图如图2、3所示。


<ignore_js_op>





2010-5-4 15:37:38 上传
<strong>下载附件</strong> (3.14 KB)




</ignore_js_op>

图2 主程序流程图


<ignore_js_op>





2010-5-4 15:37:37 上传
<strong>下载附件</strong> (10.23 KB)




</ignore_js_op>

图3 扫描按键子程序流程图

子程序中定义了键值表格、扫描码数组,程序如下:

const char Keyboard[4][4]=
{
{'7','8','9','/'},
{'4','5','6','*'}
{'1','2','3','-'}
{'0','.','+','='}
}

扫描码数组为scanvalue[4]={0xfe,0xfd,0xfb,0xf7}

<strong>5 结束语</strong>

键盘已成为现代嵌入式设备人机交互的首选输入设备。本文介绍了键盘循环扫描的工作原理,以三星公司ARM7内核芯片S3C44BOX为基础.完成了键盘的软硬件设计,实践证明系统是稳定的、可靠的。

本文作者的创新点是:以ARM内核芯片S3CA4BOX为基础.实现嵌入式设备的输入功能,此系统具有扩展性好、用户界面友好。外围电路简单,可靠性高的特点,其硬件接口采用插板的形式,结构简单、易于装卸,方便系统集成和维护。


作者:余贵水  来源:《微计算机信息》(嵌入式与SOC)2009年第7-2期
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-10-4 20:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    8

    主题

    3252

    回帖

    2673

    积分

    二级逆天

    孤独的奔跑者

    积分
    2673

    终身成就奖社区居民

    QQ
    发表于 2023-6-15 08:50:08 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表