你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【螺蛳壳里做道场】用STM8S001J3做2048游戏机

[复制链接]
网络孤客 发布时间:2021-1-9 19:44
既然是“螺蛳壳里做道场”,用的当然是用最简单的STM8S001J3单片机来做。
STM8S001J3内置8KFlash,1K Ram,128Bytes EEPROM,SOP-8封装,除了电源脚外有5个IO脚。

微信图片_20210109155839.jpg

要做游戏机,至少有显示屏,我用的是0.96寸128*64OLED屏,只需2个IO口驱动

麻烦!只剩下3个IO口,而且还要留一个做SWIM接口
不怕,有10bit ADC口,足够做单IO多按键输入。我用了一个5方向开关,使用TIM2大约30ms扫描一次。
下面是按键电路板与电路图
微信图片_20210109155824.jpg

整机电路超简单,没有太多额外的电路1、STM8周边用了一个104,一个105电容,搭建单片机最小工作电路
2、用1117.33稳压模块,把USB的5V降为3.3V,共单片机、OLED屏和按键板用
3、按键板的电路,上图。
4、单片机与OLED之间之间连接。

也就是整个游戏机只用了3个IO口,没用到Pin8,但曾经惨痛教训,复制粘贴其他程序,忘了修改引脚,悲剧发生!
使我锁死了2个单片机,我还是对Pin8做个防护。
我没用常规的延时方法,毕竟延时5秒对进入一个小游戏有点不爽。
void main(void)
{

  CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
  //初始化按键(Pin7),防锁代码
  GPIO_Init(KEY1_PORT, (GPIO_Pin_TypeDef)KEY1_PINS, GPIO_MODE_IN_PU_NO_IT);
  //判断按键是否按下,如果按下,进入死循环,下载使用。
  while(!GPIO_ReadInputPin(KEY1_PORT,KEY1_PINS))
  {
    delay_ms(1);
  }

......
}

为了降低存储空间,我把6*8的字库修改为5*8,
使用IO口模拟I2C方式与OLED屏通信,可以减少代码存储空间。
最后还剩有接近1k空间。
片内还有128Bytes EEPROM,用作游戏进度存储,每一步都存一次,不怕断电。

微信图片_20210109155845.jpg

微信图片_20210109155851.jpg

附上源程序供大家参考。


User.rar

下载

19.2 KB, 下载次数: 10

源程序

收藏 1 评论5 发布时间:2021-1-9 19:44

举报

5个回答
网络孤客 回答时间:2021-1-10 14:35:21
再补两图,刚刚继续开机,可以看到
1、保存着昨天的残局
2、整机电路很简单
微信图片_20210110143053.jpg
由于分辨率问题,超过4位数我采用叠放的方式来显示(图中1024)
微信图片_20210110143102.jpg

hjmhunter 回答时间:2021-1-12 15:36:36
厉害了,绍兴的?
goyhuan 回答时间:2021-1-12 15:52:09
怎么玩的
网络孤客 回答时间:2021-1-12 22:36:05

是操作问题还是游戏玩法问题?
如果是游戏玩法,你搜一下2048游戏
goyhuan 回答时间:2021-1-13 08:13:25
ldptest 发表于 2021-1-12 22:36
是操作问题还是游戏玩法问题?
如果是游戏玩法,你搜一下2048游戏

哦,谢谢

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版