收藏 分销(赏)

单片机俄罗斯方块游戏设计大全(设计思路大全-程序大全).doc

上传人:仙人****88 文档编号:6882355 上传时间:2024-12-23 格式:DOC 页数:95 大小:629.54KB 下载积分:10 金币
下载 相关 举报
单片机俄罗斯方块游戏设计大全(设计思路大全-程序大全).doc_第1页
第1页 / 共95页
单片机俄罗斯方块游戏设计大全(设计思路大全-程序大全).doc_第2页
第2页 / 共95页


点击查看更多>>
资源描述
游戏机的制作:俄罗斯方块 目 录 摘要………………………………………………………………………1 1 方案论证………………………………………………………………………. 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 p2 shuchu equ p1 bt0 equ 20h.0 bt1 equ 20h.1 bt2 equ 20h.2 bt3 equ 20h.3 bt4 equ 20h.4 bt5 equ 20h.5 bt6 equ 20h.6 bt8 equ 21h.0 bt9 equ 21h.1 bt10 equ 21h.2 bt11 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 main xia: 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, qq0 setb bt2 ajmp qq qq0: jb p3.1, qq1 setb bt3 ajmp qq qq1: jb p3.0, qq2 setb bt4 ajmp qq qq2: jb p3.3, qq4 setb bt8 ajmp qq qq4: setb bt6 clr bt2 clr bt3 clr bt4 clr bt8 qq: 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 ww ww0: jnb bt3, ww1 clr bt3 jnb bt6, ww1 clr bt6 call zuoyi ajmp ww ww1: jnb bt4, ww2 clr bt4 jnb bt6, ww2 clr bt6 call zhuan ajmp ww ww2: jnb bt8, ww clr bt8 jnb bt6, ww clr bt6 call kuaixia ww: ret ;============================================================ ; 快速下落子程序 ;============================================================= kuaixia: setb bt9 ret ;============================================================ ; 满屏子程序 ;============================================================ manping: mov 41h, #0ffh mov 42h, #0ffh mov 43h, #0ffh mov 44h, #0ffh mov 45h, #0ffh mov 46h, #0ffh mov 47h, #0ffh mov 48h, #0ffh ret ;============================================================ ; 清屏子程序 ;============================================================ qingping: mov 41h, #00h mov 42h, #00h mov 43h, #00h mov 44h, #00h mov 45h, #00h mov 46h, #00h mov 47h, #00h mov 48h, #00h ret ;============================================ ; 下移显示 ;===================================================== xianshi0: mov a, 35h mov p1, 31h mov p2, a call delay rl a mov p1, #00 mov p1, 32h mov p2, a call delay rl a mov p1, #00 mov p1, 33h mov p2, a call delay mov p1, #00 ret ;===================================================== ; 图形右移子程序 ;===================================================== zuoyi: mov a, 31h jnb acc.0, dd1 ajmp dd dd1: mov a, 32h jnb acc.0, dd2 ajmp dd dd2: mov a, 33h jnb acc.0, dd3 ajmp dd dd3: mov a, 35h cjne a,#0feh,sa0 call sad0 ajmp dd sa0: mov a, 35h cjne a,#0fdh,sa1 call sad1 ajmp dd sa1: mov a, 35h cjne a,#0fbh,sa2 call sad2 ajmp dd sa2: mov a, 35h cjne a,#0f7h,sa3 call sad3 ajmp dd sa3: mov a, 35h cjne a,#0efh,sa4 call sad4 ajmp dd sa4: mov a, 35h cjne a,#0bfh,dd call sad5 ajmp dd dd: ret sad0: mov a, 33h rr a mov 39h,#00 mov 39h, a anl a,43h cjne a,#00,dd4 mov 33h, 39h mov a, 32h rr a mov 39h,#00 mov 39h, a anl a,42h cjne a,#00,dd4 mov 32h, 39h mov a, 31h rr a mov 39h,#00 mov 39h, a anl a,41h cjne a,#00,dd4 mov 31h, 39h dec 51h dd4: ret sad1: mov a, 33h rr a mov 39h,#00 mov 39h, a anl a,44h cjne a,#00,dd5 mov 33h, 39h mov a, 32h rr a mov 39h,#00 mov 39h, a anl a,43h cjne a,#00,dd5 mov 32h, 39h mov a, 31h rr a mov 39h,#00 mov 39h, a anl a,42h cjne a,#00,dd5 mov 31h, 39h dec 51h dd5: ret sad2: mov a, 33h rr a mov 39h,#00 mov 39h, a anl a,45h cjne a,#00,dd6 mov 33h, 39h mov a, 32h rr a mov 39h,#00 mov 39h, a anl a,44h cjne a,#00,dd6 mov 32h, 39h mov a, 31h rr a mov 39h,#00 mov 39h, a anl a,43h cjne a,#00,dd6 mov 31h, 39h dec 51h dd6: ret sad3: mov a, 33h rr a mov 39h,#00 mov 39h, a anl a,46h cjne a,#00,dd7 mov 33h, 39h mov a, 32h rr a mov 39h,#00 mov 39h, a anl a,45h cjne a,#00,dd7 mov 32h, 39h mov a, 31h rr a mov 39h,#00 mov 39h, a anl a,44h cjne a,#00,dd7 mov 31h, 39h dec 51h dd7: ret sad4: mov a, 33h rr a mov 39h,#00 mov 39h, a anl a,47h cjne a,#00,dd8 mov 33h, 39h mov a, 32h rr a mov 39h,#00 mov 39h, a anl a,46h cjne a,#00,dd8 mov 32h, 39h mov a, 31h rr a mov 39h,#00 mov 39h, a anl a,45h cjne a,#00,dd8 mov 31h, 39h dec 51h dd8: ret sad5: mov a, 33h rr a mov 39h,#00 mov 39h, a anl a,48h cjne a,#00,dd9 mov 33h, 39h mov a, 32h rr a mov 39h,#00 mov 39h, a anl a,47h cjne a,#00,dd9 mov 32h, 39h mov a, 31h rr a mov 39h,#00 mov 39h, a anl a,46h cjne a,#00,dd9 mov 31h, 39h dec 51h dd9: ret ;===============图形左移子程序====================================== ;通过图形移动一位,与静止图形相与,为零则移动,否则原地不动 ; ;===================================================== youyi: mov a, 31h jnb acc.7, cc0 ajmp cc20 cc0: mov a, 32h jnb acc.7, cc1 ajmp cc20 cc1: mov a, 33h jnb acc.7, cc ajmp cc20 cc: mov a, 35h cjne a,#0feh,zz0 call scd0 ajmp cc20 zz0: mov a, 35h cjne a,#0fdh,zz1 call scd1 ajmp cc20 zz1: mov a, 35h cjne a,#0fbh,zz2 call scd2 ajmp cc20 zz2: mov a, 35h cjne a,#0f7h,zz3 call scd3 ajmp cc20 zz3: mov a, 35h cjne a,#0efh,zz4 call scd4 ajmp cc20 zz4: mov a, 35h cjne a,#0bfh,cc20 call scd5 ajmp cc20 cc20: ret scd0: mov a, 33h rl a mov 39h,#00 mov 39h, a anl a,43h cjne a,#00,cc2 mov 33h, 39h mov a, 32h rl a mov 39h,#00 mov 39h, a anl a,42h cjne a,#00,cc2 mov 32h, 39h mov a, 31h rl a mov 39h,#00 mov 39h, a anl a,41h cjne a,#00,cc2 mov 31h, 39h inc 51h cc2: ret scd1: mov a, 33h rl a mov 39h,#00 mov 39h, a anl a,44h cjne a,#00,cc3 mov 33h, 39h mov a, 32h rl a mov 39h,#00 mov 39h, a anl a,43h cjne a,#00,cc3 mov 32h, 39h mov a, 31h rl a mov 39h,#00 mov 39h, a anl a,42h cjne a,#00,cc3 mov 31h, 39h inc 51h cc3: ret scd2: mov a, 33h rl a mov 39h,#00 mov 39h, a anl a,45h cjne a,#00,cc4 mov 33h, 39h mov a, 32h rl a mov 39h,#00 mov 39h, a anl a,44h cjne a,#00,cc4 mov 32h, 39h mov a, 31h rl a mov 39h,#00 mov 39h, a anl a,43h cjne a,#00,cc4 mov 31h, 39h inc 51h cc4: ret scd3: mov a, 33h rl a mov 39h,#00 mov 39h, a anl a,46h cjne a,#00,cc5 mov 33h, 39h mov a, 32h rl a mov 39h,#00 mov 39h, a anl a,45h cjne a,#00,cc5 mov 32h, 39h mov a, 31h rl a mov 39h,#00 mov 39h, a anl a,44h cjne a,#00,cc5 mov 31h, 39h inc 51h cc5: ret scd4: mov a, 33h rl a mov 39h,#00 mov 39h, a anl a,47h cjne a,#00,cc6 mov 33h, 39h mov a, 32h rl a mov 39h,#00 mov 39h, a anl a,46h cjne a,#00,cc6 mov 32h, 39h mov a, 31h rl a mov 39h,#00 mov 39h, a anl a,45h cjne a,#00,cc6 mov 31h, 39h inc 51h cc6: ret scd5: mov a, 33h rl a mov 39h,#00 mov 39h, a anl a,48h cjne a,#00,cc7 mov 33h, 39h mov a, 32h rl a mov 39h,#00 mov 39h, a anl a,47h cjne a,#00,cc7 mov 32h, 39h mov a, 31h rl a mov 39h,#00 mov 39h, a anl a,46h cjne a,#00,cc7 mov 31h, 39h inc 51h cc7: ret ;====================================================== ; 图形旋转子程序 ;====================================================== zhuan: cjne r1,#0, bu0 call zhuan0 ajmp bu bu0: cjne r1,#1, bu1 call zhuan1 ajmp bu bu1: cjne r1,#2, bu2 call zhuan2 ajmp bu bu2: cjne r1,#3, bu3 call zhuan3 ajmp bu bu3: cjne r1,#4, bu call zhuan4 bu: ret zhuan0: inc r2 cjne r2,#1, gg0 mov 31h, #10h mov 32h, #18h mov 33h, #10h call yizhou ajmp gg gg0: cjne r2,#2, gg1 mov 31h, #38h mov 32h, #10h mov 33h, #00h call yizhou ajmp gg gg1: cjne r2,#3, gg2 mov 31h, #10h mov 32h, #30h mov 33h, #10h call yizhou ajmp gg gg2: cjne r2,#4, gg mov r2, #00 mov 31h, #10h mov 32h, #38h mov 33h, #00h call yizhou gg: ret zhuan1: inc r2 cjne r2,#1, ggg0 mov 31h, #08h mov 32h, #18h mov 33h, #10h call yizhou ajmp ggg ggg0: cjne r2,#2, ggg mov 31h, #30h mov 32h, #18h mov 33h, #00h mov r2, #00 call yizhou ggg: ret zhuan2: inc r2 cjne r2,#1, hh0 mov 31h, #18h mov 32h, #30h mov 33h, #00h call yizhou ajmp hh hh0: cjne r2,#2, hh mov 31h, #10h mov 32h, #18h mov 33h, #08h mov r2, #00 call yizhou hh: ret zhuan3: inc r2 cjne r2,#1, hh1 mov 31h, #20h mov 32h, #38h mov 33h, #00h call yizhou ajmp hh4 hh1: cjne r2,#2, hh2 mov 31h, #18h mov 32h, #10h mov 33h, #10h call yizhou ajmp hh4 hh2: cjne r2,#3, hh3 mov 31h, #38h mov 32h, #08h mov 33h, #00h call yizhou ajmp hh4 hh3: cjne r2,#4, hh4 mov r2, #00 mov 31h, #10h mov 32h, #10h mov 33h, #30h call yizhou hh4: ret zhuan4: inc r2 cjne r2,#1, hh5 mov 31h, #10h mov 32h, #10h mov 33h, #18h call yizhou ajmp hh8 hh5: cjne r2,#2, hh6 mov 31h, #38h mov 32h, #20h mov 33h, #00h call yizhou ajmp hh8 hh6: cjne r2,#3, hh7 mov 31h, #18h mov 32h, #08h mov 33h, #08h call yizhou ajmp hh8 hh7: cjne r2,#4, hh8 mov r2, #00 mov 31h, #08h mov 32h, #38h mov 33h, #00h call yizhou hh8: ret ;==================================================== yizhou: mov a, 51h cjne a,#5, tt7 jmp tt tt7: cjne a,#6, tt0 call yyizhou jmp tt tt0: cjne a,#7, tt1 call yyizhou call yyizhou call zhuanpan0 jmp tt tt1: cjne a,#8, tt2 call yyizhou call yyizhou call yyizhou call zhuanpan0 jmp tt tt2: cjne a,#9, tt3 call yyizhou call yyizhou call yyizhou call yyizhou call zhuanpan0 jmp tt tt3: cjne a,#4, tt4 call zyizhou jmp tt tt4: cjne a,#3, tt5 call zyizhou call zyizhou jmp tt tt5: cjne a,#2, tt6 call zyizhou call zyizhou call zyizhou call zhuanpan1 jmp tt tt6: cjne a,#1, tt call zyizhou call zyizhou call zyizhou call zyizhou call zhuanpan1 tt: ret ;=========触边旋转判断==================== zhuanpan0: mov a, 31h jnb acc.0, hui0 call zyizhou ajmp hui hui0: mov a, 32h jnb acc.0, hui1 call zyizhou ajmp hui hui1: mov a, 33h jnb acc.0, hui call zyizhou hui: ret ;========触边旋转判断==================== zhuanpan1: mov a, 31h jnb acc.7, hui3 call yyizhou ajmp hui2 hui3: mov a, 32h jnb acc.7, hui4 call yyizhou ajmp hui2 hui4: mov a, 33h jnb acc.7, hui2 call yyizhou hui2: ret ;===========X轴右移一位================= yyizhou: mov a, 31h rl a mov 31h, a mov a, 32h rl a mov 32h, a mov a, 33h rl a mov 33h, a ret ;=========X轴左移一位================= zyizhou: mov a, 31h rr a mov 31h, a mov a, 32h rr a mov 32h, a mov a, 33h rr a mov 33h, a ret ;==============显示子程序========================== xianshi: mov p1, 41h mov p2, #0feh call delay mov p1, #00 mov p1, 42h mov p2, #0fdh call delay mov p1, #00 mov p1, 43h mov p2, #0fbh call delay mov p1, #00 mov p1, 44h mov p2, #0f7h call delay mov p1, #00 mov p1, 45h mov p2, #0efh c
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服