ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:83.46KB ,
资源ID:14139605      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14139605.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机课程设计俄罗斯方块.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

51单片机课程设计俄罗斯方块.docx

1、51单片机课程设计俄罗斯方块单片机课程设计 俄罗斯方块 学院:工程技术学院 专业:08级电子科学与技术 小组成员:何冠羲,马志祥,李洋,张世刚,叶彪,郑先安,洪之摘要 引言 1程序整体思路 28X8LED模块显示原理3硬件电路仿真图4图形显示5消层算法6旋转算法7实物焊接 8心得体会附录 程序代码 摘 要 记得在很小的时候,有一种掌上游戏机,里面有一款游戏叫做俄罗斯方块,那时的我们只是简单的按照游戏规则进行“堆积木”,而其中的原理却很少有人去思考,毕竟当时的我们都还很年幼。 基于单片机课程设计的机会,我们这个小组将使用51单片机和8x8led的组合,来实现比较简单的俄罗斯方块设计。 此次设计初

2、期是在keil和proteus联合仿真中进行,编程语言为51汇编,后期是进行实物焊接。 论文描述了俄罗斯方块的主要功能函数的实现,算法分析和实物焊接过程中遇到的问题。关键词:俄罗斯方块;算法; 8X8led;引 言游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它

3、看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在联众俄罗斯方块中,更有一些联众网络游戏所独有的魅力有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱

4、。这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。本文利用单片机进行俄罗斯方块设计,采用51汇编语言进行编程,基于汇编语言的原因是在编写程序的过程中,对于程序的执行会有一个比较直观的表现。 1. 程序整体思路单片机上的程序设计一般是一个大循环结构,对于俄罗斯方块的程序设计,首先产生一个伪随机数,其范围是0-6,然后程序根据此数值所对应的图形模块装入ram的固定区域内,紧接着将此图像写入led所对应的显示缓冲区中,显示程序将缓冲区内的内容显示在led上,如果没有控制键按下,图形将自动向下移动。如果有键按下,程序将根据按下的键来改变图形存储区的

5、值,同时程序将判断图形是否已到达边界,当图形最上层到达显示区顶部,则游戏结束,此时将清楚显示缓冲的内容,游戏重新开始。28x8led显示原理 8x8led显示屏的原理图如下 由于人眼的视觉暂留现象,通过逐行扫描显示的方式来显示要显示的内容,当每一行扫描的时间很小时人眼观察的将是一幅完整的图像。3 硬件电路仿真图.4图形显示 8x8led一共有64个led,可以从下至上一次对其编号,对于显示类的基本操作是任意点亮一个点,熄灭一个点,任意点亮n(0n=64)个点,灭掉n个点,如此一来游戏的第一个关键点就完成了。 我们将ram中从21h单元到28h单元作为led的显示缓冲区,这里面的每一位对应led

6、的一个点,led将实时显示缓冲区的内容,也就是当此缓冲区内容一改变,led上看到的也会做出相应的改变。同时在俄罗斯方块中那些方块被存放在一个类似于一维的数组之中,每一个方块对应四个小方块,根据伪随机数将这四个小方块对应的值装入ram固定的区域内。如果要显示方块只需将这些方块所对应的点写入缓冲区。5消层算法 设置循环变量数R2=8,即总共至少要扫描8次,每一次循环过程中检测此行是否已满,也就是检测这一行所对应的存储单元是否全为一,如果全为一则将消去此行,即将此行对应的ram清零。同时将此行上面ram的内容按每列依次下移,下移完之后重新将R2=0,又从第一行开始检测。此行不全为零时只需将R2=R2

7、+1。直到R2=9消层过程结束。6旋转算法 首先要确定一个旋转中心,假如旋转中心的编号是34,将34除以8,商是4存入R1余数是2存入R2,及时用商和余数建立坐标系。此时若以此为旋转中心的图形需要旋转,则将每一个小方块对应编号除以8,商减去R1,余数减去R2,而每一个方块一次将旋转90度,所以有公式x1,y1,x2,y2 x2= - y1,y2= x1其中x1,y1为旋转之前的坐标,x2,y2为旋转之后的坐标。旋转完之后将x2加上R1将y2加上R2,然后将x2乘以8再加上y2。执行四次此过程旋转结束。7实物焊接 器件:stc51单片机一块,8x8led显示模块一块,电阻10k10个,开关5个,

8、与门,12m晶振一个,电容3个。 首先按照目的进行进行元器件布局,然后按照电路图里的导线的连接次序将元器件焊在电路板上,焊好之后进行调试。8心得体会 写程序的过程中,首先应该把程序思路理清,然后再写代码,否则写到一半感觉行不通时是很令人心烦的。还有就是焊接是一个技术活,因为在电子工艺实习之后大家便没有碰过电烙铁,所以焊的过程还是很辛苦的。附录:程序代码 ORG 0000HAJMP STARTORG 0003HAJMP INTERRUPTAA EQU 10000000B BB EQU 11111111BHANG EQU 32HLIE EQU 33HCOUNT EQU 34HREMOVEROW E

9、QU 35HSTEPS EQU 36HXUNHUAN EQU 37HBIANLIANG EQU 38HGRAPHRAM1 EQU 39HGRAPHRAM2 EQU 40HGRAPHRAM3 EQU 41HGRAPHRAM4 EQU 42HXXX EQU 43HYYY EQU 44HKEY EQU 45HLEDHEAD EQU 21HTEST BIT 100BITS BIT 99RIGHT BIT 98LEFT BIT 97DOWN BIT 96HARD BIT 95TURN BIT 94KEYDOWN BIT 93TESTING BIT 92BOTTOM BIT 91;程序由此处开始执行;ST

10、ART:MOV TCON,#00000001B;设置外部中断0响应方式为下降沿触发SETB EX0SETB EAMOV SP,#60H;将堆栈指针SP设置在RAM的高地址处MOV R7,#6;R7作为存放0-6这7个随机数的变量MOV P0,#11111111B;将P0口最为输入口LCALL WRITEGRAPHTORAMCLR TESTINGGAMELOOP:;CLR EALCALL SHOWGRAPHMOV R6,#30TIMING:LCALL SHOWLEDRAMLCALL DELAYDJNZ R6,TIMING LCALL DOWNTESTJNB DOWN,NEXT1ABCD:MOV

11、A,28HCJNE A,#0,GAMEOVERLCALL REMOVEBLOCKLCALL WRITEGRAPHTORAMJMP GAMELOOPNEXT1:;JB KEYDOWN,KEY1JMP KEY4KEY1:CLR TESTINGCLR KEYDOWNMOV A,KEYCJNE A,#1,KEY2;1-LEFTLCALL LEFTTESTJB LEFT, KEY4LCALL CLEANGRAPHLCALL MOVELEFTLCALL GAMELOOPKEY2:CJNE A,#2,KEY3;2-RIGHTLCALL RIGHTTESTJB RIGHT, KEY4LCALL CLEANGR

12、APHLCALL MOVERIGHTLCALL GAMELOOPKEY3:CJNE A,#4,KEY4;4-ROTATE ;LCALL ROTATIONTEST;JNB TURN, KEY4LCALL CLEANGRAPHLCALL ROTATIONJMP GAMELOOPKEY4:CJNE A,#8,KEY5SWEAT:LCALL DOWNTESTJB DOWN,GAMELOOPLCALL CLEANGRAPHLCALL MOVEDOWNJMP SWEATKEY5:LCALL CLEANGRAPHLCALL MOVEDOWNINC R7CJNE R7,#7,NEXT5MOV R7,#0NEX

13、T5:JMP GAMELOOPGAMEOVER:MOV R0,#8MOV R1,#LEDHEADCLEAR:LCALL CLEANGRAPHMOV R1,#0INC R1DJNZ R0,CLEARMOV R0,#4MOV R1,#GRAPHRAM1ASDF:MOV A,R1ADD A,#16MOV R1,AINC R1DJNZ R0,ASDFJMP GAMELOOP;测试图形是否能向下移动;DOWNTEST:PUSH 0PUSH 1PUSH 2PUSH 3PUSH BPUSH ACCMOV R2,#4MOV R0,#GRAPHRAM1DOWN0:MOV A,R0SUBB A,#8MOV B,A

14、MOV R3,#4CLR CMOV R1,#GRAPHRAM1DOWN2:CLR CSUBB A,R1JZ DOWN1INC R1MOV A,BDJNZ R3,DOWN2LCALL TESTBITJB BITS,DOWN3DOWN1:INC R0DJNZ R2,DOWN0CLR DOWNJMP HOPEDOWN3:SETB DOWN;DOWN WEI YI BIAO SHI BU NENG WANG XIA YI DONG CPL P3.4JMP DOWN4HOPE:MOV R2,#4MOV R0,#GRAPHRAM1YOUQIANG2:MOV R3,#1CCC2:MOV A,R3MOV B,

15、ACLR CSUBB A,R0JNZ CCC1 SETB DOWNSETB BOTTOMJMP DOWN4CCC1:MOV A,BINC R3CJNE R3,#9,CCC2INC R0DJNZ R2,YOUQIANG2DOWN4:POP ACCPOP BPOP 3POP 2POP 1POP 0RET;外部中断0中断处理程序;INTERRUPT:PUSH 0PUSH 1PUSH ACCINC R7CJNE R7,#7,INTTMOV R7,#0INTT:SETB TESTINGSETB KEYDOWNMOV A,P0CPL AMOV KEY,APOP ACCPOP 1POP 0RETI;测试能否

16、旋转;向下移动;MOVEDOWN:PUSH 0PUSH 1PUSH ACCMOV R0,#GRAPHRAM1MOV R1,#4MOVE1:MOV A,R0CLR CSUBB A,#8MOV R0,AINC R0DJNZ R1,MOVE1POP ACCPOP 1POP 0RET;向左移动;MOVELEFT:PUSH 0PUSH 1PUSH ACCMOV R0,#GRAPHRAM1MOV R1,#4MOVE2:MOV A,R0CLR CSUBB A,#1MOV R0,AINC R0DJNZ R1,MOVE2POP ACCPOP 1POP 0RET;向右移动;MOVERIGHT:PUSH 0PUSH

17、 1PUSH ACCMOV R0,#GRAPHRAM1MOV R1,#4MOVE3:MOV A,R0CLR CINC A MOV R0,AINC R0DJNZ R1,MOVE3POP ACCPOP 1POP 0RET;将图形写入RAM缓存中;WRITEGRAPHTORAM:PUSH ACCPUSH BPUSH 0PUSH 1PUSH 2PUSH 7MOV R1,#4MOV A,R7MOV B,#4MUL ABMOV R2,AMOV R0,#GRAPHRAM1MOV DPTR,#GRAPHWRITEGRAPH:MOV A,R2MOVC A,A+DPTR;SUBB A,#16MOV R0,AINC

18、 R2INC R0DJNZ R1,WRITEGRAPHPOP 7POP 2POP 1POP 0POP BPOP ACCRET ;测试某一个二进制位是否为1;TESTBIT:PUSH 0PUSH 1PUSH BPUSH ACCMOV B,#8DIV ABMOV R0,AMOV A,BCJNE A,#0,TEST3MOV A,R0DEC AJMP TEST4TEST3:MOV A,R0TEST4:MOV DPTR,#TAB1MOV R1,#LEDHEADADD A,R1MOV R1,AMOV A,BMOVC A,A+DPTRANL A,R1CJNE A,#0,TEST1CLR BITSJMP TE

19、ST2TEST1:SETB BITSTEST2:POP ACCPOP BPOP 1POP 0RET;测试图形是否能向左移动;LEFTTEST:PUSH 0PUSH 1PUSH 2PUSH 3PUSH BPUSH ACCMOV R2,#4MOV R0,#GRAPHRAM1LEFT0:MOV A,R0CLR CSUBB A,#1MOV B,AMOV R3,#4;CLR CMOV R1,#GRAPHRAM1LEFT2:CLR CSUBB A,R1JZ LEFT1INC R1MOV A,BDJNZ R3,LEFT2LCALL TESTBITJB BITS,LEFT3LEFT1:INC R0DJNZ R

20、2,LEFT0CLR LEFTJMP LEFT4LEFT3:SETB LEFT;DOWN WEI YI BIAO SHI BU NENG WANG XIA YI DONG CPL P3.4JMP LEFT5LEFT4:MOV R2,#4MOV R0,#GRAPHRAM1YOUQIANG:MOV R3,#9MOV A,#1HHH2:MOV B,ACLR CSUBB A,R0JNZ HHH1 SETB LEFTJMP LEFT5HHH1:MOV A,BADD A,#8DJNZ R3,HHH2INC R0DJNZ R2,YOUQIANGLEFT5:POP ACCPOP BPOP 3POP 2POP

21、1POP 0RET;测试图形是否能向右移动;RIGHTTEST:PUSH 0PUSH 1PUSH 2PUSH 3PUSH BPUSH ACCMOV R2,#4MOV R0,#GRAPHRAM1RIGHT0:MOV A,R0ADD A,#1MOV B,AMOV R3,#4;CLR CMOV R1,#GRAPHRAM1RIGHT2:SUBB A,R1JZ RIGHT1INC R1MOV A,BDJNZ R3,RIGHT2LCALL TESTBITJB BITS,RIGHT3RIGHT1:INC R0DJNZ R2,RIGHT0CLR RIGHTJMP RIGHT4RIGHT3:SETB RIGHT

22、;DOWN WEI YI BIAO SHI BU NENG WANG XIA YI DONG CPL P3.4JMP RIGHT5RIGHT4:MOV R2,#4MOV R0,#GRAPHRAM1YOUQIANG1:MOV R3,#8MOV A,#8III2:MOV B,ACLR CSUBB A,R0JNZ III1 SETB RIGHTJMP RIGHT5III1:MOV A,BADD A,#8DJNZ R3,III2INC R0DJNZ R2,YOUQIANG1RIGHT5:POP ACCPOP BPOP 3POP 2POP 1POP 0RET;图形旋转;ROTATION:PUSH 0PU

23、SH 1PUSH 2PUSH 3PUSH BPUSH ACCMOV A,GRAPHRAM1 ;A=50MOV B,#8DIV AB ;A=6 B= 2MOV HANG,A ;HANG = 6MOV LIE,B ;LIE = 2MOV R3,#4MOV R0,#GRAPHRAM1ROTATESTART:MOV A,R0MOV B,#8DIV AB CLR CSUBB A,HANG MOV R1,A MOV A,BCLR CSUBB A,LIEMOV R2,A;X2=-Y1 Y2=X1MOV A,#0CLR CSUBB A,R2 ;-Y1MOV B,R1 ;X1MOV R1,A ;X2=-Y1MO

24、V R2,B ;Y2=X1MOV A,R1ADD A,HANGMOV R1,AMOV A,R2ADD A,LIEMOV R2,AMOV A,R1MOV B,#8MUL ABADD A,R2MOV R0,A INC R0DJNZ R3,ROTATESTARTPOP ACCPOP BPOP 3POP 2POP 1POP 0RET;显示LEDRAM中的内容;SHOWLEDRAM:PUSH 0PUSH 1PUSH BPUSH ACCMOV R0,#LEDHEADMOV R1,#8MOV A,#AASHOW1:MOV P1,AMOV P2,R0LCALL DELAYINC R0RL ADJNZ R1,SHOW1POP ACCPOP BPOP 1POP 0RET;软件延时;DELAY:PUSH 1PUSH 2MOV R1,#5FQFQ:MOV R2,#200FWFW:DJNZ R2,FWFWDJNZ R1,FQFQPOP 2POP 1RET;清楚图形在LEDRAM中的内容;

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

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