密码键盘

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要:介绍PC键盘和键盘接口的PS/2通信协议,以及用89C51实现可锁定键盘的软件和硬件设计方法。

具有安全可靠、容错能力强、可以直接采用标准键盘进行改装、便于实现等优点,并保留标准键盘的全部功能。

关键词:PS/2 89C51 C51 键盘
引言
在智能仪器、自动控制等领域,已大量使用嵌入式PC,如Advantech公司的PC/104、AMD公司的DIMM-PC等。

为适应开放式、模块化的要求,嵌入式PC具有标准的PC接口,如VGA显示器控制接口、以太网接口、RS232接口、PC/AT键盘接口等。

所以,可以用标准的PC键盘对嵌入式PC进行操作与控制。

键盘在输入指令之后,可能很长一段时间不用。

为计算机安全和防止误触发,需要将键盘锁定,还要对某些键采取屏蔽措施,但是PC标准键盘不能满足这些要求。

本文介绍一种用89C51设计实现的可锁定加密PC/AT键盘。

1 键盘功能及工作原理
PC键盘功能主要有按键识别、去抖、重键处理、发送扫描码、自动重发、接收键盘命令、处理命令等。

键盘有编码键盘和非编码键盘。

编码键盘程序设计简单,但硬件电路复杂,价格较高;非编码键盘用软件来实现识别键、编码转换、去抖等功能,硬件电路简单,价格便宜。

现代微机系统中广泛采用非编码键盘。

PC键盘多采用18行×8列的二维矩阵行列结构。

采用行扫描法识别按下的按键。

2 PS/2协议
PS/2协议是外设与主机之间通信的一种同步双向串行协议。

在该协议中主机拥有较高的优先级,在一定条件下可以终止外设正在进行的发送过程。

PS/2协议采用的传送数据帧
的格式为:1位起始位(0)、8位数据位、1位奇偶校验位、1位停止位(1)。

数据发送时低位在前,高位在后。

外设每收到主机发来的1帧数据,都要紧随该帧的停止位发送一个握手位ACK(0)应答主机。

然后,外设还要发1帧应答数据(0xF0),表示外设已经完整地接收到了主机的命令;而主机则不需发送握手位,也不需要发送应答帧。

2.1 键盘到PC键盘接口的通信
当时钟线和数据线均为高电平时,允许键盘发送数据,系统将接收数据;当时钟线被拉为低电平时,表明系统禁止数据传输。

图1给出了发送时序,包含1个低电平触发的起始位、8位数据位、1个奇校验位和1个高电平的结束位。

2.2 PC系统到键盘的通信协议
若时钟线出现高电平,数据线出现低电平,表明系统请求发送,键盘准备产生同步时钟脉冲串,并接收数据。

包含了1个低电平触发的起始位、8位数据位、1个奇校验位、1个应答位、1个高电平的结束位。

图2为时序图。

(1)键盘命令及执行过程
①FFH:复位键盘。

系统通过此软件复位命令使键盘进入程序复位和内部自测试,称为基本保证测试(BAT)。

复位键盘的过程如下:
a. 键盘收到FFH后立即回送ACK(FAH)作答;
b. 键盘接口收到ACK后,将键盘时钟和数据线置为高电平;
c. 键盘检测到此状态后开始BAT操作;
d. 如果BAT正确完成,键盘发送AAH以表示结束,
否则以FDH(或其它任何值)表示诊断有误。

②FEH:重新发送。

当系统检测到从键盘送来的任何传输错误时,它便向键盘发送FEH 命令。

键盘接收到此命令后,将重新送出原来的内容。

③FDH~F7H:空操作(保留未用)。

④F6H:设置缺省值。

此命令使键盘所有条件复位到电源接通时的缺省状态,键盘继续扫描。

⑤F5H:设置缺省值和停止键盘。

此命令使键盘所有条件复位到电源接通时的缺省状态,并停止键盘扫描,等待下一个键盘命令。

⑥F4H:启动键盘。

键盘接收到此命令后,用ACK(FAH)作答,清除输出缓冲器,并启动键盘开始扫描。

⑦F3H:设置拍发速率和延时参数。

每当按下任一键时,键盘以拍发速率连续送出键的接通码,直到键被释放为止。

延时参数是指按下一键后,键盘输出的响应时间。

系统缺省设置:拍发速率=10个/s±20%,延时=500ms±20%。

当要改变设置时可以使用F3H命令,并后跟一个字节的参数。

参数定义如表1所列。

表1
计算拍发速率和响应延时的公式如下:
拍发速率=1/[(8+A)×2B×0.00417] (1/s)
响应延时=(1+C)×250 (ms)
注:缺省的延时参数值为2CH。

此命令的执行过程如下:
a. 键盘收到F3H命令后,用FAH予以响应,并停止
扫描和等待随后的参数;
b. 键盘若收到随后的设置参数,用另一个ACK响
应,并按其参数设置新的拍发速率和响应延时,
之后重新开始扫描(若键盘原来是开放的);
c. 键盘若收到FAH命令,但无随后的设置参数,则
键盘结束命令设置,并保持原来的拍发速率和响
应延时,停止扫描。

⑧F2H,F1,EFH:保留未用。

⑨F0H:设置键盘扫描码命令。

此命令用于设置键盘的扫描码,后跟参数指定三种扫描码的哪一种。

键盘复位时,默认扫描码是第二种。

⑩EEH:回送命令。

此命令用于辅助诊断,要求键盘接收到EEH时也要回送EEH予以响应。

若键盘原来是开放的,则继续扫描。

EDH:置位/复位LED指示器。

键盘右上角有三个LED指示器,分别反映Caps、Num 和Scroll三个键的锁定情况。

参数字节如表2所列。

表2
此命令执行过程与F3H相似。

若命令后跟参数,则按参数设定LED状态并继续扫描。

若仅有命令无参数,则不改变LED原状态,并停止扫描。

(2)键盘响应
键盘在下列四种情况下都会向键盘接口发送数据。

①按下任一键,键盘以拍发速率向接口发送键盘接通扫描码。

②释放所按下的键,键盘发送断开扫描码。

③系统向键盘发送键盘命令后,键盘回送应答。

④当用户按键速度超出键盘所能容纳的最大键个数时,键盘做出响应。

后三种情况称为键盘响应。

响应字节有7个,定义如下。

①FEH:重新发送响应。

当键盘收到一个无效的键盘命令,或者检测到奇偶错的键盘命令时,键盘回送响应字节为FEH,要求系统重发键盘命令。

②FAH:正常应答。

对任何一个有效的键盘命令,键盘回送FAH予以响应。

③00H:超限应答。

当用户按键速度超出键盘所能容纳的最大键符个数时(16个字节的缓冲器),键盘发送00H。

④FDH:诊断故障应答。

键盘接受软件复位命令,执行自测试过程中。

若检测到故障,则以FDH应答。

此时,键盘停止扫描并等待下一个键盘命令。

⑤AAH:诊断正常应答。

键盘在软件复位过程中,正常完成BAT测试,以AAH应答。

⑥FEH:回响命令的应答,对键盘FEH命令的应答。

⑦F0H:断开扫描码前缀,键盘对键符按下后释放的应答,第一个字节为F0H,第二个字节为接通扫描码(有几个键例外)。

3 硬件设计
PC系列键盘采用18行×8列的矩阵行列结构。

89C51单片机有4个8位I/O端口,因此可以采用P0、P2口再加上P3口的2个(P3.6和P3.7)作为行扫描线。

P1口作为列
输入线(如果用P0口作列输入线,必须加上拉电阻)。

采用P3.0、P3.1作为数据线和时钟线与PC系统进行通信,用P3.2、P3.4、P3.5控制键盘上的3个指示灯。

硬件原理如图3所示。

键盘与计算机通过一个五芯(PS/2接口为六芯)插座相接,4个有效引脚的定义分别是电源(VCC)、地(GND)、串行时钟线(SCK)、串行数据线(SIO)。

4 软件设计
①消抖及重键处理:通过软件上延时程序来消除抖动;采用后按键优先处理,即多键同时按下时,只重复发送最后按下键的扫描码。

②程序包括键盘扫描子程序、发送键码子程序、发送数据子程序、接收命令子程序、定时器1中断服务程序、主程序等。

键盘扫描子程序用于扫描键状态,将被按键的位置号存
入缓冲器中;发送键码子程序用于将缓冲区键的接通码或断开码发送给计算机键盘接口或者存在键盘密码缓冲区中;发送数据子程序用于将数据发给计算机键盘接口;接收命令子程序用于接收计算机键盘接口发来的键盘命令;定时器1中断服务子程序用于给程序中的延时提供标准时钟,并具有软件看门狗功能,防止软件出现死机现象;主程序用于系统初始化,子程序调度,锁定状态的显示等。

图4~6是主要软件模块的流程图。

单片机源程序见本刊网络补充版
()。

5 结论
本文介绍的PC/AT键盘具有结构简单、设计灵活、安全可靠的特点,可用于标准PC和嵌入式PC。

本键盘可以在标准的键盘基础上进行改造,只需换掉原来的控制芯片即可,可节省设计成本。

摘 要: 本文介绍了应用GM8123实现银行柜台密码键盘设备中的扩展多串口的方案。

引言
在银行柜台取款用的密码键盘设备的开发中,为了和标准键盘、加密芯片和上位机这三部分模块的接口通讯,就需要MCU 具备三个标准的UART 串口来和上述三个模块的UART 串口连接。

而且通常各模块的UART 的波特率各不相同,设计也需要灵活的适应需求。

MCU 在整个设备里面的扮演的主从方会根据操作的阶段发生变化。

当设备处于等待模式时,上位机是主方,而MCU 是从方。

MCU 通过一个串口接收到主方的命令后再通过第二个串口启动标准键盘,并控制相应的声光提示,然后等待标准键盘返回的按键数据(用户密码的明文),同时做相应的超时处理。

接收到按键数据后进行一些基本的合理性判断处理,然后通过另一个串口将密码明文发送给加解密模块,然后接收加密后的密码密文。

最后再通过和上位机连接的串口将密码密文上传,然后恢复到等待状态。

在对标准键盘和加解密模块进行操作的时候,MCU 扮演了通讯的主方。

在整个流程中,可以看作是个半双工的通讯方式,让操作和控制更简单和更可*。

图1 GM8123功能框图
图2 系统设计框图
图3 状态机流程图
现有方案
满足上述应用要求的方案有多种设计方式,各不相同,包括成本、可*性、指标都存在差异。

根据目前的串口器件及设计原理归纳起来有以下几种设计方案。

方案一是使用多串口的单片机。

其中双串口的单片机的价格在40~70元左右,三串口的单片机价格更加昂贵,直接增加了系统设计的成本。

同时,由于各单片机的指令不同,以及由于串口功能的扩展带来的陌生寄存器的使用都增加了设计人员的工作量和难度。

方案二是使用普通的单片机扩展16C55X 这种通过并口扩展串口的IC 器件来实现。

这类器件的优点是串口速度高,响应迅速。

但缺点也是器件本身成本高,使用复杂,占用单片机的IO 资源多,导致某些设计需控制外部声光功能时还需要外扩8255来扩展并口资源,无形中又增加了PCB 板面积、成本和设计难度。

方案三是软件模拟串口功能。

其优点是成本低,但可*性和串口指标都无法控制。

硬件串口工作中对每一个BIT 的采样是12次,而软件模拟最多只能做到2次,大多只有1次,所以通讯的可*性很难保证。

同时软件模拟的串口很难达到较高
的波特率,所以限制了通讯的应用。

而且软件编写的难度高,程序工作量大,对研发人员的要求高,也局限了这种方案的推广应用。

其它方案还包括使用两到三个普通单片机来达到需要的串口数量,然后相互之间通过自定义的并口或模拟的同步串口通讯协议来实现通讯等方案。

低成本应用灵活的新方案
通过以上方案可以看出,现有的实现方案很难在成本和指标上两全齐美。

成都国腾微电子有限公司推出的一种全新方式的串口扩展芯片GM812X系列产品为上述设计带来了一种新的、低成本和应用简单的串口扩展方案。

GM812X系列串口扩展芯片可为用户提供最简单和高性能的串口扩展方案,将一个标准串口扩展成3或5个标准串口。

该系列芯片子串口最高波特率达38.4Kbps。

该芯片提供两种工作模式:单通道工作模式和多通道工作模式,即可以指定一个子串口和母串口以相同的波特率单一的工作,也可以让所有子串口在母串口波特率基础上分频同时工作。

用户可根据需要灵活选择。

该芯片母串口和子串口的工作波特率可由软件调节,而不需要修改外部电路和晶振频率。

UART数据格式10位或11位可选。

GM8123可以将一个标准串口扩展成3个标准串口,GM8125可扩展5个标准串口。

本文选择GM8123作为串口扩展的IC。

图1为GM8123的功能框图。

在本设计中,GM8123即可满足设计的需要。

例如单片机采用最常用和便宜的A T89C52,将GM8123的母串口和单片机的串口相连接,再将标准键盘接口、加解密模块的串口和上位机的串口分别连接到GM8123的三个扩展串口上。

图2为方案的系统设计框图。

假设上位机和加解密模块的通讯波特率为9600bps,标准键盘的通讯波特率为1200bps。

图3为简单的单片机程序设计中与通讯相关的状态机流程图。

该芯片的操作和编程应用都很简单,从图3可以看出对GM8123的操作主要是通讯母串口的更改和波特率的设定,而且操作方式和编程基本相同。

由于GM8123工作在单通道模式下,可以看作对母串口和子串口之间进行透明传输处理,所以无须对GM8123进行波特率的设置。

以下是在等待状态下转变到接收标准键盘按键数据的过程中指定子串口端口和从9600bps修改到1200bps的C51程序的部分示例代码:
//GM8123地址控制线声明
sbit SRADD0 = P3^4; // GM8123地址线SRADD0控制
sbit SRADD1 = P3^5; // GM8123地址线SRADD1控制
sbit STADD0 = P3^6; // GM8123地址线STADD0控制
sbit STADD1 = P3^7; // GM8123地址线STADD1控制
void main(void)
{
............
//初始化设置
SCON = 0xC0; //根据需要设置
TH1 = 0xFD; //装入定时器1初值,设置MCU
工作波特率为9600bps
TL1 = 0xFD;
PCON = 0x00;
TR1 = 1; //启动定时器1
............
//设置子串口三和上位机通讯
STADD0 = 1; //选择子串口3发送
STADD1 = 1;
SRADD0 = 1; //选择子串口3接收
SRADD1 = 1;
............ //接收上位机数据的相关处理
//切换到和串口一和标准键盘通讯
TR1 = 0;
TH1 = 0xE8; //装入定时器1初值,设置MCU
工作波特率为1200bps
TL1 = 0xE8;
PCON = 0x00;
TR1 = 1;
STADD0 = 1; //选择子串口1发送
STADD1 = 0;
SRADD0 = 1; //选择子串口3发送
SRADD1 = 0;
............ //键盘控制和按键
}
结语
从上述内容可以看出,通过GM8123实现3个串口的应用非常简单和灵活,程序工作量少,控制容易。

并且以上设计只应用到了GM8123的单通道模式,尚未发挥出该芯片的所有功能和灵活性。

芯片的外部控制少,应用灵活,编程使用简单,适合于大多数需要多串口扩展的应用场合。

比如:
但是应用该芯片需要注意的是GM812X系列接口IC在多通道模式下不能将各个子串口的波特率设定的不同,不能满足多串口同时进行不同波特率数据通信的应用设计。

另外,GM812X系列现有的IC型号不能满足手持设备的低功耗要求,以及有38.4Kbps的最高波特率限制。

相关文档
最新文档