小霸王游戏机可以说是陪伴了我们大半个童年,还记得小时候和朋友同学们一起玩小霸王游戏机时的兴奋。
这里沾一下小霸王游戏机的手柄
从图片中可以看出,小霸王游戏机的手柄接口从外形上类似我们常说的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 |
其手柄电路图为:
电路中使用到的CD4021管脚图如下:
其真值表如下
从手柄电路图可知,CD4021的9管脚(P/S,即Parallel/Serial Control)即为LOAD管脚,手柄上的10个按键使用P1-1~~P1-8来输入,其中单跳(单发)和连跳(连发)的区别在于连跳(连发)使用了555定时器作为脉冲输入,产生连续动作效果。当给9管脚高电平时,即可将P1–P8的数据所存到Q1–Q8(移位寄存器,其中Q1-15在CD4021内部,没有通过管脚引出)中,然后给9管脚低电平,即可选择并行转串行功能,使用Q8作为串行输出接口,给10管脚时钟输入即可进行串行输出,数据在时钟上升沿进行移位发送,读取Q8的电平状态即可,按键的状态与数据对应的位相对应,有按键按下,则相应位为0,无按键按下则对应位为1(因为P1-P8默认上拉)。
数据位图如下:
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
---|---|---|---|---|---|---|---|
A键 | B键 | 选择(SELECT) | 开始(START) | 上(U) | 下(D) | 左(L) | 右(R ) |
接下来就可以通过程序来接收手柄传来的数据了。