我拆解了小霸王游戏机,又改装了个更牛的,附教程

我拆解了小霸王游戏机,又改装了个更牛的,附教程

首页休闲益智我的坦克io更新时间:2024-05-09

前方超详细教程预警!!包括——游戏机原理解析、电路设计、程序设计。

工程描述

我拆解了原来的小霸王游戏机,又用51单片机复刻了一个更牛的!它可以:

工程借用了原游戏机的——外壳,屏幕,按键,扬声器。

升级了电源系统,采用锂电池供电,TypeC接口充电。

整个项目的核心部件如下图所示:

下面先介绍一下我改造好的游戏机参数,再分享详细的制作教程!

项目参数与成本

1.核心参数

2.成本预算

开发说明

1.开发方式

2.烧录方法

该设备使用STC-ISP进行烧录,可从STC官网下载。烧录步骤如下:

①烧录固件时需要先配置参数,如下图所示:

将游戏机关机。

点击【下载/编程】按钮。

按住游戏机开机键不放,直到烧录完成。

3.按键说明

游戏机的开关机是通过软硬件配合实现的。

除了开关机按键是固定的,其他按键都可以通过修改代码自定义功能

(1)开关机按键说明:

(2)游戏模式下的按键说明:

制作过程

本章节有7部分内容,你可以跟着本章节思路——拆解游戏机、理解工作原理、设计电路代码……

1.游戏机挑选

首先采购这款适合改装的型号;

然后对其进行拆解,分析其工作原理。

PS:这种游戏机几乎都采用专用的牛屎芯片,很难从芯片获得信息。

2.驱动原理分析

通过仪器对电路板上的信号进行测量。

可以发现按键就是高低电平的变化蜂鸣器是PWM信号

这些分析起来相对来说还比较简单。

复杂的是LCD屏幕的驱动信号。

这种类型的屏幕大多采用的是——多电平扫描驱动。

用示波器分别查看这36个CD驱动引脚的波形,可以发现其电平形式大致分为两类

一类是如图所示的波形信号:规律性很强。

它共有四个电平段,分别是:

总结:有规律的信号是COM引脚,控制当前屏幕扫描的哪一列。

另一类是相对无规律的波形信号。

它共有三个电平段,分别是:

总结:无规律的信号是SEG引脚,控制当前屏幕扫描那一行。

3.LCD 驱动电路的实现

搞清楚了LCD驱动的型号形式,接下来的难点是——如何使用单片机的引脚产生这样的信号?

普通的单片机引脚只有高低两种电平,要想产生上述信号,可以借助电阻分压来实现。

(1)关于SEG信号

如图所示,只需要使用一个单片机引脚和两个10K电阻即可。

①当单片机引脚A输出低电平时:

SEG端的电压为GND。

②当单片机的引脚悬空时:

SEG端的电压为二分之一VCC。

③当单片机引脚A输出高电平时:

SEG端电压为VCC。

(2)关于COM信号

COM信号的实现稍微复杂一些,需要使用两个单片机引脚和三个电阻,连接方式如上图所示,电阻阻值分别是9K,3K和24K。

①当单片机引脚A悬空,引脚B输出低电平时:

COM端的电压为GND。

②当单片机引脚A和B都悬空时:

COM端的电压为四分之一VCC。

③当单片机引脚B悬空,引脚A输出高电平时:

COM端的电压为四分之三VCC。

④当单片机引脚A悬空,引脚B输出高电平时:

COM端的电压为VCC。

4.原理图设计

有了上述的理论基础,接下来就可以设计电路图了。

LCD屏幕上一共有10个COM引脚和26个SEG引脚,所以采用上述方式驱动LCD一共需要46个单片机引脚

本项目采用了LQFP封装的51单片机STC8H8K64,一共有60个可用的IO口,恰好能满足该项目的需求。

LCD驱动电路采用了庞大的电阻网络,给整个系统添加了——USB转串口,锂电池充电,单键开关机等功能电路

5.PCB设计

设计完原理图后,拆下原有游戏机的电路板,测量——外框尺寸、螺丝孔、按键的位置确定PCB的形状

布线还算简单,设计完成的PCB渲染图如下所示:

PCB设计好之后拿到嘉立创下单打样,并且进行STM贴片。

贴片的时候为了节省费用,我这里只贴了立创基础库里面的元器件,剩下的元器件就拿回来自己手焊。

下图是焊接好的PCB正反面:

6.LCD驱动程序设计

LCD的驱动程序采用定时器,2mS扫描一个COM引脚,同时将要显示的数据放到SEG引脚上。

10个COM引脚扫描一遍需要20mS,所以屏幕刷新率为50Hz

7.蜂鸣器驱动程序设计

采用定时器配合GPIO引脚产生方波驱动蜂鸣器。

首先根据要播放的音符的频率,计算定时器的参数,将其内置到数组中,然后制定音乐数据的格式。

本项目中一共内置了16个音高16阶时值

音乐数据中每个音符用一个字节表示。

比如0x47,高四位的4表示音高为587Hz(中音2),低字节的7表示时值为(7 1) * 16分音符,即二分音符。

8.俄罗斯方块游戏设计

驱动完成后就可以编写游戏了。

具体的实现过程是:

①先对游戏中出现的方块进行分类。

②将方块及旋转镜像的变形,都转换成二进制数据。

③在程序里面通过定时器控制方块的下落,对方块的旋转,左右移动进行处理。

④当方块下降到最底部时,检查是否有完整的行。

如果有,则将其消除,然后随机生成下一个方块,循环往复。

时间有限的关系,我只做了贪吃蛇,但你可以参考我这个设计,自己实现坦克大战,贪吃蛇……等的各种游戏

我一直认为,游戏程序中所涉及的逻辑比普通的项目多得多,相信在设计过程中,你会有所收获

详细的代码和电路已经完全开源,无偿分享,但格式原因无法完全上传,有需要可以在评论区和我说一声。

参考资料:

[1]https://oshwhub.com/dr.zhang/Subor

— 完 —

嘉立创EDA·头条号

关注我,看一手优质开源项目

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved