搜索
bottom↓
回复: 65

用STM32F030直连VGA做游戏机

  [复制链接]

出870入263汤圆

发表于 2016-11-10 21:53:09 | 显示全部楼层 |阅读模式
本帖最后由 armstrong 于 2016-11-10 21:55 编辑

看了坛里的高手用51做俄罗斯方块,我也萌生了做一个游戏机的念头,把一边闲着的VGA显示器用起来。
我不求高手的挑战极限,我要留足资源多做几个游戏;而且还要尽可能方便的开发游戏,当然又不能太浪费。所以我用了STM32F030C8,
8KB RAM,64KB ROM,目前搭好了游戏框架,做出了演示。软件上支持双显存和但显存随意切换,简单适应多种显示分辨率,
软件耗费如下:

  1.   6 860 bytes of readonly  code memory
  2.      84 bytes of readonly  data memory
  3.   6 188 bytes of readwrite data memory
复制代码


优酷视频:
http://v.youku.com/v_show/id_XMTgxNDExNzE4OA==.html

电路连接实物图:


演示的代码如下:

  1. #include "usrinc.h"
  2. #include <string.h>

  3. static const uint32_t sprite1[8] = {
  4.   0x66666666,
  5.   0x68111186,
  6.   0x61822816,
  7.   0x61288216,
  8.   0x61288216,
  9.   0x61822816,
  10.   0x68111186,
  11.   0x66666666,
  12. };

  13. void UserEntryInit(void)
  14. {
  15.   HWU_BoardLedInit();
  16.   HWU_VGASetup(&displayer640x480);
  17.   GE2D_ClearScreen();
  18.   GE2D_SwapBuffer();
  19.   GE2D_ClearScreen();
  20. }

  21. void UserEntryLoop(void)
  22. {
  23.   uint32_t tick = 0;
  24.   uint32_t angle;
  25.   GUI_RECT rect;
  26.   int xDiff, yDiff;
  27.   
  28.   rect.x0 = 0;
  29.   rect.y0 = 0;
  30.   rect.x1 = GE2D_X_SIZE-1;
  31.   rect.y1 = GE2D_Y_SIZE-1;
  32.   
  33.   while(1)
  34.   {
  35.     HWU_WaitVSync();
  36.     GE2D_SwapBuffer();
  37.    
  38.     GE2D_ClearScreen();

  39.     GE2D_SetForeColor(GUI_WHITE);
  40.     GE2D_DrawRect(&rect);
  41.    
  42.     GE2D_SetForeColor(GUI_YELLOW);
  43.     F8x8_DispString(4, 2, "STM32F0");
  44.    
  45.     GE2D_SetForeColor(GUI_RED);
  46.     GE2D_DrawHLine(2, 12, 2+(tick%60));
  47.     GE2D_DrawHLine(61-(tick%60), 14, 61);
  48.     GE2D_DrawBitmap4((tick%60)-4, 13-4, sprite1, 0x00080008);
  49.    
  50.     GE2D_SetForeColor(GUI_BLUE);
  51.     GE2D_DrawCircle(32, 48, 24);
  52.    
  53.     GE2D_SetForeColor(GUI_BLUE);
  54.     angle = tick << 3;
  55.     yDiff = 25*(util_sin_fixed28(angle)/65536)/4096;
  56.     xDiff = 25*(util_cos_fixed28(angle)/65536)/4096;
  57.     GE2D_DrawLine(32, 48, 32+xDiff, 48+yDiff);
  58.     yDiff = 25*(util_sin_fixed28(angle+340)/65536)/4096;
  59.     xDiff = 25*(util_cos_fixed28(angle+340)/65536)/4096;
  60.     GE2D_DrawLine(32, 48, 32+xDiff, 48+yDiff);
  61.     yDiff = 25*(util_sin_fixed28(angle-340)/65536)/4096;
  62.     xDiff = 25*(util_cos_fixed28(angle-340)/65536)/4096;
  63.     GE2D_DrawLine(32, 48, 32+xDiff, 48+yDiff);
  64.    
  65.     GE2D_DrawBitmap4(32-4+xDiff, 48-4+yDiff, sprite1, 0x00080008);
  66.    
  67.     HWU_BoardLedCtrl(tick>>3);
  68.     tick++;
  69.   }
  70. }

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出870入263汤圆

 楼主| 发表于 2016-12-16 22:10:12 | 显示全部楼层
我把项目取名为VGArduboy,希望网友将其发扬光大;效仿arduboy,做出一些好玩的游戏给大家分享!
完整源代码请下载压缩包:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出870入263汤圆

 楼主| 发表于 2016-12-21 19:53:44 | 显示全部楼层
改进后的VGArduboy,决定采用单色显示,分辨率128x96,双显存60FPS;11.8KHZ采样率音频输出(声音质量很高,实际输出频率47.2KHZ,避免了载波噪音);
下面是演示视频:
http://v.youku.com/v_show/id_XMTg3NjI2NTA3Ng==.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出870入263汤圆

 楼主| 发表于 2016-12-30 16:03:54 | 显示全部楼层
VGArduboy管脚连接图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出20入0汤圆

发表于 2016-11-10 22:54:41 | 显示全部楼层
谢谢分享。

出20入186汤圆

发表于 2016-11-10 23:17:05 来自手机 | 显示全部楼层
强,速度够么?分辨率多少?

出0入442汤圆

发表于 2016-11-11 00:08:47 来自手机 | 显示全部楼层
话说用STM32做个FC模拟器应该绰绰有余吧。只是卡带的存储需要外接FLASH。

出0入0汤圆

发表于 2016-11-11 00:10:38 | 显示全部楼层
牛人,,,

出0入0汤圆

发表于 2016-11-11 02:17:17 | 显示全部楼层
有干劲

有魄力

佩服啊

出0入0汤圆

发表于 2016-11-11 06:32:52 | 显示全部楼层
本帖最后由 lcw_swust 于 2016-11-11 06:35 编辑

牛,是用SPI做的吗?
其实,如果内存大一点,还可以直接使用16位IO接R-2R网络输出16位色,用DMA输出数据.
也可以8位IO输出灰度图像,或产生PAL信号.

出0入4汤圆

发表于 2016-11-11 07:32:44 来自手机 | 显示全部楼层
正想找这个东西,楼主能把源程序共享一下或者说下实现方法吗?

出870入263汤圆

 楼主| 发表于 2016-11-11 07:53:27 | 显示全部楼层
本帖最后由 armstrong 于 2016-11-11 07:55 编辑
wye11083 发表于 2016-11-11 00:08
话说用STM32做个FC模拟器应该绰绰有余吧。只是卡带的存储需要外接FLASH。


元老,你说大话了。
FC模拟器我做过,仅仅靠STM32F030C8的8K RAM,是不可能做到的。
FC游戏机内部8KB RAM,8K SRAM,16K PPURAM,这是最基本的。
另外,FC游戏机有个MAPPER(其实是突破寻址范围,扩展存储的黑科技)的概念,也就是大多数游戏都需要额外的RAM;
只有早期的任天堂自己开发的部分游戏才工作在MAPPER0,也就是不需要额外空间。
如果只用基本的资源做出来的模拟器就是个鸡肋,只能玩超级马力和魂斗罗。

在PC上,至今都没有出现一款能玩市面上所有ROM的FC模拟器;何况自己移植?
实践出真知,元老不妨动手做做看。

出0入0汤圆

发表于 2016-11-11 08:05:21 来自手机 | 显示全部楼层
lcw_swust 发表于 2016-11-11 06:32
牛,是用SPI做的吗?
其实,如果内存大一点,还可以直接使用16位IO接R-2R网络输出16位色,用DMA输出数据.
也可以 ...

stm的dma支持gpio地址么  这个还真不记得

出870入263汤圆

 楼主| 发表于 2016-11-11 08:12:02 | 显示全部楼层
yuyu87 发表于 2016-11-10 23:17
强,速度够么?分辨率多少?

输出的VGA时序上,可以输出各种分辨率的,如1024*768,800*600之类的,更高也行,只是不能超过单片机主频48MHZ的精度。
不管输出多大分辨率,我的逻辑分辨率是不变的。比方说,实际VGA时序分辨率640*480时,我输出逻辑80行,那么每个逻辑行我输出6次,也即6个扫描行。
横向分辨率,其实由单片机的性能决定。每个扫描行,我能用LDR指令和STR指令几次,就能输出几个像素。比如一个扫描行通常是20几微妙,那么20*48=960个时钟,这几个时钟也执行不了几个指令啊。

出0入0汤圆

发表于 2016-11-11 08:27:50 | 显示全部楼层
帮大神顶顶,这个f030 做vga的我这hackaday上看到过一个开源项目。f030的vga 串口终端!
https://hackaday.io/project/9992-low-cost-vga-terminal-module

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-11-11 08:30:53 | 显示全部楼层
huangqi412 发表于 2016-11-11 08:05
stm的dma支持gpio地址么  这个还真不记得

可以的,还可以用于读取摄像头。
读取摄像头:

VGA驱动:


PAL驱动:



我做了这么个东东放于窗口上,检测到图像有变化时发出报警声。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-11-11 08:54:05 | 显示全部楼层
楼上NB
楼主应拍个显示器的照片炫炫

出0入0汤圆

发表于 2016-11-11 09:11:58 | 显示全部楼层
还不知道VGA的驱动原理,用GPIO直接驱动VGA的吗

出870入263汤圆

 楼主| 发表于 2016-11-11 09:13:49 | 显示全部楼层
chaplin1999 发表于 2016-11-11 08:27
帮大神顶顶,这个f030 做vga的我这hackaday上看到过一个开源项目。f030的vga 串口终端!
https://hackaday ...

有创意!这东西也好玩的。

出870入263汤圆

 楼主| 发表于 2016-11-11 09:15:44 | 显示全部楼层
lcw_swust 发表于 2016-11-11 08:30
可以的,还可以用于读取摄像头。
读取摄像头:

good job!看芯片是STM32F103.
实际资源占用情况如何?

出870入263汤圆

 楼主| 发表于 2016-11-11 09:19:23 | 显示全部楼层
演示图片,可是视频更生动。看上面优酷视频链接:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出870入263汤圆

 楼主| 发表于 2016-11-11 09:30:01 | 显示全部楼层
chaplin1999 发表于 2016-11-11 08:27
帮大神顶顶,这个f030 做vga的我这hackaday上看到过一个开源项目。f030的vga 串口终端!
https://hackaday ...

数了数它屏幕上的字符数大概26*80=2080,也就是说缓存一屏的字符就要占用2080字节。这区区4KB RAM,做起来真是有难度的。

出0入0汤圆

发表于 2016-11-11 09:31:32 | 显示全部楼层
armstrong 发表于 2016-11-11 09:15
good job!看芯片是STM32F103.
实际资源占用情况如何?


是的,用的STM32F103CBT6,其实我觉得用C8T6也行。
摄像头:

VGA:

PAL:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2016-11-11 09:40:59 | 显示全部楼层
armstrong 发表于 2016-11-11 07:53
元老,你说大话了。
FC模拟器我做过,仅仅靠STM32F030C8的8K RAM,是不可能做到的。
FC游戏机内部8KB RAM ...

以前在arm 7上面做过fc模拟器。需要汇编优化,挺辛苦的。

出0入0汤圆

发表于 2016-11-11 11:14:10 | 显示全部楼层
huangqi412 发表于 2016-11-11 08:05
stm的dma支持gpio地址么  这个还真不记得

支持,而且还有外部触发引脚,可以做逻辑分析仪,或者并口模式RAM

出0入0汤圆

发表于 2016-11-11 15:58:07 | 显示全部楼层
RAMILE 发表于 2016-11-11 11:14
支持,而且还有外部触发引脚,可以做逻辑分析仪,或者并口模式RAM

F0  系列的支持么

出0入0汤圆

发表于 2016-11-11 16:00:53 | 显示全部楼层
lcw_swust 发表于 2016-11-11 08:30
可以的,还可以用于读取摄像头。
读取摄像头:

ORG  ORZ  你做的DIY都好整洁  看着就舒服

出0入442汤圆

发表于 2016-11-11 21:24:01 来自手机 | 显示全部楼层
armstrong 发表于 2016-11-11 07:53
元老,你说大话了。
FC模拟器我做过,仅仅靠STM32F030C8的8K RAM,是不可能做到的。
FC游戏机内部8KB RAM ...

我记得是2KB(16Kb),所以你应该是记错了。另外,mapper类似于74138之类的逻辑芯片,貌似现有nes文件全部包含一个mapper,只要能支持大多数就可以了。到现在为止virtunes也运行不了一些合卡的游戏,估计是逻辑芯片破解不完整。我看简史早期就是个138,后期用了带有逻辑跳转的逻辑芯片,破解必须得穷举出所有状态;漏的就没法用了。

新晋元老,呵呵。

出0入442汤圆

发表于 2016-11-11 21:24:56 来自手机 | 显示全部楼层
cnshibo 发表于 2016-11-11 09:40
以前在arm 7上面做过fc模拟器。需要汇编优化,挺辛苦的。

6502貌似很简单的指令集,不需要做太多优化就能跑吧。

出0入0汤圆

发表于 2016-11-12 08:43:58 | 显示全部楼层
牛人啊!

出0入0汤圆

发表于 2016-11-12 10:40:42 | 显示全部楼层
wye11083 发表于 2016-11-11 21:24
6502貌似很简单的指令集,不需要做太多优化就能跑吧。

只模拟6502当然速度够了, 但还有PPU要模拟, STM32F103VET6上有人移植过FC模拟器
F030 RAM不够

出0入4汤圆

发表于 2016-11-12 14:27:57 | 显示全部楼层
wye11083 发表于 2016-11-11 21:24
6502貌似很简单的指令集,不需要做太多优化就能跑吧。

要达到30 fps 还是有难度的。

出0入0汤圆

发表于 2016-11-12 14:40:13 | 显示全部楼层
都是牛人。

出0入0汤圆

发表于 2016-11-12 14:41:17 | 显示全部楼层
大神好多.....

出0入0汤圆

发表于 2016-11-12 14:47:58 | 显示全部楼层
论坛牛人真多

出0入34汤圆

发表于 2016-11-12 15:28:15 | 显示全部楼层
这个我也是真心佩服了,话说要拿 F030 来做 PPU + MCU 的活还真是不容易啊?!

出0入0汤圆

发表于 2016-11-12 17:21:32 | 显示全部楼层
lcw_swust 发表于 2016-11-11 08:30
可以的,还可以用于读取摄像头。
读取摄像头:

66666666666666

出870入263汤圆

 楼主| 发表于 2016-11-12 17:43:27 | 显示全部楼层
xyz543 发表于 2016-11-12 15:28
这个我也是真心佩服了,话说要拿 F030 来做 PPU + MCU 的活还真是不容易啊?!
...

这个我是做不到的。我的目标是做自己的游戏开发框架,提供一些基本的游戏要素,如音频,贴图,精灵动画,物理模拟系统等。目前实现了这些函数:

  1. #ifndef __HW_UTILS_H__
  2. #define __HW_UTILS_H__

  3. #include "ftypes.h"

  4. ////////////////////////////////////////////////////////////////////////////////

  5. #define DISP_MODE(w,h)  (((w)<<16)|(h))
  6. #define DISP_GETW(wh)   ((wh)>>16)
  7. #define DISP_GETH(wh)   ((wh)&0xFFFF)

  8. typedef struct {
  9.   uint32_t display_mode;    /* 该显示器配置的水平和垂直分辨率 */
  10.   uint32_t hsync_width;     /* 行同步信号的宽度,单位(1us/1024) */
  11.   uint32_t hsync_period;    /* 行同步信号的周期,单位(1us/1024) */
  12.   uint32_t hsync_delay;     /* 从行同步信号起,推迟该时间产生中断,以输出像素值。单位(1us/1024) */
  13.   uint16_t vsync_width;     /* 场同步信号的宽度,单位是hline */
  14.   uint16_t vsync_period;    /* 场同步信号的周期,单位是hline */
  15.   uint16_t vsync_delay;     /* 从场同步信号起,在该指定行号开始输出像素数据。单位是hline */
  16.   void (*vsync_handler)(void);  /* 行同步中断,用于初始化帧 */
  17.   void (*hsync_handler)(void);  /* 场同步中断,用于输出像素 */
  18. } DisplayerConfig_Type;

  19. extern const DisplayerConfig_Type displayer640x480;
  20. extern const DisplayerConfig_Type displayer800x600;
  21. extern const DisplayerConfig_Type displayer1024x768;

  22. void HWU_VGASetup(const DisplayerConfig_Type *config);
  23. void HWU_VGAPushLine(uint32_t reg, uint32_t data[], uint32_t const map[]);
  24. void HWU_WaitVSync(void);
  25. void HWU_VGAStop(void);

  26. ////////////////////////////////////////////////////////////////////////////////

  27. void HWU_BoardLedInit(void);
  28. void HWU_BoardLedCtrl(int state);

  29. ////////////////////////////////////////////////////////////////////////////////
  30. void HWU_AudioOpen(void);
  31. int  HWU_AudioPlay(uint8_t const stream[], int num);
  32. void HWU_AudioClose(void);

  33. ////////////////////////////////////////////////////////////////////////////////


  34. #endif /* __HW_UTILS_H__ */
复制代码


  1. typedef struct {
  2.   int16_t x0, y0;
  3.   int16_t x1, y1;
  4. } GUI_RECT;

  5. ////////////////////////////////////////////////////////////////////////////////
  6. /* 返回0-1之间的定点数,整数部分4位,小数部分28位 */
  7. extern uint32_t const _sin_halfpi[256];

  8. /* 返回0-1之间的三角定点数,整数部分4位,小数部分28位 */
  9. int util_sin_fixed28(uint32_t index);
  10. int util_cos_fixed28(uint32_t index);

  11. ////////////////////////////////////////////////////////////////////////////////
  12. void      GE2D_ResetLinePtr(void);
  13. uint32_t *GE2D_GetNextLinePtr(uint32_t skipLineCnt);
  14. uint32_t *GE2D_GetFirstLinePtr(void);
  15. void      GE2D_SwapBuffer(void);
  16. void      GE2D_SetForeColor(uint32_t color);
  17. void      GE2D_SetBackColor(uint32_t color);
  18. void      GE2D_ClearScreen(void);
  19. void      GE2D_DrawPixel(int x, int y);
  20. void      GE2D_ClearPixel(int x, int y);
  21. void      GE2D_FillRect(GUI_RECT const *pRect);
  22. void      GE2D_ClearRect(GUI_RECT const *pRect);
  23. void      GE2D_DrawHLine(int x0, int y, int x1);
  24. void      GE2D_DrawVLine(int x, int y0, int y1);
  25. void      GE2D_DrawRect(GUI_RECT const *pRect);
  26. void      GE2D_DrawLine(int x0, int y0, int x1, int y1);
  27. void      GE2D_DrawCircle(int x0, int y0, int r);
  28. /*******************************************************************************
  29.   为了有利于ARM编译器的函数参数传递(ATPCS),把图像的宽高放在一起传递(wh参数):
  30.     高16位存放宽度,低16位存放高度;data[]中每个单元存放着8个像素;
  31. !! 绘制每像素4bit编码的位图,其中:b3=Transparent;b2=B;b1=G;b0=R.
  32. ********************************************************************************/
  33. void      GE2D_DrawBitmap4Unsafe(int x, int y, const uint32_t data[], uint32_t wh);
  34. void      GE2D_DrawBitmap4(int x, int y, const uint32_t data[], uint32_t wh);

  35. ////////////////////////////////////////////////////////////////////////////////
  36. void      F8x8_DispChar(int x, int y, uint8_t ascii);
  37. void      F8x8_DispString(int x, int y, const char *ps);
复制代码

出0入34汤圆

发表于 2016-11-12 17:57:08 | 显示全部楼层
armstrong 发表于 2016-11-12 17:43
这个我是做不到的。我的目标是做自己的游戏开发框架,提供一些基本的游戏要素,如音频,贴图,精 ...

是啊!您这个看起来就像当年那红白游戏机内的 PPU 在处理的工作啊!哈~

出0入0汤圆

发表于 2016-11-13 18:43:25 | 显示全部楼层
学习下  

出0入0汤圆

发表于 2016-12-17 08:19:16 | 显示全部楼层
大神就是大神,长见识了。

出0入91汤圆

发表于 2016-12-17 08:51:28 | 显示全部楼层
lcw_swust 发表于 2016-11-11 08:30
可以的,还可以用于读取摄像头。
读取摄像头:

很好奇这种饶过专用三位DA ic的方案只能支持黑白图像吗? 是通过电阻分压出特定电压,然后再将这个电压同时输出给RGB吗

出0入76汤圆

发表于 2016-12-17 15:02:22 | 显示全部楼层
强, 围观学习一下

出0入0汤圆

发表于 2016-12-17 15:12:52 | 显示全部楼层
  想起  cowboy的 4051玩转VGA显示器,打俄罗斯方块帖子了,,,

出0入0汤圆

发表于 2016-12-17 15:52:43 | 显示全部楼层
lcw_swust 发表于 2016-11-11 08:30
可以的,还可以用于读取摄像头。
读取摄像头:

环境不错,还有后山啊

出0入17汤圆

发表于 2016-12-17 19:10:28 | 显示全部楼层
顶一个,蛮酷的

出0入0汤圆

发表于 2016-12-17 19:19:45 | 显示全部楼层
有趣,学习了,,

出0入0汤圆

发表于 2016-12-17 20:22:16 | 显示全部楼层
顶一个,挺好玩的

出870入263汤圆

 楼主| 发表于 2016-12-17 21:50:30 | 显示全部楼层
单色显示效果,受内存容量限制,我设定分辨率为128x96。这样一帧画面占用1.5KB,双显存就占用了3KB。系统还有5KB可以用于游戏设计,应该够了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出870入263汤圆

 楼主| 发表于 2016-12-17 22:21:02 | 显示全部楼层
zqf441775525 发表于 2016-11-11 07:32
正想找这个东西,楼主能把源程序共享一下或者说下实现方法吗?

源码已公开下载,请自行编译,EWARM6.40.5环境

出0入0汤圆

发表于 2016-12-18 01:47:57 | 显示全部楼层
好东西呀,学习学习。楼主继续努力……

出0入0汤圆

发表于 2016-12-18 07:38:56 | 显示全部楼层
ackyee 发表于 2016-12-17 08:51
很好奇这种饶过专用三位DA ic的方案只能支持黑白图像吗? 是通过电阻分压出特定电压,然后再将这个电压同 ...

RGB并联,由8位IO加R-2R网络构成的8位DAC驱动,不是三位哦.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2016-12-18 15:31:30 | 显示全部楼层
armstrong 发表于 2016-12-17 22:21
源码已公开下载,请自行编译,EWARM6.40.5环境

多谢,不用了,已经用FPGA+SDRAM搞定了。

出0入0汤圆

发表于 2016-12-18 17:51:22 | 显示全部楼层
这个不错,很好的创意。。

出0入0汤圆

发表于 2016-12-19 10:33:07 | 显示全部楼层
有创意,值的学习

出0入0汤圆

发表于 2016-12-21 20:47:35 | 显示全部楼层
楼上的都很牛,都是高手~

出0入0汤圆

发表于 2016-12-30 21:23:04 | 显示全部楼层
好帖!膜拜!看完后我自己也想做一个玩下!

出30入0汤圆

发表于 2016-12-30 21:45:28 | 显示全部楼层
楼主这个工作室还是蛮有味道的嘛!

出0入0汤圆

发表于 2016-12-31 16:43:36 | 显示全部楼层

牛人啊!

出0入4汤圆

发表于 2016-12-31 19:55:02 | 显示全部楼层
好主意,干的漂亮!赞一个!

出0入0汤圆

发表于 2016-12-31 20:32:47 | 显示全部楼层
牛鼻得一塌糊涂,赞!

出0入0汤圆

发表于 2016-12-31 22:16:29 | 显示全部楼层
楼主非常有创意。。。

另我想起2004年, 有个老外用PIC16F84 做最简单的电视乒乓游戏。。

https://sourceforge.net/projects/picpong/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-12-31 22:49:56 | 显示全部楼层
本帖最后由 linjpxt 于 2016-12-31 23:12 编辑
armstrong 发表于 2016-11-11 09:19
演示图片,可是视频更生动。看上面优酷视频链接:


RGB 总共是 8色是吧,如果要实现更多的颜色是不是就要改用电阻网络了,有没有试过用DS DAC加一个小RC的方式是否可以实现24位色?640*480*50fps*256=3.9G ... 太高了

出0入0汤圆

发表于 2017-3-28 22:35:35 | 显示全部楼层
都是人才

出590入992汤圆

发表于 2018-3-2 22:02:02 | 显示全部楼层
高手!没有想到单片机的IO可以直接连接上VGA接口。收藏了,日后研究下。

出0入0汤圆

发表于 2018-3-3 10:03:25 | 显示全部楼层
看到这个贴子,回想之前设计红白机(NES)IC,测试各种游戏的兼容性,真是痛苦并快乐着。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 21:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表