1、 1 单 片 机 原 理 及应 用 课 程 设计 报 告 单 片 机 原 理 及应 用 课 程 设计 报 告 基于基于 MCSMCS- -5151 单片机的俄罗斯方块游戏设计单片机的俄罗斯方块游戏设计 2 目录目录 一、课程设计的目的 4 二、题目要求 . 4 三、原理概述 . 4 四、调试过程 . 4 五、验收结果 . 4 六、个人体会 10 七、参考文献 10 八、致谢10 附录一:外电路原理图 . 11 附录二:程序清单 .12 一、课程设计的目的一、课程设计的目的 1. 加深对单片机的理解,熟悉单片机的原理,掌握单片机的编程方法与技巧 3 2. 灵活运用单片机的基础知识,增强利用理论知
2、识解决实际问题的能力 二、题目要求二、题目要求 1.验收时,先在仿真机的 LED 上显示自己学号的后 6 位,再进行相应内容验收。 2.能在单片机实验箱通用板上的液晶显示屏(LCD)上玩俄罗斯方块游戏,使用 4*4 键 盘输入,能够完美实现俄罗斯方块的基本游戏内容,界面优美,最后可以显示分数和级别, 如果游戏失败显示 “GAME OVER” , 最后显示本人姓名 “YANG XIN” 和学号 “200911880” 。 三、三、原理概述原理概述 1. 程序整体思路程序整体思路 单片机上的程序设计一般是一个大循环结构, 对于俄罗斯方块的程序设计, 首先产生一 个伪随机数,其范围是 0-6,分别对
3、应俄罗斯方块中随机产生的七种方块,然后程序根据此 数值所对应的图形模块装入 RAM 的固定区域内,紧接着将此图像写入 LCD 所对应的显示 缓冲区中,显示程序将缓冲区内的内容显示在显示屏上,如果没有控制键按下,图形将自动 向下移动。如果有键按下,程序将根据按下的键来改变图形存储区的值,同时程序将判断图 形是否已到达边界,当图形最上层到达显示区顶部,则游戏结束,此时将清除显示缓冲的内 容,游戏重新开始。 2图形显示图形显示 QH12864T 液晶显示器一共有 128*64 个像素点,本程序中每个像素点用一个坐标表示, 左上角为(0,0) ,右下角为(128,64) 。对于显示类的基本操作是任意点
4、亮一个点,熄灭一个 点,任意点亮 n 个点,灭掉 n 个点,如此一来游戏的第一个关键点就完成了。 我们将 RAM 中选取一段为显示缓冲区,这里面的每一位对应 LCD 上的的一个点,LCD 将实时显示缓冲区的内容,也就是当此缓冲区内容一改变,LCD 上看到的也会做出相应的 改变。 同时游戏中的那些方块被存放在一个类似于一维的数组之中, 每一个方块对应四个小 方块,根据伪随机数将这四个小方块对应的值装入 RAM 固定的区域内。如果要显示方块只 需将这些方块所对应的点写入缓冲区就可以了。 3消层算法消层算法 设置循环变量数 R2=128,即总共要扫描 128 次,每一次循环过程中检测此行是否已满, 也就是检测这一行所对应的存储单元是否全为 1,如果全为 1 则将此行消去,即将此行对应 的 RAM 清零。同时将此行上面 RAM 的内容按每列依次下移,下移完之后重新令 R2=0,又 从第一行开始检测。此行不全为零时只需令 R2=R2+1,直到 R2=128 消层过程结束。 4旋转算法旋转算法 首先要确定一个旋转中心,假如旋转中心的编号是 n,将 n 除以 64,商是 m