发作品签到
专业版

基于立创梁山派和天魁星复刻的游戏机

工程标签

203
0
0
0

简介

因为很想了解小时候,那些游戏机的原理,所以刚好看到立创的梁山派可以学习复刻的游戏机教程,就刚好来试试手

简介:因为很想了解小时候,那些游戏机的原理,所以刚好看到立创的梁山派可以学习复刻的游戏机教程,就刚好来试试手

开源协议

GPL 3.0

创建时间:2024-12-07 14:05:24更新时间:2024-12-09 02:17:35

描述

项目简介

本项目是基于立创梁山派和天魁星复刻的游戏机,可以实现nes游戏的游玩

项目功能

本设计是基于立创梁山派的游戏机;设置有一个1.69寸的ipsLCD的屏幕,用来显示多彩画面;psp超薄vr摇杆,用来操作人物进行移动和画面选项的切换等等;屏幕下面三个按钮分别是左边的可以确认,加音量,中间的是进行复位,返回;右边的是可以减小音量和返回界面。右边两个按键是作为游戏中的操作按键。

项目参数

  • 本设计采用GD32F470ZGT6的梁山派作为mcu,具有高性能,高闪存;
  • 本设计采用1.69ipsLCD屏幕显示,显示多彩的游戏画面;
  • 选用psp超薄vr摇杆,具有具有灵活的滑动手感;使用电位器模拟x, y 轴,驱动它只需有两个ADC检测,可以满足一般需求.
  • 选用耳机孔设计与喇叭输出既满足了对声音外放的需求,也可以插入耳机线,安静有简洁,做到随时切换。电路中使用单片机DAC模拟输出,驱动方便简单
  • 选用 EEPROM 具有容量大,存储快,驱动简单的特点;
  • 设计按键,分别用来模拟各种游戏中的动作按键与实现游戏机的功能切换

原理解析(硬件说明)

本项目由以下部分组成,电源部分、屏幕部分、主控部分、摇杆部分,按键部分,本项目主要是通过梁山派开发板和天魁星拓展板进行游戏机的开发

原理图1.webp

屏幕驱动电路设计:

选用中景园1.69寸屏幕,给屏幕采用ST7789V 芯片 SPI驱动,使用开发只需移植官方案例,使用简单。屏幕采用240*280分辨率, 具有显示清晰,色彩鲜明,驱动简单等特点。可以结合单片机的 SPI 协议进行通信
lcd图像.jpg

屏幕.png

声音输出电路:
用耳机孔设计与喇叭输出既满足了对声音外放的需求,也可以插入耳机线,安静有简洁,做到随时切换。电路中使用单片机DAC模拟输出,驱动方便简单。

声音.png

电源管理电路:电源是电阻分压连接单片机引脚通过 ADC 功能实现对电池电量的监测

电源管理电路.png
存储电路:选用 EEPROM 具有容量大,存储快,驱动简单的特点

存储电路.png

按键:多个按键,多种选择,用来模拟游戏机的功能切换与人物互动

mh19k0hl.png

震动马达:实现游戏机的反馈效果

震动马达.png

软件代码

main.c
#include "main.h"

#define Printf Printf0
#define Print Print0
#define Println Println0
#define Printfln Printfln0

int main(void)
{
nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);

nvic_irq_enable(SysTick_IRQn, 0, 0); // Delay延时
nvic_irq_enable(TIMER2_IRQn, 1, 1);  // System系统计时
nvic_irq_enable(TIMER4_IRQn, 2, 2);  // DacAudio音频
nvic_irq_enable(USART0_IRQn, 3, 3);  // 串口0
nvic_irq_enable(TIMER3_IRQn, 4, 4);  // Task任务

Delay_Init();         // 延时
Serial0_Init(115200); // 串口0
Protocol_Init();      // 通信协议
DataType_Init();      // 数据类型
Lcd_Init();           // LCD屏幕
Gui_Init();           // GUI工具
App_Init();           // 应用层
Led_Init();           // LED灯
Key_Init();           // 按键
Random_Init();        // 随机数
ImitateI2C_Init();    // 模拟I2C
Eeprom_Init();        // EEPROM存储
Adc_Init();           // ADC模拟电压采集
Dac_Init();           // DAC模拟电压输出
DacAudio_Init();      // DAC音频输出
PwmMotor_Init();      // PWM驱动实心马达
System_Init();        // 系统计时

Println("----------- main -----------");
Printfln("%s", __DATE__);
Printfln("%s", __TIME__);

while (1)
{
    Main_Run0();
}

}

void Main_Run0(void)
{
App_Task();
}

void Main_Run1(void)
{
DacAudio_Task(); // DAC音频输出任务
Key_Task(); // 独立按键任务
Serial0_Task(); // 串口0 接收、发送和处理任务
Led_Task(); // LED灯任务
AdcKey_Task(); // ADC摇杆任务
AdcBat_Task(); // ADC电池采集任务
PwmMotor_Task(); // PWM电机驱动任务
}
其余代码在下面工程附件里

## 注意事项
* 天魁星和梁山派不要插反了,摇杆对着type—c口

1、学习目标:掌握嵌入式项目的开发流程,知道如何设计一个游戏机硬件电路、软件编程以及系统调试等能力。
2、功能介绍:
实现LCD显示游戏内容;
实现psp摇杆控制角色的移动;
实现五方按键控制界面的切换;
使用独立按键控制角色执行相应动作;
具备声音输出功能;
通过flash保存游戏数据;
3、技能掌握

  1. 硬件开发能力
    1.1 学习嵌入式项目电路分析
    阅读和理解嵌入式项目原理图,如游戏机硬件电路。
    学习如何分析电路中的关键部分,如电源、信号处理、通信接口等。
    1.2 元器件选型与数据手册阅读
    学习如何根据需求选择合适的元器件。
    阅读并理解元器件的数据手册,了解其基本特性、工作参数和限制。
    1.3 原理图设计与PCB设计
    使用嘉立创EDA软件进行原理图设计。
    学习PCB布局和布线规则,进行PCB设计。
    1.4 了解特定电路的设计
    深入学习SPI通讯协议屏幕、模拟按键、音频功放等电路的工作原理和设计要点。
    1.5 仪器使用和电路分析能力
    掌握万用表、示波器、信号发生器、学生电源等仪器的使用方法。
  2. 软件开发能力
    2.1 GD32基础功能及外设使用
    学习GD32微控制器的架构、功能和外设接口。
    编写代码实现GPIO、UART、SPI等外设的初始化与通信。
    2.2 ADC采集原理与实现
    学习ADC(模数转换器)的工作原理和配置方法。
    编写代码实现ADC采集,用于读取五向按键值和电池电压。
    2.3 DAC原理与音频输出
    学习DAC(数模转换器)的工作原理和音频编码格式。
    编写代码实现音频输出,如播放游戏音效。
    2.4 SPI协议与LCD驱动
    深入学习SPI通信协议及其在LCD驱动中的应用。
    编写LCD驱动代码,实现屏幕显示游戏内容。
    2.5 图片取模与UI界面制作
    学习图片取模方法,将图片转换为可在LCD上显示的格式。
    使用图形设计软件(如Photoshop、GIMP等)制作游戏UI界面。
    2.6 游戏机基本工作原理
    了解游戏机的基本工作原理,如游戏逻辑、数据存储和读取等。
    编写代码实现游戏机的基本功能,如角色控制、动作执行等。
    2.7 嵌入式软件开发与调试
    掌握嵌入式软件开发的基本流程和方法。
    学会使用keil进行代码调试和性能优化。
    学习如何阅读和修改开源代码,以提高开发效率和质量。
  3. 系统调试与集成
    将硬件和软件部分进行集成,并进行系统调试。
    测试游戏机的各项功能是否正常工作,如显示、按键控制、音频输出等。
    根据测试结果进行问题排查和修改,直到游戏机功能完善且稳定。
  4. 总结与提升
    在学习的过程中,注定是磕磕碰碰的,面对我平时不怎么会用的DAC,学习起来还是有点难度,我想我在之后的学习应该要加强DAC的学习。希望能继续跟着立创继续开展梁山派的拓展学习

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
liangshanpi-air-game-master.zip
5
2
演示视频.mp4
1
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航