可锁键盘设计_第1页
可锁键盘设计_第2页
可锁键盘设计_第3页
可锁键盘设计_第4页
可锁键盘设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要在智能仪器、自动控制等领域,已大量使用嵌入式pc,如advantech公司的pc/104、amd公司的dimm-pc等。为适应开放式、模块化的要求,嵌入式pc具有标准的pc接口,如vga显示器控制接口、以太网接口、rs232接口、pc/at键盘接口等。所以,可以用标准的pc键盘对嵌入式pc进行操作与控制。键盘在输入指令之后,可能很长一段时间不用。为计算机安全和防止误触发,需要将键盘锁定,还要对某些键采取屏蔽措施,但是pc标准键盘不能满足这些要求。本文介绍一种用89c51设计实现的可锁定加密pc/at键盘。pc/at键盘具有结构简单、设计灵活、安全可靠的特点,可用于标准pc和嵌入式pc。本键

2、盘可以在标准的键盘基础上进行改造,只需换掉原来的控制芯片即可,可节省设计成本。关键词 89c51单片机;异步串行接口;键盘设计;ps/2 abstract 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, m

3、old 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 importati

4、on 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 cant satisfy these request.this text introduction is a kind of use a 89

5、 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

6、originally of control chip then, economical design cost.keyword the 89 c51 list slice machine;difference step string line connect;keyboard design; ps/2 目录摘要iabstractii第1章 绪论1第2章 设计要求与工作原理32.1 设计要求32.2 工作原理4第3章ps/2协议53.1 键盘到pc键盘接口的通信53.2 pc系统到键盘的通信协议5第4章 应用电路9第5章 89c51的结构与性能特点135.1 接口模块的特点135.1.1 标准p

7、c机键盘的工作原理145.1.2 键盘接口模块的工作原理与概述155.1.3 中断解码的工作原理165.1.4 主程序的工作原理16第6章 串口信号线的接法196.1 主要信号线定义196.2 单向并行通信接口的实现196.3 主从并行通信接口的实现206.4 主机发送从机接收方式的主机工作流程206.5 主机接收从机发送时的主机工作流程206.6无主从双向并行通信接口的实现21第7章 数据流程227.1 数据发送流程227.2 数据接收流程227.2.1 三种并行接口方式的特性分析227.2.2 电气特性237.2.3 接口的典型应用247.2.4 带有数据的指令28结 论29致 谢30参考

8、文献31附录1 英文原文与译文32附录2 硬件原理图34附录3 程序代码35第1章 绪论有一块集成电路组成的计算机,在这个集成的路中包含了处理单元,存储单元,i/o控制单元等,这里你应该了解 什么是单片机了吧它的作用是把一些常用的的功能或者要实现的比较复杂的有严格流程限制的任务在操作者一次编写好程序后,可以自动的运行,达到简化操作的目的,并且实现自动化和智能化,同时它的成本低廉,可以代替大规模地逻辑电路,不用在为实现某一种功能而设计专用的电路,只用一个芯片,加上少量的外围电路合适当的程序设计,就可以实现你所需要的功能。在某些需要运算,但是运算强度又不高的场合可以通过单片机来替换电脑,降低成本。

9、单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。 可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称pc机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体小,通常都藏在

10、被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机的应用领域: 用图象传感器测量线才系统卫星电视的串口模拟spi、i2c的应用,如雷达录取的数据传送。直接与ad芯片配合进行各种数据传感器配合。利用单片机与

11、pc机的232通讯进行控制,单片机为控制对象。通过ic卡、单片机、pc机构成的各种收费系统。通过单片机控制各种步进电机完成工控任务系统通过单片机控制各种电慈设备完成工控任务系统(如程控交换系统)可应用在电机的变频技术上的控制领域中。各种测量工具如水位尺,它在水文上的应用很普及。大型指针钟控制器,主要根据时间控制电机带动指针。电子配料控制仪,基于小型生产的自动或半自动控制,如控制上料、搅拌等用定时器和捕获功能进行某一系统的检测。可提供报警、控制等。如水位控制、温度控制,全自动洗衣机等。电子称重计教学用仪器、医疗仪器。由单片机构成的霓虹灯控制器。在刚的热处理中采用热磁仪测量。各种金属探伤仪器。矿山

12、生产智能监测仪。煤矿的产煤计数器20.汽车安全系统21.智能玩具22.用超声波测量江河水位23.交流电监测仪24.消防系统报警监测仪25.各类水表、电表第2章 设计要求与工作原理2.1 设计要求(1)扩展键盘键位编码符合显示分系统的约定。(2)扩展键盘与显示处理机通讯通过其异步串行接口来完成,波特率为9600 b/s。(3)扩展键盘与显示处理机通讯的接口电平为rs232c标准。(4)波特率相对误差应小于2.5。(5)扩展键盘的电源要求:直流5 v。(6)扩展键盘的环境温度要求:100500c。(7)4 kb可编程的e2prom。(8)128 b内部ram数据存贮器。(9)1个全双工的串行口。(

13、10)2个16 b定时器/计数器。 (11)5个中断源,2个中断优先级。 (12)可以寻址64 kb的程序存贮器和64kb的外部数据存贮器。扩展键盘由以下几部分组成:单片机89c51及时钟、复位电路。ttl电平到rs232c电平转换芯片icl232cpe,此芯片只需直流5 v电源。工作指示电路。键位阵列部分(813)。该键盘利用了89c51的片内e2prom作为程序存贮器,避免外扩存贮器占用单片机的输入/输出口资源;利用p3口的第二功能完成异步串行通讯功能;用一片icl232cpe作为接口电平转换芯片,便实现了键盘的全部硬件逻辑。硬件少,可靠性高。整个键盘采用5v直流电源;电路与键位阵列分离设

14、计。本键盘还克服了以往键盘设计中键位少、不通用等缺点。软件的设计原则:(1) 软件在结构上应清晰、简洁、流程合理。(2) 各功能子程序应实现模块化、子程序化,以便于调试、连接、移植和修改。(3) 程序存储区、数据存储区应合理规划,做到既节约内存容量,又方便操作。(4) 运行状态应实现标志化管理,对各功能程序的运行状态、运行结果以及运行要求都要设置状态标志以便查询。(5) 对需要特殊抗干扰的应用系统应采用软件抗干扰措施,以提高系统的可靠性。(6)如有必要可增加加密措施,以保护自身的合法的知识产权权利。2.2 工作原理扩展键盘通过异步串行接口与显示处理机相连,与标准键盘一起,显示处理机便拥有2个键

15、盘。2个键盘可同时向显示处理机发出干预命令。因此,显示分系统增加了一条输入干预命令的新途径,缩短了干预命令的输入时间,提高了人工干预的效率。pc键盘功能主要有按键识别、去抖、重键处理、发送扫描码、自动重发、接收键盘命令、处理命令等。键盘有编码键盘和非编码键盘。编码键盘程序设计简单,但硬件电路复杂,价格较高;非编码键盘用软件来实现识别键、编码转换、去抖等功能,硬件电路简单,价格便宜。现代微机系统中广泛采用非编码键盘。pc键盘多采用18行8列的二维矩阵行列结构。采用行扫描法识别按下的按键。第3章ps/2协议 ps/2协议是外设与主机之间通信的一种同步双向串行协议。在该协议中主机拥有较高的优先级,在

16、一定条件下可以终止外设正在进行的发送过程。ps/2协议采用的传送数据帧的格式为:1位起始位(0)、8位数据位、1位奇偶校验位、1位停止位(1)。数据发送时低位在前,高位在后。外设每收到主机发来的1帧数据,都要紧随该帧的停止位发送一个握手位ack(0)应答主机。然后,外设还要发1帧应答数据(0xf0),表示外设已经完整地接收到了主机的命令;而主机则不需发送握手位,也不需要发送应答帧。3.1 键盘到pc键盘接口的通信当时钟线和数据线均为高电平时,允许键盘发送数据,系统将接收数据;当时钟线被拉为低电平时,表明系统禁止数据传输。图3-1给出了发送时序,包含1个低电平触发的起始位、8位数据位、1个奇校验

17、位和1个高电平的结束位。图3-1 发送时序图3.2 pc系统到键盘的通信协议若时钟线出现高电平,数据线出现低电平,表明系统请求发送,键盘准备产生同步时钟脉冲串,并接收数据。包含了1个低电平触发的起始位、8位数据位、1个奇校验位、1个应答位、1个高电平的结束位。图3-2为时序图。图3-2 时序图(1) 键盘命令及执行过程 ffh:复位键盘。系统通过此软件复位命令使键盘进入程序复位和内部自测试,称为基本保证测试(bat)。复位键盘的过程如下:a. 键盘收到ffh后立即回送ack(fah)作答;b. 键盘接口收到ack后,将键盘时钟和数据线置为高电平;c. 键盘检测到此状态后开始bat操作;d. 如

18、果bat正确完成,键盘发送aah以表示结束,否则以fdh(或其它任何值)表示诊断有误。 feh:重新发送。当系统检测到从键盘送来的任何传输错误时,它便向键盘发送feh命令。键盘接收到此命令后,将重新送出原来的内容。 fdhf7h:空操作(保留未用)。 f6h:设置缺省值。此命令使键盘所有条件复位到电源接通时的缺省状态,键盘继续扫描。 f5h:设置缺省值和停止键盘。此命令使键盘所有条件复位到电源接通时的缺省状态,并停止键盘扫描,等待下一个键盘命令。 f4h:启动键盘。键盘接收到此命令后,用ack(fah)作答,清除输出缓冲器,并启动键盘开始扫描。 f3h:设置拍发速率和延时参数。每当按下任一键时

19、,键盘以拍发速率连续送出键的接通码,直到键被释放为止。延时参数是指按下一键后,键盘输出的响应时间。系统缺省设置:拍发速率=10个/s20%,延时=500ms20%。当要改变设置时可以使用f3h命令,并后跟一个字节的参数。参数定义如表3-1所列。表3-1 参数定义d7d6 d5d4 d3d2 d1 d00cba此命令的执行过程如下:a. 键盘收到f3h命令后,用fah予以响应,并停止扫描和等待随后的参数;b. 键盘若收到随后的设置参数,用另一个ack响应,并按其参数设置新的拍发速率和响应延时,之后重新开始扫描(若键盘原来是开放的);c. 键盘若收到fah命令,但无随后的设置参数,则键盘结束命令设

20、置,并 保持原来的拍发速率和响应延时,停止扫描。 f2h,f1,efh:保留未用。 f0h:设置键盘扫描码命令。此命令用于设置键盘的扫描码,后跟参数指定三种扫描码的哪一种。键盘复位时,默认扫描码是第二种。 eeh:回送命令。此命令用于辅助诊断,要求键盘接收到eeh时也要回送eeh予以响应。若键盘原来是开放的,则继续扫描。 edh:置位/复位led指示器。键盘右上角有三个led指示器,分别反映caps、num和scroll三个键的锁定情况。参数字节如表2-2所列。表3-2 参数字节定义d7-d3d2d1d0保留1=激励caps led1=激励num led1=激励scroll led 此命令执行

21、过程与f3h相似。若命令后跟参数,则按参数设定led状态并继续扫描。若仅有命令无参数,则不改变led原状态,并停止扫描。(2) 键盘响应键盘在下列四种情况下都会向键盘接口发送数据: 按下任一键,键盘以拍发速率向接口发送键盘接通扫描码。 释放所按下的键,键盘发送断开扫描码。 系统向键盘发送键盘命令后,键盘回送应答。 当用户按键速度超出键盘所能容纳的最大键个数时,键盘做出响应。后三种情况称为键盘响应。响应字节有7个,定义如下: feh:重新发送响应。当键盘收到一个无效的键盘命令,或者检测到奇偶错的键盘命令时,键盘回送响应字节为feh,要求系统重发键盘命令。 fah:正常应答。对任何一个有效的键盘命

22、令,键盘回送fah予以响应。 00h:超限应答。当用户按键速度超出键盘所能容纳的最大键符个数时(16个字节的缓冲器),键盘发送00h。 fdh:诊断故障应答。键盘接受软件复位命令,执行自测试过程中。若检测到故障,则以fdh应答。此时,键盘停止扫描并等待下一个键盘命令。 aah:诊断正常应答。键盘在软件复位过程中,正常完成bat测试,以aah应答。 feh:回响命令的应答,对键盘feh命令的应答。 f0h:断开扫描码前缀,键盘对键符按下后释放的应答,第一个字节为f0h,第二个字节为接通扫描码(有几个键例外)。第4章 应用电路利用sk5278串行接口占用单片机口线少及无键按下时无须cpu干预的特点

23、,可以很容易地构成单片机的键盘接口电路,图3所示是at89c2051单片机与sk5278构成的键盘及接口电路。图中,at89c2051的p1.2、p1.3、p1.4口线分别与sk5278的“cs”、“clk”、“dio”端相连。为了提高按键的响应速度并减少单片机的干预。本方案将sk5278的按键有效指示端“key”与at89c2051的外中断端int0相连,由于int0为低电平中断,故而加入了一级非门以使“key”反相后与其相连。与表3-1电路对应的键盘处理程序如下:;位定义count data 70hrxbuf data 20h;i/o定义dio bit p1.4cs bit p1.2clk

24、 bit p1.3;主程序main:mov sp,#50hmov 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 ;键值送acjne a,#00h,key-1 ;k0键未按下转下键ljmp key0 ;k0键按下,转入相应键值处理子程序key1:cjne a,#01h,key-2;ljmp key1 ;k1键按下,

25、转入相应键值处理子程序key2:key15:cjne a,#0fh,keyfh ;k15键未按下,中断返回ljmp key15 ;key15键按下,转入相应键值处理程序keyfh:ret ;无键按下时中断返回读键盘值程序receive:clr cs ;读键盘数据有效setb dio ;将dio置为高电平输入状态acall dl 15s ;t1延时mov count,#08h ;共八位数据loop:setb clkacall dl 15s ;t2延时mov a,rxbufrl a ;数据左移一位mov rxbuf,amov c,dio ;读取一位数据mov rxbuf.0,cclr clkaca

26、ll dl 15s ;t3延时djnz count,loopsetb dio ;将dio重置为高电平输入acall dl 15ssetb cs ;读键盘数据无效ret该命令由二个字节组成。前半部分为指令,其中 为位地址,为数据。具体分配方式如表所列。当系统接收到此指令时(将按译码方式进行译码)具体的译码方式如表所列。小数点的显示可由位控制,为时,小数点显示,为时,小数点不显示。在该指令格式中,表示没有影响。如表4-1所示 a2a1a0显示位00010012010301141005101611071118表4-1位地址分配表与其它指令不同的是,此命令的前一个字节 为单片机传送到的指令,而后一个字

27、节则为返回的按键代码。 其范围为(无键按下时为)。在此指令的前半段, 的 引脚处于高阻输入状态,可以用来接收来自微处理器的指令;在指令的后半段, 引脚从输入状态转为输出状态,此时将输出键盘代码的值。故微处理器连接到 引脚的口应当有一个从输出态到输入态的转换过程。当检测到有效的按键时, 脚将从高电平变为低电平,并一直保持到按键结束。在此期间,如果 接收到“读键盘数据指令”,则输出当前按键的键盘代码;如果在接收到“读键盘数据指令”时没有有效按键,将输出()表4-2 译码方式表d0d3d3d2d1d07段显示00h0000001h0011102h0000203h0011304h0100405h010

28、1506h0110607h0111708h1000809h100190ah1010-0bh1011e0ch1100h0dh1101l0eh1110p0fh1111空无显示第5章 89c51的结构与性能特点5.1 接口模块的特点该模块在pc键盘与上位单片机之间起转换作用,它屏蔽了与pc键盘进行数据和命令交互的复杂过程,大大简化了上位单片机系统的输入设计;它实现了类似dos操作系统中键盘中断服务程序的功能,使设计人员只需关心接收按键的结果,并可使用标准的键盘编码进行编程;它要求上位单片机通过8位并行接口与其相接,对于不能提供并行接口的系统,可使用spi兼容的同步串行接口与其相接,特别是对于那些希望

29、占用单片机的系统资源少而需要扩展的键数较多、仪器整体需要美观大方的应用场合,其性能价格比更具优势。该模块与单片机系统的连接关系如图5-1所示,在图中也给出与上位单片机相接的20脚接插件的信号定义。图5-1该模块与上位单片机系统的连接关系及信号定义5.1.1 标准pc机键盘的工作原理键盘与主机通过键盘插头相接,键盘插头有5芯大插头和6芯小插头(ps/2接口)两种。接口信号有:电源、地、键盘时钟kb_clk、键盘数据kb_dat。正常工作时,键盘电路不断地扫描键盘矩阵。若有键按下,则以串行方式发送按键的位置扫描码给主板键盘接口电路。按下键时,发送接通扫描码,松开键时,发送该键的断开扫描码。断开扫描

30、码一般是在接通扫描码前加一个断开标志字节f0h。若某键一直按下,则以按键重复率连续发送该键的接通扫描码。扫描码与按键的位置有关,与该键的ascii码并无对应关系。表1第二列给出经实际测试得到的若干按键的位置扫描码。根据键的按下或释放及所按键的不同,这个序列可以是1、2、3、4、6、或8字节,可称之为位置扫描码序列。 ,读取键盘数据时,此脚在clk上升沿输出数据2keyo按键有效输出端,平时为低电平,当检测到有效按键时,此引脚变为高电平。读取键盘后,此引脚重新变为低电平3,14vdd正电源4rst复位端5vss电源地69x0x3i矩阵键盘行线输入端1013y0y3o矩阵键盘列线输出端15osco

31、o振荡输出脚,输出频率为rc振荡频率四分之一16rc外接振荡器连接端,r=3.3 k,c=20 pf时,振荡频率为4 mhz17csi片选端,该脚为低时,可芯片读取键盘数据18clki时钟输入端,读取键盘数据时,此脚电平的上升沿表示数据有效2 工作原理sk5278可用行线x0x3和列线y0y3构成44矩阵键盘。同时在芯片内部可自动完成扫描、译码、去抖动处理等任务。当sk5278检测到有效的按键时,按键有效指示“key”引脚将从低电平变为高电平,并一直保持到按键代码被读取为止。在“key”为高电平期间,如果接收到“读键盘数据”命令,(即“cs”管脚变低),则输出当前按键的键盘代码,键盘代码的范围

32、为00h-0fh。如果在接收到“读键盘数据”时没有按键按下,sk5278将输出ffh。在一次读键盘过程完成后,按键有效指”将变为低电平。利用按键有效指示“key”与单片机的外部中断端相连,可完成具有中断的键盘监控功能,sk5278的访问次数,以提高程序的效率。值得注意的是,如果有2个键同时被按下,则sk5278只能给出其中一个按键的代码,因此sk5278不适合应用于需要2个或2个以上按键同时被按下的应用场合。如确实需要双键组合使用或组合增加键盘数量,可在单片机的某i/o脚接入一键与sk5278共同组双键键盘监控电路。3 串行接口及时序sk5278采用串行方式与单片机或微处理器接口,串行数据从“

33、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键盘与该模块通过专用插座相连,数据

34、kb_dat接到at89c2051的p3.0引脚,时钟kb_clk接到引脚。在pc键盘有键按下时,kb_clk信号会引起at89c2051的连续中断,通过定时器t0与外中断的协同工作,可将pc键盘发出的位置扫描码序列接收至缓冲区中。然后,在主程序中将位置扫描码解码、查表换算,再编码成一字节的windows虚拟键代码或两字节的oem扫描码与ascii码,并存入系统中fifo栈。在上位单片机可以接收新键值时,将fifo栈中编码数据以并行或串行方式传送给上位单片机。 为了能更清楚地指示系统当前的工作状态,在硬件上加装了电源、正在解码、fifo栈溢出、码值准备好等指示灯。5.1.3 中断解码的工作原理

35、由于键盘的按键输入是随机的,为了能实时地响应,在程序中使用定时器t0中断和中断协同工作,将位置扫描码序列恢复至键盘接收缓冲区中。中断服务程序用来将码值的一位移入缓冲区中,t0溢出的中断服务程序主要用来判断一次按键所发出的码是否已全部接收。系统设置t0的定时间隔为5 ms,并在系统启动后就开始定时。由于在正常接收每个按键的码值序列过程中,键盘发送的每位数据间隔不会大于5 ms,因此在每次中断服务中,首先要判断t0是否溢出过,若曾经溢出,则认为该次中断是一次新码值接收的开始,需将位计数器清零,否则只需移入一位数据即可,然后重新启动定时器,退出中断服务程序。在新按键码值序列接收完成后,设置blnda

36、tavalid标志,以通知主程序。5.1.4 主程序的工作原理主程序主要有四个任务:将键盘接收缓冲区的位置扫描码通过查表等算法换成统一编码的一个字节windows虚拟键代码或两个字节的oem扫描码与ascii码;根据系统中caps lock键、num lock键及scroll lock键的状态信息控制键盘上三个指示灯的亮灭;系统中设立的fifo栈的维护;与上位单片机码值传送的握手交互过程。在主程序中检测到blndatavalid标志后,即说明在键盘接收缓冲区中已接收到一个新的位置扫描码序列,程序根据这个序列的不同特点做不同的处理,最后再根据硬件跳线的设置得到相应按键的windows虚拟键代码或

37、ascii码与oem扫描码,图5-3中的跳线接至“w”位时,编码为windows虚拟键代码。图5-3 主程序流程图虚拟键代码是windows系统中引入的一组按键编码常量,每一个按键都有惟一的码值与之对应。ascii码与oem扫描码则是在dos系统定义的,但在windows系统中沿用的按键码值定义,每一个按键都有两个码值与之对应,对于功能键,例如f1、home、up等,只存在oem扫描码,其ascii码为0。fifo栈是程序中设置的发送缓冲区,它是按“先进先出”原则建立的32字节循环队列,有一个队列头指针和一个队列尾指针。进队列时,编码数据进入由队列尾指针所指单元,同时队列尾指针增量,指向下一个

38、单元,当数据不断进入队列,使尾指针指向队列末端时,尾指针循环重新绕回队列始端;出队列时,编码数据从队列头指针所指的单元取出,同时队列头指针增量,指向下一个单元,在头指针指向队列末端时,也要重新绕回队列始端,但头指针始终不能“超过”尾指针。如果按键速度快于上位单片机接收码值的速度,有可能尾指针绕回后与头指针再次相等,这时表明队列已满,不能再存入数据,如果此时再有键按下,那么栈溢出指示灯将点亮。 在系统中设立了三个标志分别对应于caps lock键、num lock键及scroll lock键的状态,每次有这三个键按下时,程序都要翻转相应标志,然后向键盘发送edh命令,命令键盘对其上的三个led指

39、示灯做相应激励。在向上位单片机发送fifo栈首的码值之前要先检测ack信号状态以确定上位单片机是否已取走上次码值。若ack信号有效,则将码值锁存在p1口上,然后由p3.7产生模拟的时钟脉冲信号,一方面将8位并行码值置入串-并转换芯片(74ls165)中,另一方面将触发器(74ls74)置为1,使端变为0,为上位单片机提供码值准备好(ps_ready#)的状态信号,并点亮指示灯。在上位单片机中,可查询此状态信号也可利用此状态信号申请中断。上位单片机若采用并行接口方法,则发出读缓冲器信号(p_rd#)和片选信号(p_cs#),便可通过三态缓冲器(74ls244)取得键值;若采用串行接口方法,则需发

40、出串行时钟(s_clk),从74ls165的串行数据端(s_dat)读回8位码值。在上位单片机读取完当前的键值后,ack信号将由握手逻辑自动置为有效,系统可通过检测ack信号的状态以发送下一个码值。串行端口的本质功能是作为cpu和串行设备间的编码转换器。当数据从cpu经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在windows环境(windows nt、win98、windows2000)下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。第6章 串口信

41、号线的接法一个完整的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位

42、端口可以是p03的任何一个。数据传送的流程是:单片机a将数据送到端口后,通过stb信号中断单片机b,单片机b进入中断并从端口读取数据,读完后,利用busy信号进行应答,单片机a在检查到端口线chk上的应答信号后,就可以发送下一个数据了。以上是采用中断方式进行数据传送的具体方法。当然,单片机b也可以采用查询方式接收数据。利用单向并行通信接口方法的优点是可以充分利用单片机的资源来扩充整个系统的串行通信接口、并行接口、定时器等部件。6.3 主从并行通信接口的实现主从并行通信接口的特点是两单片机之间能够通过并行通信接口将数据发送到对方,但这种方法必须有一个单片机处在主机状态,另一个单片机处在从机状态。

43、单片机a是主机,单片机b是从机,该接口使用了一个8位端口(如p0或p1)和4根控制信号线。在主从工作方式下,该接口的工作方式有主机发送从机接收和主机接收从机发送等两种情况。6.4 主机发送从机接收方式的主机工作流程主发从收方式的工作流程如下:(1)主机设置数据传送方法控制位dir为0,以表示主机有数据发送到从机;(2)主机在stb端口产生一个负脉冲,以使从机进入中断,并准备接收数据;(3)主机将数据送8位数据端口,再设定ack信号表示数据有效;(4)主机检查chk端口,等待从机从8位端口取走数据;(5)数据发送完成返回。6.5 主机接收从机发送时的主机工作流程主机接收从机发送方式时的工作流程如

44、下:(1)主机设置数据传送方向控制位dir为1,以表示主机将从从机读取数据;(2)主机在stb端口产生一个负脉冲,以使从机进入中断,并准备发送数据;(3)主机查询chk端口,等待从机将数据送到8位端口上;(4)主机从8位端口上读取数据,再设定ack信号以表示数据已被读取;(5)数据接收完成返回。在主从并行通信接口工作方式下,无论从机是接收数据还是发送数据,都是在中断(也可以是查询方式)方式下进行的,从机的工作流程如下:(1)进入中断服务程序;(2)检查数据传送的方向;(3)如果dir为0,则等待chk信号有效,再从8位端读取数据,读完后设定ack信号有效;(4)如果dir为1,从机将数据送到8

45、位端上,再设定ack为有效,并等待主机取走数据(即chk信号有效);(5)退出中断服务程序。6.6无主从双向并行通信接口的实现无主从双向并行通信接口的特点是两个单片机处在平等的地位,两个单片机均可随时提出申请,向对方发送数据,当然也可通过简单的接口协议从对方读取数据。这种情况下,就有可能出现两个单片机同时提出使用8位端口的申请而发生冲突,从而影响双方数据的传送。要解决这个问题,就要求每一方必须在数据传送之前进行检查,以判断8位端口是否被对方所使用,从而避免冲突的发生。无从双向并行通信接口中采用了5根控制信号线,其中chk/ack控制信号线,其中chk/ack控制信号线的功能可以复用。8位端口可

46、以是p0、p1或其它8位i/o口。在无主从双向并行通信接口中,由于单片机a与单片机b没有主从关系而处在平等位置,所以单片机b与单片机a的数据接收发送流程完全相同。这里只说明单片机a的数据接收发送流程。第7章 数据流程7.1 数据发送流程下面给出单片机a的数据发送流程:(1)检查chkreq,判断单片机b是否提出了数据传送申请;(2)如果单片机b提出了申请,则转a继续等待;否则,单片机a提出申请,将req置为有效;(3)再次检查chkreq,判断单片机b是否同时提出了申请;(4)如果单片机b提出了申请,则发生冲突;清除req并延时;然后执行(1);(5)将数据送8位端口,设定stb有效;(6)检

47、查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口。系统中每一个单片机只有一个中断源。在单个中断源情况下的中断

48、响应时间为38 s。在单向并行通信接口工作方式下,数据只从单片机a向单片机b传送,假设接收方单片机b中断接收。个字节的传送过程将包括数据发送端口、通知接收方、等待接收方的已接收应答等三个部分。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是广泛

49、应用的串口通信标准,但因其推出较早,在现代网络通信中已暴露出数据 传输速度慢、传输距离短、接口处各信号间容易产生干扰等明显的缺点。鉴于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

50、公司生产的max48x/49x系列收发器芯片,适 合于rs-422/rs-485通信标准,在实际设计中得到了广泛应用。本设计采用max485收发器芯片完成rs-485标准接口通信89c51是mcs-51系列单片机的典型产品之一。其内部具有的硬件资源如图7-1所示。 图7-1 89c51功能框图4 kb可编程的e2prom。面向控制的8 b cpu。128 b内部ram数据存贮器。32 b双向输入/输出线。1个全双工的串行口。2个16 b定时器/计数器。5个中断源,2个中断优先级。时钟发生器。可以寻址64 kb的程序存贮器和64 kb的外部数据存贮器。该键盘利用了89c51的片内e2prom作为

51、程序存贮器,避免外扩存贮器占用单片机的输入/输出口资源;利用p3口的第二功能完成异步串行通讯功能;用一片icl232cpe作为接口电平转换芯片,便实现了键盘的全部硬件逻辑。硬件少,可靠性高。整个键盘采用5 v直流电源;电路与键位阵列分离设计。本键盘还克服了以往键盘设计中键位少、不通用等缺点。软件功能流程图,如图所示7-2主程序流程图7.2.3 接口的典型应用大多数计算机应用系统与智能单元之间只需使用3到5根信号线即可工作。这时,除了txd、rxd以外,还需使用rts、cts、dcd、dtr、dsr等信号线。(当然,在程序中也需要对相应的信号线进行设置。)以上接法,在设计程序时,直接进行数据的接

52、收和发送就可以了,不需要对信号线的状态进行判断或设置。(如果应用的场合需要使用握手信号等,需要对相应的信号线的状态进行监测或设置对于不带spi串行总线接口的mcs51系列单片机来说,可以使用软件来模拟spi的操作,包括串行时钟、数据输入和数据输出。对于不同的串行接口外围芯片,它们的时钟时序是不同的。对于在sck的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应将其串行时钟输出口p1.1的初始状态设置为1,而在允许接口后再置p1.1为0。图7-2 主程序流程图这样,mcu在输出1位sck时钟的同时,将使接口芯片串行左移,从而输出1位数据至mcs51单片机的p1.3口(模拟mcu的m

53、iso线),此后再置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决定,即:

54、此时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的初值计算如下: 解上式可得:x1250(fah)或x2249(f9h)将x置入th1,tl1时,波特率发生器产生的实际的传输速率为: 或波特率28 928.57 b/s,波特率误差27无论置入哪个数,pc机与单片机之间均无法完成正常的通讯。若采用11.059 2 mhz晶振,按照上面公式计算出x250 fah,实际的传输速率为9 599.83 b/s,其误差为0.001 77,pc机与单片机的通讯可正常进行。另外,smod位的选择有时也能影响波特率的误差。因此在波特率设置时,对smod位的选取也需慎重考虑。设计按键阵列时,应采用标准键盘的导电橡胶薄膜按键阵列,避免使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论