可锁键盘设计
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
在智能仪器、自动控制等领域,已大量使用嵌入式PC,如Advantech公司的PC/104、AMD公司的DIMM-PC等。为适应开放式、模块化的要求,
嵌入式PC具有
的PC接口,如VGA显示器控制接口、以太网接口、
RS232接口、PC/AT键盘接口等。所以,可以用标准的PC键盘对嵌入式PC进行操作与控制。键盘在输入指令之后,可能很长一段时间不用。为
计算机安全和防止误触发,需要将键盘锁定,还要对某些键采取屏蔽措
施,但是PC标准键盘不能满足这些要求。本文介绍一种用89C51设计实现的可锁定加密PC/AT键盘。
PC/AT键盘具有结构简单、设计灵活、安全可靠的特点,可用于标准
PC和嵌入式PC。本键盘可以在标准的键盘基础上进行改造,只需换掉原
来的控制芯片即可,可节省设计成本。
89C51单片机;异步串行接口;键盘设计;PS/2
I
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
In the intelligence instrument, auto control etc. realm, already
a great deal of usage built-in PC, like DIMM-PC etc. of the PC/104,
AMD company of Advantech company.For the request for turn of the
orientation open type, mold piece, the built-in PC have standard of
the PC connect, such as VGA display control connect a , ether net to
connect a , RS232 to connect, PC/AT the keyboard pick up a people
etc..So, can use the PC keyboard of standard to carry on an operation
to the built-in PC and control.Keyboard at importation instruction
after, probably very long a period of time need not.Is a calculator
safety with keep mistake from trigger, demand target a keyboard, return
want to adopt to shield measure to the some key, but PC standard
keyboard can't satisfy these request.This text introduction is a kind
of use a 89 C51 a design realization of can target to encrypt PC/AT
a keyboard.
The PC/AT keyboard has structure simple, design vivid, safety credibility of characteristics, can used for standard PC and built-in
PC.This keyboard can carry on reformation on the keyboard foundation
of standard, need to be change originally of control chip then,
economical design cost.
The 89 C51 list slice machine;Difference step string line connect;Keyboard design; PS/2
II
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
目 录
摘 要 .............................................................................................................. I Abstract ............................................................................................................. II
第1章 绪论 ....................................................................................................... 1 第2章 设计要求与工作原理 ............................................................................ 3
2.1 设计要求 ................................................. 3
2.2 工作原理 ................................................. 4 第3章PS/2
................................................................................................ 5
3.1 键盘到PC键盘接口的通信 .................................. 5
3.2 PC系统到键盘的通信协议 ................................... 5 第4章 应用电路 .............................................................................................. 9 第5章 89C51的结构与性能特点 .................................................................... 13
5.1 接口模块的特点 .......................................... 13
5.1.1 标准PC机键盘的工作原理 ........................... 14
5.1.2 键盘接口模块的工作原理与概述 ...................... 15
5.1.3 中断解码的工作原理 ................................ 16
5.1.4 主程序的工作原理 .................................. 16 第6章 串口信号线的接法 ............................................................................ 19
6.1 主要信号线定义 ......................................... 19
6.2 单向并行通信接口的实现 ................................. 19
6.3 主从并行通信接口的实现 ................................. 20
6.4 主机发送从机接收方式的主机工作流程 ..................... 20
6.5 主机接收从机发送时的主机工作流程 ....................... 20
6.6无主从双向并行通信接口的实现 ............................. 21 第7章 数据流程 ............................................................................................ 22
7.1 数据发送流程 ............................................ 22
7.2 数据接收流程 ............................................ 22
7.2.1 三种并行接口方式的特性分析 ......................... 22
7.2.2 电气特性 ........................................... 23
7.2.3 接口的典型应用 ..................................... 24
7.2.4 带有数据的指令 ..................................... 28 结 论 ................................................................................................................. 29 致 谢 ................................................................................................................. 30 参考文献 ........................................................................................................... 31 附录1 英文原文与译文 ................................................................................... 32
III
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
附录2 硬件原理图 ........................................................................................... 34 附录3 程序代码 ............................................................................................... 35
IV
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
有一块集成电路组成的计算机,在这个集成的路中包含了处理单元,存
储单元,I/O控制单元等,这里你应该了解 什么是单片机了吧它的作用是把
一些常用的的功能或者要实现的比较复杂的有严格流程限制的任务在操作者
一次编写好程序后,可以自动的运行,达到简化操作的目的,并且实现自动
化和智能化,同时它的成本低廉,可以代替大规模地逻辑电路,不用在为实
现某一种功能而设计专用的电路,只用一个芯片,加上少量的外围电路合适
当的程序设计,就可以实现你所需要的功能。在某些需要运算,但是运算强
度又不高的场合可以通过单片机来替换电脑,降低成本。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同
时,学习使用单片机了解计算机原理与结构的最佳选择。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和
现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,
这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因
为它体小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如
人类头脑的作用,它出了毛病,整个装置就瘫痪了。各种产品一旦用上了单
片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智
能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发
者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究
其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。目前单片
机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
单片机的应用领域:
?用图象传感器测量线才系统
?卫星电视的串口模拟SPI、I2C的应用,如雷达录取的数据传送。
?直接与AD芯片配合进行各种数据传感器配合。
?利用单片机与PC机的232通讯进行控制,单片机为控制对象。
?通过IC卡、单片机、PC机构成的各种收费系统。
?通过单片机控制各种步进电机完成工控任务系统
1
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
?通过单片机控制各种电慈设备完成工控任务系统(如程控交换系统)
?可应用在电机的变频技术上的控制领域中。 ?各种测量工具如水位尺,它在水文上的应用很普及。 ?大型指针钟控制器,主要根据时间控制电机带动指针。 ?电子配料控制仪,基于小型生产的自动或半自动控制,如控制上料、
搅拌等
?用定时器和捕获功能进行某一系统的检测。可提供报警、控制等。如
水位控制、温度控制,全自动洗衣机等。
?电子称重计
?教学用仪器、医疗仪器。
?由单片机构成的霓虹灯控制器。
?在刚的热处理中采用热磁仪测量。
?各种金属探伤仪器。
?矿山生产智能监测仪。
?煤矿的产煤计数器
20.汽车安全系统
21.智能玩具
22.用超声波测量江河水位
23.交流电监测仪
24.消防系统报警监测仪
25.各类水表、电表
2
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
第2章 设计要求与工作原理 2.1 设计要求
(1)扩展键盘键位编码符合显示分系统的约定。
(2)扩展键盘与显示处理机通讯通过其异步串行接口来完成,波特率为
9600 b/s。
(3)扩展键盘与显示处理机通讯的接口电平为RS232C标准。
(4)波特率相对误差应小于2.5%。
(5)扩展键盘的电源要求:直流+5 V。
(6)扩展键盘的环境温度要求:-100~+500?C。
(7)4 kB可编程的E2PROM。
(8)128 B内部RAM数据存贮器。
(9)1个全双工的串行口。
(10)2个16 b定时器/计数器。
(11)5个中断源,2个中断优先级。
(12)可以寻址64 kB的程序存贮器和64kB的外部数据存贮器。 扩展键盘由以下几部分组成:
?单片机89C51及时钟、复位电路。
?TTL电平到RS232C电平转换芯片ICL232CPE,此芯片只需直流+5 V
电源。
?工作指示电路。
?键位阵列部分(8×13)。
该键盘利用了89C51的片内E2PROM作为程序存贮器,避免外扩存贮器占
用单片机的输入/输出口资源;利用P3口的第二功能完成异步串行通讯功能;
用一片ICL232CPE作为接口电平转换芯片,便实现了键盘的全部硬件逻辑。
硬件少,可靠性高。整个键盘采用+5V直流电源;电路与键位阵列分离设计。
本键盘还克服了以往键盘设计中键位少、不通用等缺点。
软件的设计原则:
(1) 软件在结构上应清晰、简洁、流程合理。
(2) 各功能子程序应实现模块化、子程序化,以便于调试、连接、移
植和修改。
(3) 程序存储区、数据存储区应合理规划,做到既节约内存容量,又
3
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
方便操作。
(4) 运行状态应实现标志化管理,对各功能程序的运行状态、运行结
果以及运行要求都要设置状态标志以便查询。
(5) 对需要特殊抗干扰的应用系统应采用软件抗干扰措施,以提高系
统的可靠性。
(6)如有必要可增加加密措施,以保护自身的合法的知识产权权利。
2.2 工作原理
扩展键盘通过异步串行接口与显示处理机相连,与标准键盘一起,显示
处理机便拥有2个键盘。2个键盘可同时向显示处理机发出干预命令。因此,
显示分系统增加了一条输入干预命令的新途径,缩短了干预命令的输入时间,
提高了人工干预的效率。
PC键盘功能主要有按键识别、去抖、重键处理、发送扫描码、自动重发、
接收键盘命令、处理命令等。键盘有编码键盘和非编码键盘。编码键盘程序
设计简单,但硬件电路复杂,价格较高;非编码键盘用软件来实现识别键、
编码转换、去抖等功能,硬件电路简单,价格便宜。现代微机系统中广泛采
用非编码键盘。PC键盘多采用18行×8列的二维矩阵行列结构。采用行扫描法识别按下的按键。
4
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
第3章PS/2协议
PS/2协议是外设与主机之间通信的一种同步双向串行协议。在该协议中
主机拥有较高的优先级,在一定条件下可以终止外设正在进行的发送过程。
PS/2协议采用的传送数据帧的格式为:1位起始位(0)、8位数据位、1位奇偶校验位、1位停止位(1)。数据发送时低位在前,高位在后。外设每收到主
机发来的1帧数据,都要紧随该帧的停止位发送一个握手位ACK(0)应答主机。然后,外设还要发1帧应答数据(0xF0),表示外设已经完整地接收到了
主机的命令;而主机则不需发送握手位,也不需要发送应答帧。 3.1 键盘到PC键盘接口的通信
当时钟线和数据线均为高电平时,允许键盘发送数据,系统将接收数据;当时钟线被拉为低电平时,表明系统禁止数据传输。图3-1给出了发送时序,包含1个低电平触发的起始位、8位数据位、1个奇校验位和1个高电平的结束位。
图3-1 发送时序图
3.2 PC系统到键盘的通信协议
若时钟线出现高电平,数据线出现低电平,表明系统请求发送,键盘准备产生同步时钟脉冲串,并接收数据。包含了1个低电平触发的起始位、8位数据位、1个奇校验位、1个应答位、1个高电平的结束位。图3-2为时序图。
5
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
图3-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:设置拍发速率和延时参数。每当按下任一键时,键盘以拍发速率连续送出键的接通码,直到键被释放为止。延时参数是指按下一键后,键盘输出的响应时间。
6
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
系统缺省设置:拍发速率=10个/s?20%,延时=500ms?20%。 当要改变设置时可以使用F3H命令,并后跟一个字节的参数。参数定义如
表3-1所列。
表3-1 参数定义
D7 D6 D5 D4 D3 D2 D1 D0
0 C B A 此命令的执行过程如下:
a. 键盘收到F3H命令后,用FAH予以响应,并停止扫描和等待随后的参数; b. 键盘若收到随后的设置参数,用另一个ACK响应,并按其参数设置新的拍发速率和响应延时,之后重新开始扫描(若键盘原来是开放的); c. 键盘若收到FAH命令,但无随后的设置参数,则键盘结束命令设置,并 保持原来的拍发速率和响应延时,停止扫描。
? F2H,F1,EFH:保留未用。
? F0H:设置键盘扫描码命令。此命令用于设置键盘的扫描码,后跟参数指定三种扫描码的哪一种。键盘复位时,默认扫描码是第二种。 ? EEH:回送命令。此命令用于辅助诊断,要求键盘接收到EEH时也要回送EEH予以响应。若键盘原来是开放的,则继续扫描。
EDH:置位/复位LED指示器。键盘右上角有三个LED指示器,分别反映Caps、Num和Scroll三个键的锁定情况。参数字节如表2-2所列。
表3-2 参数字节定义
D7--D3 D2 D1 D0 保留 1=激励 1=激励 1=激励
Caps LED Num LED Scroll LED
此命令执行过程与F3H相似。若命令后跟参数,则按参数设定LED状态并
继续扫描。若仅有命令无参数,则不改变LED原状态,并停止扫描。
(2) 键盘响应
7
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
键盘在下列四种情况下都会向键盘接口发送数据:
? 按下任一键,键盘以拍发速率向接口发送键盘接通扫描码。
? 释放所按下的键,键盘发送断开扫描码。
? 系统向键盘发送键盘命令后,键盘回送应答。
? 当用户按键速度超出键盘所能容纳的最大键个数时,键盘做出响应。
后三种情况称为键盘响应。响应字节有7个,定义如下:
? FEH:重新发送响应。当键盘收到一个无效的键盘命令,或者检测到
奇偶错的键盘命令时,键盘回送响应字节为FEH,要求系统重发键盘命令。
? FAH:正常应答。对任何一个有效的键盘命令,键盘回送FAH予以响
应。
? 00H:超限应答。当用户按键速度超出键盘所能容纳的最大键符个数
时(16个字节的缓 冲器),键盘发送00H。
? FDH:诊断故障应答。键盘接受软件复位命令,执行自测试过程中。
若检测到故障,则以FDH应答。此时,键盘停止扫描并等待下一个键盘命
令。
? AAH:诊断正常应答。键盘在软件复位过程中,正常完成BAT测试,
以AAH应答。
? FEH:回响命令的应答,对键盘FEH命令的应答。
? F0H:断开扫描码前缀,键盘对键符按下后释放的应答,第一个字节为
F0H,第二个字节为接通扫描码(有几个键例外)。
8
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
第4章 应用电路
利用SK5278串行接口占用单片机口线少及无键按下时无须CPU干预的特点,可以很容易地构成单片机的键盘接口电路,图3所示是AT89C2051单片机与SK5278构成的键盘及接口电路。图中,AT89C2051的P1.2、P1.3、P1.4口线分别与SK5278的“CS”、“CLK”、“DIO”端相连。为了提高按键的响应速度并减少单片机的干预。本
将
SK5278的按键有效指示端“KEY”与AT89C2051的外中断端INT0相连,由于INT0为低电平中断,故而加入了一级非门以使“KEY”反相后与其相连。与表3-1电路对应的键盘处理程序如下:
COUNT DATA 70H
RXBUF DATA 20H
;I/O定义
DIO BIT P1.4
CS BIT P1.2
CLK BIT P1.3
MAIN:MOV SP,#50H
MOV P1,#0FFH ;将P1口置为输入
SETB IT0 ;INT0为边沿触发
SETB PX0 ;INT0为高优先级中断
SETB EX0 ;开INT0中断
SETB EA ;CPU开中断
LCALL DL25ms ;延时25ms等待SK5278复位;
INT0键盘中断程序
INT0:LCALL RECEIVE ;读键值
MOV A,RXBUF ;键值送A
CJNE A,#00H,KEY-1 ;K0键未按下转下键
LJMP KEY0 ;K0键按下,转入相应键值处理子程序
KEY1:CJNE A,#01H,KEY-2;
LJMP KEY1 ;K1键按下,转入相应键值处理子程序
KEY2:„
9
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
„„
KEY15:CJNE A,#0FH,KEYFH ;K15键未按下,中断返回 LJMP KEY15 ;KEY15键按下,转入相应键值处理程序 KEYFH:RET ;无键按下时中断返回读键盘值程序 RECEIVE:CLR CS ;读键盘数据有效
SETB DIO ;将DIO置为高电平输入状态 ACALL DL 15μs ;T1延时
MOV COUNT,#08H ;共八位数据
LOOP:SETB CLK
ACALL DL 15μs ;T2延时
MOV A,RXBUF
RL A ;数据左移一位
MOV RXBUF,A
MOV C,DIO ;读取一位数据
MOV RXBUF.0,C
CLR CLK
ACALL DL 15μs ;T3延时
DJNZ COUNT,LOOP
SETB DIO ;将DIO重置为高电平输入 ACALL DL 15μs
SETB CS ;读键盘数据无效
RET
该命令由二个字节组成。前半部分为指令,其中a2 a1 a0 为位
地址,d0~d3为数据。具体分配方式如表2所列。当系统接收到此指令
时(ZLG7289A将按译码方式0进行译码)具体的译码方式如表3所
列。小数点的显示可由DP位控制,DP为1时,小数点显示,DP为0时,
小数点不显示。在该指令格式中,x表示没有影响。如表4-1所示
10
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
表4-1位地址分配表
a2 a1 a0 显示位
0 0 0 1
0 0 1 2
0 1 0 3
0 1 1 4
1 0 0 5
1 0 1 6
1 1 0 7
1 1 1 8
与其它指令不同的是,此命令的前一个字节0001010B 为单
片机传送到ZLG7289A的指令,而后一个字节d0~d7则为Z
LG7289A返回的按键代码。 其范围为0~3FH(无键按下时为
0xFF)。在此指令的前半段,ZLG7289A 的DATA 引脚处于高阻输入状态,可以用来接收来自微处理器的指令;在指令的后半
段,DATA 引脚从输入状态转为输出状态,此时将输出键盘代码的值。
故微处理器连接到DATA 引脚的I/O口应当有一个从输出态到输
入态的转换过程。
当ZLG7289A检测到有效的按键时,KEY 脚将从高电平变为低电平,并一直保持到按键结束。在此期间,如果ZLG7289A 接
收到“读键盘数据指令”,则输出当前按键的键盘代码;如果在接收到
“读键盘数据指令”时没有有效按键,ZLG7289A将输出FFH
(11111111B)
11
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
表4-2 译码方式表
d0~d3 d3 d2 d1 d0 7段显示 00H 0 0 0 0 0 01H 0 0 1 1 1 02H 0 0 0 0 2 03H 0 0 1 1 3 04H 0 1 0 0 4 05H 0 1 0 1 5 06H 0 1 1 0 6 07H 0 1 1 1 7 08H 1 0 0 0 8 09H 1 0 0 1 9 0AH 1 0 1 0 - 0BH 1 0 1 1 E 0CH 1 1 0 0 H 0DH 1 1 0 1 L 0EH 1 1 1 0 P 0FH 1 1 1 1 空无显示
12
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
第5章 89C51的结构与性能特点 5.1 接口模块的特点
该模块在PC键盘与上位单片机之间起转换作用,它屏蔽了与PC键盘
进行数据和命令交互的复杂过程,大大简化了上位单片机系统的输入设
计;它实现了类似DOS操作系统中键盘中断服务程序的功能,使设计人
员只需关心接收按键的结果,并可使用标准的键盘编码进行编程;它要
求上位单片机通过8位并行接口与其相接,对于不能提供并行接口的系
统,可使用SPI兼容的同步串行接口与其相接,特别是对于那些希望占
用单片机的系统资源少而需要扩展的键数较多、仪器整体需要美观大方
的应用场合,其性能价格比更具优势。该模块与单片机系统的连接关系
如图5-1所示,在图中也给出与上位单片机相接的20脚接插件的信号定义。
图5-1该模块与上位单片机系统的连接关系及信号定义
13
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
5.1.1 标准PC机键盘的工作原理
键盘与主机通过键盘插头相接,键盘插头有5芯大插头和6芯小插头(PS/2接口)两种。接口信号有:电源、地、键盘时钟KB_CLK、键盘数据KB_DAT。正常工作时,键盘电路不断地扫描键盘矩阵。若有键按下,则以串行方式发
送按键的位置扫描码给主板键盘接口电路。按下键时,发送接通扫描码,松
开键时,发送该键的断开扫描码。断开扫描码一般是在接通扫描码前加一个
断开标志字节F0H。若某键一直按下,则以按键重复率连续发送该键的接通
扫描码。扫描码与按键的位置有关,与该键的ASCII码并无对应关系。表1第二列给出经实际测试得到的若干按键的位置扫描码。
根据键的按下或释放及所按键的不同,这个序列可以是1、2、3、4、6、或8字节,可称之为位置扫描码序列。 ,读取键盘数据时,此脚在CLK上升沿输出数据2KEYO按键有效输出端,平时为低电平,当检测到有效按键时,
此引脚变为高电平。读取键盘后,此引脚重新变为低电平3,14VDD 正电源4RST复位端5VSS电源地6~9X0~X3I矩阵键盘行线输入端10~13Y0~Y3O矩阵键盘列线输出端15OSCOO振荡输出脚,输出频率为RC振荡频率四分之一16RC 外接振荡器连接端,R=3.3 kΩ,C=20 pF时,振荡频率为4 MHz17CSI片选端,该脚为低时,可芯片读取键盘数据18CLKI时钟输入端,读取键盘数
据时,此脚电平的上升沿表示数据有效2 工作原理SK5278可用行线X0~X3和列线Y0~Y3构成4×4矩阵键盘。同时在芯片内部可自动完成扫描、译码、
去抖动处理等任务。当SK5278检测到有效的按键时,按键有效指示“KEY”
引脚将从低电平变为高电平,并一直保持到按键代码被读取为止。在“KEY”
为高电平期间,如果接收到“读键盘数据”命令,(即“CS”管脚变低),则
输出当前按键的键盘代码,键盘代码的范围为00H-0FH。如果在接收到“读
键盘数据”时没有按键按下,SK5278将输出FFH。在一次读键盘过程完成后,
按键有效指”将变为低电平。利用按键有效指示“KEY”与单片机的外部中断
端相连,可完成具有中断的键盘监控功能,SK5278的访问次数,以提高程序
的效率。
值得注意的是,如果有2个键同时被按下,则SK5278只能给出其中一个按键的代码,因此SK5278不适合应用于需要2个或2个以上按键同时被按下
的应用场合。如确实需要双键组合使用或组合增加键盘数量,可在单片机的
某I/O脚接入一键与SK5278共同组双键键盘监控电路。3 串行接口及时序
14
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
SK5278采用串行方式与单片机或微处理器接口,串行数据从“DIO”引脚输
出,并由“CLK”端发出同步时钟脉冲。当SK5278检测到有键按下时,按键
有效指示“KEY”变高,单片机检测到“KEY”信号变高后,便将片选端“CS”
拉低,从而使得SK5278将取得的键盘数据在“CLK”引脚的上升沿从“DIO”
脚依次送出。在单片机发出8个时钟脉冲后,即可从“DIO”端读取8位键值编码,该编码值的D7为最高位,D0为最低位,然后单片机再使片选“CS”
变高,并使“KEY”端重新输出低电平,至此,读键值过程结束。 5.1.2 键盘接口模块的工作原理与概述
该模块的原理框图如图5-2所示。
图5-2单片机系统与标准PC键盘接口模块原理框图
PC键盘与该模块通过专用插座相连,数据KB_DAT接到AT89C2051的P3.0引脚,时钟KB_CLK接到引脚。在PC键盘有键按下时,KB_CLK信号会引起
15
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
AT89C2051的连续中断,通过定时器T0与外中断的协同工作,可将PC键盘发出的位置扫描码序列接收至缓冲区中。然后,在主程序中将位置扫描码解
码、查表换算,再编码成一字节的WINDOWS虚拟键代码或两字节的OEM扫描码与ASCII码,并存入系统中FIFO栈。在上位单片机可以接收新键值时,将
FIFO栈中编码数据以并行或串行方式传送给上位单片机。 为了能更清楚地指示系统当前的工作状态,在硬件上加装了电源、正在解码、FIFO栈溢出、码值准备好等指示灯。
5.1.3 中断解码的工作原理
由于键盘的按键输入是随机的,为了能实时地响应,在程序中使用定时
器T0中断和中断协同工作,将位置扫描码序列恢复至键盘接收缓冲区中。中
断服务程序用来将码值的一位移入缓冲区中,T0溢出的中断服务程序主要用
来判断一次按键所发出的码是否已全部接收。系统设置T0的定时间隔为5 ms,并在系统启动后就开始定时。由于在正常接收每个按键的码值序列过程
中,键盘发送的每位数据间隔不会大于5 ms,因此在每次中断服务中,首先
要判断T0是否溢出过,若曾经溢出,则认为该次中断是一次新码值接收的开
始,需将位计数器清零,否则只需移入一位数据即可,然后重新启动定时器,
退出中断服务程序。在新按键码值序列接收完成后,设置blnDataValid标志,以通知主程序。
5.1.4 主程序的工作原理
主程序主要有四个任务:?将键盘接收缓冲区的位置扫描码通过查表等
算法换成统一编码的一个字节Windows虚拟键代码或两个字节的OEM扫描码与ASCII码;?根据系统中CAPS LOCK键、NUM LOCK键及SCROLL LOCK键的状态信息控制键盘上三个指示灯的亮灭;?系统中设立的FIFO栈的维护;?与上位单片机码值传送的握手交互过程。
在主程序中检测到blnDataValid标志后,即说明在键盘接收缓冲区中已
接收到一个新的位置扫描码序列,程序根据这个序列的不同特点做不同的处
理,最后再根据硬件跳线的设置得到相应按键的Windows虚拟键代码或ASCII码与OEM扫描码,图5-3中的跳线接至“W”位时,编码为Windows虚拟键代码。
16
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
图5-3 主程序流程图
虚拟键代码是Windows系统中引入的一组按键编码常量,每一个按键都
有惟一的码值与之对应。ASCII码与OEM扫描码则是在DOS系统定义的,但在Windows系统中沿用的按键码值定义,每一个按键都有两个码值与之对应,
对于功能键,例如F1、HOME、UP等,只存在OEM扫描码,其ASCII码为0。
FIFO栈是程序中设置的发送缓冲区,它是按“先进先出”原则建立的32字节循环队列,有一个队列头指针和一个队列尾指针。进队列时,编码数据
进入由队列尾指针所指单元,同时队列尾指针增量,指向下一个单元,当数
据不断进入队列,使尾指针指向队列末端时,尾指针循环重新绕回队列始端;
出队列时,编码数据从队列头指针所指的单元取出,同时队列头指针增量,
指向下一个单元,在头指针指向队列末端时,也要重新绕回队列始端,但头
指针始终不能“超过”尾指针。如果按键速度快于上位单片机接收码值的速
度,有可能尾指针绕回后与头指针再次相等,这时表明队列已满,不能再存
17
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
入数据,如果此时再有键按下,那么栈溢出指示灯将点亮。 在系统中设立了三个标志分别对应于CAPS LOCK键、NUM LOCK键及SCROLL LOCK键的状态,每次有这三个键按下时,程序都要翻转相应标志,然后向键盘发送EDH命令,命令键盘对其上的三个LED指示灯做相应激励。
在向上位单片机发送FIFO栈首的码值之前要先检测ACK信号状态以确定上位单片机是否已取走上次码值。若ACK信号有效,则将码值锁存在P1口上,然后由P3.7产生模拟的时钟脉冲信号,一方面将8位并行码值置入串-并转换芯片(74LS165)中,另一方面将触发器(74LS74)置为1,使端变为0,为上位单片机提供码值准备好(PS_READY#)的状态信号,并点亮指示灯。在上位单
片机中,可查询此状态信号也可利用此状态信号申请中断。上位单片机若采
用并行接口方法,则发出读缓冲器信号(P_RD#)和片选信号(P_CS#),便可通过三态缓冲器(74LS244)取得键值;若采用串行接口方法,则需发出串行时钟
(S_CLK),从74LS165的串行数据端(S_DAT)读回8位码值。在上位单片机读
取完当前的键值后,ACK信号将由握手逻辑自动置为有效,系统可通过检测
ACK信号的状态以发送下一个码值。
串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从
CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,
串行的位被转换为字节数据。
在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统
提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。
18
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
第6章 串口信号线的接法
一个完整的RS-232C接口有22根线,采用标准的25芯插头座(或者9芯插头座)。25芯和9芯的主要信号线相同。以下的介绍是以25芯的RS-232C为例。
6.1 主要信号线定义
引脚1:保护地;
引脚2:发送数据TXD;
引脚3:接收数据RXD;
引脚4:请求发送RTS;
引脚5:清除发送CTS;
引脚6:数据设备就绪DSR;
引脚7:信号地;
引脚8:数据载波检测DCD;
引脚20:数据终端就绪DTR;
6.2 单向并行通信接口的实现
在应用中,如果只需一个单片机向另一个单片机传送数据,则可以采用
单向并行通信接口方式,这种方式较为简单。单片机A为数据发送方,单片机B为数据接收方,8位端口可以是P0~3的任何一个。数据传送的流程是:
单片机A将数据送到端口后,通过STB信号中断单片机B,单片机B进入中断并从端口读取数据,读完后,利用BUSY信号进行应答,单片机A在检查到端口线CHK上的应答信号后,就可以发送下一个数据了。以上是采用中断方
式进行数据传送的具体方法。当然,单片机B也可以采用查询方式接收数据。
19
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
利用单向并行通信接口方法的优点是可以充分利用单片机的资源来扩充整个
系统的串行通信接口、并行接口、定时器等部件。
6.3 主从并行通信接口的实现
主从并行通信接口的特点是两单片机之间能够通过并行通信接口将数据
发送到对方,但这种方法必须有一个单片机处在主机状态,另一个单片机处
在从机状态。单片机A是主机,单片机B是从机,该接口使用了一个8位端口(如P0或P1)和4根控制信号线。
在主从工作方式下,该接口的工作方式有主机发送从机接收和主机接收
从机发送等两种情况。
6.4 主机发送从机接收方式的主机工作流程
(1)主机设置数据传送方法控制位DIR为0,以表示主机有数据发送到从机; (2)主机在STB端口产生一个负脉冲,以使从机进入中断,并准备接收数据; (3)主机将数据送8位数据端口,再设定ACK信号表示数据有效; (4)主机检查CHK端口,等待从机从8位端口取走数据; (5)数据发送完成返回。
6.5 主机接收从机发送时的主机工作流程
(1)主机设置数据传送方向控制位DIR为1,以表示主机将从从机读取数据; (2)主机在STB端口产生一个负脉冲,以使从机进入中断,并准备发送数据; (3)主机查询CHK端口,等待从机将数据送到8位端口上; (4)主机从8位端口上读取数据,再设定ACK信号以表示数据已被读取; (5)数据接收完成返回。
在主从并行通信接口工作方式下,无论从机是接收数据还是发送数据,都是
在中断(也可以是查询方式)方式下进行的,从机的工作流程如下: (1)进入中断服务程序;
(2)检查数据传送的方向;
(3)如果DIR为0,则等待CHK信号有效,再从8位端读取数据,读完后设
定ACK信号有效;
(4)如果DIR为1,从机将数据送到8位端上,再设定ACK为有效,并等待
20
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
主机取走数据(即CHK信号有效);
(5)退出中断服务程序。
6.6无主从双向并行通信接口的实现
无主从双向并行通信接口的特点是两个单片机处在平等的地位,两个单
片机均可随时提出申请,向对方发送数据,当然也可通过简单的接口协议从
对方读取数据。这种情况下,就有可能出现两个单片机同时提出使用8位端口的申请而发生冲突,从而影响双方数据的传送。要解决这个问题,就要求
每一方必须在数据传送之前进行检查,以判断8位端口是否被对方所使用,
从而避免冲突的发生。无从双向并行通信接口中采用了5根控制信号线,其中CHK/ACK控制信号线,其中CHK/ACK控制信号线的功能可以复用。8位端口可以是P0、P1或其它8位I/O口。
在无主从双向并行通信接口中,由于单片机A与单片机B没有主从关系而处在平等位置,所以单片机B与单片机A的数据接收发送流程完全相同。
这里只说明单片机A的数据接收发送流程。
21
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
第7章 数据流程 7.1 数据发送流程
(1)检查CHKREQ,判断单片机B是否提出了数据传送申请; (2)如果单片机B提出了申请,则转a继续等待;否则,单片机A提出申请,将REQ置为有效;
(3)再次检查CHKREQ,判断单片机B是否同时提出了申请; (4)如果单片机B提出了申请,则发生冲突;清除REQ并延时;然后执行(1);
(5)将数据送8位端口,设定STB有效;
(6)检查CHK,等待单片机B将数据取走;
(7)检查单片机A的数据是否全部送完,如没有则转执行(5); (8)撤销REQ信号,释放8位端口;
(9)数据发送完成,退出流程。
7.2 数据接收流程
单片机A的数据接收流程如下:
(1)进入中断服务流程;
(2)从8位端口读取数据;
(3)设置ACK信号有效,表示数据已成功读取; (4)退出中断服务流程。
7.2.1 三种并行接口方式的特性分析
本文介绍的三种并行通信接口连接方式能够适用于不同的要求。下面分
别对采用三种通信接口工作方式的数据通信响应时间进行分析。假设单片机
的工作时钟频率为24 MHz,8位端口为P0口。系统中每一个单片机只有一个
中断源。在单个中断源情况下的中断响应时间为3~8 μs。在单向并行通信接口工作方式下,数据只从单片机A向单片机B传送,假设接收方单片机B
中断接收。个字节的传送过程将包括数据发送端口、通知接收方、等待接收
方的已接收应答等三个部分。
22
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
7.2.2 电气特性
数据传输速率最大可到20K bps,最大距离仅15 m。注:看了微软的MSDN 6.0,其Windows API中关于串行通讯设备(不一定都是串口RS-232C或RS-422或RS-449)速率的设置,最大可支持到RS_256000,即256 Kbps也不知道到底是什么串行通讯设备?但不管怎样,一般主机和单片机的串口通讯大多都
在9600 bps,可以满足通讯需求。
RS-232C是广泛应用的串口通信标准,但因其推出较早,在现代网络通
信中已暴露出数据 传输速度慢、传输距离短、接口处各信号间容易产生干扰
等明显的缺点。鉴于RS-232C的这些缺点,EIA于1977年制定了新标准RS-499,RS-423/422(全双工)是RS-499的子集,RS-485(半双工)则是RS-422的变型。RS-485是一种多发送器的电路标准,它扩展了RS-422A的性能,允许双绞线上一个发送器驱动32个负载设备,负载设备可以是被动发送
器、接收器或收发器,RS-485最大传输距离为1200 m,最大传 送速率可达10 Mb/s。因此,RS-485在远程通信和多机总线系统中具有很大的吸引力。
MAXIM公司生产的MAX48X/49X系列收发器芯片,适 合于RS-422/RS-485通信标准,在实际设计中得到了广泛应用。本设计采用MAX485收发器芯片完成RS-485标准接口通信
89C51是MCS-51系列单片机的典型产品之一。其内部具有的硬件资源如
图7-1所示。
图7-1 89C51功能框图
23
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
2?4 kB可编程的EPROM。
?面向控制的8 b CPU。
?128 B内部RAM数据存贮器。
?32 b双向输入/输出线。
?1个全双工的串行口。
?2个16 b定时器/计数器。
?5个中断源,2个中断优先级。
?时钟发生器。
?可以寻址64 kB的程序存贮器和64 kB的外部数据存贮器。
2该键盘利用了89C51的片内EPROM作为程序存贮器,避免外扩存贮器占
用单片机的输入/输出口资源;利用P3口的第二功能完成异步串行通讯功能;
用一片ICL232CPE作为接口电平转换芯片,便实现了键盘的全部硬件逻辑。
硬件少,可靠性高。整个键盘采用+5 V直流电源;电路与键位阵列分离设
计。本键盘还克服了以往键盘设计中键位少、不通用等缺点。
软件功能流程图,如图所示7-2主程序流程图 7.2.3 接口的典型应用
大多数计算机应用系统与智能单元之间只需使用3到5根信号线即可工作。这时,除了TXD、RXD以外,还需使用RTS、CTS、DCD、DTR、DSR等信号线。(当然,在程序中也需要对相应的信号线进行设置。)
以上接法,在设计程序时,直接进行数据的接收和发送就可以了,不需
要对信号线的状态进行判断或设置。(如果应用的场合需要使用握手信号等,
需要对相应的信号线的状态进行监测或设置
对于不带SPI串行总线接口的MCS51系列单片机来说,可以使用软件来
模拟SPI的操作,包括串行时钟、数据输入和数据输出。对于不同的串行接
口外围芯片,它们的时钟时序是不同的。对于在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应将其串行时钟输出口P1.1
的初始状态设置为1,而在允许接口后再置P1.1为0。
24
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
图7-2 主程序流程图
25
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
这样,MCU在输出1位SCK时钟的同时,将使接口芯片串行左移,从而
输出1位数据至MCS51单片机的P1.3口(模拟MCU的MISO线),此后再置P1.1为1,使MCS51系列单片机从P1.0(模拟MCU的MOSI线)输出1位数据(先为高位)至串行接口芯片。至此,模拟1位数据输入输出便宣告完成。
此后再置P1.1为0,模拟下1位数据的输入输出„„依此循环8次,即可完成1次通过SPI总线传输8位数据的操作。对于在SCK的下降沿输入数据和
上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,即在接口芯片允许时,先置P1.1为1,以便外围接口芯片输出1位数据(MCU接收1位数据),之后再置时钟为0,使外围接口芯片接收1位数据(MCU发送1位数据),从而完成1位数据的传送。
定时器1的溢出率又由计数速率和定时时间预置数X决定,即:
此时T1工作方式2,即8位自动装载方式。这种方式可以避免通过中断
服务程序来重新装入初值,所得波特率也比较精确。式中X即为在TH1和TL1中装入的初始计数值。定时器1的计数速率与定时器工作方式的选择有关。
当选定T1为定时工作方式时,其计数输入脉冲为内部时钟信号,即每个机器
周期使寄存器值加1。而每个机器周期为12个振荡周期,故计数速率为晶振
频率的1/12。因此
由于本扩展键盘与显示处理机的串行通讯为异步方式,所以设置他的串
行接口的工作方式为方式1,定时器1的工作方式为方式2。再根据波特率要求(9 600 b/s)求他的预置值。若系统晶体的振荡频率12 MHz时,当SMOD选为1时,TH1,TL1的初值计算如下:
26
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
解上式可得:X=250(FAH)或X=249(F9H) 12
将X置入TH1,TL1时,波特率发生器产生的实际的传输速率为:
或波特率2=8 928.57 b/s,波特率误差2=7%
无论置入哪个数,PC机与单片机之间均无法完成正常的通讯。
若采用11.059 2 MHz晶振,按照上面
计算出X=250 FAH,实际的传输速率为9 599.83 b/s,其误差为0.001 77%,PC机与单片机的通讯可正常进行。
另外,SMOD位的选择有时也能影响波特率的误差。
因此在波特率设置时,对SMOD位的选取也需慎重考虑。
设计按键阵列时,应采用标准键盘的导电橡胶薄膜按键阵列,避免使用
寿命短、常出现接触。
串行方式与单片机或微处理器接口,串行数据从“DIO”引脚输出,并由“CLK”端发出同步时钟脉冲。当检测到有键按下时,按键有效指示“KEY”变高,单片机检测到“KEY”信号变高后,便将片选端“CS”拉低,从而使得将取得的键盘数据在“CLK”引脚的上升沿从“DIO”脚依次送出。在单片机
发出8个时钟脉冲后,即可从“DIO”端读取8位键值编码,该编码值的D7为最高位。D0为最低位,然后单片选“CS变
可用行线X0~X3和列线Y0~Y3构成4×4矩阵键盘。同时在芯片内部可
自动完成扫描、译码、去抖动处理等任务。当检测到有效的按键时,按键有
效指示“KEY”引脚将从低电平变为高电平,并一直保持到按键代码被读取为
止。在“KEY”为高电平期间,如果接收到“读键盘数据”命令,(即“CS”
管脚变低),则输出当前按键的键盘代码,键盘代码的范围为00H-0FH。如果在接收到“读键盘数据”时没有按键按下,SK5278将输出FFH。在一次读键盘过程完成后,按键有效指示“KEY”将变为低电平。利用按键有效指示
“KEY”与单片机的外部中断端相连,可完成具有中断的键盘监控功能,从而
提高CPU的工作效率,减少按键响应时间。
T1表示从“CS”下降沿至第一个CLK上升沿的延时,典型值为15 μs;T2为CLK
27
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
利用串行接口占用单片机口线少及无键按下时无须CPU干预的特点,可以很容易地构成单片机的键盘接口电路, AT89C2051单片机与8构成的键盘及接口电路。图中,AT89C2051的P1.2、P1.3、P1.4口线分别与 “CS”、“CLK”、“DIO”端相连。为了提高按键的响应速度并减少单片机的干预。
本方案将按键有效指示端“KEY”与AT89C2051的外中断端INT0相连,由于INT0为低电平中断,故而加入了一级非门以使“KEY”反相后与其相连。工
作时需要外接RC振荡电路以供系统工作,RC元件的典型值为R=3.3 kΩ,C=20 pF,此时的振荡频率约为4 MHz,由于此振荡频率较高,故在印制电路板布
线时,所有元件尤其是振荡电路的元件应尽量靠近芯片,并尽量使电路连线
最短。控制指令中的纯指令有复位(清除)指令A4H、左移指令A1H和
右移指令A0H。其中,复位(清除)指令A4H用于清除所有的显示,同
时清除所有设置的字符消隐和闪烁等属性。执行该指令后,芯片所处的状态
与系统上电后所处的状态一样。左移指令A1H可使所有的显示自右向左(从
第1位向第8位)移动一位(包括处于消隐状态的显示位),但对各位所设
置的消隐及闪烁属性不起作用。右移指令A0H与左移指令类似,但所做移
动为自左向右(从第8位向第1位)移动,移动后,最左边一位为空。 7.2.4 带有数据的指令
RESET复位端在一般应用情况下,可以直接与正电源连接,在需要较高
可靠性的情况下,可以连接外部RC复位电路,在上电或接收到RESET端的复位信号后,大约需要经过25 ms的复位时间才会进入到正常工作状态。程序
中应尽可能地减少CPU访问次数,以提高程序的效率。
值得注意的是:如果有2个键同时被按下,则只能给出其中一个按键的
代码,因此不适合应用于需要2个或2个以上按键同时被按下的应用场合。
如确实需要双键组合使用或组合增加键盘数量,可在单片机的某I/O脚接入一键共同组双键键盘监控电路。
脉冲宽度,典型值为10 μs;T3为CLK脉冲时间间隔,典型值为10 μs。
28
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
此键盘功能设计还可进一步细化,如实现大写锁定、小键盘锁定等。由
于键盘与主机通讯数据量不大,故未采用USB口与主机通讯。稍加修改,完
全可以用USB口与主机通讯。若此键盘用于一些不采用串行通讯的系统中时,
可直接用TTL电平相连,省掉ICL232CPE芯片,电路更简单,且P3口可采用并行输出字串1。在异型机种的串行通讯中,当规定了传输速率后,MCS-51单片机系统中选取适当的晶体振荡频率至关重要。
本文介绍的PC/AT键盘具有结构简单、设计灵活、安全可靠的特点,可用于标准PC和嵌入式PC。本键盘可以在标准的键盘基础上进行改造,只需换掉原来的控制芯片即可,可节省设计成本。
PC/AT键盘具有结构简单、设计灵活、安全可靠的特点,可用于标准PC和嵌入式PC。本键盘可以在标准的键盘基础上进行改造,只需换掉原来的控
制芯片即可,可节省设计成本。
29
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
致 谢
经过半个月的艰苦努力,我终于完成了异步串行接口键盘实现的全部设
计过程,并使该系统达到可实际应用的阶段。
这个设计让我经历了精细漫长的过程。在整个过程中,都需要周密的计
划和安排,每一个步骤,都需要按照数控工程标准来完成。在设计中,我始
终坚持理论指导实践原则,并通过实践来加强理论的学习,通过实习锻炼,
我熟悉了硬件的一般过程,加强了对实际问题的处理能力。实践证明,在高
科技突飞猛进的时代,光靠课堂所学的知识是远远不够的,必须依靠实践去
不断的深化认识,尤其是计算机科学,操作性和实践性很强,只有加强实际
的动手能力,才能更好的掌握这一现代化工具。
这次实习,无论是从技术上还是对环境的适应能力上讲,对我今后步入
社会都打下了一个良好的基础。在实习过程中,我也遇到了一些困难,主要
表现了技术和
的欠缺,但通过努力,终于一一克服了。
在整个实习期间,得到了吴锐导师以及计算机系各位老师和同学的大力
支持和帮助,在此表示衷心的感谢!
30
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
[1] 何立民.MCS-51系列单片机应用系统设计[M].北京:北京航空航天
大学出版社,1990.
[2] 张友德.单片微型机原理、应用与实验[M].上海:复旦大学出版社,
2000.
[3] 张汉杰.现代电梯控制技术.修订版.哈尔滨:哈尔滨工业大学出版社,
2001
[4] 陈家盛.电梯结构原理及安装维修.第2版.北京:机械工业出版
社,2000
[5] 常晓玲.电气控制系统与可编程控制器.北京:机械工业出版社,2004 [6] MITSUBISHI ELECTRIC CORPORATION FX系列微型可编程控制器使用2N
手册.JAPAN:MITSUBISHI ELECTRIC CORPORATION, 1999
[7] 陈立定.电气控制与可编程控制器.广州:华南理工大学出版社,2000 [8] 梁延东.电梯控制技术.北京:中国建筑工业出版社,1997 [9] 孙涵芳 徐爱卿著《 MCS-51/96系列单片机原理及应用》北京航空航
天大学出版社
[10] 吴金戌 沈庆阳 郭庭吉著《8051单片机实践与应用》
清华大学出版社
[11] 王恩荣 程明霄著《MCS-51单片机应用技术实训指导》化工工业出版
社
[12] 钱晓捷 陈涛著《16/32位微机原理、汇编语言及接口技术》机械工
业出版社
[13] 张毅刚 修林成 胡振江著《MCS-51单片机应用设计》哈尔滨工业大
学出版社
[14] Compaq, Intel, Microsoft etc, Universal Serial Bus Specification
revision1.1,1998.
[15] Compaq,Intel, Universal Serial Bus Specification revision,2000.
31
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
PS/2 agreement
The host own to higherly have the initiative class in should the agreement, at certain under the condition can terminate outside
establish to under way send out process.PS/2 agreement adoption of transmission the format of the data is:A start, 8 data, one are
accidentally strange the school check a , a stop.(1)Low when data send out before Be located on, the Gao be located on behind.Outside
establish each receive host hair of a data, all important with should of stop send out a shake hands ACK(0) should answer a host.Then, outside establish to still want to deliver 1 should answer a data(0 xF 0), mean outside establish have already integrity received the order of
host;But the host don't need to send out to shake hands, also don't need to be send out should answer.
The keyboard arrive a PC keyboard to connect of correspondence Clock line and data line all is Gao Dian4 at that time peacetime, allow a keyboard to send out a data, the system will receive a data;The clock line is pull for the low electricity peacetime at that time, enunciation the system forbid a data to deliver.Send out the cycle time include a low electricity even trigger of start, 8 data, a strange school check and a Gao Dian4 Ping2 of be over.
The PC system arrive a keyboard of correspondence agreement
If the clock line appear Gao Dian4 Ping2, the data line appear a low electricity even, enunciation system claim send out, keyboard
preparation creation synchronous clock pulse string, be alongside of to accept a data.Included a low electricity even the start trigger, 8 data, a strange school check a , 1 should answer a , a Gao Dian4 Ping2 of be over.
32
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
PS/2协议
在该协议中主机拥有较高的优先级,在一定条件下可以终止外设正在进
行的发送过程。PS/2协议采用的传送数据帧的格式为:1位起始位(0)、8位数据位、1位奇偶校验位、1位停止位(1)。数据发送时低位在前,高位在
后。外设每收到主机发来的1帧数据,都要紧随该帧的停止位发送一个握手
位ACK(0)应答主机。然后,外设还要发1帧应答数据(0xF0),表示外设已经完整地接收到了主机的命令;而主机则不需发送握手位,也不需要发送
应答帧。
键盘到PC键盘接口的通信
当时钟线和数据线均为高电平时,允许键盘发送数据,系统将接收数据;
当时钟线被拉为低电平时,表明系统禁止数据传输。发送时序包含1个低电平触发的起始位、8位数据位、1个奇校验位和1个高电平的结束位。
PC系统到键盘的通信协议
若时钟线出现高电平,数据线出现低电平,表明系统请求发送,键盘准
备产生同步时钟脉冲串,并接收数据。包含了1个低电平触发的起始位、8位数据位、1个奇校验位、1个应答位、1个高电平的结束位。
33
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
34
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
#include
//单片机库函数 #include
bit F_0=0;
//延迟函数
void delay(unsigned int i)
{
unsigned char j; //当i为10000时约延时1 s
while(i>0)
{
i--;
for(j=0;j<10;j++) ;
}
}
//串口发送中断函数send()
void send()interrupt 4 //串行中断函数 {
while(!TI){} //当接收标志位为0时,等待
F_0=1; //自定义标志置1 RI=0; //清RI
}
//发送数据函数sendkey()发送字符数据value
void sendkey(unsigned char value)
{
SBUF=value; //将待发送的数据填入SBUF while(!F_0){} //未发送完则等待 F_0=0; //清发送标志位 } //检测键的有无函数 void checkkeys1(void)
{
unsigned char a;
delay(10); //延迟(抖动)一下
35
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
a=P1;
switch(a) //判断a的取值 {
case 0x80: //按下key1,灯顺序闪亮
sendkey(3);
P2=0xf0; //初始化P2 使灯全灭
while(1)
{
P2=0xe0; //LED1亮
delay(200); //持续一段时间
P2=0xf0; //LED1灭
P2=0xd0; //LED2亮
delay(200); //持续一段时间
P2=0xf0; //LED2灭
P2=0xb0; //LED3亮 这样反复置位
//从而实现想要的效果
delay(200); //持续一段时间
P2=0xf0; //LED3灭
P2=0x70; //LED4亮
delay(200); //持续一段时间
P2=0xf0; //LED4灭
a=P1;
if(a==0x80||a==0x20||a==0x40||a==0x10||P0!=0xf0)break; //有其
他键按下时跳出
}break;
case 0x20: //按下key2,灯逆序闪亮
sendkey(7);
P2=0xf0; //初始化P2 使灯全灭
while(1)
{
P2=0x70; //LED4亮
delay(200); //持续一段时间
P2=0xf0; //LED4灭
36
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
P2=0xb0; //LED3亮
delay(200); //持续一段时间
P2=0xf0; //LED3灭
P2=0xd0; //LED2亮这样反复置位;从而实现想要的效果
delay(200); //持续一段时间
P2=0xf0; //LED2灭
P2=0xe0; //LED1亮
delay(200); //持续一段时间
P2=0xf0; //LED1灭
a=P1;
if(a==0x80||a==0x20||a==0x40||a==0x10||P0!=0xf0)break;//有其他
键按下时跳出
}break;
case 0x40: //按下key3,灯向内收缩闪亮
sendkey(15);
P2=0xf0; //初始化P2 使灯全灭
while(1)
{
P2=0x60; //LED1和4亮
delay(400); //持续一段时间
P2=0xf0; //LED1和4灭
P2=0x90; //LED2和3亮
delay(400); //持续一段时间
P2=0xf0; //LED2和3灭
a=P1;
if(a==0x80||a==0x20||a==0x40||a==0x10||P0!=0xf0)break; //有其
他键按下时跳出
}break;
case 0x10: //按下key4,灯向外扩展闪亮
sendkey(11);
P2=0xf0; //初始化P2 使灯全灭
while(1)
{
37
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
P2=0x90; //LED2和3亮
delay(400); //持续一段时间
P2=0xf0; //LED1和4灭
P2=0x60; //LED1和4亮
delay(400); //持续一段时间
P2=0xf0; //LED2和3灭
a=P1;
if(a==0x80||a==0x20||a==0x40||a==0x10||P0!=0xf0)break; //有其
他键按下时跳出
}break;
}
}
//检测键的有无函数、并判断是哪一个键按下 void checkkeys2()
{
unsigned char code a[4]={0xfe,0xfd,0xfb,0xf7};
unsigned char k,l,m,n,i;
delay(10); //延迟抖动 if(P0!=0xf0) //假如p0不等于0xf0,则认为有键按下
{
for(i=0;i<4;i++) //扫描第i列
{
P0=a[i]; //循环赋值
delay(10); //消除抖动
if(P0!=a[i]) //满足则认为有键按下
{
m=P0&0xf0; //进行行扫描m表示对应的行数
n=a[i]&0x0f; //n表示对应的列数
}
}
k=m|n; //k表示键码对应的数据
switch(k)
{
38
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
case 0xee: //第一列的第一个键
{
sendkey(0);
while(1) //循环闪烁
{
P2=0xf0; //对应数值亮(在这不会亮,主要是为了与后
面对应才这样写)
delay(150); //持续一会
P2=0xf0; //全部熄灭
delay(150); //持续一会
l=0; //清变量l
for(i=0;i<4;i++) //判断是否有键按下
{
P0=a[i]; //然后比较P0和a[i],只要不等则认为有键按下
delay(30);
if(a[i]!=P0) l++; //有键按下则自增变量l
}
if(l!=0)break; //如果没键按下,继续闪烁
}break;
}
case 0xde: //第一列的第二个键
{
sendkey(4);
while(1) //循环闪烁
{
P2=~0x20; //对应数值亮
delay(150); //持续一会
P2=0xf0; //全部熄灭
delay(150); //持续一会
l=0; //清变量l
for(i=0;i<4;i++) //判断是否有键按下
{
P0=a[i]; //然后比较P0和a[i],只要不等则认为有键按下
39
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
delay(30);
if(a[i]!=P0) l++; //有键按下则自增变量l
}
if(l!=0||P1!=0)break; //如果没键按下,继续闪烁
}break;
}
case 0xbe: //第一列的第三个键
{
sendkey(8);
while(1) //循环闪烁
{
P2=~0x10; //对应数值亮
delay(150); //持续一会
P2=0xf0;
delay(150); //持续一会
l=0; //清变量l
for(i=0;i<4;i++) //判断是否有键按下
{
P0=a[i]; //然后比较P0和a[i],只要不等则认为有键按下
delay(30);
if(a[i]!=P0) l++; //有键按下则自增变量l
}
if(l!=0||P1!=0)break; //如果没键按下,继续闪烁
}break;
}
case 0x7e: //第一列的第四个键
{
sendkey(12);
while(1) //循环闪烁
{
P2=~0x30; //对应数值亮
delay(150); //持续一会
P2=0xf0;
40
哈尔滨工业大学华德应用技术学院专科毕业设计(论文)
delay(150); //持续一会
l=0; //清变量l
for(i=0;i<4;i++) //判断是否有键按下
{
P0=a[i]; //然后比较P0和a[i],只要不等则认为有键按下
delay(30);
if(a[i]!=P0) l++; //有键按下则自增变量l
}
if(l!=0||P1!=0)break; //如果没键按下,继续闪烁
}break;
}
case 0xed: //第二列的第一个键
{
sendkey(1);
while(1) //循环闪烁
{
P2=~0x80; //对应数值亮
delay(150); //持续一会
P2=0xf0;
delay(150); //持续一会
l=0; //清变量l
}
41