技术文档

单片机 游戏机 用单片机做一个游戏机:找到红白机的感觉

小编 2024-10-09 技术文档 23 0

用单片机做一个游戏机:找到红白机的感觉

前言: 上次的测评结束后一直想利用板载的 ATMEGA328P 做个完整的应用,但是最近的工作和生活都不如意,一直抽不出时间,一晃就到这个时候了。心情也是一如昨天的天气,但是刚好有时间了,那就做点有意思的事情。毕竟拿到这样一块板子也不容易,既然活动能够给我发过来,那我也是该尽力而为,也算是投桃报李。

1、界面演示

Arduino 对328p的支持也挺好,刚好在论坛看到一个帖子,使用arduiboy的库写了个小游戏,看了下很有意思的。而且连芯片都是一样的,甚至连移植都不需要。有一块328p的处理器,再加上一块OLED12864就OK了。

接下来给大家看看运行中的界面,还是挺有意思的。想想那会在学校在proteus上找打一个51单片机的仿真,记得当时做的是万年历,足足高兴了一周。想想现在日渐消沉的心态,越发得怀念大学。

开始界面===

运行界面1===

开始界面2===

游戏的操作就和以前的小霸王上的 炸弹人 是一样的,上下左右控制小人的方向;一个A键,一个B键,A键投弹,B键暂时搁置,你也可以把这个键编程为暂停或者投弹。只是游戏的难度可能要小一点,趣味性不足真正的 炸弹人 ,每一关的过关标准只要炸死一个怪物就行。但是,若是想学习在单片机上的游戏编程,这个选择非常不错,逻辑简单,电路清晰,并且直观呀。

程序的注释也是非常详细的:

/*=========================================================

主菜单

=========================================================*/

void MENU() {

bool POA = false;

while (POA == true || KeyBack != 4) {

key();

switch (KeyBack) {

case 0:

POA = false;

break;

case 1:

POA = true;

break;

case 4:

if (POA == true) {

KeyBack = 255;

arduboy.clear();

arduboy.setCursor(0, 0);

arduboy.println(F(" >About"));

arduboy.println(F(""));

arduboy.println(F("LHW programming"));

arduboy.println(F("LHW Art"));

arduboy.println(F("E-mail"));

arduboy.println(F("1281702594@qq.com"));

arduboy.println(F(""));

arduboy.println(F("Any key back..."));

arduboy.display();

delay(200);

while (KeyBack == 255) key();

delay(200);

}

break;

}

arduboy.clear();

arduboy.drawSlowXYBitmap(39, 1, START_TITLE , 87, 39, 1); //大标题

arduboy.drawSlowXYBitmap(0, 23, TITLE_TNT , 37, 41, 1); //TNT图标

arduboy.drawSlowXYBitmap(65, 58, LHW , 39, 5, 1); //作者信息

arduboy.setCursor(70, 39);

arduboy.println(F("PLAY"));

arduboy.setCursor(70, 47);

arduboy.println(F("ABOUT"));

if (POA == false) arduboy.setCursor(62, 39); else arduboy.setCursor(62, 47);

arduboy.println(F("*"));

arduboy.display();

}

}

2、电路的设置以及修改

整个电路的设计参照Arduboy ,这是一个开源项目,设计的这块办卡大小仅相当于信用卡。 装有经典的8位游戏,我们可以在官网的开源中下载相关的游戏编译通过之后,下载到我们的板子。但是,注意一下哦,这里的主控是 Atmega32U4 ,在使用我们的DFRobot蓝牙控制器 做主控时使用我附件提供的库文件 Arduboy2 。

具体的电路设置参考 Arduboy2 文件夹 中的电路,为了大家查看方便,我已经在附件 原理图 单独提取出来了。电路中中特别重要的是6个按键和IIC通信的OLED12864,其他的什么晶振电路,复位都不用管,实际采用的电路如下,需要修改的地方已经用蓝色笔画出来了:

根据我们的模块来看,其中有两个地方需要修改。其中的D3和D4的功能是作为我们游戏机的按键,现在连接了蓝牙模块的引脚。D3我没有试过,D4连接到蓝牙模块的时候,游戏开始的时候,上下键都没有反应。所以我干脆一不做二不休,将两个电阻都挑开了。但是来到咱们板子上找电阻的时候,上面没有标号的丝印。这也不难,将万用表打到蜂鸣器档位,然后从ATMEGA328P 的PIN1和PIN32定位到电阻,然后挑开。为了保险只是将上面的两个电阻挑开,没有直接拆掉是为了下次需要的时候再接上:

现在只需要加上OLED屏就行,然后加上我们的按键。我找了一块以前的洞洞板做了个小小的固定,随便焊接的,有点丑,但是不影响使用。焊接按键的时候需要注意,焊接完成后开机试试,这个时候玩游戏若是没问题,那是最好。否则,在GND上插上一根跳线,然后在各个引脚上一路扫过来,确定这个按键。当然,优先参看原理图。

按键===

OLED12864===

3、程序的导入以及下载

程序的下载链接:GITHUB:https://github.com/createskyblue/Bomberman

首先编译程序,在没有库文件的情况下会报错。这里不是导入官方的Arduboy2 库 ,上面介绍Arduboy 就说了注意事项,这里两者的芯片不一样,这里导入我给的库。找到帖子中提到的 Arduboy2库 ,然后将 Arduboy2 到自己 arduino IDE的库里面,库的位置可以使查看编译的输出信息。比如,我的库位置:C:\Users\Administrator\Documents\Arduino\libraries。

然后直接打开 工具 对自己的开发板进行设置,这里不设置为Pro mini,而是设置为 nano,8MHZ,3.3V (频率和手册里面的数据一样),因为可能会出现不能下载的情况下,记得勾选 old bootloader ,然后再下载。如果选择Pro mini 下载DFRobot蓝牙控制器 官网下的文件可以,这里却不行,具体的原因我也不清除,反正试了很多遍,感觉这个设置比较靠谱就推荐给大家了。

上传成功===

结语:

若是在程序改写中有疑问,可以联络源程序作者:https://www.arduino.cn/thread-81825-1-1.html

细水长流,江湖再见。

需要所有源资料的同学,私信我:ATMEGA328P + 洞洞板:arduiboy游戏机

51单片机DIY游戏机套件

51单片机怀旧游戏机套件 成长路电子DIY创意小制作焊接实训

1.音乐:自带靓音蜂鸣器,配有游戏背景音,配有游戏动作音

2.金色:金色PCB更艳丽,尽显奢华经典,作为礼品赠送也很有份哦

3.方形:方形底板,按键的位置设计根据操作习惯安排

4.分数:右上方的数码管实时计分,比一比你能获得多少分

5.电路:电路通过计算省略很多元件,电路更简洁,焊接容易,看着更舒服

6.焊接:多处焊接点进行优化,大焊盘更易焊接,miniUSB口也特殊处理了哦,人性化设计

7.选材:都是采用优质的电子元件,都是插件元件,保证焊接方便,保证持久工作

8.游戏:目前设计有4款游戏,俄罗斯方块,打飞机,贪吃蛇,赛车,都是经典的游戏

9.理念:曾经玩过的游戏是不会忘记的,只是一时想不起来罢了

有些游戏值得我们用一生去回忆

相关问答

什么是plc,有什么用途,和51系列 单片机 有什么区别?

PLC是programlogiccontrol的简称,译成中文是“可编程序控制器”。它是一个内部装有单片机和很多电子元器件的、用于设备自动控制的完整装置。而单片机从功能上...

狼人杀 游戏机 怎么做?

如果你只有一张纸,可以尝试使用以下方法制作一个简单的太空狼人杀游戏机:1.将纸折叠成一个小的卡片尺寸,类似于一张扑克牌大小的卡片。2.在卡片的一面上,...

想问下: 单片机 机器人推荐哪家?

[回答]当父母的一定遇到过这种情况,带孩子去吃饭,孩子怎么也坐不住,总是要跑来跑去到处吵闹玩耍。此时,有的人会拿出手机当做游戏机,孩子的注意力瞬间被拉...

16位 单片机 与ARM嵌入式系统的问题如何解决?

[回答]如果有单片机基础或感觉自己实力强就选后者,否则就从前者学起,然后自学后者.后者是前者的深入学习.ARM也是单片机的一种,属于32位的了,不过可以实...

玩树莓派能学到什么?

曾经极客君作为一名设备的追求者,天天琢磨着各种显卡、内存、机械键盘,以为有了好设备才能够成为真正的代码大神。直到看到这条新闻:美国宇航局(NASA)监察...可...

生活中你有哪些小发明小制作?

我是一名在业余时间玩木的爱好者。白天上班,晚上啃木头!做了一些好玩的小木头作品!纯属新手瞎折腾,大神勿喷!这个抽象派小猫,是好几个空闲的晚上,用块废...我...

急急急:学机器人课程推荐哪家?

[回答]当父母的一定遇到过这种情况,带孩子去吃饭,孩子怎么也坐不住,总是要跑来跑去到处吵闹玩耍。此时,有的人会拿出手机当做游戏机,孩子的注意力瞬间被拉...

MCU是什么意思?

微控制单元(MicrocontrollerUnit;MCU),又称单片微型计算机(SingleChipMicrocomputer)或者单片机,是把中央处理器(CentralProcess...

MCU是什么意思?

微控制单元(MicrocontrollerUnit;MCU),又称单片微型计算机(SingleChipMicrocomputer)或者单片机,是把中央处理器(CentralProcess...

扑克机游戏破解方法

有一种可能,那就是程序员故意制造的。这要从机台的制造说起。有实力的公司会聘请多名程序员,耗资巨大,开发出最新的产品,但上市没多久,就...这要从...

猜你喜欢