俄罗斯方块设计_第1页
俄罗斯方块设计_第2页
俄罗斯方块设计_第3页
俄罗斯方块设计_第4页
俄罗斯方块设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科课程设计题目:基于单片机的8*8LED俄罗斯方块设计姓 名孙 俊学 号 2008130346院 (系)物理与信息科学学院电子系专业、年级电子信息科学与技术 2008级指导教师刘美容二0一年十月基于单片机的8x8俄罗斯方块设计一、设计任务俄罗斯方块是一款世人皆知,看似简单实则变化无穷的小游 戏。本次设计以51单片机为基础,设计一款功能简单的8*8点阵俄 罗斯方块游戏,我们将以汇编语言编程实现以下操作:图形的显示合 成,通过按键控制图形的移动和旋转,满格消行,手动复位等。本次设计俄罗斯方块功能简单,用单片机的最小系统就能得以 实现。而单片机的最小系统设计中实际上最重要的就是对键盘/显示 器接口

2、电路的设计,由于系统功能不同所以要求就不同,接口设计也 就不同。对一个键盘/显示器接口设计应从整个系统出发,综合考虑 软、硬件特点。其中,硬件设计包括初始的设计原理和原理图介绍, 到最终的电路图实际焊接以及布局,软件设计我们会给出具体的设计 方案,比如图形的显示合成,通过按键控制图形的移动和旋转,满格 消行等的设计流程图,以及具体的汇编程序。二、设计方案本次设计初期是在eil和proteus联合仿真中进行编程语言为1汇 编语言,后期是进行实物焊接。本次我们采用单片机C89C52控制模块 提供电源,以点阵式LED显示,采用独立按键,直接在I/O 口线上 接上按键开关。因为设计时精简和优化了电路,

3、所以剩余的口资源还 比较多,我们使用四个按键,分别是旋转键,下键,左键,右键。这种方案实现可行,既满足系统功能要求,又减少了系统实现的复杂度。 而由于STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低 电压,高性能COMOS8的微处理器,该器件采用ATMEL搞密度非易失 存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼 容。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k 片内程序存储器(ROM)32个双向输入/输出(I/O) 口、3个16位定时/ 计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡 电路。三、8*8俄罗斯方块硬件电路设

4、计及原理图(1)选用设备AT89C51芯片一片,USB数据线一根,共阳极的点阵屏一个,驱 动三极管八个,开关按键五个,导线,限流电阻若干。(2)硬件电路系统总框图如图所示电源电路CPU控制电路按键电路显示电路图1硬件系统总框图1)电源(5v的稳压电源,通过整流,滤波,稳压得到)如图2所示电路为输出电压+5V、输出电流1.5A的稳压电源。它 由电源变压器B,桥式整流电路D1D4,滤波电容C1、C2,防止自 激电容C2、C3和一只固定式三端稳压器(7805)极为简捷方便地搭成 的。220V交流市电通过电源变压器变换成交流低压,再经过桥式整 流电路D1D4和滤波电容C1的整流和滤波,在固定式三端稳压

5、器 LM7805的Vin和GND两端形成一个并不十分稳定的直流电压(该电压 常常会因为市电电压的波动或负载的变化等原因而发生变化)。此百 流电压经过LM7805的稳压和C3的滤波便在稳压电源的输出端产生了 精度高、稳定度好的直流输出电压。本稳压电源可作为TTL电路或单 片机电路的电源。三端稳压器是一种标准化、系列化的通用线性稳压 电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用 简捷方便等特点,成为日前稳压电源中应用最为广泛的一种单片式集 成稳压器件。2)复位电路本设计采用手动复位电路,如图4所示,按键后:电容器被短路 放电、CREST直接和VCC相连,就是高电平,此时进入“复位状

6、态”。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高 电平送到CREST,仍然是“复位状态”稍后,充电结束,电流降为0, 电阻上的电压也将为0,CREST降为低电平,开始正常工作。+5V S5 OQiiKC2O TMi22 UF兰:CREST图3 *手动复位电路2)品振电路(提供时钟脉冲)如图4所示,品振其实是一个频率产生器,他主要把传进去的电 压转化为频率信号。提供给分频率一个基准的14.318MHZ的振荡频 率,它是一个多谐振荡器的正回馈环电路,也就是说它把输入作为输 出,把输出作为输入的回馈频率,象这样一个永无休止的循环自激过 程。3)点阵显示屏及其驱动电路/ 土如图5所示

7、,三极管采用PNP型,发光二极管采用共阳型。单片机的P1 口作为数据端,P2 口作为片选端。U3:B图5点阵显示屏及其驱动电路4)独立按键电路如图6、图7所示,按键K1定义为右键,按键K2定义为左键,按键K3定义为下键,按键K4定义为旋转键。图6按键电路图图7按键电路仿真图(5)系统工作原理(整个电路如图8所示)1)编程设置好游戏规则,通过编程器写入89C52单片机系统。2)由89C52单片机通过P1 口输送数据,P2 口片选。3)通过89C52单片机的RESET位来控制系统是工作或设置初值, 为0就对系统进行初始化,为1系统就开始工作;通过STC89C52单 片机的P3.2, P3.3,P3

8、.4位来控制游戏方块的右移,左移,下移, P3.5位来控制俄罗斯方块的旋转。:2233-A4! 5566 7洋9目加0F0.VAD1F0.2AD2XIAL2RQ.3/AD3P0.fi/A06RSTF0.7/AD7P:2.(W 4R2.2/A1O PSENF7 职11 4P2 412 1EAPW胸 14 4P27W15 piP3ELTIXPpi.unasP3imiDP1.2P3.2W0 qpi jP3.3/1NT1 1P1.4P3 4HD 4P1.5P3.S/TMP3 EjWHP37W图88*8俄罗斯方块游戏整机电路原理图四、8*8俄罗斯方块软件设计系统软件的设置主要包含延迟时间设计、方块显示程

9、序设计、判 断按键程序、方块旋转程序、判断在下移,左移,右移,旋转时是否 冲突程序、俄罗斯方块消行程序以及游戏结束界面显示程序设计。(1)主程序流程设计,如图9所示:首先在内存分配八个字节 的空间作为显示内存,每行对应一个字节的内容,一共六十四位与六 十四个LED灯相对应,图形的显示通过循环的行选中,每次分别将对应行内容送到对应端口,从而达到扫描显示的日的。(2)图像的合成,如图10所示:一共七种方块对应于06的 标识。将每个方块分成四个LED,分别对四个LED进行编号(将整个 点阵看成07行,07歹U),编号二行数*8+列数,将每个方块 的四个LED编号列出来,按次序列成表格,通过标识查表得

10、LED灯编 号,然后将编号存入对应的LED内存,然后通过一定变换,将此表示 此LED的内容与相应的下一行进行逻辑或操作(将#01H左循环位移列数的次数,再将显示内存首地址+行数+1,再取内容,把的内容相或)便实现了图像合成的日的。图像合成子程序:开始将#04H送R4一第一个恒编号地址送R1把R1送A二了 .由编号求下一行显示内存地址送R0一字节表示厄。状态r将该字节和R1相或R1自加一图10图像合成子程序(3)消行处理,如图11所示:查询显示内存的各个字节是否有 为#0FFH,若有则将其前面的显示内存各字节内容循环下移,最后在 显示内存首地址补零。注意:方块在下落的过程中会自动判断每一行方块是

11、否满行,如 果满行时,就会将这一行小方块的隐藏,在将上面的小方块向下移动。 当有多行同时出现这样情况时使用递归调用,实现连续消行。*1 RO自减一图11消行子程序;/主程序/MAIN:JNB SS,$;判断中断是否到来CLR SS;中断标志清0ACALL HECHENG;调用移动与背景合成程序ACALL DISPLAY;调用动态显示子程序ACALL JIANPAN ;调用键盘扫描程序INC R3 ;等待1秒CJNE R3,#50,MAINMOVR3,#0ACALL MOVINGDOWN ;1 秒到了下移ACALLJIESHU;调用结束jnbsunjun, llllsunjun555:movr4

12、,#50oooo:calljieshuhoudjnzr4,oooomovr4,#50oooo1: calljieshuhou1djnzr4,oooo1movr4,#50oooo2: calljieshuhou2djnzr4,oooo2ljmpsunjun555llll: JBCHONGTU,LEE_A;判断是否冲突JNBCHONGHE,MAIN;判断是否需要合成LEE_A: ACALLBACKHECHENG;移动合成到背景ACALLXIAOHANG;调用消行子程序ACALLQINGCHU;清除移动区数据ACALLCHUSUIJI;出随机数ACALL SUIJI;通过随机数取出积木ACALLTI

13、HUAN3;新积木送旋转区ACALLTIHUAN;再送移动区MOVSHUCHU,#00H;关屏幕AJMPMAIN1;/显示子程序/;输入:XIANSHOW0-7;输出:SHUCHU;功能:显示DISPLAY:MOVR0,#XIANSHOW0MOVR2,#7fHNEXT_II: MOVPIANXUAN,R2MOVA,R0CPL AMOV SHUCHU,AACALLDELAYMOVSHUCHU,#0FFHINCR0MOV A,R2RrAMOV R2,A;片选CJNER0,#40H,NEXT_IIRET;输入:BACKSHOW0-7;输出:BACKSHOW0-7;功能:消掉全亮的行XIAOHANG:

14、XH:MOV R7,#0;R7赋予初值,一共判8行MOVR0,#BACKSHOW7 ;从最底行开始判断,但当消了一行后,37H内的数据即为XH_1:;上一行的数据,即继续判断上行需要消行否MOVA,R0;首先判断每行是否为0FFCPLA;数据取反JZXIAOCHU;如果为0 (原来就为0FF),则可以去消行。DECR0;判断下一行需要消行否INCR7CJNER0,#3FH,XH_1RETXIAOCHU:MOVR0,#0;把需要消行的那一行数据清0X_H: MOVA,R0;消行当前行赋予ACC,暂存MOVR1,ADECR1;上一行往下移MOVA,R1;上一行数据移下来,移到消行所在行MOVR0,

15、ADECR0;整体往下移动一格CJNER0,#2FH,x_H;30H为最上行,判断移完没有CJNER7,#08,XH;判断到顶行为止RET;/结束子程序/ JIESHU:MOV R0,#BACKSHOW0MOV A,R0clr liyongzhi cjne a,#00h,lyz RETLYZ:setbliyongzhiRetjieshuhou:;游戏结束后界面一MOV XIANSHOW0,#40HMOV XIANSHOW1,#40HMOV XIANSHOW2,#40HMOV XIANSHOW3,#40HMOV XIANSHOW4,#40HMOV XIANSHOW5,#40HMOV XIANSH

16、OW6,#40HMOV XIANSHOW7,#7fh ACALL DISPLAY Ret五、8*8俄罗斯方块测试结果、分析1)按键测试当电路连接完毕后,将写好的测试程序刷写到芯片内,K1、K2、K3、K4以及复位按键分别给端口送高电平和低电平,通电观察即可 检测。2)点阵显示屏的测试将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片 内,开电源即可测试。3)整体电路测试系统上电,刷写好程序即可开始测试,观测一次游戏从开始到结 束的周期的显示状态是否正常,同时观察是否达到预期的显示功能。图12 8X8led俄罗斯方块游戏实际效果六、结论与体会通过这次的8*8led俄罗斯方块设计与制作,从很大程度上培养 了我的动手能力以及理论到实践的一种思维转换能力,让我接触到 STC89C52, 了解了其内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论