数码之家

 找回密码
 立即注册
搜索
查看: 3821|回复: 12

[STM] 螺蛳壳里做道场~用STM8S001J3做2048游戏机

[复制链接]
发表于 2021-1-10 14:03:37 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x
本帖最后由 网络孤客 于 2021-1-11 11:09 编辑

既然是“螺蛳壳里做道场”,用的当然是用最简单的STM8S001J3单片机来做。
STM8S001J3内置8KFlash,1K Ram,128Bytes EEPROM,SOP-8封装,除了电源脚外有5个IO脚。
182711c0nyzuqdpw11mfyu.jpg

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

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


下面是按键电路板与电路图
183741dk9ep7znie2bj9lt.jpg

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


也就是整个游戏机只需用了3个IO口,没用到Pin8(SWIM引脚),但曾经惨痛教训,做项目时,复制粘贴其他程序,忘了修改引脚,悲剧发生!
弄死了2个单片机,我还是对Pin8做个防护。
我没用采用的延时方法,毕竟延时5秒才开始运行程序,对进入一个小游戏有点不爽。
采用的是检测Pin7引脚方式,当Pin7低电平时就进入死循环,这时可以对写入程序。
void main(void)
{

  CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
  //初始化按键(Pin7),防锁代码
  GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_IN_PU_NO_IT);  //2021.1.11修改,这里不能用宏定义,以防万一。
  //判断按键是否按下,如果按下,进入死循环,下载使用。
  while(!GPIO_ReadInputPin(KEY1_PORT,KEY1_PINS))
  {
    delay_ms(1);
  }

......
}

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

184022emy2tytis920fi2y.jpg

附上源程序供大家参考。




补充内容 (2022-6-3 12:06):
螺蛳壳里做道场系列:
螺蛳壳里做道场~用STM8S001J3做高精度时钟
[url=https://www.mydigit.cn/thread-316707-...

补充内容 (2022-6-3 12:08):
螺蛳壳里做道场~用STM8S001J3做FM收音机

User.rar

19.2 KB, 下载次数: 3, 下载积分: 家元 -55

打赏

参与人数 8家元 +107 收起 理由
newnet1234 + 20 謝謝分享
有点不烧 + 20 謝謝分享
hongo + 20 優秀文章
2545889167 + 18
听雨亭 + 4
玛德陛下 + 10 謝謝分享
libc0607 + 10 謝謝分享
mao_jin_dao + 5

查看全部打赏

发表于 2021-1-10 15:01:47 | 显示全部楼层
一直未见真身.
当初被人寄以厚望的 001 ,大家猜测价格7毛,结果比 003还贵.

手上有数百片003 自己玩玩够了.

打赏

参与人数 2家元 +16 收起 理由
2545889167 + 10 正解 完全没卵用
网络孤客 + 6 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-1-10 15:07:20 | 显示全部楼层
感觉没比20PIN的小多少啊,有SOT23-8就好了。

打赏

参与人数 1家元 +6 收起 理由
网络孤客 + 6 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-10 15:11:17 | 显示全部楼层
本帖最后由 网络孤客 于 2021-1-10 15:12 编辑
junyee 发表于 2021-1-10 15:01
一直未见真身.
当初被人寄以厚望的 001 ,大家猜测价格7毛,结果比 003还贵.

的确,毫无性价比可言。
论价格,您已说了
论体积,SOP-8封装,与003差不了多少。
论性能,8KFlash,1Kram,128Bytes EEPROM,与003一模一样。还少了IO口。
我手上就几片,玩玩,SOP-8容易手焊。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-10 15:15:04 | 显示全部楼层
ifix168 发表于 2021-1-10 15:07
感觉没比20PIN的小多少啊,有SOT23-8就好了。

同意,SSOP-8也可以啊。
回复 支持 反对

使用道具 举报

发表于 2021-1-10 15:27:45 来自手机浏览器 | 显示全部楼层
本来以为会便宜…谁知道特么的那么贵…其实个人玩也不觉得贵多少但就是不爽…撸了几片快递还给我搞丢了,算了不玩这玩意儿了,003跟903屯了几十片业余玩都不知道玩到哪猴年马月去了…

打赏

参与人数 1家元 +6 收起 理由
网络孤客 + 6 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-1-11 10:59:38 | 显示全部楼层
做的不错。iic你用我写的那个硬件iic 应该在老站
要比库节约很多代码

打赏

参与人数 1家元 +10 收起 理由
网络孤客 + 10 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-1-11 11:07:41 | 显示全部楼层
这芯片好像没DIP的,SOP的8PIN和20PIN也没什么体积差别,而且都需要打板子。
要是有DIP,我就直接拿来焊洞洞板底座上玩了,就跟PIC和AVR的DIP-8一样方便

NXP貌似有M0的DIP-8,不过价格太贵,零售的都到了10块多

打赏

参与人数 1家元 +6 收起 理由
网络孤客 + 6 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-11 11:12:59 | 显示全部楼层
fan.lu 发表于 2021-1-11 11:07
这芯片好像没DIP的,SOP的8PIN和20PIN也没什么体积差别,而且都需要打板子。
要是有DIP,我就直接拿来焊洞 ...

我用转接板。这样可以用在洞洞板上。
SOP-8转DIP8,而且我把电容直接焊到转接板上。
133416awj89jrrwj9jt9ty.jpg
133417q2z36mr9d6j6fre2.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-11 11:24:02 | 显示全部楼层
2545889167 发表于 2021-1-11 10:59
做的不错。iic你用我写的那个硬件iic 应该在老站
要比库节约很多代码

谢谢大神光临

为了方便大家,我把大神的帖子链接贴下面。
http://bbs.mydigit.cn/read.php?tid=2540435
回复 支持 反对

使用道具 举报

发表于 2021-1-11 12:33:15 | 显示全部楼层
网络孤客 发表于 2021-1-11 11:12
我用转接板。这样可以用在洞洞板上。
SOP-8转DIP8,而且我把电容直接焊到转接板上。

这个办法挺好
回复 支持 反对

使用道具 举报

发表于 2021-1-13 10:39:56 | 显示全部楼层
我有一些STM8L101F3P6,但我不会用:cry:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-13 21:47:23 | 显示全部楼层
2545889167 发表于 2021-1-11 10:59
做的不错。iic你用我写的那个硬件iic 应该在老站
要比库节约很多代码

直接拷贝您的代码,把延时去掉,加了头文件
直接编译成功。
代码占用空间由原来5273Bytes降为5213Bytes

谢谢。

打赏

参与人数 1家元 +20 收起 理由
2545889167 + 20

查看全部打赏

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-17 05:56 , Processed in 0.889202 second(s), 22 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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