|
本帖最后由 网络孤客 于 2021-1-11 11:09 编辑
既然是“螺蛳壳里做道场”,用的当然是用最简单的STM8S001J3单片机来做。
STM8S001J3内置8KFlash,1K Ram,128Bytes EEPROM,SOP-8封装,除了电源脚外有5个IO脚。
要做游戏机,至少有显示屏,我用的是0.96寸128*64 OLED屏,只需2个IO口驱动
麻烦!只剩下3个IO口,而且还要留一个做SWIM接口
不怕,有10bit ADC口,足够做单IO多按键输入。我用了一个5方向开关,使用TIM2大约30ms扫描一次。
下面是按键电路板与电路图
整机电路超简单,没有太多额外的电路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,用作游戏进度存储,每一步都存一次,不怕断电。
附上源程序供大家参考。
补充内容 (2022-6-3 12:06):
螺蛳壳里做道场系列:
螺蛳壳里做道场~用STM8S001J3做高精度时钟
[url=https://www.mydigit.cn/thread-316707-...
补充内容 (2022-6-3 12:08):
螺蛳壳里做道场~用STM8S001J3做FM收音机 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|