找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6189|回复: 0
打印 上一主题 下一主题
收起左侧

单片机俄罗斯方块游戏机的设计与制作教程 还有用TC的俄罗斯方块资料

[复制链接]
跳转到指定楼层
楼主
ID:306134 发表于 2018-4-11 20:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目录
摘要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软件程序进行程序调试              
               
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 软件调试
   流程图


程序代码

5  作品展示  
6  元器件清单
                                          AT89S52芯片一个  8元          5个按键     0.5元
                                          74HC573驱动芯片  2元          LED点阵屏幕  8元
                                          1个1K的上拉排阻  1元         一个10uf电容电解电容
                                          8个100的限流电阻                                                          2个30pf电容无极性
                                          一个LED指示灯                                                                     1个330的电阻
                                          一个10K电阻                                                                                   1个11.0592的晶振
                                                                                                                合计:24元
7  结束语
                                          我在前面的一些处理还是比较顺利,比如说按键的处理、下移、左右移、旋转、消行、碰边等问题,2天的时间就弄好了。最浪费我时间的是与下面的图形相遇的处理。开始判倒是能够判断,但只能在一个固定的区域里停止下移。后来经过老师指导要我把显示图形的三个地址作为一个整体判断,也弄了好久,还是有些地方不能判断出来,思考好久之后我才想到用这个方法判断出来。还有旋转,开始总想不到算法,最后老师指导我用位地址操作
先把图形放旋转区旋转 在放到操作地址区,记下左右上下移动次数确实帮了我不少的忙
碰边处理用异或处理。触底时把每一行数据放个定义的地址区域,最后与#0FFH判断做很妙。
              还有就是硬件处理的比较麻烦,开始不太清楚点阵的引脚排布,这里弄了好久,后来驱动那里也出现了好多问题,开始我用74HS373来驱动,没注意引脚排列,最后用了74HC573
他们功能一样,但是74HC573输入输出接在一边便于排线。
              开始没有规划好地址的用途。到最后出现了地址不够用的现象,所以良好的编程习惯很重要。  通过这个项目,真的时对自己思维的一次很大的挑战,程序1200多行,AT89S51装不下,改用AT89S52做。 通过这次项目我找到点成就感,也希望自己以后能经常有这种成就感,在电子领域站一席之地。
致      谢
在此论文撰写过程中,要特别感谢我的导师的指导与督促,同时感谢她的谅解与包容。没有何老师的帮助也就没有今天的这篇论文。求学历程是艰苦的,但又是快乐的。感谢我的班主任XXX老师,谢谢他在这三年中为我们全班所做的一切,他不求回报,无私奉献的精神很让我感动,再次向他表示由衷的感谢。在这三年的学期中结识的各位生活和学习上的挚友让我得到了人生最大的一笔财富。在此,也对他们表示衷心感谢。
    谢谢我的父母,没有他们辛勤的付出也就没有我的今天,在这一刻,将最崇高的敬意献给你们!
本文参考了大量的文献资料,在此,向各学术界的前辈们致敬!

单片机源程序如下:
  1. ;俄罗斯方块,采用移片选的方法.
  2. ;编译时间:              09年1月15            
  3. ;编译者:   谭华
  4. ;实现功能:  俄罗斯方块的旋转,左移,右移
  5. ;  消行 碰边  触底 产生随即数等 基本实现右移的基本功能
  6. ;==============初始化自定义========================================
  7. pianxuan               equ  p2
  8. shuchu               equ  p1
  9. bt0                equ                20h.0
  10. bt1                equ                20h.1
  11. bt2                equ                20h.2
  12. bt3                equ                20h.3
  13. bt4                equ                20h.4
  14. bt5                equ                20h.5
  15. bt6              equ              20h.6
  16. bt8              equ              21h.0
  17. bt9              equ              21h.1
  18. bt10              equ              21h.2
  19. bt11              equ              21h.3
  20. ;============================================
  21.               org               0000h
  22.               ajmp               start
  23.               org               0bh
  24.               ljmp               intt0
  25.               org               30h
  26. ;=============主程序初始化================================
  27. start:               mov               sp, #60h
  28.               mov               tmod, #21h
  29.               mov               th0, #0b1h
  30.               mov               tl0, #0e0h
  31.               mov              th1,              #25
  32.               mov              tl1,              #25
  33.               mov              r1,              #00
  34.               call              chushihua
  35.               call              chuzhi
  36.               setb               ea
  37.               setb               et0
  38.               setb               tr0
  39.               setb              tr1
  40.               clr               bt0
  41.               clr              bt1
  42.               clr              bt2
  43.               clr              bt3            
  44.               clr              bt4
  45.               clr              bt5
  46.               clr              bt8
  47.               clr              bt9
  48.               clr              bt10
  49.               clr              bt11
  50.               setb              bt6
  51.               mov              35h,              #0feh
  52.               mov              r2,              #00
  53.               mov              r4,              #00
  54. ;=====================================================
  55. ;              主程序
  56. ;======================================================
  57. main:            
  58.               jnb               bt0, main
  59.               clr               bt0
  60.               call              saomiao                            ;扫描按键
  61.               call              xianshi0              ;调用下移显示画面子程序
  62.               call              xianshi                            ;调用触边后静态图形显示的子程序
  63.               jb              bt10,              loop              ;判断是否触顶,=1,游戏结束,跳到满屏显示
  64.               call              chudi                            ;调用触底子程序
  65.               call              xiaohang              ;调用消行判断子程序
  66.               call              yanshi_40ms              ;调用延时40ms消抖子程序,40ms到,BT5置1
  67.               jnb              bt5,              xia0            
  68.               clr              bt5                                         
  69.               call              panduan                            ;调用按键判断处理子程序
  70. xia0:              jnb              bt9,              xia              ;图形快速下落标志位,=1快速下落
  71.               clr              bt9
  72.               call              xialuo                            ;调用图形下落子程序                           
  73.               ajmp              main
  74. xia:              call              yanshi_1s              ;延时1s子程序.1s到,BT1=1
  75.               jnb               bt1, main
  76.               clr              bt1
  77.               call              xialuo
  78.               ajmp              main            
  79. loop:              call              yanshi_500ms              ;调用延时500ms子程序,500ms到bt11=1
  80.               jnb               bt11, main
  81.               clr              bt11
  82.               call              manping                            ;调用满屏全亮子程序
  83.               ajmp              main            
  84.                            

  85. ;=====================================================
  86. ;              按键扫描
  87. ;=====================================================
  88. saomiao:
  89.               jb              p3.2,              qq0
  90.               setb              bt2
  91.               ajmp              qq
  92. qq0:              jb              p3.1,              qq1
  93.               setb              bt3
  94.               ajmp              qq
  95. qq1:              jb              p3.0,              qq2
  96.               setb              bt4
  97.               ajmp              qq
  98. qq2:              jb              p3.3,              qq4
  99.               setb              bt8            
  100.               ajmp              qq
  101. qq4:              setb              bt6
  102.               clr              bt2
  103.               clr              bt3
  104.               clr              bt4
  105.               clr              bt8
  106. qq:              ret
  107. ;=====================================================
  108. ;              图形下移子程序
  109. ;=====================================================
  110. xialuo:            
  111.               mov              a,              35h
  112.               rl              a
  113.               mov              35h,              a
  114.               ret

  115. ;============================================
  116. ;              判断子程序
  117. ;=====================================================            
  118. panduan:
  119.               jnb              bt2,              ww0
  120.               clr              bt2
  121.               jnb              bt6,              ww0
  122.               clr              bt6
  123.               call              youyi
  124.               ajmp              ww
  125. ww0:              jnb              bt3,              ww1
  126.               clr              bt3
  127.               jnb              bt6,              ww1
  128.               clr              bt6
  129.               call              zuoyi
  130.               ajmp              ww
  131. ww1:              jnb              bt4,              ww2
  132.               clr              bt4
  133.               jnb              bt6,              ww2
  134.               clr              bt6
  135.               call              zhuan
  136.               ajmp              ww
  137. ww2:              jnb              bt8,              ww
  138.               clr              bt8
  139.               jnb              bt6,              ww
  140.               clr              bt6
  141.               call              kuaixia
  142. ww:              ret


  143. ;============================================================
  144. ;              快速下落子程序
  145. ;=============================================================
  146. kuaixia:              setb              bt9                           
  147.                             ret
  148. ;============================================================
  149. ;              满屏子程序
  150. ;============================================================
  151. manping:              mov              41h,              #0ffh            
  152.                             mov              42h,              #0ffh
  153.                             mov              43h,              #0ffh
  154.                             mov              44h,              #0ffh
  155.                             mov              45h,              #0ffh            
  156.                             mov              46h,              #0ffh
  157.                             mov              47h,              #0ffh
  158.                             mov              48h,              #0ffh
  159.                             ret
  160. ;============================================================
  161. ;              清屏子程序
  162. ;============================================================
  163. qingping:              mov              41h,              #00h            
  164.                             mov              42h,              #00h
  165.                             mov              43h,              #00h
  166.                             mov              44h,              #00h
  167.                             mov              45h,              #00h            
  168.                             mov              46h,              #00h
  169.                             mov              47h,              #00h
  170.                             mov              48h,              #00h
  171.                             ret
  172. ;============================================
  173. ;              下移显示
  174. ;=====================================================
  175. xianshi0:              mov              a,              35h
  176.                             mov              p1,              31h
  177.                             mov              p2,              a
  178.                             call              delay
  179.                             rl              a
  180.                             mov              p1,              #00
  181.                             mov              p1,              32h
  182.                             mov              p2,              a
  183.                             call              delay
  184.                             rl              a
  185.                             mov              p1,              #00
  186.                             mov              p1,              33h
  187.                             mov              p2,              a
  188.                             call              delay
  189.                             mov              p1,              #00
  190.                             ret
  191. ;=====================================================
  192. ;                            图形右移子程序
  193. ;=====================================================                           
  194. zuoyi:              
  195.               mov               a, 31h
  196.               jnb               acc.0, dd1
  197.               ajmp               dd
  198. dd1:               mov               a, 32h
  199.               jnb               acc.0, dd2
  200.               ajmp               dd
  201. dd2:               mov               a, 33h
  202.               jnb               acc.0, dd3
  203.               ajmp               dd
  204. dd3:               mov              a,              35h
  205.               cjne              a,#0feh,sa0
  206.               call              sad0
  207.               ajmp              dd
  208. sa0:              mov              a,              35h
  209.               cjne              a,#0fdh,sa1
  210.               call              sad1
  211.               ajmp              dd
  212. sa1:              mov              a,              35h
  213.               cjne              a,#0fbh,sa2
  214.               call              sad2
  215.               ajmp              dd
  216. sa2:              mov              a,              35h
  217.               cjne              a,#0f7h,sa3
  218.               call              sad3
  219.               ajmp              dd
  220. sa3:              mov              a,              35h
  221.               cjne              a,#0efh,sa4
  222.               call              sad4
  223.               ajmp              dd
  224. sa4:              mov              a,              35h
  225.               cjne              a,#0bfh,dd
  226.               call              sad5
  227.               ajmp              dd
  228. dd:              ret

  229. sad0:              mov               a, 33h
  230.               rr               a
  231.               mov              39h,#00
  232.               mov              39h,              a
  233.               anl              a,43h
  234.               cjne              a,#00,dd4
  235.               mov               33h, 39h
  236.               mov               a, 32h
  237.               rr               a
  238.               mov              39h,#00
  239.               mov              39h,              a
  240.               anl              a,42h
  241.               cjne              a,#00,dd4
  242.               mov               32h, 39h
  243.               mov               a, 31h
  244.               rr               a
  245.               mov              39h,#00
  246.               mov              39h,              a
  247.               anl              a,41h
  248.               cjne              a,#00,dd4
  249.               mov               31h, 39h
  250.               dec              51h
  251. dd4:               ret
  252. sad1:              mov               a, 33h
  253.               rr              a
  254.               mov              39h,#00
  255.               mov              39h,              a
  256.               anl              a,44h
  257.               cjne              a,#00,dd5
  258.               mov               33h, 39h
  259.               mov               a, 32h
  260.               rr               a
  261.               mov              39h,#00
  262.               mov              39h,              a
  263.               anl              a,43h
  264.               cjne              a,#00,dd5
  265.               mov               32h, 39h
  266.               mov               a, 31h
  267.               rr               a
  268.               mov              39h,#00
  269.               mov              39h,              a
  270.               anl              a,42h
  271.               cjne              a,#00,dd5
  272.               mov               31h, 39h
  273.               dec              51h
  274. dd5:               ret
  275. sad2:              mov               a, 33h
  276.               rr               a
  277.               mov              39h,#00
  278.               mov              39h,              a
  279.               anl              a,45h
  280.               cjne              a,#00,dd6
  281.               mov               33h, 39h
  282.               mov               a, 32h
  283.               rr               a
  284.               mov              39h,#00
  285.               mov              39h,              a
  286.               anl              a,44h
  287.               cjne              a,#00,dd6
  288.               mov               32h, 39h
  289.               mov               a, 31h
  290.               rr               a
  291.               mov              39h,#00
  292.               mov              39h,              a
  293.               anl              a,43h
  294.               cjne              a,#00,dd6
  295.               mov               31h, 39h
  296.               dec              51h
  297. dd6:               ret
  298. sad3:              mov               a, 33h
  299.               rr               a
  300.               mov              39h,#00
  301.               mov              39h,              a
  302.               anl              a,46h
  303.               cjne              a,#00,dd7
  304.               mov               33h, 39h
  305.               mov               a, 32h
  306.               rr               a
  307.               mov              39h,#00
  308.               mov              39h,              a
  309.               anl              a,45h
  310.               cjne              a,#00,dd7
  311.               mov               32h, 39h
  312.               mov               a, 31h
  313.               rr               a
  314.               mov              39h,#00
  315.               mov              39h,              a
  316.               anl              a,44h
  317.               cjne              a,#00,dd7
  318.               mov               31h, 39h
  319.               dec              51h
  320. dd7:               ret
  321. sad4:              mov               a, 33h
  322.               rr               a
  323.               mov              39h,#00
  324.               mov              39h,              a
  325.               anl              a,47h
  326.               cjne              a,#00,dd8
  327.               mov               33h, 39h
  328.               mov               a, 32h
  329.               rr               a
  330.               mov              39h,#00
  331.               mov              39h,              a
  332.               anl              a,46h
  333.               cjne              a,#00,dd8
  334.               mov               32h, 39h
  335.               mov               a, 31h
  336.               rr               a
  337.               mov              39h,#00
  338.               mov              39h,              a
  339.               anl              a,45h
  340.               cjne              a,#00,dd8
  341.               mov               31h, 39h
  342.               dec              51h
  343. dd8:               ret
  344. sad5:              mov               a, 33h
  345.               rr               a
  346.               mov              39h,#00
  347.               mov              39h,              a
  348.               anl              a,48h
  349.               cjne              a,#00,dd9
  350.               mov               33h, 39h
  351.               mov               a, 32h
  352.               rr               a
  353.               mov              39h,#00
  354.               mov              39h,              a
  355.               anl              a,47h
  356.               cjne              a,#00,dd9
  357.               mov               32h, 39h
  358.               mov               a, 31h
  359.               rr               a
  360.               mov              39h,#00
  361.               mov              39h,              a
  362.               anl              a,46h
  363.               cjne              a,#00,dd9
  364.               mov               31h, 39h
  365.               dec              51h
  366. dd9:               ret

  367. ;===============图形左移子程序======================================
  368. ;通过图形移动一位,与静止图形相与,为零则移动,否则原地不动                           
  369. ;
  370. ;=====================================================
  371. youyi:               mov               a, 31h
  372.               jnb              acc.7, cc0
  373.               ajmp               cc20
  374. cc0:               mov               a, 32h
  375.               jnb               acc.7, cc1
  376.               ajmp              cc20
  377. cc1:               mov               a, 33h
  378.               jnb               acc.7, cc
  379.               ajmp               cc20
  380. cc:               mov              a,              35h
  381.               cjne              a,#0feh,zz0
  382.               call              scd0
  383.               ajmp              cc20
  384. zz0:              mov              a,              35h
  385.               cjne              a,#0fdh,zz1
  386.               call              scd1
  387.               ajmp              cc20
  388. zz1:              mov              a,              35h
  389.               cjne              a,#0fbh,zz2
  390.               call              scd2
  391.               ajmp              cc20
  392. zz2:              mov              a,              35h
  393.               cjne              a,#0f7h,zz3
  394.               call              scd3
  395.               ajmp              cc20
  396. zz3:              mov              a,              35h
  397.               cjne              a,#0efh,zz4
  398.               call              scd4
  399.               ajmp              cc20
  400. zz4:              mov              a,              35h
  401.               cjne              a,#0bfh,cc20
  402.               call              scd5
  403.               ajmp              cc20
  404. cc20:              ret

  405. scd0:              mov               a, 33h
  406.               rl               a
  407.               mov              39h,#00
  408.               mov              39h,              a
  409.               anl              a,43h
  410.               cjne              a,#00,cc2
  411.               mov               33h, 39h
  412.               mov               a, 32h
  413.               rl               a
  414.               mov              39h,#00
  415.               mov              39h,              a
  416.               anl              a,42h
  417.               cjne              a,#00,cc2
  418.               mov               32h, 39h
  419.               mov               a, 31h
  420.               rl               a
  421.               mov              39h,#00
  422.               mov              39h,              a
  423.               anl              a,41h
  424.               cjne              a,#00,cc2
  425.               mov               31h, 39h
  426.               inc              51h
  427. cc2:               ret
  428. scd1:              mov               a, 33h
  429.               rl               a
  430.               mov              39h,#00
  431.               mov              39h,              a
  432.               anl              a,44h
  433.               cjne              a,#00,cc3
  434.               mov               33h, 39h
  435.               mov               a, 32h
  436.               rl               a
  437.               mov              39h,#00
  438.               mov              39h,              a
  439.               anl              a,43h
  440.               cjne              a,#00,cc3
  441.               mov               32h, 39h
  442.               mov               a, 31h
  443.               rl               a
  444.               mov              39h,#00
  445.               mov              39h,              a
  446.               anl              a,42h
  447.               cjne              a,#00,cc3
  448.               mov               31h, 39h
  449.               inc              51h
  450. cc3:               ret
  451. scd2:              mov               a, 33h
  452.               rl               a
  453.               mov              39h,#00
  454.               mov              39h,              a
  455.               anl              a,45h
  456.               cjne              a,#00,cc4
  457.               mov               33h, 39h
  458.               mov               a, 32h
  459.               rl               a
  460.               mov              39h,#00
  461.               mov              39h,              a
  462.               anl              a,44h
  463.               cjne              a,#00,cc4
  464.               mov               32h, 39h
  465.               mov               a, 31h
  466.               rl               a
  467.               mov              39h,#00
  468.               mov              39h,              a
  469.               anl              a,43h
  470.               cjne              a,#00,cc4
  471.               mov               31h, 39h
  472.               inc              51h
  473. cc4:               ret
  474. scd3:              mov               a, 33h
  475.               rl               a
  476.               mov              39h,#00
  477.               mov              39h,              a
  478.               anl              a,46h
  479.               cjne              a,#00,cc5
  480.               mov               33h, 39h
  481.               mov               a, 32h
  482.               rl               a
  483.               mov              39h,#00
  484.               mov              39h,              a
  485.               anl              a,45h
  486.               cjne              a,#00,cc5
  487.               mov               32h, 39h
  488.               mov               a, 31h
  489.               rl               a
  490.               mov              39h,#00
  491.               mov              39h,              a
  492.               anl              a,44h
  493.               cjne              a,#00,cc5
  494.               mov               31h, 39h
  495.               inc              51h
  496. cc5:               ret
  497. scd4:              mov               a, 33h
  498.               rl               a
  499.               mov              39h,#00
  500.               mov              39h,              a
  501.               anl              a,47h
  502.               cjne              a,#00,cc6
  503.               mov               33h, 39h
  504.               mov               a, 32h
  505.               rl               a
  506.               mov              39h,#00
  507.               mov              39h,              a
  508.               anl              a,46h
  509.               cjne              a,#00,cc6
  510.               mov               32h, 39h
  511.               mov               a, 31h
  512.               rl               a
  513.               mov              39h,#00
  514.               mov              39h,              a
  515.               anl              a,45h
  516.               cjne              a,#00,cc6
  517.               mov               31h, 39h
  518.               inc              51h
  519. cc6:               ret
  520. scd5:              mov               a, 33h
  521.               rl               a
  522.               mov              39h,#00
  523.               mov              39h,              a
  524.               anl              a,48h
  525.               cjne              a,#00,cc7
  526.               mov               33h, 39h
  527.               mov               a, 32h
  528.               rl               a
  529.               mov              39h,#00
  530.               mov              39h,              a
  531.               anl              a,47h
  532.               cjne              a,#00,cc7
  533.               mov               32h, 39h
  534.               mov               a, 31h
  535.               rl               a
  536.               mov              39h,#00
  537.               mov              39h,              a
  538.               anl              a,46h
  539.               cjne              a,#00,cc7
  540.               mov               31h, 39h
  541.               inc              51h
  542. cc7:               ret
  543. ;======================================================
  544. ;              图形旋转子程序
  545. ;======================================================
  546. zhuan:              cjne              r1,#0,              bu0
  547.               call              zhuan0
  548.               ajmp              bu
  549. bu0:              cjne              r1,#1,              bu1
  550.               call              zhuan1
  551.               ajmp              bu
  552. bu1:              cjne              r1,#2,              bu2
  553.               call              zhuan2
  554.               ajmp              bu
  555. bu2:              cjne              r1,#3,              bu3
  556.               call              zhuan3
  557.               ajmp              bu
  558. bu3:              cjne              r1,#4,              bu
  559.               call              zhuan4
  560. bu:              ret            
  561. zhuan0:              inc              r2
  562.               cjne              r2,#1,              gg0
  563.               mov              31h,              #10h
  564.               mov              32h,              #18h
  565.               mov              33h,              #10h
  566.               call              yizhou
  567.               ajmp              gg
  568. gg0:              cjne              r2,#2,              gg1
  569.               mov              31h,              #38h
  570.               mov              32h,              #10h
  571.               mov              33h,              #00h
  572.               call              yizhou
  573.               ajmp              gg
  574. gg1:              cjne              r2,#3,              gg2
  575.               mov              31h,              #10h
  576.               mov              32h,              #30h
  577.               mov              33h,              #10h
  578.               call              yizhou
  579.               ajmp              gg            
  580. gg2:              cjne              r2,#4,              gg
  581.               mov              r2,              #00
  582.               mov              31h,              #10h
  583.               mov              32h,              #38h
  584.               mov              33h,              #00h
  585.               call              yizhou
  586. gg:              ret
  587. zhuan1:              inc              r2
  588.               cjne              r2,#1,              ggg0
  589.               mov              31h,              #08h
  590.               mov              32h,              #18h
  591.               mov              33h,              #10h
  592.               call              yizhou
  593.               ajmp              ggg
  594. ggg0:              cjne              r2,#2,              ggg
  595.               mov              31h,              #30h
  596.               mov              32h,              #18h
  597.               mov              33h,              #00h
  598.               mov              r2,              #00
  599.               call              yizhou
  600. ggg:              ret

  601. zhuan2:              inc              r2
  602.               cjne              r2,#1,              hh0
  603.               mov              31h,              #18h
  604.               mov              32h,              #30h
  605.               mov              33h,              #00h
  606.               call              yizhou
  607.               ajmp              hh
  608. hh0:              cjne              r2,#2,              hh
  609.               mov              31h,              #10h
  610.               mov              32h,              #18h
  611.               mov              33h,              #08h
  612.               mov              r2,              #00
  613.               call              yizhou
  614. hh:              ret
  615. zhuan3:              inc              r2
  616.               cjne              r2,#1,              hh1
  617.               mov              31h,              #20h
  618.               mov              32h,              #38h
  619.               mov              33h,              #00h
  620.               call              yizhou
  621.               ajmp              hh4
  622. hh1:              cjne              r2,#2,              hh2
  623.               mov              31h,              #18h
  624.               mov              32h,              #10h
  625.               mov              33h,              #10h
  626.               call              yizhou
  627.               ajmp              hh4
  628. hh2:              cjne              r2,#3,              hh3
  629.               mov              31h,              #38h
  630.               mov              32h,              #08h
  631.               mov              33h,              #00h
  632.               call              yizhou
  633.               ajmp              hh4            
  634. hh3:              cjne              r2,#4,              hh4
  635.               mov              r2,              #00
  636.               mov              31h,              #10h
  637.               mov              32h,              #10h
  638.               mov              33h,              #30h
  639.               call              yizhou
  640. hh4:              ret
  641. zhuan4:              inc              r2
  642.               cjne              r2,#1,              hh5
  643.               mov              31h,              #10h
  644.               mov              32h,              #10h
  645.               mov              33h,              #18h
  646.               call              yizhou
  647.               ajmp              hh8
  648. hh5:              cjne              r2,#2,              hh6
  649.               mov              31h,              #38h
  650.               mov              32h,              #20h
  651.               mov              33h,              #00h
  652.               call              yizhou
  653.               ajmp              hh8
  654. hh6:              cjne              r2,#3,              hh7
  655.               mov              31h,              #18h
  656.               mov              32h,              #08h
  657.               mov              33h,              #08h
  658.               call              yizhou
  659.               ajmp              hh8            
  660. hh7:              cjne              r2,#4,              hh8
  661.               mov              r2,              #00
  662.               mov              31h,              #08h
  663.               mov              32h,              #38h
  664.               mov              33h,              #00h
  665.               call              yizhou
  666. hh8:              ret
  667. ;====================================================
  668. yizhou:
  669.               mov              a,              51h
  670.               cjne              a,#5,              tt7
  671.               jmp              tt
  672. tt7:              cjne              a,#6,              tt0
  673.               call              yyizhou
  674.               jmp              tt
  675. tt0:              cjne              a,#7,              tt1
  676.               call              yyizhou
  677.               call              yyizhou
  678.               call              zhuanpan0
  679.               jmp              tt
  680. tt1:              cjne              a,#8,              tt2
  681.               call              yyizhou
  682.               call              yyizhou
  683.               call              yyizhou
  684.               call              zhuanpan0
  685.               jmp              tt
  686. tt2:              cjne              a,#9,              tt3
  687.               call              yyizhou
  688.               call              yyizhou
  689.               call              yyizhou
  690.               call              yyizhou
  691.               call              zhuanpan0
  692.               jmp              tt
  693. tt3:              cjne              a,#4,              tt4
  694.               call              zyizhou
  695.               jmp              tt
  696. tt4:              cjne              a,#3,              tt5
  697.               call              zyizhou
  698.               call              zyizhou
  699.               jmp              tt
  700. tt5:              cjne              a,#2,              tt6
  701.               call              zyizhou
  702.               call              zyizhou
  703.               call              zyizhou
  704.               call              zhuanpan1            
  705.               jmp              tt
  706. tt6:              cjne              a,#1,              tt
  707.               call              zyizhou
  708.               call              zyizhou
  709.               call              zyizhou
  710.               call              zyizhou
  711.               call              zhuanpan1            
  712. tt:              ret
  713. ;=========触边旋转判断====================
  714. zhuanpan0:
  715.               mov              a,              31h
  716.               jnb              acc.0,              hui0            
  717.               call              zyizhou
  718.               ajmp              hui
  719. hui0:              mov              a,              32h
  720.               jnb              acc.0,              hui1
  721.               call              zyizhou
  722.               ajmp              hui
  723. hui1:              mov              a,              33h
  724.               jnb              acc.0,              hui
  725.               call              zyizhou
  726. hui:              ret
  727. ;========触边旋转判断====================
  728. zhuanpan1:
  729.               mov              a,              31h
  730.               jnb              acc.7,              hui3            
  731.               call              yyizhou
  732.               ajmp              hui2
  733. hui3:              mov              a,              32h
  734.               jnb              acc.7,              hui4
  735.               call              yyizhou
  736.               ajmp              hui2
  737. hui4:              mov              a,              33h
  738.               jnb              acc.7,              hui2
  739.               call              yyizhou
  740. hui2:              ret
  741. ;===========X轴右移一位=================
  742. yyizhou:
  743.               mov              a,              31h
  744.               rl              a
  745.               mov              31h,              a
  746.               mov              a,              32h
  747.               rl              a
  748.               mov              32h,              a
  749.               mov              a,              33h
  750.               rl              a
  751.               mov              33h,              a
  752.               ret
  753. ;=========X轴左移一位=================
  754. zyizhou:
  755.               mov              a,              31h
  756.               rr              a
  757.               mov              31h,              a
  758.               mov              a,              32h
  759.               rr              a
  760.               mov              32h,              a
  761.               mov              a,              33h
  762.               rr              a
  763.               mov              33h,              a
  764.               ret
  765. ;==============显示子程序==========================
  766. xianshi:              mov              p1,              41h
  767.                             mov              p2,              #0feh
  768.                             call              delay
  769.                             mov              p1,              #00
  770.                             mov              p1,              42h
  771.                             mov              p2,              #0fdh
  772.                             call              delay
  773.                             mov              p1,              #00
  774.                             mov              p1,              43h
  775.                             mov              p2,              #0fbh
  776.                             call              delay
  777.                             mov              p1,              #00
  778.                             mov              p1,              44h
  779.                             mov              p2,              #0f7h
  780.                             call              delay
  781.                             mov              p1,              #00
  782.                             mov              p1,              45h
  783.                             mov              p2,              #0efh
  784.                             call              delay
  785.                             mov              p1,              #00
  786.                             mov              p1,              46h
  787.                             mov              p2,              #0dfh
  788.                             call              delay
  789.                             mov              p1,              #00
  790.                             mov              p1,              47h
  791.                             mov              p2,              #0bfh
  792.                             call              delay
  793.                             mov              p1,              #00
  794.                             mov              p1,              48h
  795.                             mov              p2,              #7fh
  796.                             call              delay
  797.                             mov              p1,              #00
  798.                             ret
  799. ;===========消行显示子程序==================
  800. xiaohang:              mov              a,              48h
  801.                             cjne              a,#0ffh,zh0
  802.                             call              tiaozhen0
  803. zh0:                            mov              a,              47h
  804.                             cjne              a,#0ffh,zh1
  805.                             call              tiaozhen1            
  806. zh1:                            mov              a,              46h
  807.                             cjne              a,#0ffh,zh2
  808.                             call              tiaozhen2
  809. zh2:                            mov              a,              45h
  810.                             cjne              a,#0ffh,zh3
  811.                             call              tiaozhen3
  812. zh3:                            mov              a,              44h
  813.                             cjne              a,#0ffh,zh4
  814.                             call              tiaozhen4                           
  815. zh4:                            mov              a,              43h
  816.                             cjne              a,#0ffh,zh5
  817.                             call              tiaozhen5
  818. zh5:                            mov              a,              42h
  819.                             cjne              a,#0ffh,zh6
  820.                             call              tiaozhen6
  821. zh6:                            ret
  822. tiaozhen0:              mov              48h,              #00
  823.                             mov              49h,              48h
  824.                             mov              48h,              47h
  825.                             mov              47h,              46h
  826.                             mov              46h,              45h
  827.                             mov              45h,              44h
  828.                             mov              44h,              43h
  829.                             mov              43h,              42h
  830.                             mov              42h,              41h
  831.                             mov              41h,              49h                           
  832.                             ret
  833. tiaozhen1:              mov              47h,              #00
  834.                             mov              49h,              47h
  835.                             mov              47h,              46h
  836.                             mov              46h,              45h
  837.                             mov              45h,              44h
  838.                             mov              44h,              43h
  839.                             mov              43h,              42h
  840.                             mov              42h,              41h
  841.                             mov              41h,              49h                           
  842.                             ret
  843. tiaozhen2:              mov              46h,              #00
  844.                             mov              49h,              46h
  845.                             mov              46h,              45h
  846.                             mov              45h,              44h
  847.                             mov              44h,              43h
  848.                             mov              43h,              42h
  849.                             mov              42h,              41h
  850.                             mov              41h,              49h                           
  851.                             ret
  852. tiaozhen3:              mov              45h,              #00
  853.                             mov              49h,              45h
  854.                             mov              45h,              44h
  855.                             mov              44h,              43h
  856.                             mov              43h,              42h
  857.                             mov              42h,              41h
  858.                             mov              41h,              49h                           
  859.                             ret
  860. tiaozhen4:              mov              44h,              #00
  861.                             mov              49h,              44h
  862.                             mov              44h,              43h
  863.                             mov              43h,              42h
  864.                             mov              42h,              41h
  865.                             mov              41h,              49h                           
  866.                             ret
  867. tiaozhen5:              mov              43h,              #00
  868.                             mov              49h,              43h
  869.                             mov              43h,              42h
  870.                             mov              42h,              41h
  871.                             mov              41h,              49h                           
  872.                             ret
  873. tiaozhen6:              mov              42h,              #00
  874.                             mov              49h,              42h
  875.                             mov              42h,              41h
  876.                             mov              41h,              49h                           
  877.                             ret
  878. ;=================================================
  879. ;                            延时1秒子程序
  880. ;==================================================
  881. yanshi_1s:              
  882.                             inc               r3
  883.                             mov              a,              r3
  884.                             cjne               a,4dh, xx
  885.                             mov               r3,#00
  886.                             setb               bt1
  887. xx:                             ret
  888. yanshi_500ms:              
  889.                             inc               r3
  890.                             mov              a,              r3
  891.                             cjne               a,#25, xx11
  892.                             mov               r3,#00
  893.                             setb               bt11
  894. xx11:                             ret
  895. ;=================================================
  896. ;                            延时40m秒子程序
  897. ;==================================================
  898. yanshi_40ms:
  899.                             inc               r4
  900.                             cjne               r4,#3, ee
  901.                             mov               r4, #00
  902.                             setb               bt5
  903. ee:                             ret
  904. suiji:                            mov              a,              tl1
  905.                             mov              b,              #5
  906.                             div              ab
  907.                             mov              r1,              b
  908.                             ret
  909. ;====================================================
  910. ;              触底子程序
  911. ;======================================================
  912. chudi:                            mov              a,              33h
  913.                             cjne              a,#00,              bbb0
  914.                             mov              a,              32h
  915.                             cjne              a,#00h,              bbb1
  916.                             ljmp              bbb
  917. bbb0:                            ljmp              bbb3
  918. bbb1:                            mov              a,              35h
  919.                             cjne              a,#0bfh,nn7
  920.                             ljmp              nn6
  921. nn7:                            mov              a,              35h
  922.                             cjne              a,#0feh,nn8
  923.                             ljmp              kk0
  924. nn8:                            mov              a,              35h
  925.                             cjne              a,#0fdh,nn9
  926.                             ljmp              kk1
  927. nn9:                            mov              a,              35h
  928.                             cjne              a,#0fbh,nn10
  929.                             ljmp              kk2
  930. nn10:                            mov              a,              35h
  931.                             cjne              a,#0f7h,nn11
  932.                             ljmp              kk3
  933. nn11:                            mov              a,              35h
  934.                             cjne              a,#0efh,nn12
  935.                             ljmp              kk4
  936. nn12:                            mov              a,              35h
  937.                             cjne              a,#0dfh,kk5
  938.                             ljmp              kk5            
  939. kk0:                            mov              a,              32h
  940.                             anl              a,              43h
  941.                             cjne              a,#00h,              nn0
  942.                             ljmp              bbb
  943. kk1:                            mov              a,              32h
  944.                             anl              a,              44h
  945.                             cjne              a,#00h,              nn1
  946.                             ljmp              bbb
  947. kk2:                            mov              a,              32h
  948.                             anl              a,              45h
  949.                             cjne              a,#00h,              nn2
  950.                             ljmp              bbb
  951. kk3:                            mov              a,              32h
  952.                             anl              a,              46h
  953.                             cjne              a,#00h,              nn3
  954.                             ljmp              bbb
  955. kk4:                            mov              a,              32h
  956.                             anl              a,              47h
  957.                             cjne              a,#00h,              nn4
  958.                             ljmp              bbb
  959. kk5:                            mov              a,              32h
  960.                             anl              a,              48h
  961.                             cjne              a,#00h,              nn5
  962.                             ljmp              bbb

  963. nn0:                            mov              35h,              #0feh
  964.                             mov              a,              32h
  965.                             orl              a,              42h
  966.                             mov              42h,              a
  967.                             mov              a,              31h
  968.                             orl              a,              41h
  969.                             mov              41h,              a
  970.                             setb              bt10
  971.                             call              suiji
  972.                             call              chuzhi
  973.                             ljmp              bbb
  974. nn1:                            mov              35h,              #0feh
  975.                             mov              a,              32h
  976.                             orl              a,              43h
  977.                             mov              43h,              a
  978.                             mov              a,              31h
  979.                             orl              a,              42h
  980.                             mov              42h,              a
  981.                             call              suiji
  982.                             call              chuzhi
  983.                             ljmp              bbb
  984. nn2:                            mov              35h,              #0feh
  985.                             mov              a,              32h
  986.                             orl              a,              44h
  987.                             mov              44h,              a
  988.                             mov              a,              31h
  989.                             orl              a,              43h
  990.                             mov              43h,              a
  991.                             call              suiji
  992.                             call              chuzhi
  993.                             ljmp              bbb
  994. nn3:                            mov              35h,              #0feh
  995.                             mov              a,              32h
  996.                             orl              a,              45h
  997.                             mov              45h,              a
  998.                             mov              a,              31h
  999.                             orl              a,              44h
  1000.                             mov              44h,              a
  1001.                             call              suiji
  1002.                             call              chuzhi
  1003.                             ljmp              bbb
  1004. nn4:                            mov              35h,              #0feh
  1005.                             mov              a,              32h
  1006.                             orl              a,              46h
  1007.                             mov              46h,              a
  1008.                             mov              a,              31h
  1009.                             orl              a,              45h
  1010.                             mov              45h,              a
  1011.                             call              suiji
  1012.                             call              chuzhi
  1013.                             ljmp              bbb
  1014. nn5:                            mov              35h,              #0feh
  1015.                             mov              a,              32h
  1016.                             orl              a,              47h
  1017.                             mov              47h,              a
  1018.                             mov              a,              31h
  1019.                             orl              a,              46h
  1020.                             mov              46h,              a
  1021.                             call              suiji
  1022.                             call              chuzhi
  1023.                             ljmp              bbb
  1024. nn6:                            mov              35h,              #0feh
  1025.                             mov              a,              32h
  1026.                             orl              a,              48h
  1027.                             mov              48h,              a
  1028.                             mov              a,              31h
  1029.                             orl              a,              47h
  1030.                             mov              47h,              a
  1031.                             call              suiji
  1032.                             call              chuzhi
  1033.                             ljmp              bbb

  1034. bbb3:                            mov              a,              35h
  1035.                             cjne              a,#0dfh,bb6
  1036.                             ljmp              bb5
  1037. bb6:                            mov              a,              35h
  1038.                             cjne              a,#0feh,bb7
  1039.                             ljmp              jj0
  1040. bb7:                            mov              a,              35h
  1041.                             cjne              a,#0fdh,bb8
  1042.                             ljmp              jj1
  1043. bb8:                            mov              a,              35h
  1044.                             cjne              a,#0fbh,bb9
  1045.                             ljmp              jj2
  1046. bb9:                            mov              a,              35h
  1047.                             cjne              a,#0f7h,bb10
  1048.                             ljmp              jj3
  1049. bb10:                            mov              a,              35h
  1050.                             cjne              a,#0efh,bbb9
  1051.                             ljmp              jj4
  1052. bbb9:                            ljmp              bbb                                         
  1053. jj0:                            mov              a,              33h
  1054.                             anl              a,              44h
  1055.                             cjne              a,#00h,              bb0
  1056.                             mov              a,              32h
  1057.                             anl              a,              43h
  1058.                             cjne              a,#00h,              bb0
  1059.                             ljmp              bbb
  1060. jj1:                            mov              a,              33h
  1061.                             anl              a,              45h
  1062.                             cjne              a,#00h,              bb1
  1063.                             mov              a,              32h
  1064.                             anl              a,              44h
  1065.                             cjne              a,#00h,              bb1
  1066.                             ljmp              bbb
  1067. jj2:                            mov              a,              33h
  1068.                             anl              a,              46h
  1069.                             cjne              a,#00h,              bb2
  1070.                             mov              a,              32h
  1071.                             anl              a,              45h
  1072.                             cjne              a,#00h,              bb2
  1073.                             ljmp              bbb            
  1074. jj3:                            mov              a,              33h
  1075.                             anl              a,              47h
  1076.                             cjne              a,#00h,              bb3
  1077.                             mov              a,              32h
  1078.                             anl              a,              46h
  1079.                             cjne              a,#00h,              bb3
  1080.                             ljmp              bbb
  1081. jj4:                            mov              a,              33h
  1082.                             anl              a,              48h
  1083.                             cjne              a,#00h,              bb11
  1084.                             mov              a,              32h
  1085.                             anl              a,              47h
  1086.                             cjne              a,#00h,              bb4
  1087.                             ljmp              bbb
  1088. bb11:                            ljmp              bb4
  1089. bb0:                            mov              35h,              #0feh
  1090.                             mov              a,              33h
  1091.                             orl              a,              43h
  1092.                             mov              43h,              a
  1093.                             mov              a,              32h
  1094.                             orl              a,              42h
  1095.                             mov              42h,              a
  1096.                             mov              a,              31h
  1097.                             orl              a,              41h
  1098.                             mov              41h,              a
  1099.                             setb              bt10
  1100.                             call              suiji
  1101.                             call              chuzhi
  1102.                             ljmp              bbb            
  1103. bb1:                            mov              35h,              #0feh
  1104.                             mov              a,              33h
  1105.                             orl              a,              44h
  1106.                             mov              44h,              a
  1107.                             mov              a,              32h
  1108.                             orl              a,              43h
  1109.                             mov              43h,              a
  1110.                             mov              a,              31h
  1111.                             orl              a,              42h
  1112.                             mov              42h,              a
  1113.                             call              suiji
  1114.                             call              chuzhi
  1115.                             ljmp              bbb            
  1116. bb2:                            mov              35h,              #0feh
  1117.                             mov              a,              33h
  1118.                             orl              a,              45h
  1119.                             mov              45h,              a
  1120.                             mov              a,              32h
  1121.                             orl              a,              44h
  1122.                             mov              44h,              a
  1123.                             mov              a,              31h
  1124.                             orl              a,              43h
  1125.                             mov              43h,              a
  1126.                             call              suiji
  1127.                             call              chuzhi
  1128.                             ljmp              bbb
  1129. bb3:                            mov              35h,              #0feh
  1130.                             mov              a,              33h
  1131.                             orl              a,              46h
  1132. ……………………

  1133. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
单片机俄罗斯方块游戏设计大全(设计思路大全_程序大全).doc (629.5 KB, 下载次数: 22)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表