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

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

[复制链接]
网络孤客 发布时间:2021-1-9 19:44
既然是“螺蛳壳里做道场”,用的当然是用最简单的STM8S001J3单片机来做。
" d$ F- V9 N! T* Y! m
STM8S001J3内置8KFlash,1K Ram,128Bytes EEPROM,SOP-8封装,除了电源脚外有5个IO脚。
- F0 L8 U) ~0 m' y: h, }  B6 E/ s- ]3 j: I( s* m. E, \
微信图片_20210109155839.jpg
8 b. Q$ ^; F* o+ B3 G
- p, b( m; g5 R" g要做游戏机,至少有显示屏,我用的是0.96寸128*64OLED屏,只需2个IO口驱动
' g! j/ D4 C: l% l$ ~, k2 A8 L$ y2 ]$ |% k
麻烦!只剩下3个IO口,而且还要留一个做SWIM接口
  X' ~: G# Q& q$ u1 m# p不怕,有10bit ADC口,足够做单IO多按键输入。我用了一个5方向开关,使用TIM2大约30ms扫描一次。
5 S3 m( t. M. I5 ~下面是按键电路板与电路图! o* l" m' F5 R
微信图片_20210109155824.jpg
5 V% D) Z/ q# ~; x3 l# r: k! E0 b6 n0 l2 l
整机电路超简单,没有太多额外的电路1、STM8周边用了一个104,一个105电容,搭建单片机最小工作电路
4 @( L$ `8 L4 G6 B" ~+ ]7 \2、用1117.33稳压模块,把USB的5V降为3.3V,共单片机、OLED屏和按键板用
0 B1 u! _0 Z- {% I7 W3、按键板的电路,上图。
3 ?3 {$ r* y2 B' y# `8 @4、单片机与OLED之间之间连接。- V# |5 l% x0 m8 U1 e1 j* f
  n! X2 j8 L/ M- ]7 h1 h2 ^
也就是整个游戏机只用了3个IO口,没用到Pin8,但曾经惨痛教训,复制粘贴其他程序,忘了修改引脚,悲剧发生!7 s6 u5 b2 N4 A$ N+ H
使我锁死了2个单片机,我还是对Pin8做个防护。
. O, P$ g& x* f1 m! F0 \我没用常规的延时方法,毕竟延时5秒对进入一个小游戏有点不爽。
' b; J% i- m$ ~) D9 c2 L' S# x/ K4 _" Tvoid main(void)
; y$ C. X8 r* f  E( p5 Y9 F{' W3 r; G) n3 _1 i' @$ z, q/ N( J/ K
2 R8 A+ p, f" P
  CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);& ?$ X" _9 A  M$ b, N9 o* L% L6 A2 J9 t
  //初始化按键(Pin7),防锁代码- n. ^: k5 Q- X6 s- W5 M2 W
  GPIO_Init(KEY1_PORT, (GPIO_Pin_TypeDef)KEY1_PINS, GPIO_MODE_IN_PU_NO_IT);
" y7 v) ]0 P1 e3 n6 E- [5 e) k  //判断按键是否按下,如果按下,进入死循环,下载使用。) ?/ U" R, K7 v, M9 [  }6 j$ s( r
  while(!GPIO_ReadInputPin(KEY1_PORT,KEY1_PINS))
2 Y  M  X$ ?6 ?- J  {2 N$ u6 ^+ l& H6 \& L% k4 W
    delay_ms(1);
0 A4 t+ q6 K& g' m% T/ \  }
8 o7 @* _& ]( D5 W% l0 R
/ r  X6 J# E9 `3 p7 I9 E......
' y. H' Y( c0 J  q}
8 j2 s3 w) f5 S, p+ b8 T& k) {. E) v, c7 }: Z+ _9 ~7 ^
为了降低存储空间,我把6*8的字库修改为5*8,
$ z8 r6 F% w+ x7 H" H1 [使用IO口模拟I2C方式与OLED屏通信,可以减少代码存储空间。
: g& r4 S5 J' f  d! P最后还剩有接近1k空间。+ j+ j3 d' d. }' u$ ?  T$ P
片内还有128Bytes EEPROM,用作游戏进度存储,每一步都存一次,不怕断电。9 Y5 f2 o: E6 N! }+ M0 ?" ^

, E3 u1 g7 @' ?8 c3 b+ B' { 微信图片_20210109155845.jpg * V8 n( Q; y: d' ^% L

( v+ I3 R. i9 z: o; X4 A  d6 }9 S 微信图片_20210109155851.jpg
; D/ b: `7 e/ ^
% r; k; b9 S6 o7 N$ r1 _0 b* R附上源程序供大家参考。% Q6 r1 o4 f* V7 L6 c3 M
  y9 ?! K0 x% |' h0 \

9 P: N7 o- {6 [) E$ S

User.rar

下载

19.2 KB, 下载次数: 10

源程序

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

举报

5个回答
网络孤客 回答时间:2021-1-10 14:35:21
再补两图,刚刚继续开机,可以看到5 y0 x; b- t( h8 ?- R- M
1、保存着昨天的残局- X$ W% E( V  I# j6 o
2、整机电路很简单
! Y( V9 S8 i& q( J0 r 微信图片_20210110143053.jpg 9 u( D! V9 H0 n4 S) b$ E! |9 l' y
由于分辨率问题,超过4位数我采用叠放的方式来显示(图中1024)+ W6 d- u/ G) Y8 G; [/ E
微信图片_20210110143102.jpg 1 {% `" y( d5 C) W( ~3 r  m7 Q

$ p: \4 r3 S- N& W3 i0 t  E, l: x
hjmhunter 回答时间:2021-1-12 15:36:36
厉害了,绍兴的?
goyhuan 回答时间:2021-1-12 15:52:09
怎么玩的8 q; y2 }$ d+ v' [' w) q2 N
网络孤客 回答时间:2021-1-12 22:36:05
乐天乐 发表于 2021-1-12 15:52
+ n; A6 U* h8 w+ @& r怎么玩的
+ e8 t6 q5 }0 X
是操作问题还是游戏玩法问题?% J! B& S- r  L1 z) f4 |2 k
如果是游戏玩法,你搜一下2048游戏
goyhuan 回答时间:2021-1-13 08:13:25
ldptest 发表于 2021-1-12 22:36
: s0 N. r( m6 ]5 N0 x2 j( }/ i4 _8 f* E是操作问题还是游戏玩法问题?
3 h2 d% v2 l, ]# \如果是游戏玩法,你搜一下2048游戏
$ E# p( ~5 E) s6 T" |
哦,谢谢

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版