学长毕业了送了我十几片STC89C52RC这个单片机,正好有一几片OLED屏幕,加上自己以前用8x8的矩阵做过一次贪吃蛇的游戏,所以这次想要把屏幕换成OLED屏幕试试看。
先看看效果:
然后记录一下遇到的问题:
51单片机的运行速度比较慢,一开始我选择了IIC接口的OLED屏幕,由于IIC通讯速度比较慢,最后的效果是蛇在屏幕上移动的超级慢,于是换了SPI接口的OLED屏幕,但是速度依然比较慢,最后选择了8080并口的裸屏OLED,速度就快了很多很多,但是在蛇的身体过长的时候,移动速度还是会稍稍慢下来,这个时候就只好换晶振了,把12M晶振换成了40Mhz的晶振,速度那都不是事,但是换成40Mhz的晶振,下载程序的时候偶尔会出问题,所以我还是换回了12Mhz的晶振,感觉速度也还是非常快了。
51单片机RAM太小,一般在这种0.96OLED屏幕上画点都是在RAM中定义一个数组的方式,但是51RAM不够,0.96的OLED屏幕需要128*64=1K的RAM才行,所以只能画点的时候把数据从屏幕里面读出来,虽然这样可以解决问题,但是速度降低了很多。
8080并口的0.96OLED屏幕淘宝上好像只有正点原子有卖,但是要40多一片,所以我自己买了裸屏画了个PCB,裸屏只要七八块钱,板子嘉立创可以白嫖,哈哈哈省钱小达人。
在零件盒子里翻到了一个温湿度传感器和蜂鸣器也一起加上去了,最终效果就是上图。多个功能加在一起程序框架不太好掌握,有时间了用Keil自带的RTX51tiny这个RTOS来试试。