游戏机的制作:俄罗斯方块目录摘要………………………………………………………………………11方案论证……………………………………………………………………….1.1开发意义…………………………………………………………………1.2功能介绍………………………………………………………………….2设计思路………………………………………………………………………….3硬件电路………………………………………………………………………2.174HC573驱动芯片电路…………………………………………………….2.28*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.174HC573驱动芯片电路此芯片时个锁存器,也可以做驱动芯片驱动LED点阵屏幕,这里面的电源和地系统附加了但是实际中的加上去,不然芯片不能工作。2.28*8LED点阵的接口电路上面的是仿真的图上端接数据下端开片选但是实际中引脚很不规则,所有的花时间去测用一节干电池,或者用指针万用表打到电阻10K档。2.3单片机最小系统电路2.4整体电路图以及仿真效果但是里面的电源、地、晶振、复位、EA等在仿真中系统自动加的要是在实际生活中的加进去。4系统调试3.1硬件调试第一检查单片机的最小系统是否正常,包括检查晶振、单片机2端电压、复位电路已经EA第二看驱动芯片是否工作正常、接法是否正确,再检查LED点阵是否接的正确,可以用一节干电池测,也可以用指针万用表打到电阻10K档位测。3.2软件调试流程图开始显示背景和图形节拍到来否NY有按键否Y去按键处处理N1秒到否图形下移到底否NY调下一个图形YN满一行否调消行程序NY程序代码;=========================================================;俄罗斯方块,采用移片选的方法.;编译时间:09年1月15;编译者:谭华;实现功能:俄罗斯方块的旋转,左移,右移;消行碰边触底产生随即数等基本实现右移的基本功能;==============初始化自定义========================================pianxuanequp2shuchuequp1bt0equ20h.0bt1equ20h.1bt2equ20h.2bt3equ20h.3bt4equ20h.4bt5equ20h.5bt6equ20h.6bt8equ21h.0bt9equ21h.1bt10equ21h.2bt11equ21h.3;============================================org0000hajmpstartorg0bhljmpintt0org30h;=============主程序初始化================================start:movsp,#60hmovtmod,#21hmovth0,#0b1hmovtl0,#0e0hmovth1,#25movtl1,#25movr1,#00callchushihuacallchuzhisetbeasetbet0setbtr0setbtr1clrbt0clrbt1clrbt2clrbt3clrbt4clrbt5clrbt8clrbt9clrbt10clrbt11setbbt6mov35h,#0fehmovr2,#00movr4,#00;=====================================================;主程序;======================================================main:jnbbt0,mainclrbt0callsaomiao;扫描按键callxianshi0;调用下移显示画面子程序callxianshi;调用触边后静态图形显示的子程序jbbt10,loop;判断是否触顶,=1,游戏结束,跳到满屏显示callchudi;调用触底子程序callxiaohang;调用消行判断子程序callyanshi_40ms;调用延时40ms消抖子程序,40ms到,BT5置1jnbbt5,xia0clrbt5callpanduan;调用按键判断处理子程序xia0:jnbbt9,xia;图形快速下落标志位,=1快速下落clrbt9callxialuo;调用图形下落子程序ajmpmainxia:callyanshi_1s;延时1s子程序.1s到,BT1=1jnbbt1,mainclrbt1callxialuoajmpmainloop:callyanshi_500ms;调用延时500ms子程序,500ms到bt11=1jnbbt11,mainclrbt11callmanping;调用满屏全亮子程序ajmpmain;=====================================================;按键扫描;=====================================================saomiao:jbp3.2,qq0setbbt2ajmpqqqq0:jbp3.1,qq1setbbt3ajmpqqqq1:jbp3.0,qq2setbbt4ajmpqqqq2:jbp3.3,qq4setbbt8ajmpqqqq4:setbbt6clrbt2clrbt3clrbt4clrbt8qq:ret;=====================================================;图形下移子程序;=====================================================xialuo:mova,35hrlamov35h,aret;============================================;判断子程序;=====================================================panduan:jnbbt2,ww0clrbt2jnbbt6,ww0clrbt6callyouyiajmp:jnbbt4,ww2clrbt4jnbbt6,ww2clrbt6callzhuanajmp:ret;============================================================;快速下落子程序;=============================================================kuaixia:setbbt9ret;============================================================;满屏子程序;============================================================manping:mov41h,#0ffhmov42h,#0ffhmov43h,#0ffhmov44h,#0ffhmov45h,#0ffhmov46h,#0ffhmov47h,#0ffhmov48h,#0ffhret;============================================================;清屏子程序;============================================================qingping:mov41h,#00hmov42h,#00hmov43h,#00hmov44h,#00hmov45h,#00hmov46h,#00hmov47h,#00hmov48h,#00hret;============================================;下移显示;=====================================================xianshi0:mova,35hmovp1,31hmovp2,acalldelayrlamovp1,#00movp1,32hmovp2,acalldelayrlamovp1,#00movp1,33hmovp2,acalldelaymovp1,#00ret;=====================================================;图形右移子程序;=====================================================zuoyi:mova,31hjnbacc.0,dd1ajmpdddd1:mova,32hjnbacc.0,dd2aj