0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何采用51单片机实现PS2键盘的设计?PS2键盘的引脚图介绍

PS/2接口是一种PC兼容型计算机系统上的接口,可以用来连接键盘及鼠标。区别于现在流行的USB口,即以前所谓的5针圆口,主板后面的插槽里都有预留的PS2接口,这种键盘/鼠标属于即插即用型,不用再装驱动。

分享:

要使用51单片机实现PS2键盘接口设计,需理解PS2接口规范及其通信协议。以下是详细步骤和引脚介绍:

PS2键盘引脚定义(6针Mini-DIN接口)

引脚 名称 描述 连接要求
1 DATA 键盘→单片机的串行数据线 接单片机IO口+上拉电阻
2 NC 空脚(不连接) 悬空
3 GND 地线(0V) 接单片机GND
4 VCC 电源(+5V) 接单片机+5V电源
5 CLK 键盘→单片机的时钟信号线 接单片机IO口+上拉电阻
6 NC 空脚(不连接) 悬空

关键连接:只需连接VCC、GND、DATA、CLK四根线。DATA和CLK需接4.7kΩ上拉电阻至VCC。


硬件连接示例(51单片机)

// Proteus/实际电路连接示意
VCC  → +5V电源
GND  → 单片机GND
DATA → P3.0 (或任意IO口,例:sbit PS2_DATA = P3^0)
CLK  → P3.2(使用INT0中断,sbit PS2_CLK = P3^2)

通信协议核心

  1. 双向同步串行通信(默认由键盘主导)
  2. 数据传输格式(11位/帧)
    • 1起始位(0) + 8数据位(LSB在前) + 1奇偶校验位 + 1停止位(1)
  3. 时序
    • 时钟频率:10~20kHz(周期50~100μs)
    • 数据在CLK下降沿有效

软件设计步骤(C语言代码框架)

1. 初始化设置

sbit PS2_DATA = P3^0;
sbit PS2_CLK  = P3^2;

void PS2_Init() {
    IT0 = 1;      // INT0下降沿触发
    EX0 = 1;      // 使能INT0中断
    EA  = 1;      // 开总中断
    PS2_CLK = 1;  // 初始化高电平(上拉)
    PS2_DATA = 1; // 初始化高电平(上拉)
}

2. 中断服务程序(接收数据)

volatile unsigned char byte_buf = 0; // 存储8位数据
volatile bit data_ready = 0;         // 数据就绪标志
unsigned char bit_cnt = 0;            // 位计数器

void INT0_ISR() interrupt 0 {  // CLK下降沿触发
    if (bit_cnt > 0 && bit_cnt < 9) {
        // 从低到高移入数据(LSB first)
        byte_buf >>= 1;             
        if (PS2_DATA) byte_buf |= 0x80;
    }
    bit_cnt++;

    if (bit_cnt == 11) {      // 收到11位(含起始/停止位)
        bit_cnt = 0;
        data_ready = 1;       // 置位数据就绪标志
    }
}

3. 主循环处理扫描码

void main() {
    PS2_Init();
    while(1) {
        if (data_ready) {
            data_ready = 0;
            Process_Scancode(byte_buf); // 处理键值
        }
        // 其他任务...
    }
}

4. 扫描码处理示例

void Process_Scancode(unsigned char scode) {
    // 典型扫描码示例:
    switch(scode) {
        case 0x1C: P1 = 0xA0; break; // 'A'键点亮LED
        case 0x32: P1 = 0x50; break; // 'B'键动作
        case 0xF0: // 键释放码(需后续处理)
        default: break;
    }
}

关键注意事项

  1. 扫描码类型
    • 通码(Make):按键按下时发送(如'A'键通码0x1C)
    • 断码(Break):按键释放时发送(通码前加0xF0)
  2. 特殊键处理
    • 扩展键(如方向键)以0xE0开头(两字节扫描码)
    • 状态键(Shift/Ctrl)需保持状态标志
  3. 去抖动:硬件滤波电容(10~100nF)或软件延时

调试技巧

  1. 用示波器/逻辑分析仪监测CLK/DATA时序
  2. 初始阶段使用串口输出接收到的扫描码(十六进制)
  3. 参考标准PS/2扫描码表(如'Enter'=0x5A, 'Space'=0x29)

完整实现需结合具体需求扩展键值映射、组合键处理等功能,建议查阅《PS/2键盘接口技术规范》获取完整扫描码表。

Verilog模拟PS2协议的实现

PS2协议读键盘值相当简单嘛,比模拟SPI、I2C简单多了...下面介绍一下具体过程.1.明确接线关系,只需接4根线,VCC要+5V,3.3我测试过不能用,时钟和数据线要用bidir双向口线,FPGA可以不用外接上拉电阻。另外,USB键盘也可以用,只要用一个转接头转成PS2即可。

CapXon 2019-07-12 06:55:49

如何使用ps2键盘

做一些额外的事情来让它发送到ps2键盘时钟和数据?我在VHDL编程,我决定检查是否ps数据和时钟都有任何结果。所以这就是我的工作。---开始代码实体键盘是port(时钟:std_logic

blueshine 2019-07-18 09:47:35

USB1口数据线上的PS2键盘有问题该怎么解决

在A40i核心板的USB1口的数据线上,通过WIT122U芯片实现一个PS2接口。在该PS2接口上接PS2键盘,发现按下键盘不松手的情况下,系统除了会输出按键按下的事件外,还会不断输出按键释放

远风 2021-12-31 06:08:42

PS2键盘接口驱动电路的设计

PlayStation 2,简称PS2,是日本sony(Sony)旗下的索尼电脑娱乐SCEI(Sony Computer Entertainment Inc.),于2000年3月4日推出的家用型128位游戏主机。

2019-11-21 07:04:00

如何用SH69P04单片机实现USB和PS2端口的MOUSE设计

基于SH69P04单片机实现USB和PS2端口的MOUSE设计

maobs20 2021-01-27 07:27:09

请问资料里的PS2鼠标实验能用不?

淘宝网上卖的STM32F103的开发板。我们要做个ARM单片机控制光电鼠标的实验,请问资料里的PS2鼠标实验能用不?(就是要可以记录移动和点击然后在TFT上显示)还有就是PS2的光电鼠标和机械鼠标用

dang56 2019-07-11 04:35:01

求一种基于STM32的PS2游戏手柄智能小车设计方案

PS2游戏手柄 。元旦节期间,组装起来,但是没有设计电路和单片机。元旦节后回公司时间比较多,于是在这期间我就了解了一下制作PS2游戏手柄的过程。材料: 坦克模型一套直流电机驱动 L298NPS2游戏手柄一套(包含接收器)STM32 单片机一块 STM32C8T612V电池一块稳压模块一个引脚接线 引

新星之火12138 2022-01-05 07:51:57

【梦翼师兄今日推荐】PS2键盘驱动程序设计讲解

又将如何?梦翼师兄携手大家一起来欣赏、来品味。项目需求设计一个ps2键盘的接口驱动电路。原理分析ps2的接口如下图所示:其中,1是数据线DATA;2是预留N/C;3是GND;4是VCC(+5V);5

mengyi1989 2019-12-03 21:40:30

PS2双向接口出错该怎么办?

你好,我有PS2键盘接口控制器的问题我试图在Verilog中实现。我怀疑我的两个双向端口,PS2时钟和PS2数据。我的顶级模块是zad5,它包含一个合适的主机PS2模块。从键盘传入的数据在

kingnet_52040 2019-10-23 06:42:05

沁恒股份USB-PS2键盘/条码枪数据采集方案介绍

USB-PS2键盘/条码枪数据采集方案用于采集USB和PS2键盘/条码枪的按键原始键值,通过串口、SPI接口、USB接口或网络接口传输给数据采集终端,采集终端进行按键键值的还原。最终获取按键的实际录入键值。此过程中不影响键盘的使用。此方案可广泛用于收银系统的扫描枪和键盘的数据采集。

2019-11-15 10:30:57

如何制作由PS2手柄控制的遥控小车?

使用,比如遥控我们熟悉的智能小车。突出的特点是这款手柄性价比极高,按键丰富,方便扩展到其它应用中。 1.PS2手柄控制 PS2手柄由手柄与接收器两部分组成,手柄主要负责发送按键信息;接收器与单片机(也可叫作主机,可直接用在PS2游戏机上)相连,用于接收手柄

2021-06-06 18:13:48

如何使用PS2手柄实现远程遥控?

如何使用PS2手柄实现远程遥控?

相当刺激 2022-02-07 06:58:56

FPGA视频教程:BJ-EPM240学习板-PS2键盘解码实验

PS/2接口是一种PC兼容型计算机系统上的接口,可以用来连接键盘及鼠标。而PS/2键盘连接则用来取代为IBM PC/AT所设计的大型5-pin DIN接口。PS/2键盘及鼠标接口在电气特性上十分类似,其中主要的差别在于键盘接口需要双向的沟通。

2019-12-11 07:05:00

怎么实现基于Arduino的PS2机械臂遥控小车的设计?

如何实现基于Arduino的PS2机械臂偏小车的设计?

zzpf 2021-10-19 06:02:01

SONY无线PS2遥控手柄与stm32单片机之间进行通信

SONY的PS2无线手柄是索尼游戏的遥控手柄,控制协议已被全球创客破解,可以方便用于机器人控制器,作为遥控输入设备。这款手柄价格便宜,性价比极高。原理PS2无线手柄按键比较多,例如在一款游戏

遇鱼余的小白 2021-11-26 07:31:52

深入浅出玩转FPGA视频:PS2键盘解码实验

PS/2键盘连接则用来取代为IBM PC/AT所设计的大型5-pin DIN接口。PS/2键盘及鼠标接口在电气特性上十分类似,其中主要的差别在于键盘接口需要双向的沟通。

2019-12-18 07:02:00

读取PS2无线手柄的左摇杆信号并驱动小车运动

2.2 硬件连线3 程序编制4 实际测试5 TIPS1 前言最近开始学习单片机和树莓派小车的编程相关内容,本例较为简单,旨在通过Arduino mega 2560 读取PS2无线手柄的左摇杆信号并驱动

uuwyfsdfsf 2021-09-01 08:13:24

PS2通讯协议的原理是什么?

PS2通讯协议的原理是什么?

大彭 2022-02-07 07:18:40

为什么enwim + PS2鼠标中加入WM窗口管理程序后PS2鼠标就不能用了?

[size=14.44444465637207px]谁有enwim + PS2 鼠标的 程序,或者是配置的步骤?我的程序,主程序不断的读取PS2鼠标的数据(用这函数

hjfsywer 2019-07-30 04:35:52

PS2游戏操纵杆摇杆模块

PS2游戏操纵杆摇杆模块(双轴按键摇杆)产品简介:双轴按键摇杆传感器模块由采用PS2摇杆电位器制作,具有(X,Y)2轴模拟输出,(Z)1路按钮数字输出。配合Arduino传感器扩展板可以制作遥控器等

h1654155275.6372 2021-07-19 09:40:59

FPGA控制的PS2接口电路设计

FPGA控制的PS2接口电路设计

richthoffen 2021-03-07 11:47:27

基于可编程逻辑器件的PS/2键盘接口的实现方法

本文在分析 PS/2协议和 PS/2键盘工作原理与特点的基础上,给出了在 ALTERA FLEX10K上对 PS/2键盘接口的实现方法。

2020-08-19 16:46:40

设置好PS2配置后,PS2鼠标是不是一直发送数据过来呀?求助啦

请问下,设置好PS2配置后,PS2鼠标是不是一直发送数据过来呀??我看到原子大哥的函数里面没有读取之类的命令,只有一个循环判断标志的指令。应该是一直发送吧?

vfdfvvdw 2020-08-09 22:43:29

怎么通过Spartan 3E板将PS/2鼠标或键盘连接到计算机

大家好。我想通过Spartan 3E板将PS / 2鼠标或键盘连接到计算机。我已经通过6针接头将ps2模块连接到电路板,whitch为我提供了额外的PS / 2端口。然后我将键盘与电路板和PS

vynywrwr 2019-05-14 13:58:16

「正点原子STM32Mini板资料连载」第三十章 PS2 鼠标实验

号,获取更多资料:正点原子第三十章 PS2 鼠标实验PS/2 作为电脑的标准输入接口,用于鼠标键盘等设备。PS/2 只需要一个简单的接口(2 个IO 口),就可以外扩鼠标、键盘等,是单片机理想的输入外

正点原子运营官 2020-04-13 10:35:04

PS/2键盘记录器的制作教程

PS/2键盘记录器串接在原PS/2键盘和PC之间,对PC是完全透明的,不可能被PC软件检测到。所有的击键操作被记录在一个64K的EEPROM中。可通过Keygrab软件察看。

2019-11-21 09:56:50

arduino与ps2手柄是怎样控制智能小车的

arduino与ps2手柄是怎样进行连接的?arduino与ps2手柄是怎样控制智能小车的?

hwp0415229 2021-10-18 13:21:44

【资料推荐】基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程

基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程1、材料L298N、Arduino板、数据线、舵机、机械臂、亚克力板、电机、PS2、杜邦线、电池(7.4V)、螺丝。2、软件

zzpf 2021-06-29 09:34:33

PS2通讯协议的知识点汇总,绝对实用

PS2通讯协议的知识点汇总,绝对实用

黄色的小金橘 2022-02-07 07:50:11

ps2怎么实现移动完后显示的坐标轴停留显示?

对于ps2实验结果,当我移动鼠标的时候,显示的坐标值就变化,一停就又归零啦。如果我想移动完后,显示的坐标轴停留显示,该怎么现实?请教!

URtea 2020-04-07 04:35:20

加载更多