0%

小霸王游戏机手柄原理

最近想着做一个FC的游戏机,重现一下儿时玩游戏的场景,既然游戏机都自己做了,顺便也做个手柄,做手柄之前需要先了解手柄的工作原理,本文详细解析了小霸王游戏机手柄的接口及电路原理,如何通过CD4021芯片实现数据的并行到串行转换,以及按键状态的读取。
小霸王游戏机可以说是陪伴了我们大半个童年,还记得小时候和朋友同学们一起玩小霸王游戏机时的兴奋。

7c897aa9-0dfb-4851-8e68-ae9e70822041.png

21f3e6cc-0b8d-483f-8796-b2e5a1f89a6a.webp

原装FC手柄

gamersky_04origin_07_20161113144989.jpg

gamersky_12origin_23_20161113144727.jpg

小霸王游戏机的手柄接口从外形上类似我们常说的DB9母头接口,但是手柄接口引脚定义与引脚功能与DB9接口差别较大。
1、DB9接口如下:

其引脚定义为:

引脚序号 2 3 5 1、4、6 7、8
信号定义 TXD RXD GND 其他信号

小霸王游戏机的手柄接口与DB母头外形相似(我们仍使用DB9母头的引脚编号),只用到了2、3、4、6、8五个管脚,这五个管脚的定义为:

引脚序号 2 3 4 6 8 1、5、7、9
信号定义 DATA LATCH(LOAD) CLOCK +5V GND 没用到
CD4021对应引脚 3(Q8) 9(P/S) 10(CLK) 16(+5V) GND
DATA CLK LATCH(LOAD) GND +5V

其手柄电路图为:
带连发功能电路图:
9a47f0c1794ec27124801ac0a0ec6b99.png

422f534c32e2053fbc2d9669eafc3a4a.png
不带连发功能电路图:
d73868c6fb292f70423cf19eefdea12f_r.png
电路中使用到的CD4021管脚图及其真值表如下:

cd4021.png

内部逻辑图如下:

LOGIC.png

从手柄电路图可知,CD4021的9管脚(P/S,即Parallel/Serial Control)即为LOAD管脚,手柄上的10个按键使用P1~P8来输入,其中单跳(单发)和连跳(连发)的区别在于连跳(连发)使用了555定时器作为脉冲输入,产生连续动作效果。当给9管脚高电平时,即可将P1–P8的数据所存到Q1–Q8(移位寄存器,其中Q1-Q5在CD4021内部,没有通过管脚引出)中,然后给9管脚低电平,即可选择并行转串行功能,使用Q8作为串行输出接口,给10管脚时钟输入即可进行串行输出,数据在时钟上升沿进行移位发送,读取Q8的电平状态即可,按键的状态与数据对应的位相对应,有按键按下,则相应位为0,无按键按下则对应位为1(因为P1-P8默认上拉)。

时序图如下:

2025-10-20_111217_535.png

数据位图如下:

D0 D1 D2 D3 D4 D5 D6 D7
A键 B键 选择(SELECT) 开始(START) 上(U) 下(D) 左(L) 右(R )

接下来就可以通过程序来接收手柄传来的数据了。