Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1140520
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: 嵌入式

2009-12-19 10:40:51

实例制作的是用一个AT89C51单片机连接PS/2键盘接口和一个16x2的液晶显示屏,当敲击键盘时,字母可以显示在液晶显示屏上。这个实例能启发你如何利用单片机来实现对PS/2接口的控制。实例中提供的源代码修改后可以用到其他PS/2键盘制作项目中。实例中提供的16x2字符型的液晶显示屏的驱动函数也可以其他项目。 电路原理 主电路板中的AT89C51单片机(可以用AT89C52/S51/S52直接替换,如用AT89C2051/4051则需要改程序)组成了51最小化系统。液晶显示屏于嗯了SMC1602A. 键盘通过PS/2六孔插座和主电路板。 PS/2设备的连接器使用mini-DIN连接器,正有6个引线,其中2个保留为用。DATA和CLK是可双向通信的 I/O线,也就是说 通过这两根线,既可以把主机的数据发送到PS/2设备,有可以把设备的数据发向主机。 在无键按下是,DATA和CLK一直处于高电平状态。但有键按下时,键盘先检查CLK,看它是否处于高电平,如果是处在低电平,说明主机无空闲接收数据,这是键盘将会把数据放在自己的缓冲区(16Bytes).直到CLK重新被拉高。键盘获得总线权,这是键盘产生始终信号在CLK上输出。同时每一个时钟周期在DATA线上输出一位数据。第1位是起始位为0,第2-9位为一个八位二进制数据 由地位到高位 依次输出,第10位为奇偶校验位

下面是电路原理图








 PS/2设备接口用于许多现代的鼠标和键盘,PS/2连接器上有四个管脚:电源地、+5V、数据和时钟。Host(计算机)提供+5V并且键盘/鼠标的地连接到host的电源地上,数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容易下拉到地(逻辑0)。任何你连接到PS/2鼠标、键盘或host的设备,在时钟和数据线上要有一个大的上拉电阻。置“0”就把线拉低,置“1”就让线上浮成高。

    从键盘/鼠标发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取;从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取。不管通讯的方向怎样,键盘/鼠标总是产生时钟信号。如果主机要发送数据它必须首先告诉设备开始产生时钟信号。最大的时钟频率是33kHz ,而且大多数设备工作在10-20kHz 。

    所有数据安排在字节中每个字节为一帧包含了11-12个位,这些位的含义如下:

    a.1个起始位,总是为0;

    b.8个数据位,低位在前;

    c.1个校验位奇校验;

    d.1个停止位,总是为1;

    e.1个应答位(仅在主机对设备的通讯中)。

    设备到主机的通讯如下:

    

    本系统PS/2接口使用的是PS/2键盘接口。主控制单片机HT48R70A来扫描或监视按键矩阵。如果它发现有键被按下、释放或按住,键盘将发送“扫描码”的信息包到计算机。扫描码有两种不同的类型:“通码”和”断码”。当一个键被按下或按住就发送通码;当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。

    例如:通码和断码是以什么样的序列发送到你的计算机,使得字符“G”出现在你的字处理软件里呢?因为这是一个大写字母,需要发生这样的事件次序: 按下“Shift” 键、按下“G”键,释放“G”键、释放“Shift”键。与这些时间相关的扫描码如下:Shift键的通码(12h),“G”键的通码(34h),“G” 键的断码(F0h,34h),“Shift”键的断码(F0h,12h)。因此发送到你的计算机的数据应12h,34h,F0h,34h,F0h, 12h。

    由以上可知,只需要用主控制单片机HT48R70A中的2个I/O按照PS/2协议来控制PS/2接口的Data线和Clock线就可以和PC通讯。

阅读(1870) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~