• 基于AT89S52的俄罗斯方块游戏设计与实现


    目 录
    1 绪 论 1
    1.1 课题背景 1
    1.2 电子游戏及其分类 1
    1.3 电子游戏发展现状 2
    1.3.1 电子游戏国外发展现状 2
    1.3.2 电子游戏国内发展现状 3
    2 整体设计方案 5
    2.1 系统的核心部分单片机 5
    2.1.1 单片机的选择 5
    2.1.2 AT89S52引脚功能描述 7
    2.1.3 晶振特性 9
    2.2 液晶显示模块 10
    2.2.1 液晶显示控制驱动器HD61202的特点 10
    2.2.2 液晶显示控制驱动器HD61202的引脚功能 10
    2.2.3 液晶显示控制驱动器HD61202的指令系统 11
    2.2.4 HD61202的软件设计 12
    2.2.5 JM12864J的电路结构特点 15
    2.2.6 JM12864J的应用 16
    2.2.7 键盘电路 17
    3 系统程序的设计 18
    3.1 俄罗斯方块驱动流程图 18
    3.2 俄罗斯方块所有绘图工作流程图 19
    3.3 俄罗斯方块中按下键的流程图 20
    3.4 俄罗斯方块所有绘图工作流程图 21
    4 系统仿真 22
    4.1 Proteus软件介绍 22
    4.2 Keil软件介绍 22
    4.3 俄罗斯方块系统PROTUES仿真 24
    5 实物的制作与调试 26
    5.1 电路的焊接 26
    5.2 系统性能测试与功能说明 27
    结 论 28
    参考文献 29
    附录1:C语言程序 30
    附录2:电路原理图 59
    致 谢 60

    2整体设计方案
    2.1系统的核心部分单片机
    2.1.1单片机的选择
    单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
    通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
    20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。
    目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
    单片机经过3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:
    1.多功能
    单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器—看家狗)、高速I/O口及计数器的捕获/比较逻辑等。
    有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器、SMART CARD接口、MP3解码器、CAN或者IIC总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。
    2.高效率和高性能
    为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。
    由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。
    3.低电压和低功耗
    单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。
    4.低价格
    单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。
    在此,我们采用型号为AT89S52的单片机。因为: AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
    与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33MH、三级加密程序存储器 、32个可编程I/O口线 、三个16位定时器/计数器八个中断源 、全双工UART串行通道、低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。
    AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,本文转载自http://www.biyezuopin.vip/onews.asp?id=14760振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
    AT89S52单片机有PDIP、PLCC、TQFP三种封装方式,在此我选用DPIP也就是双列直插封装的单片机此种封装有如下特点:

    1. 适合PCB的穿孔安装;
    2. 易于对PCB布线;
    3. 操作方便;
    #include 
    #define uchar unsigned char 
    #define uint  unsigned int
    #define DOWNTIME 30
    #define MAXHANG 20
    #define MAXLIE  16
    #define MAXPIX  3
    #define PUSHON  50
    
    #define LCD P2
    #define EN  P3_0
    #define RW  P3_1
    #define RS  P3_2
    #define CS1 P3_3
    #define CS2 P3_4
    
    #define KEYLEFT P3_5
    #define KEYDOWN P3_6
    #define KEYRIGH P3_7
    #define KEYROTATION P1_0
    
    uchar gkey=0xff,keystate=0,t0ms1=0,t0ms=0,downtimegap=0;
    uchar miao=0,fen=0;
    uchar downok;
    bit keyflag,timeupdate,fashionupdate;
    uchar idata cubeMap[MAXHANG][2];
    typedef struct{
                   uchar code * box;
     			   uchar cube : 4;
    			   uchar state : 4;
    			   char row;
    			   char column;
    			   } block;
    block this;
    uint score=0;
    uchar speed=1;
    uchar code bittable[8]={1,2,4,8,0x10,0x20,0x40,0x80};
    uchar code cube[]=
    {
    /*  ■
      ■■■
    */
    0,4,0xe,0,  0,2,6,2,     0,7,2,0,     4,6,4,0,
    
    /*■
      ■■■ 
    */
    0,8,0xe,0,  0,4,4,0xc,   0,0,0xe,2,   0,6,4,4,
    /*■■■
      ■    
    */
    0,0xe,8,0,  0,4,4,6,     0,1,7,0,     6,2,2,0,
    /*■■
        ■■
    */
    0,0xc,6,0,  0,2,6,4,     0,6,3,0,     2,6,4,0,
    /*  ■■
      ■■  
    */
    0,6,0xc,0,  0,4,6,2,     0,3,6,0,     4,6,2,0,
    /*■■■■ 
    */
    0,0xf,0,0,  4,4,4,4,     0,0,0xf,0,   2,2,2,2,
    /*■■
      ■■ 
    */
    0,6,6,0,    0,6,6,0,     0,6,6,0,     0,6,6,0
    }; 
    uchar code asii[]=
    {
        0x3E,0x51,0x49,0x45,0x3E, // -0-
        0x00,0x42,0x7F,0x40,0x00, // -1-
        0x62,0x51,0x49,0x49,0x46, // -2-
        0x21,0x41,0x49,0x4D,0x33, // -3-
        0x18,0x14,0x12,0x7F,0x10, // -4-
        0x27,0x45,0x45,0x45,0x39, // -5-
        0x3C,0x4A,0x49,0x49,0x31, // -6-
        0x01,0x71,0x09,0x05,0x03, // -7-
        0x36,0x49,0x49,0x49,0x36, // -8-
        0x46,0x49,0x49,0x29,0x1E, // -9-
        0x00,0x36,0x36,0x00,0x00, // -:-10
    //next
        0x7F,0x04,0x08,0x10,0x7F, // -N-11
        0x7F,0x49,0x49,0x49,0x41, // -E-12
        0x63,0x14,0x08,0x14,0x63, // -X-13
        0x01,0x01,0x7F,0x01,0x01, // -T-14
    //speed
        0x26,0x49,0x49,0x49,0x32, // -S-15
        0x7F,0x09,0x09,0x09,0x06, // -P-16
        0x7F,0x49,0x49,0x49,0x41, // -E-17
        0x7F,0x41,0x41,0x41,0x3E, // -D-18
    //score
        0x3E,0x41,0x41,0x41,0x22, // -C-19   
        0x3E,0x41,0x41,0x41,0x3E, // -O-20
        0x7F,0x09,0x19,0x29,0x46, // -R-21
        0x00,0x00,0x00,0x00,0x00,  // - -22
    //GAME OVER
        0x3E,0x41,0x51,0x51,0x72, // -G-23
        0x7C,0x12,0x11,0x12,0x7C, // -A-24
        0x7F,0x02,0x0C,0x02,0x7F, // -M-25
        0x1F,0x20,0x40,0x20,0x1F, // -V-26
    //TIME
    //  0x00,0x41,0x7F,0x41,0x00  // -I-27
    };
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    分享的ise文件synthesize出错,如何解决?
    10分钟了解数据架构、数据模型
    Linux环境搭建Jenkins(详细图文)
    .NET Evolve 数据库版本管理工具
    Vue基于django的超时代停车场管理系统python
    IDEA插件开发(16)---对话框
    Docker 部署mysql8(arm64)
    每个客户看待期货开户公司的角度不一样
    第二证券|行业重磅白皮书发布,超高清视频产业规模剑指3万亿
    【go-libp2p学习笔记】使用go-libp2p搭建中转服务器(circuit relay server)
  • 原文地址:https://blog.csdn.net/sheziqiong/article/details/127121495