
单片机俄罗斯方块游戏设计大全(设计思路大全程序大全).doc
95页目 录 摘要………………………………………………………………………11 方案论证………………………………………………………………………. 1.1 开发意义………………………………………………………………… 1.2 功能介绍………………………………………………………………….2 设计思路………………………………………………………………………….3 硬件电路………………………………………………………………………2.1 74HC573驱动芯片电路…………………………………………………….2.2 8*8LED点阵的接口电路…………………………………………………..2.3单片机最小系统电路………………………………………………………..2.4整体电路图………………………………………………………………….4 系统调试……………………………………………………………………….. 3.1硬件调试……………………………………………………………………… 3.2软件调试……………………………………………………………………..5 作品展示………………………………………………………………………….6 元器件清单……………………………………………………………………..7 结束语…………………………………………………………………………….. 致谢…………………………………………………………………………… 参考文献………………………………………………………………………….游戏机的制作:俄罗斯方块摘要: 近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,应用到各个领域。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善 我做的题目是一个用51单片机制作的游戏机,大致分位软件和硬件2大部分,硬件主要通过5按键、1个8*8LED点阵屏、一个单片机系统,实现积木的左、右、下、变化、复位五个模式,完全达到俄罗斯方块所实现的功能次项目用专门的PROTUES仿真,而采用KEIL软件程序进行程序调试 关键词:AT89S52单片机芯片 ;74HC573驱动芯片 ;GYXM-1558ASR-LED点阵屏 1 方案论证 1.1 开发意义: 充分理解点阵显示的原理,已经动态扫描的应用,对生活中的产品有了个全新的认识,不但懂得理论与实际的差距,也时对自己思维的一次强有力的挑战,做出这个东西让我收获良多 1.2 功能介绍: 开始让他显示个积木,在按键没实现控制的时候,每隔1S下移一次,有触底处理功能,当碰到底的时候图形不能下移,判断能否消行,能消行则消行,不能再判断是否到顶,到底则从新开始,没到底产生下个随即数,中间有5个按键控制,一个实现图形左移,一个实现图形右移,一个实现下移,一个实现旋转,一个复位。
2 设计思路 图形的上下移动: 根据点阵理论可通过图形数据的左右移动和地址变化来实现 图形的变化: 可通过地址变化来得到即把需要变化的数据送到一固定地址,通过地址变化再送回显示的地址里面图形的碰边处理: 可通过各个边上的数据判断是否到边来实现与原有图形相遇: 可通过与原有图形数据进行比较处理来实现图形的旋转: 在固定地址里面实现旋转比较容易,但是在行进中的图形旋转就比较费脑筋,我是用一个地址计数下移的次数,再用一个地址计数左移右移的次数再根据这些次数确定图形的地址,再把这些地址送到图形变化的一个固定的地址中,变化后再送回到显示的地址中去显示图形的碰边处理: 如果不对图形进行边框处理,图形就会一直移动,看不到我们想要的效果我是用把边框数据与图形数据进行位运算再判断这些数据就可以得到图形是否到边3 硬件电路 2.1 74HC573驱动芯片电路此芯片时个锁存器,也可以做驱动芯片驱动LED点阵屏幕,这里面的电源和地系统附加了 但是实际中的加上去,不然芯片不能工作2.2 8*8LED点阵的接口电路上面的是仿真的图 上端接数据 下端开片选 但是实际中引脚很不规则,所有的花时间去测 用一节干电池,或者用指针万用表打到电阻10K档。
2.3 单片机最小系统电路2.4 整体电路图以及仿真效果但是里面的电源、地、晶振、复位、EA等 在仿真中系统自动加的 要是在实际生活中的加进去4 系统调试 3.1 硬件调试 第一 检查单片机的最小系统是否正常,包括检查晶振、单片机2端电压、复位电路已经EA 第二 看驱动芯片是否工作正常、接法是否正确,再检查LED点阵是否接的正确,可以用一节干电池测,也可以用指针万用表打到电阻10K档位测 3.2 软件调试 流程图 程序代码 ;=========================================================;俄罗斯方块,采用移片选的方法.;编译时间: 09年1月15 ;编译者: 谭华;实现功能: 俄罗斯方块的旋转,左移,右移; 消行 碰边 触底 产生随即数等 基本实现右移的基本功能;==============初始化自定义========================================pianxuan equ p2shuchu equ p1bt0 equ 20h.0bt1 equ 20h.1bt2 equ 20h.2bt3 equ 20h.3bt4 equ 20h.4bt5 equ 20h.5bt6 equ 20h.6bt8 equ 21h.0bt9 equ 21h.1bt10 equ 21h.2bt11 equ 21h.3;============================================ org 0000h ajmp start org 0bh ljmp intt0 org 30h;=============主程序初始化================================ start: mov sp, #60h mov tmod, #21h mov th0, #0b1h mov tl0, #0e0h mov th1, #25 mov tl1, #25 mov r1, #00 call chushihua call chuzhi setb ea setb et0 setb tr0 setb tr1 clr bt0 clr bt1 clr bt2 clr bt3 clr bt4 clr bt5 clr bt8 clr bt9 clr bt10 clr bt11 setb bt6 mov 35h, #0feh mov r2, #00 mov r4, #00;=====================================================; 主程序;======================================================main: jnb bt0, main clr bt0 call saomiao ;扫描按键 call xianshi0 ;调用下移显示画面子程序 call xianshi ;调用触边后静态图形显示的子程序 jb bt10, loop ;判断是否触顶,=1,游戏结束,跳到满屏显示 call chudi ;调用触底子程序 call xiaohang ;调用消行判断子程序 call yanshi_40ms ;调用延时40ms消抖子程序,40ms到,BT5置1 jnb bt5, xia0 clr bt5 call panduan ;调用按键判断处理子程序xia0: jnb bt9, xia ;图形快速下落标志位,=1快速下落 clr bt9 call xialuo ;调用图形下落子程序 ajmp mainxia: call yanshi_1s ;延时1s子程序.1s到,BT1=1 jnb bt1, main clr bt1 call xialuo ajmp main loop: call yanshi_500ms ;调用延时500ms子程序,500ms到bt11=1 jnb bt11, main clr bt11 call manping ;调用满屏全亮子程序 ajmp main ;=====================================================; 按键扫描;=====================================================saomiao: jb p3.2, 0 setb bt2 ajmp 0: jb p3.1, 1 setb bt3 ajmp 1: jb p3.0, 2 setb bt4 ajmp 2: jb p3.3, 4 setb bt8 ajmp 4: setb bt6 clr bt2 clr bt3 clr bt4 clr bt8: ret;=====================================================; 图形下移子程序;=====================================================xialuo: mov a, 35h rl a mov 35h, a ret;============================================; 判断子程序;===================================================== panduan: jnb bt2, ww0 clr bt2 jnb bt6, ww0 clr bt6 call youyi ajmp wwww0: jnb bt3, ww1 clr bt3 jnb bt6, ww1 clr bt6 call zuoyi ajmp wwww1: jnb bt4, ww2 clr bt4 jnb bt6, ww2 clr bt6 call zhuan ajmp wwww2: jnb bt8, ww clr bt8 jnb bt6, ww clr bt6 call kuaixiaww: ret;==========================。
