栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

基于51单片机的LCD12864游戏机设计

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于51单片机的LCD12864游戏机设计


这个设计是基于stc89c52单片机,以及基于lcd12864屏幕所设计的一款多菜单的游戏机,不过,相关性能有待提升。

文章目录
  • 前言
  • 一、项目简介
  • 二、设计思路
    • 1.仿真图
    • 2.部分代码
  • 总结


前言

这个设计是我大一时,在封校的日子里,闲的没事,所以突发奇想就想设计一个游戏机,不过相关性能有待提升,其实也不是我能力太菜,具体的原因,我们下面再说。对了,有不对的地方,大家可以指出来,欢迎大家留言。


一、项目简介

        这个设计是我一年前,也就是大二的时候所设计的,我当时看到b站上有几个博主发布了一段纯手工制作游戏机的视频后,超级羡慕,当时心头一热,就打算制作一个,现在想想还是太自不量力了,毕竟我当时还有很多东西不会,我也只会用51单片机,对其他单片机还不熟悉。这个设计是基于stc89c52单片机,这款单片机我比较熟练,相比与stm32系列的单片机,51单片机的性能是比较落后的,毕竟51单片机是89十年代的产品,无论是容量、计算能力、兼容性都比不上stm32系列的单片机,我这个作品其实它的主体框架已经基本构建完毕,但是把游戏函数装上去后,代码无法编译,因为代码太多了,有一千多行,以及远超51系列单片机的代码容量了。后来我就用stm32重新做了一个,效果还行。

        言归正传,这款设计用的是AMPIRE16864的显示屏,在各大平台上都容易找到相对于的驱动代码,在下面的内容中我会详细介绍,单片机用52就够了,其他一些零部件,就不在这里详细说了。

    

二、设计思路 1.仿真图

 上图就是仿真软件刚运行时的样子,图中屏幕左边显示“菜单”两字,屏幕右边显示的是四个具体的内容,还有一个箭头,我们可以通过按相应的按钮,来选择不同的功能,。

 我们可以按第一个按钮,让箭头下移,如上图所示。

 我们再按第二个按钮,就可以打开相应的功能了,由于代码太长,所以这个图像矩阵就没有往代码里方。

 我们最后再按一下最下面的内个按钮,就会回到主菜单。

这样基本就实现了循环菜单的功能。

2.部分代码

驱动函数;

void busy(){
P0=0x00;
RS=0;
RW=1;
E=1;
while(P0 & 0x80){;}
E=0;
}

void delay(uchar i){
uint n;
for(n=0;n 

void clear(uchar screen){
uchar i,j;
screen1(screen);
for(i=0;i<8;i++){
page1(i);
lie1(0);
for(j=0;j<64;j++){
dat(0x00);
}
}
}

下面是相关的显示文字、数字、图像的代码;

void shon_word(uchar screen,uchar page,uchar lie,uchar *p){
uchar i;
screen1(screen);
page1(page);
lie1(lie);
for(i=0;i<16;i++){
dat(p[i]);
}
page1(page+1);
lie1(lie);
for(i=0;i<16;i++){
dat(p[i+16]);
}
}
void shon_numb(uchar screen,uchar page,uchar lie,uchar *p){
uchar i;
screen1(screen);
page1(page);
lie1(lie);
for(i=0;i<8;i++){
dat(p[i]);
}
page1(page+1);
lie1(lie);
for(i=0;i<8;i++){
dat(p[i+8]);
}
}
void shon_picture(uchar screen,uchar page,uchar lie,uchar *p){
uchar i;
screen1(screen);
page1(page);
lie1(lie);
for(i=0;i<128;i++){
dat(p[i]);
}
page1(page+1);
lie1(lie);
for(i=0;i<128;i++){
dat(p[i+128]);
}
page1(page+2);
for(i=0;i<128;i++){
dat(p[i+256]);
}
page1(page+3);
lie1(lie);
for(i=0;i<128;i++){
dat(p[i+384]);
}
page1(page+4);
for(i=0;i<128;i++){
dat(p[i+512]);
}
page1(page+5);
lie1(lie);
for(i=0;i<128;i++){
dat(p[i+640]);
}
page1(page+6);
for(i=0;i<128;i++){
dat(p[i+768]);
}
page1(page+7);
lie1(lie);
for(i=0;i<128;i++){
dat(p[i+896]);
}
}

总结

以上就是这个设计的简要概括,有错误请指出。

想要完整代码以及仿真文件的可以加QQ;2649191761

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960973.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号