欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于单片机的88俄罗斯方块游戏Word文档下载推荐.docx

    • 资源ID:7604924       资源大小:565.97KB        全文页数:25页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的88俄罗斯方块游戏Word文档下载推荐.docx

    1、充分利用I/O 口。若用该方案,可提供较多I/O 口,但按键少,体现不了矩阵按键的优势,而且操作起来稍显复杂。 采用独立按键,直接在I/O口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是旋转键,下键,左键,右键。由于该系统对于8*8俄罗思方块游戏控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。三 8*8俄罗思方块游戏硬件系统设计(一)、单片机最小系统:1、电源(5v的稳压电源,通过整流,滤波,稳压得到)2、复位电路(1)自动上电复位(RC延时电路)当刚接上电源的瞬间,电容C两端相当于短路,即相当于给RES

    2、ET9号引脚一个高电平,等充电结束时(这个时间很短暂),电容相当于断开,这时已经完成了复位动作。(2)手动复位电路3、晶振电路(提供时钟脉冲)18,19号管脚,如下图分别接30pf的电容。(二)、点阵显示屏及其驱动电路: 三极管采用PNP型,发光二极管采用共阳型。单片机的P1口作为数据端,P2口作为片选端。 点阵显示屏及其驱动电路图 点阵显示屏及其驱动电路仿真图 (三)、独立按键电路:按键K1定义为右键,按键K2定义为左键,按键K3定义为下键,按键K4定义为旋转键。按键电路图 按键电路仿真图(四)、8*8俄罗斯方块游戏系统硬件:(1)选用设备:AT89C51芯片一片,USB数据线一根,共阳极的

    3、点阵屏一个,驱动三极管八个,开关按键五个,导线,限流电阻若干。系统总框图如图所示。硬件系统总框图(2) 8*8俄罗斯方块游戏控制线路图(3) 系统工作原理1) 编程设置好俄罗斯方块游戏规则,通过编程器写入89C51单片机系统。2) 由89C51单片机通过P1口输送数据,P2口片选。3) 通过89C51单片机的RESET位来控制系统是工作或设置初值,为0就对系统进行初始化,为1系统就开始工作;通过AT89C51单片机的P3.2,P3.3,P3.4位来控制游戏方块的右移,左移,下移,P3.5位来控制俄罗斯方块的旋转。四 8*8俄罗斯方块游戏的软件设计系统软件的设置主要包含延迟时间设计、方块显示程序

    4、设计、判断按键程序、方块旋转程序、判断在下移,左移,右移,旋转时是否冲突程序、俄罗斯方块消行程序以及游戏结束界面显示程序设计。我们将对每一步的具体如何实现展示给大家。下面为俄罗斯方块游戏主程序流程图:;/主程序/MAIN:JNB SS,$;判断中断是否到来CLR SS ;中断标志清0ACALL HECHENG;调用移动与背景合成程序ACALL DISPLAY;调用动态显示子程序ACALL JIANPAN ;调用键盘扫描程序INC R3 ;等待1秒CJNE R3,#50,MAINMOV R3,#0ACALL MOVINGDOWN ;1秒到了,下移ACALL JIESHU ;调用结束jnb liy

    5、ongzhi, llllliyongzhi555:mov r4,#50oooo: call jieshuhou djnz r4,oooomov r4,#50oooo1: call jieshuhou1 djnz r4,oooo1 mov r4,#50oooo2: call jieshuhou2 djnz r4,oooo2 ljmp liyongzhi555llll: JB CHONGTU,LEE_A ;判断是否冲突 JNB CHONGHE,MAIN ;判断是否需要合成LEE_A: ACALL BACKHECHENG ;移动合成到背景 ACALL XIAOHANG ;调用消行子程序 ACALL

    6、QINGCHU ;清除移动区数据 ACALL CHUSUIJI ;出随机数ACALL SUIJI ;通过随机数取出积木 ACALL TIHUAN3 ;新积木送旋转区 ACALL TIHUAN ;再送移动区 MOV SHUCHU,#00H ;关屏幕 AJMP MAIN11.延时时间程序设计其中延迟时间设计方法有两种:一种是采用软延时的方法;另一种是利用MCS- 51内部定时器产生溢出中断来延迟时间。具体方案设计如下:(1) 定时器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL上的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此可以把计数器记满为零所需的计数值

    7、设定为C和计数初值设定为Tc可得到如下计算公式:Tc=M- C式中, M为计数器总值,且在方式1时M为216,( 在方式0时M的值为213,在方式2和3为28)由此可知:当工作于方式1时,定时时间最长,所以将定时器工作于方式1,即M=216=65536;同时设定单片机的主脉冲频率fosc=12MHz。(2) 软件计时1秒的方法在主程序中设定一个初值为0的软件计数器和使T0定时1秒。CPU先使软件计数器加1,然后判断它是否为50,若为50表示1秒已到。(3) 定时器计时参考程序代码/中断初始化/输入: 无输出: T0JISUQI0,T0JISUQI1,TH0,TL0功能: 中断初始化ZDCUSI

    8、HUA: MOV TMOD,#01H ;T0方式1 MOV DPTR,#65536-20000 ;赋初值 MOV TH0,DPH MOV TL0,DPL MOV T0JISUQI0,DPH ;保护定时器初值 MOV T0JISUQI1,DPL SETB TR0 ;开启中断 SETB ET0 SETB EA RET /中断子程序/36H,35H36H,35H,SS置中断标志位为1ZDUAN: MOV TH0,T0JISUQI0 ;定时器重新赋初值 MOV TL0,T0JISUQI1 SETB SS ;秒标志位置1 RETI/延时子程序/延时一段时间,稳定点阵屏的显示DELAY: MOV R7,#

    9、30DL: MOV R6,#40 DJNZ R6,$ DJNZ R7,DL RET/等待1秒/ INC R3 ; CJNE R3,#50,MAIN MOV R3,#0 ACALL MOVINGDOWN ;1秒到了,程序往下执行2.方块显示的设计当点阵屏按照给定的变化规律进行运行时,采用动态显示原理。达到显示俄罗斯方块的目的。动态显示原理:同一时刻,最多只有一位数码管工作,并且所有数码管以一定的频率交替循环工作。当频率较低时,看到的显示效果是闪烁的、不稳定的。当频率较高时,由于人眼的视觉暂留现象,就会看到稳定显示的数字了。俄罗斯方块显示仿真图方块显示参考程序如下:/显示子程序/XIANSHOW0

    10、-7SHUCHU显示DISPLAY: MOV R0,#XIANSHOW0 MOV R2,#7fHNEXT_II: MOV PIANXUAN,R2 MOV A,R0 CPL A MOV SHUCHU,A ACALL DELAY MOV SHUCHU,#0FFH INC R0 MOV A,R2 Rr A MOV R2,A ;片选 CJNE R0,#40H,NEXT_II3.判断按键程序 由于按键只需要四个,采用独立按键就足以满足要求。当按键按下,则相应的I/O口置0。判断按键是否按下,需通过编程来完成:/键盘子程序/RETURN/LEFT/LIGHT/DOWNKEY无判断按键JIANPAN: JB

    11、 RETURNKEY,TAIQI ;旋转按键 JB RETURNKEYBZ,TAIQI SETB RETURNKEYBZ ACALL RETURNMOVINGTAIQI: JNB RETURNKEY,PANZUO CLR RETURNKEYBZPANZUO: JB LEFTKEY,TAIQI2 ;左移按键 JB LEFTKEYBZ,TAIQI2 SETB LEFTKEYBZ ACALL LEFTMOVINGTAIQI2: JNB LEFTKEY,PANYOU CLR LEFTKEYBZPANYOU: JB RIGHTKEY,TAIQI3 ;右移按键 JB RIGHTKEYBZ,TAIQI3 S

    12、ETB RIGHTKEYBZ ACALL RIGHTMOVINGTAIQI3: JNB RIGHTKEY,PANXIA CLR RIGHTKEYBZPANXIA: JB DOWNKEY,TAIQI4 ;下移按键 ACALL MOVINGDOWNTAIQI4:4.方块旋转程序游戏过程中方块可以自由旋转,俄罗斯方块的旋转主要将方块的位置加以变换得到的,当然首先要判断是否满足旋转的要求。然后在旋转区将方块图形进行旋转,再送往移动区。程序如下:/ /旋转判断子程序/MOVESHOW0-MOVESHOW7没有冲突和处边情况,积木旋转90度RETURNMOVING:/判断左边是否处边/ CLR C ;进位

    13、标志清0 MOV R0,#MOVESHOW0 ;判断能不能左移NEXT_CX: RLC A ;如果CY为1表示模型 JC NEXT_11 ;已经碰到边界 INC R0 ;因为8行,所以要判断8次 CJNE R0,#48H,NEXT_CX AJMP PANYOUBIANNEXT_11: MOV A,X_X ;判断是否是中心处边 CJNE A,#7,PANYOUBIAN AJMP OUT_CD /判断右边是否处边/PANYOUBIAN:判断能不能右移NEXT_MX: RRC A ;如果CY为1表示模型 JC NEXT_12 ; CJNE R0,#48H,NEXT_MX AJMP PANXIABIA

    14、NNEXT_12: JZ OUT_CD/判下边是否处底/ PANXIABIAN: MOV R7,MOVESHOW7 CJNE R7,#0,OUT_CD ;为1表示碰到边框/开旋转子程序/SUIJISHU开始旋转 KAIXUANZHUAN: ; MOV A,SUIJISHUCJNE A,#0,NEXT_BF ;方块不旋转AJMP OUT_CD NEXT_BF: ACALL CUNSHU ;移动区数据送显示区暂存 ACALL CUNSHU3 ;旋转区数据送显示区暂存 ACALL ZHUANDONG ;调用转动子程序调用清除子程序 ACALL TIHUAN ;调用替换子程序 ACALL YIDIYI

    15、DONG ;调用异地移动子程序 ACALL CHONGTUPANDUAN ;旋转是否冲突 JNB CHONGTU,OUT_CD ACALL FANGSHU ;恢复移动区数据 ACALL FANGSHU3 ;恢复旋转区数据OUT_CD:/异地移动子程序/X_X,Y_Y旋转数据送到积木原始位置 YIDIYIDONG: MOV R4,X_XTANG15: DJNZ R4,YIDIZHUAN ;X坐标减1为0表示水平位置没有移动 MOV R5,Y_YTING15: DJNZ R5,YIDIZHUAN3;Y坐标减1为0表示水平位置没有移动 AJMP OUT_BACKYIDIZHUAN: ACALL ZU

    16、OYI AJMP TANG15YIDIZHUAN3: ACALL XIAYI AJMP TING15OUT_BACK:/转动子程序/SAVE1_1-SAVE1_3旋转区数据旋转90度/外旋/ZHUANDONG: MOV C,23H.0 ;数据暂时存储 MOV 26H.0,C MOV C,25H.0 ;9-3 MOV 23H.0,C MOV C,25H.2 ;7-9 MOV 25H.0,C MOV C,23H.2 ;1-7 MOV 25H.2,C MOV C,26H.0 ;3-1 MOV 23H.2,C/内旋/ MOV C,23H.1 ; MOV C,24H.0 ;6-2 MOV 23H.1,C

    17、 MOV C,25H.1 ;8-6 MOV 24H.0,C MOV C,24H.2 ;4-8 MOV 25H.1,C2-4 MOV 24H.2,C5.冲突判断程序 俄罗斯方块游戏区图形框看成移动区、旋转区、背景区几部分构成,判断是否遇到边界,是否移动区的数据与背景区的数据重和。/冲突判断子程序/MOVESHOW0-7 AND BACKSHOW0-7判断在下移,左移,右移,旋转时是否冲突CHONGTUPANDUAN: MOV R0,#BACKSHOW0 MOV R1,#MOVESHOW0GOTO_A: ANL A,R1 CJNE A,#00H,TANG_A1 INC R1 CJNE R0,#38

    18、H,GOTO_A CLR CHONGTUTANG_A1: SETB CHONGTU ;冲突标志置16. 消行程序我们的这个俄罗斯方块游戏,其实在游戏区图形框可以看成是由许多的小方块组成,方块运动的过程就是造型里方块显示或者隐藏,就像现在的霓虹灯效果一样,上一层的消失,下一层的显示,这样,从视觉效果可以看到方块的下落运动效果。方块在下落的过程中会自动判断每一行方块是否满行,如果满行时,就会将这一行小方块的隐藏,在将上面的小方块向下移动。当有多行同时出现这样情况时使用递归调用,实现连续消行。具体程序如下:/消行子程序/ BACKSHOW0-7 消掉全亮的行XIAOHANG:XH: MOV R7,#

    19、0 ;R7赋予初值,一共判8行 MOV R0,#BACKSHOW7 ;从最底行开始判断,但当消了一行后,37H内的数据即为XH_1: ;上一行的数据,即继续判断上行需要消行否 MOV A,R0 ;首先判断每一行是否为0FF CPL A ;数据取反 JZ XIAOCHU ;如果为0(原来就为0FF),则可以去消行。 DEC R0 ;判断下一行需要消行否 INC R7 CJNE R0,#3FH,XH_1 XIAOCHU: MOV R0,#0 ;把需要消行的那一行数据清0X_H: MOV A,R0 ;消行当前行赋予ACC,暂存 MOV R1,A DEC R1 ;上一行往下移 MOV A,R1 ;上一

    20、行数据移下来,移到消行所在行 MOV R0,A整体往下移动一格 CJNE R0,#2FH,x_H ;30H为最上行,判断移完没有 CJNE R7,#08,XH ;判断到顶行为止7.游戏结束界面显示程序当背景区最上面的一行有方块,说明游戏结束,则进入游戏结束界面,游戏中结束后设计产生有意思的画面,给你带来乐趣。/结束子程序/ JIESHU: clr liyongzhi cjne a,#00h,lyzLYZ: setb liyongzhi Retjieshuhou: ;游戏结束后界面一 MOV XIANSHOW0,#40H MOV XIANSHOW1,#40H MOV XIANSHOW2,#40H

    21、 MOV XIANSHOW3,#40H MOV XIANSHOW4,#40H MOV XIANSHOW5,#40H MOV XIANSHOW6,#40H MOV XIANSHOW7,#7fh ACALL DISPLAY retjieshuhou1:游戏结束后界面二 MOV XIANSHOW0,#00H MOV XIANSHOW1,#36H MOV XIANSHOW2,#49H MOV XIANSHOW3,#22H MOV XIANSHOW4,#14H MOV XIANSHOW5,#08H MOV XIANSHOW6,#00H MOV XIANSHOW7,#00HACALL DISPLAYjie

    22、shuhou2:游戏结束后界面三 MOV XIANSHOW0,#00H MOV XIANSHOW1,#22H MOV XIANSHOW2,#22H MOV XIANSHOW4,#22H MOV XIANSHOW5,#22H MOV XIANSHOW6,#1CH MOV XIANSHOW7,#00H Ret五 测试、数据及结果分析1、按键测试当电路连接完毕后,将写好的测试程序刷写到芯片内,K1、K2、K3 、K4以及复位按键分别给端口送高电平和低电平,通电观察即可检测。2、点阵显示屏的测试将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。3、整体电路测试系统上电,刷写好程序即可开始测试,观测一次游戏从开始到结束的周期的显示状态是否正常,同时观察是否达到预期的显示功能。 实物图一 实物图二 实物图三六 结论与体会本系统采用MSC- 52系列单片机89C52为中心器件


    注意事项

    本文(基于单片机的88俄罗斯方块游戏Word文档下载推荐.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开