概述
设计功能
(1)本设计基于STC89C52(可与STC89C51、AT89S52、AT89C52兼容使用)单片机;
(2)采用LCD12864液晶显示屏;
(3)共设有6个按键,分别为开始键、暂停键、变形键、下沉键、左键、右键;
(4)设计有0~9个关卡,达到一定分数自动升级。
原理图:
原理图绘制软件采用AD2013。主要由51单片机作为数字钟的核心控制器,与时钟电路、复位电路构成单片机最小系统。LCD12864显示屏采用并行的控制方式与单片机连接,6个按键采用独立的方式与单片机一一连接。整个系统采用5V电源作为供电电压。下载接口为引出单片机的串口,方便板卡下载程序和调试。
其总体硬件原理图如图所示。
仿真设计
仿真软件采用Protues7.8,其仿真源文件格式为.SDN。
程序设计
程序采用C作为编程语言,使用Keil5作为编程软件,仅展示一部分;
//主函数
void main()
{
LCD_initialize();
LCD_clear();
while(1)
{
game_start_show();
select_speed();
game_initialize();//调用游戏初始化函数,初始化游戏所有变量以及在液晶屏上显示基本的信息
Tetris_main();
game_over_show();
}
}
//俄罗斯方块游戏主函数
void Tetris_main()
{
unsigned char i;
for(i=0;i<19;i++)
{
Box_Ram[i]=Box_Ram_data[i];
};//载入游戏初始显示画面
LCD_draw(mpic);
game_over_flag=0;//游戏结束标志位置0表示游戏未结束
box_build();
box_load();
// next_box();
box_to_Box_Ram(s_box.x,s_box.y,s_box.box);
box_down_reg=(20-(speed_num<<1)-1);//为了使方块一出现就能变换形状,所以需要尽快使得方块下降一行,不知道为什么最高行不能变换形状
time0_initialize();
while(!game_over_flag)//如果游戏结束标志位置1,表示游戏结束,打破循环,调用游戏结束画面显示函数
{
game_button();
}
EA=0;//游戏结束后关中断
}
//
//游戏初始化函数
void game_initialize()
{
box_down_reg=0;
next_mode=6;
next_shape=2;
destroy_row_num=0;
game_over_flag=0;
pause_game_flag=0;
LCD_clear();
time0_reg=0;
display_basic();
LCD_display_word(score_data,24,0,3);
LCD_display_word(speed_data,24,3,3);
show_score_num(3,1);
show_speed_num(13,4);
}
关注公众号-单片机实例设计,发送“俄罗斯方块”获取资料;
下载地址
最后
以上就是呆萌丝袜为你收集整理的单片机的俄罗斯方块游戏设计的全部内容,希望文章能够帮你解决单片机的俄罗斯方块游戏设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复