基于单片机的俄罗斯方块设计与实现毕设论文_第1页
基于单片机的俄罗斯方块设计与实现毕设论文_第2页
基于单片机的俄罗斯方块设计与实现毕设论文_第3页
基于单片机的俄罗斯方块设计与实现毕设论文_第4页
基于单片机的俄罗斯方块设计与实现毕设论文_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、沈阳航空航天大学北方科技学院毕业设计(论文) 基于单片机的俄罗斯方块设计与实现摘 要随着单片机在手持娱乐设备上应用的发展,越来越多的应用在电子领域中,如:电子宠物,俄罗斯方块,智能IC卡等。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢帕基特诺夫发明,故得此名。本文选用STC89C52RC单片机作为系统的芯片,实现人机交互、娱乐等功能。选用LCD12864实现俄罗斯方块游戏界面、图形显示;选用独立按键实现游戏控制。本设计实现的基本功能是:用按键控制目标方块的变换与移动;消除一行并计分,方块堆满时结束游戏等俄罗斯方块的基本功能。此次设计初期是在keil和proteus

2、联合仿真中进行,编程语言为c语言,后期是进行实物焊接。关键词:俄罗斯方块;单片机;控制;仿真AbstractWith the development of the single chip microcomputer application on handheld entertainment equipment, more and more application in the field of electronics.Such as: electronic pet, tetris, smart IC card, etc.Tetris is a popular global TV game an

3、d PSP games, it consists of the Russian alexei palmer jeters invention, therefore the name.This article chooses STC89C52RC single-chip microcomputer as the system of chip, realize human-machine interaction, entertainment, etc.Selection of tetris game interface, graphical display LCD12864 implementat

4、ion;Choose independent control game buttons.This design is to realize the basic function of: key control target square transformation and movement;Remove a row and scoring, square pile end game tetris, such as the basic functions.The early stage of design is done in keil and proteus simulation, prog

5、ramming language is the c language, is late for real welding.Keywords: Russian square;Microprocessor;Control;Simulation16沈阳航空航天大学北方科技学院毕业设计(论文)目录1绪 论11.1课题背景11.2课题的研究现状及意义11.3课题任务及要求22整体方案设计32.1设计方案32.2系统的核心部分单片机32.3程序整体思路42.4图形显示52.5消层算法52.6系统总体结构框图62.7系统的工作过程63俄罗斯方块的硬件设计73.1单片机电路73.1.1 STC89C52RC单

6、片机介绍73.1.2 STC89C52RC单片机的标准功能83.1.3 晶振特性103.1.4单片机的复位电路113.2 LCD12864液晶屏113.2.1液晶显示模块概述113.2.2 模块引脚说明123.2.3指令描述123.2.4汉字字模提取233.3 LCD的驱动方法243.4按键控制电路253.5 硬件总体设计254俄罗斯方块的软件设计264.1开发工具介绍264.2程序流程图274.2.1主程序流程图274.2.2游戏外观显示流程图294.2.3俄罗斯方块向左/右移动工作流程图304.2.4俄罗斯方块中按下键的流程图314.3本章小节315 系统仿真325.1 Proteus仿真

7、软件介绍325.2显示屏系统仿真的效果335.2.1静态模式下的仿真效果335.2.2 向左移动的仿真效果345.2.3向右移动的仿真效果345.2.4向下移动的仿真效果图355.2.5 调节速度的仿真效果图355.2.6改变形状的仿真效果图365.2.7暂停的仿真效果图365.3俄罗斯方块的仿真效果图376 实物的制作与调试386.1电路的焊接386.1.1焊前准备386.1.2焊接顺序386.1.3元器件焊接要求386.2布线工艺与准则396.3焊接实物照片396.4整体调试407 俄罗斯方块的整体调试417.1整体调试417.2实际显示效果图417.3系统升级方案探讨438 结 论44结

8、束语45致 谢46附 录 电路原理图48附录 俄罗斯方块系统元件清单49附录 俄罗斯方块系统设计作品实物50附 录 主要程序511绪 论1.1课题背景如今,计算机系统的发展已明显地朝三个方向发展,这三个方向是:巨型化,单片化,网络化。对于解决复杂计算和高速数据处理的问题仍然是巨型机在起作用,因而,目前巨型机正在朝高速及高处理能力的方向发展。单片机在出现时Intel公司就给其单片机取名为嵌入式微控制器。单片机的最明显的优势,就是可以嵌入到各种仪器、设备中。这一点是巨型机和网络不可能做到的。单片机在内部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,EEPROM,D/A转

9、换器,串行通信接口,Watchdog电路等。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,目前在网络单机游戏和kele8等上都有它的身影。而它曾经造成的轰动与经济价值可以说是游戏史上一件大事。因此,对它的研究,无论从技术上,还是社会意义上看都是很有价值的。单片机在游戏上的应用是具有非常大的潜力的,它能将游戏带入到另一个阶段。单片机在游戏应用方面如模拟射击,贪吃蛇,推箱子等,它可以很好的说明单片机功能的强大,体现其更高的可控性和高集成度的好处,因此它可以在电子游戏方面成为一个不可计量的明日之星。1.2课题的研究现状及意义现今国内外的俄罗斯方块游戏设计主要有基于PC机上Windows平台的

10、俄罗斯方块游戏,基于手机平台的智能俄罗斯方块游戏以及基于单片机平台的俄罗斯方块游戏等。前两种属于高端游机,性能优越,但成本高,而且计算机编程已不是新命题,VB、VC版本的俄罗斯方块游戏都有发布。国内许多论文对俄罗斯方块游戏的教学意义做了深入讨论,主要集中于游戏中方块变换的算法研究,其中利用枚举算法和利用矩阵转置的算法最为多见。另外,还有许多文章探讨了游戏在嵌入式平台中的开发以及应用。单片机的应用很广泛,家用电器、办公室自动化、智能产品、商业营销、工业自动化等都有它的身影,如今在游戏领域里单片机的作用也愈发明显。虽然用单片机来设计一个简单的俄罗斯方块游戏程序似乎有点大材小用,但这仅仅是一个单片机

11、在嵌入式游戏方面的简单应用,正因为它的前景无可预计,所以才有这个设计,此次设计是一个单片机在游戏上应用的一个例子,它就可以很好的说明单片机功能的强大,更高的可控性和集成度高的好处,随着计算机技术、通信技术和软件技术的迅猛发展。再加上3C产业(计算机、通讯、消费电子)的合成及4G移动通信时代的到来,嵌入式软件发挥了更加重要的作用,它的发展为绝大多数电子设备注入了新的活力,各种装备与设备上由于有了嵌入式系统软件的加入,大大地推动了其行业渗透性应用,嵌入式技术不仅提高了产品的技术含量,更成为产品增值的关键,在整个软件产业中占据了重要地位,并受到世界各国的广泛关注。 1.3课题任务及要求单片机在手持娱

12、乐设备上的应用具有非常大的潜力,它能将其带入到一个新的阶段。本次毕业设计实现的主要内容是:应用按键来控制方块的变换与移动;消除一行并计分;方块堆满时结束游戏等俄罗斯方块的基本功能。该系统应具有以下功能:1、运用LCD进行显示; 2、通过按键可对相关的参数值进行设置,同时实现控制方块的变换与移动。2整体方案设计2.1设计方案本次设计初期是在keil和proteus联合仿真中进行,编程语言为C语言,后期是进行实物焊接。本次采用单片机STC89C52RC控制模块提供电源,LCD显示,采用独立按键,直接在I/O口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,使用四个按键,分别

13、是旋转键,下键,左键,右键。这种方案实现可行,既满足系统功能要求,又减少了系统实现的复杂度。而由于STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。2.2系统的核心部分单片机单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片

14、机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制

15、技术的一次革命。下面是单片机的主要发展趋势。单片机经过3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:1.多功能 单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、高速I/O口及计数器的捕获/比较逻辑等。有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器、SMART CARD接口、MP3解码器、CAN或者I*

16、I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。2.高效率和高性能为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3.低电压和低功耗单片机的嵌入式应用决定了低电

17、压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。4.低价格单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。综上所述采用型号为STC89C52RC的单片机。2.3程序整体思路单片机上的程序设计一般是一个大循环结构,对于俄罗斯方块的程序设计,首先产生一个伪随机数,其范围是0-6,分别对应俄罗斯方块中随机产生的七种方块,然后程序根据此数值所对应的图形模块装入RAM的

18、固定区域内,紧接着将此图像写入LCD所对应的显示缓冲区中,显示程序将缓冲区内的内容显示在显示屏上,如果没有控制键按下,图形将自动向下移动。如果有键按下,程序将根据按下的键来改变图形存储区的值,同时程序将判断图形是否已到达边界,当图形最上层到达显示区顶部,则游戏结束,此时将清除显示缓冲的内容,游戏重新开始。2.4图形显示下坠物本质上为16个小砖块组成的正方形。下坠物一共有7种,比如有田字形的,L字形的等等。每种下坠物一共有4种旋转变化。 每种下坠物都有一个id,分别为1到7。因为对于一种下坠物来说,其颜色是固定的。我们同样可以用该种颜色在BRICK_COLORS数组中的下标值加上1,作为下坠物的

19、id。例如L形下坠物的id为3,其变化形式为:因为每一个下坠物有四种状态,所以我们可以考虑用一个长度为4的数组来存贮一个下坠物的4种状态,数组中每一个元素表示该下坠物的一种状态。从上图可以看出,用一个4X4的二维数组来存储一种下坠物的一种状态最合适不过了。在有色砖块出现的位置,值为1,而只有背景颜色,无需绘制的位置,值为0。因此,整个L形下坠物的4种状态可以用一个3维数组来表示:protected int blockpattern3 = 0, 1, 0, 0,0, 1, 0, 0,0, 1, 1, 0,0, 0, 0, 0,0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0,

20、 0, 0, 0, 0,0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0,0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0;2.5消层算法设置循环变量数R2=128,即总共要扫描128次,每一次循环过程中检测此行是否已满,也就是检测这一行所对应的存储单元是否全为1,如果全为1则将此行消去,即将此行对应的RAM清零。同时将此行上面RAM的内容按每列依次下移,下移完之后重新令R2=0,又从第一行开始检测。此行不全为零时只需令R2=R2+1,直到R2=128消层过程结束。2.6系统总体结构框图系统总体结构框图,如

21、图2.1所示。本设计总体模块包括单片机中央主控模块、电源模块、按键电路和显示模块组成。本设计由电源模块为电机,单片机提供能源;显示模块用来实现俄罗斯方块游戏界面、图形显示;按键电路用按键控制目标方块的变换与移动。图2.1 系统总体结构框图2.7系统的工作过程单片机在上电初始化完毕后会等待通信单片机发出启动信号,单片机检测到启动信号后,从FLASH存储器中读取控制信息,再根据控制信息执行对应模式的显示任务。开始让它显示个积木,在按键没实现控制的时候,每隔1S下移一次,有触底处理功能,当碰到底的时候图形不能下移,判断能否消行,能消行则消行,不能再判断是否到顶,到底则从新开始,没到底产生下个随即数,

22、中间有5个按键控制,一个实现图形左移,一个实现图形右移,一个实现下移,一个实现旋转,一个复位。3俄罗斯方块的硬件设计3.1单片机电路3.1.1 STC89C52RC单片机介绍STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,

23、看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6时钟/12时钟可选。1.STC89C52RC单片机的工作模式(1)掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原程序。

24、(2)空闲模式:典型功耗2mA。(3)正常工作模式:典型功耗4Ma7mA。(4)掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。2.在此我选用STC89C52单片机PDIP封装方式也就是双列直插封装的单片机此种封装有如下特点:(1)适合PCB的穿孔安装;(2)易于对PCB布线;(3)操作方便。3.1.2 STC89C52RC单片机的标准功能STC89C52RC单片机的引脚说明图,如图3.1所示。图3.1 DIP-40封装的STC89C52单片机引脚说明(1) VCC(40引脚):电源电压(2) VSS(20引脚):接地(3) P0端口(P0.0P0.7,3932引脚):P0

25、口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。(4)P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电

26、阻,那些被外部拉低的引脚会输出一个电流(IIL)。此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如表3.1所示。在 FlashROM编程和校验时,P1口接收低8位地址字节。表3.1 P1.0和P1.1引脚复用功能引脚号功能特性P1.0T2(定时器/计数器 T2 的外部计数输入),时钟输出P1.1T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制)(5)P2端口(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个

27、TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVXDPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVXR1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。在FlashROM编程和校验时,P2口也接收高8位地址字节和一些控制信号。(6)P3端口(P3.0P3.7,1017引脚):P3是一个带内部上拉电阻的8位双向I

28、/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(IIL)。在对FlashROM编程或程序校验时,P3还接收一些控制信号。P3口除作为一般I/O口外,还有其他一些复用功能,如表3.2所示。表3.2 P3口引脚复用功能引脚号复用功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2I(外部中断 0)P3.3I(外部中断 0)P3.4T0(定时器 0 外部输入)P3.5T1(定时器 1 外部输入)P3.6(外部数据存储

29、器写选通)P3.7(外部数据存储器写选通)RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉

30、冲将会跳过。如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当 AT89C52从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而在访问外部数据存储器时,将不被激活。/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令, 必须接 GND。为了执行内部程序指令,应该接VCC。

31、在flash编程期间,也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.1.3 晶振特性STC89C52单片机有一个用于构成振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入,如图2.2所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。如图3.2所示。图3.2振荡电路连接图3.1.4

32、单片机的复位电路单片机通常采用上电自动复位和按钮复位两种方式。通常因为系统运行等需要,常常需要人工复位,本设计采用按钮复位的方式,即按下开关一定时间就能使RTS引脚端为高电平,从而使单片机复位。同时,简单复位电路中,干扰信号易串入复位端,由此可能会引起内部某些寄存器错误复位,这时可在RST引脚上接去耦电容。在STC12C5A60S2单片机中有两个复位端口,即RST/P4.7、RST2/P4.6,当晶振频率小于或等于12MHz时,使用RST端口。由于本设计使用外接12MHz的晶振作为振荡时钟。3.2 LCD12864液晶屏3.2.1液晶显示模块概述LCD12864汉字图形点阵液晶显示模块,可显示

33、汉字及图形,内置8192个中文汉字(16X16点阵),128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。主要技术参数和显示特性:电源:VDD 3.3V+5V(内置升压电路,无需负压);显示内容:128列 64行;LCD类型:STN;与MCU接口:8位或4位并行/3位串行;配置LED背光;多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等。液晶显示器件独具的低压,微功耗特性使它在单片机系统中得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像 西文字符那样用字符模块即可显示,要想显

34、示汉字必须用图形模块。本设计所选择的LCD是AMPIRE12864的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口。3.2.2 模块引脚说明APM12864引脚说明表,如表3.3所示。表 3.3AMPIRE12864 引脚说明表 管脚号管脚电平说明1CS1H/L片选择信号,低电平时选择前 64 列2CS2H/L片选择信号,低电平时选择后 64 列3GND0V 逻辑电源地4VCC 5.0V逻辑电源正5V0 LCD 驱动电压,应用时在 VEE 与 V0 之间加一 2K 可调电阻6RSH/L数据指令选择:高电平:数据 D0-D7 将送入显示 RAM;低电平:数据 D0-D7 将送入

35、指令寄存器行7R/WH/L读写选择:高电平:读数据;低电平:写数据8EH/L读写使能,高电平有效,下降沿锁定数据9DB0 H/L数据输入输出引脚10 DB1H/L数据输入输出引脚11DB2 H/L数据输入输出引脚12 DB3 H/L数据输入输出引脚13 DB4 H/L数据输入输出引脚14 DB5 H/L数据输入输出引脚15 DB6 H/L数据输入输出引脚16 DB7 H/L数据输入输出引脚17 RST L 复位信号,低电平有效18 VOUT -10VLCD 驱动电源3.2.3指令描述1.显示开/关设置CODE: R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LLLLHHHHHH/L

36、功能:设置屏幕显示开/关。DB0=H,开显示;DB0=L,关显示。不影响显示 RAM(DD RAM)中的内容。2.设置显示起始行CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LLHH行地址(063)功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z 地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。3. 设置页地址CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LLHLHHH页地址(07)功能:执行本指令后,下

37、面的读写操作将在指定页内,直到重新设置。地址就是 DDRAM的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。DDRAM地址映像表如表 3.4 所示。表 3.4 RAM 地址映像表Y 地址012616263DB0PAGE0DB7DB0PAGE1DB7X=0X=1DB0PAGE6DB7DB0PAGE7DB7X=6X=74.设置列地址CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LLLH列地址(063)功能:DDRAM 的列地址存储在 Y 地址计数器中,读写数据对列地址有影

38、响在对 DDRAM 进行读写操作后,Y 地址自动加一。5.状态检测CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0HLBFLON/OFFRSTLLLL功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。BF=H:内部正在执行操作;BF=L:空闲状态。RST=H:正处于复位初始化状态; RST=L:正常状态。 ON/OFF=H:表示显示关闭;ON/OFF=L:表示显示开。6.写显示数据CODE:R/WRSDB7DB6DB5DB4DB3DB2DB1DB0LHD7D6D5D4D3D2D1D0功能:写数据到 DDRAM,DDRAM 是存储图形显示数据的

39、,写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DDRAM前要先执行“设置页地址”及“设置列地址”命令。7.读显示数据CODE: R/WRSDB7DB6DB5DB4DB3DB2DB1DB0HHD7D6D5D4D3D2D1D0基本操作时序:(1)读状态:输入:RS=L,R/W=H,CS1 或CS2=H,E=H输出:D0D7=状态字(2)写指令:输入:RS=L,R/W=L,D0D7=指令码,CS1或CS2=H,E=高脉冲 输出:无(3)读数据:输入:RS=H,R/W=H,CS1 或CS2=H,E=H输出:D0D7=数据(4)写数据:输入:RS=H,R/

40、W=L,D0D7=数据,CS1或CS2=H,E=高脉冲 输出:无由RAM地址映射表可知LCD显示屏由两片控制器控制,分别用CS1和CS2控制。每个内部带有64X64位(512字节)的RAM缓冲区,对应关系如图3.3所示。图3.3 LCD地址映射图整个屏幕分左、右两个屏,每个半屏右8页,每页有8行,注意数据是竖行排列,如表3.4。显示一个字要16*16点,全屏有128*64个点,故可显示32个中文汉字。每两页显示一行汉字,可显示4行汉字,每行8个汉字,共32个汉字。而显示数据需要16*8个点,可显示数据是汉字的两陪。屏幕是通过CS1、CS2两信号来控制的,不同的组合方式所选的屏幕是不同的,对应关

41、系如表3.5所示。表3.5屏幕选择表CS1CS2选屏00全屏01左屏10右屏11不沈阳航空航天大学北方科技学院毕业设计(论文)8.操作(1)设置开始页地址和列地址。(2)设定读写模式,进行读写操作。只有理解了液晶显示器各个指令的功能,再结合单片机的指令系统,就你编写C语言程序来达到混合显示汉子和数字的目的。通过程序将字的代码写入相应的DDRAM地址,就可以在相应的位置显示相应的字。3.2.4汉字字模提取液晶显示器件(LCD)独具的低压、微功耗特性使他在单片机系统中特得到 了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点 阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,

42、因为汉字不能象西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。液晶模块显示汉字方法:使用图形液晶模块以点阵形式来显示汉字和图形, 每8个点组成1个字节,每个点用一个二进制位表示,存1的点显示时在屏上显示一个亮点,存0的点则在屏上不显示,最常用的1616的汉字点阵由32个字节组 成。以在我国应用较为普及的液晶显示驱动控制器12864为例,在液晶屏上竖向8个点为1个字节数据,通过字模提取软件按照先左后右,先上后下的方式对汉字进行字模提取。由于 D0-D7 是从上到下排列的,最上面 8 行是上一页,我们先提取上面一 页的数据 16 个,在按照相同的方法提取下一页的数据 16 个,在分别写

43、入对应的 DDRAM 地址,就可以显示我们所需要的字。简单的字可手工制作,也可以用起 模软件提取标准的宋体汉字,不过本文所用的液晶显示屏用这款软件 要设计纵向取模并且要反字节,否则将显示乱码。数字只需起汉字的一半数据就可以了,如图 3-3 所示的左边 8 列或者右边 8 列。3.3 LCD的驱动方法在很多资料以及书籍当中,通常介绍有两种LCD模块的连接方法:直接控制和间接控制;直接控制实际指的是LCD模块的总线接口直接与MCU端口连接,然后MCU通过程序控制端口来模拟LCD的总线时序来完成对其的控制操作;而间接控制指的是MCU本身就有外部总线拉出,与LCD的总线接口对应的连接上,程序中直接操作

44、总线以控制LCD。目前有很多MCU都把总线密封起来了,都没有引出外部总线;所以通常在用MCU控制LCD模块时,时常会选择直接控制的方式,即利用端口来模拟总线时序;当然了,如果本身就有总线而且也与LCD模块的总线配得上的话,肯定会使用总线连接的间控方式。本设计的LCD12864模块中,用户程序对其进行显示控制时,无非就是通过对LCD模块内部的驱动控制器当中的寄存器进行设置操作;最常用的如LCD的显示开/关、操作显存地址(行与列地址)的设置等。3.4按键控制电路按键部分采用单独的六个按键,分别与单片机P3.0,P3.1,P3.2,P3.3,P3.4,P3.5。分别分别控制方块下,左,停止,右,变形

45、的变化和确定功能。当按键按下时,与主控芯片连接的端口变为低电平,按键松开则也升为高电平。按键具有自动弹回的功能,当我们按下按钮时,接点处于接通状态;松开按钮时,接点处于切断状态。如图3.4所示。图3.4按键控制电路图3.5 硬件总体设计硬件总体电路图见附录,硬件总体电路设计包括单片机电路、LCD12864显示单元电路显示俄罗斯方块的游戏界面等,按键电路用按键控制目标方块的变换与移动。正常工作需要每一电路模块的配合,缺一不可,完成了总体俄罗斯方块的设计。4俄罗斯方块的软件设计4.1开发工具介绍Keil C51 Vision3集成开发环境是Keil Software,Inc/Keil Elektr

46、onik GmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。,软件开发界面如图4.1所示。图4.1 Keil Vision3软件开发界面4.2程序流程图4.2.1主程序流程图主程序流程图,如图4.2所示。单片机上电后,游戏开始。首先,随机生成一个图形,交给当前图形变量,再随机生成一个图形交给提示图形变量,然后根据变化绘图,也就是绘当前图形和提示图形,按

47、下左,右,下,变形的按键。判断图形是否到底,如果没有到底,图形下降一行,绘图一次,再进行按键处理;若图形到底,接下来判断是否行满了,如果行没有满,绘当前图形位置,提示图变当前图,再随机生成提示图,绘当前图,再进行按键处理;若行满,则判断表格是否满了,如果表格没有满,就消除行并把上面的行数据下移并置清行为true、当前图改变为false。如果表格满了,则判断是否进行清所有数据,选择不清除,则提示图形变量给当前图形,再随机生成一个变量交给提示图形变量,绘图;选择清除,就清屏,不论如何选择,结果是游戏结束。如此,一盘的游戏就结束了。图4.2 主程序流程图4.2.2游戏外观显示流程图在静态模式下,显示

48、的文字信息停留在显示屏上, 游戏外观显示流程图如图4.3所示。按下开始键,单片机的初始化首先是对内部RAM清零,接下来加载字模数据到显示缓冲区,在LCD上显示俄罗斯方块的字样。图4.3游戏外观显示流程图4.2.3俄罗斯方块向左/右移动工作流程图俄罗斯方块向左/右移动工作流程图,如图4.4所示。向左,向右移动主要是控制俄罗斯方块的位置改变,按下左/右控制键,当前图像改变当前位置。返回到子程序。图4.4 俄罗斯方块向左/右移动工作流程图4.2.4俄罗斯方块中按下键的流程图俄罗斯方块按下键的流程图,如图4.5所示。下键,可以控制图形向下移动和使图形直接到底。按下键,图形下移,然后返回到子程序。图4.

49、5 俄罗斯方块按下键的流程图4.3本章小节俄罗斯方块的完整程序清单详见附录。总体程序主要包括游戏外观显示子程序、向左/右移动子程序,向下移动子程序等,通过子程序的调用,最终实现所有的功能。5 系统仿真5.1 Proteus仿真软件介绍Proteus软件是来自英国Labcenter electronics公司的EDA工具软件。 Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输

50、出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,不需要别的,Proteus建立了完备的电子设计开发环境。Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被电子世界在其对PCB设计系统的比较文章中评为最好产品“The Route to PCB CAD”。Proteus 产品系列也包含了革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。 其功能模块:

51、个易用而又功能强大的ISIS原理布图工具;Proteus混合模型SPICE仿真; ARES PCB设计。Proteus 仿真器的一个扩展Proteus VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LED甚至LCD显示CPU模型。(1)支持许多通用的微控制器,如PIC,AVR,HC11以及8051; (2)交互的装置模型包括:LED和LCD显示,RS232终端,通用键盘; (3)强大的调试工具,包括寄存器和存储器,断点和单步模式; (4)IAR C-SPY 和Keil uVision3等开发工具的源层调试; (5)应用特殊模

52、型的DLL界面-提供有关元件库的全部文件。5.2显示屏系统仿真的效果5.2.1静态模式下的仿真效果静态模式下的俄罗斯方块仿真效果图,如图5.1所示。图5.1 静态模式下俄罗斯方块仿真效果图5.2.2 向左移动的仿真效果向左移动的俄罗斯方块仿真效果图,如图5.2所示。 图5.2向左移动的仿真效果5.2.3向右移动的仿真效果向右移动的俄罗斯方块仿真效果图,如图5.3所示。 图5.3向右移动的仿真效果5.2.4向下移动的仿真效果图向下移动的俄罗斯方块仿真效果图,如图5.4所示。 图5.4向下移动的仿真效果5.2.5 调节速度的仿真效果图调节速度的俄罗斯方块仿真效果图,如图5.5所示。图5.5调节速度

53、的仿真效果5.2.6改变形状的仿真效果图改变形状的俄罗斯方块仿真效果图,如图5.6所示。 图5.6改变形状的仿真效果5.2.7暂停的仿真效果图暂停的俄罗斯方块仿真效果图,如图5.7所示。 图5.7暂停的仿真效果5.3俄罗斯方块的仿真效果图俄罗斯方块的仿真效果图,如图5.8所示。图5.8 俄罗斯方块的仿真效果图6 实物的制作与调试6.1电路的焊接6.1.1焊前准备首先要熟悉所焊印制电路板的硬件图,检查元器件型号、规格及数量是否符合要求,并做好装配前元器件引线成型等准备工作,由于制作的是便携式的俄罗斯方块游戏机,所以在这里我选用了电池来做电源。6.1.2焊接顺序元器件装焊顺序依次为:电阻器、电容器

54、、二极管、LCD显示器,其它元器件为先小后大。6.1.3元器件焊接要求1.电阻器焊接按图将电阻器准确装入规定位置。要求标记向上,字向一致。装完同一种规格后再装另一种规格,尽量使电阻器的高低一致。焊完后将露在印制电路板表面多余引脚齐根剪去。2.电容器焊接将电容器按图装入规定位置,并注意有极性电容器其“”与“”极不能接错,电容器上的标记方向要易看可见。先装玻璃釉电容器、有机介质电容器、瓷介电容器,最后装电解电容器。3.集成电路焊接首先检查型号、引脚位置是否符合要求。焊接时先焊边沿的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。6.2布线工艺与准则一般先放置与机械尺寸有关的固定位置的元器件,再放置特殊的和较大的元器件,最后放置小元器件。同时,要兼顾布线方面的要求,高频元器件的放置要尽量紧凑,信号线的布线才能尽可能短,从而降低信号线的交叉干扰等。布线的时

温馨提示

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

评论

0/150

提交评论