1、基于单片机实现的俄罗斯方块游戏MCU based Russia block game摘 要本设计是通过 AT89S52 单片机来实现俄罗斯方块游戏的设计,使用 C 语言进行编程,并通过 Proteus 来进行仿真。本设计要实现的基本功能是:应用按键来控制方块的变换与移动;消除一行并计分;消除多行额外奖励记分,方块堆满时结束游戏等俄罗斯方块的基本功能。单片机在手持娱乐设备上的应用具有非常大的潜力,它能将其带入到一个新的阶段。为了解决外部电路图,必须充分了解所用液晶的显示方法和单片机的外部接口功能,和所需要处理的逻辑关系;还要理解 LCD 液晶的控制原理,来通过数据端口和控制端口来实现画面在液晶上
2、面的显示。程序则要求对外部电路了解的情况下完成自己所需要的功能,并将所要完成的功能用编程语言的形式来实现。然后通过 Protues 仿真实现通过外部按键来控制各种不同图形的方块来玩游戏,并且实现记录分数和通过过关数来改变方块下降的速度。最后将程序下载至 AT89S52 单片机并进行实际运行,实际运行表明,本设计可以实现基本的游戏功能,达到预期的目的。关键词:AT89S52;C 语言;Proteus 仿真;LCD 液晶ABSTRACTThis design is achieved through the AT89S52 microcontroller Tetris game design, pr
3、ogramming using C language, and carried out by proteus simulation. The design to achieve the basic functions are: application buttons to control the box, change and movement; eliminate line and scoring; eliminate multi-line incentive points, the game ends when the box filled with basic functions suc
4、h as Tetris. MCU in the application of handheld entertainment devices have great potential, it can be brought to a new stage. In order to solve the external circuit, we must fully understand the liquid crystal display method and external interface MCU features, and the need to address the logical re
5、lationship; also understand that the principle of LCD liquid crystal control to a data port and control port to achieve the above the LCD screen display. Program requires knowledge of the external circuit where they need to complete the function and the function to be completed in the form of progra
6、mming language used to achieve. Simulation then protues buttons to control an external box to play a variety of graphical games, and achieve record number of scores and the relationship had to change the speed of the module down. Finally, the program downloaded to AT89S52 MCU and the actual operatio
7、n, the actual operation indicate that this design can achieve basic game functions, to achieve the desired purpose. Key Words:AT89S52; C language; Proteus simulation; LCD liquid crystI目 录1 绪 论 .11.1 课题背景 11.2 电子游戏及其分类 11.3 电子游戏发展现状 21.3.1 电子游戏国外发展现状 21.3.2 电子游戏国内发展现状 32 整体设计方案 .52.1 系统的核心部分单片机 52.1.
8、1 单片机的选择 52.1.2 AT89S52 引脚功能描述 .72.1.3 晶振特性 92.2 液晶显示模块 102.2.1 液晶显示控制驱动器 HD61202 的特点 102.2.2 液晶显示控制驱动器 HD61202 的引脚功能 102.2.3 液晶显示控制驱动器 HD61202 的指令系统 112.2.4 HD61202 的软件设计 .122.2.5 JM12864J 的电路结构特点 152.2.6 JM12864J 的应用 162.2.7 键盘电路 173 系统程序的设计 .183.1 俄罗斯方块驱动流程图 183.2 俄罗斯方块所有绘图工作流程图 193.3 俄罗斯方块中按下键的流
9、程图 203.4 俄罗斯方块所有绘图工作流程图 214 系统仿真 .224.1 PROTUES 软件介绍 224.2 Keil 软件介绍 22II4.3 俄罗斯方块系统 PROTUES 仿真 .245 实物的制作与调试 .265.1 电路的焊接 265.2 系统性能测试与功能说明 27结 论 28参考文献 29附录 1:C 语言程序 30附录 2:电路原理图 .59附录 3:英文资料及中文翻译 .60致 谢 7611 绪 论计算机系统的发展已明显地朝三个方向发展;这三个方向就是:巨型化,单片化,网络化。以解决复杂系统计算和高速数据处理的仍然是巨型机在起作用,故而,巨型机在目前在朝高速及处理能力
10、的方向努力。单片机在出现时,Intel 公司就给其单片机取名为嵌入式微控制器(embedded microcontroller)。单片机的最明显的优势,就是可以嵌入到各种仪器、设备中。这一点是巨型机和网络不可能做到的。单片机在内部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,A/D 转换器,D /A 转换器,串行通信接口,Watchdog 电路,LCD 控制器等。1.1 课题背景俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,作为最经典的游戏之一,它曾造成的轰动与经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人 Alex Pajitnov
11、制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。虽然用单片机来设计一个简单的俄罗斯方块游戏程序似乎有点大材小用了,但这仅仅是一个单片机在嵌入式游戏方面的简单应用,正因为他的前景无可预计,所以才有这个设计,此次设计仅仅是为了举一个单片机在游戏上应用的一个简单例子,他可以很好的说明单片机功能的强大,更高的可控性和高集成度的好处,因此它可以在电子游戏方面成为一个不可计量的明日之星。2005 年,以计算机技术、通信技术和软件技术为核心的信息技术取得了更加迅猛的发展,加上 3C(计算机、通讯、消费电子)产业的加速融合及 3G 移动通信时代的逐步
12、到来,嵌入式软件在国民经济各领域和日常生活中发挥了更加重要的作用。嵌入式软件的发展为几乎所有的电子设备注入了新的活力,各种装备与设备上嵌入式系统软件的广泛应用也大大地推动了其行业渗透性应用。嵌入式软件不仅提高了传统产品的技术含量,更成为产品增值的关键因素,在整个软件产业中占据了重要地位,并受到世界各国的广泛关注,如今已成为信息产业中最为耀眼的“明星”之一。1.2 电子游戏及其分类电子游戏,也就是运行在家用电脑、家用电子游戏机或是掌中宝游戏机及街机上的电子游戏程序。电子游戏是一种结合剧情故事、美术、音乐、动画、程序等技2术于一身的互动型娱乐软件,涉及到多个行业。 从电子游戏的分类来看,有着多种分
13、类方式。传统的游戏分类是按照游戏类型,将其分为即时战略游戏、第一人称射击游戏、角色扮演游戏、策略型游戏等类别。根据游戏运行平台的不同,可将电子游戏分为游戏机游戏、单机版 PC 游戏、互动电视游戏、在线游戏和手机游戏。此外,韩国政府将电子游戏业分为家用游戏机游戏、单机版 PC 游戏、网络游戏和街机游戏四大类。考虑到中韩游戏业比较接近,论文采用韩国的分类标准。“网络游戏”也就是人们一般所指的“在线游戏”,是指通过互联网进行的电脑游戏,通过人与人之间的互动达到交流、娱乐和休闲的目的。在互联网(局域网)技术出现之前,电子游戏都可以归于单机版游戏,即“人机对战”游戏,或最多是双人对战游戏。而随着互联网技
14、术的出现,通过连接游戏服务器,上百、上千、乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。从网络游戏的分类来看,目前业界还没有一个比较统一规范的分类。随着计算机设备和网络技术的发展,电子游戏在全球得到了迅猛的发展,取得了巨大的成功,已成为当今世界上不可缺少的精神粮食。1.3 电子游戏发展现状1.3.1 电子游戏国外发展现状电子游戏是最初产生于美国,1971 年,一个还在 MIT 就读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间。可以说时至今日,电子游戏仍然是外国的天下。美国至今仍是世界第一大游戏市场,它遵循的是以发行商为
15、主的产业开发链模式,根据美国市场调查公司 NPD Group 调查统计,美国 2004 年游戏总销售金额(包括家用、掌上型主机及软件)为 99 亿美元,占了全球游戏市场的 45%。其中游戏软件销售的具体数字是:视频游戏软件的销售额达 52 亿美元(1.6 亿套),PC 游戏软件销售额达 11 亿美元(4500 万套),掌机游戏销售额达 10 亿美元(4230 万套)。2004年一共大约有 2.48 亿套游戏售出。据估计,美国每个家庭平均购买过 2 部游戏。日本近 20 年来疯狂赚电子游戏的钱。从上世纪 60 年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过 30
16、 多年的耕耘,终于把电子游戏这棵“摇钱树”,培育成第一时尚娱乐产业,垄断全球业界长达 10 余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在 GDP 中占有 1/5 的举足轻重地位。日本游戏业在最辉煌的 1998 年,曾经占领全球电子游戏市场硬件 90%以上,软件 50以上。韩国号称世界上网络游戏产业最发达国家之一。迄今为止,国内网络游戏市场3有超过 60%的产品来自韩国游戏软件开发商,韩国网络游戏使国内很多游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的成功。 韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多
17、市场培育方面的工作。韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是将 IT、娱乐产业视为新的经济增长点,开始大力扶持。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了“富国兴邦”的重担。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达 500 亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。
18、在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。1.3.2 电子游戏国内发展现状与电子游戏发达的国家相比,我国在电子游戏方面还存在比较大的差距。目前,我国游戏市场正处于发展阶段,但市场上的游戏软件主要来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成为游戏的主流。中国的游戏产业经过 80 年代初期台湾厂商的探索至 90 年代,开始了自己的研发、发行的历程,直至网络
19、游戏的风行,让中国的网络游戏开始有了飞速的发展。 1983 年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售合约的公司,2000 年智冠在台湾股票上市, 2002 年其控股的中华网龙在台湾上市。1996 年底,UBI SOFT 上海分公司暨上海育碧电脑软件有限公司成立。同年,全球游戏软件领军企业 EA 在中国上海成立办事处。1997 年,由尚洋公司制作的血狮正式上市。 1997 年,北京新天地互动多媒体技术有限公司成立,该公司引进了古墓丽影 III(TombRaider III)、盟军敢死队等著名欧美游戏,并在1999 年在中国率先掀起“游戏软件价格革命”,全面推
20、行 50 元的价格体系,从此正版游戏价格开始贴近大众消费者。 1999 年,业内估算中国电脑游戏市场(正版)约 1.5 亿元人民币。 2000 年,大陆华彩软件代理发行第一款中文 MMORPG万王之王正式推出,该游戏于 1999 年在台湾发行,由台湾雷爵资讯(Lager)开发。也在42000 年,继万王之王、石器时代、网络三国在台湾上市之后,游戏桔子推出了天堂,游戏桔子成立于 1995 年,1999 年以便利店在台湾奠定了地位。天堂这款由韩国著名游戏公司 Ncsoft 研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。 2001 年初,北京华义在中国大陆地区正式推出了石器时代,华义国际股份有
21、限公司于 1993 年在台北成立,2001 年在台湾股票上市。石器时代成为大陆当时最流行的网络游戏。2001 年,天人互动软件技术有限公司在北京成立。当年与 SEGA 结成 PC 游戏业务的战略合作关系,发行了樱花大战文明无冬之夜等经典游戏。 2001 年 5 月,“联众世界”经过 3 年多的迅速成长,以同时在线 17 万人、注册用户约 1800 万的规模,成为当时世界用户数量第一的在线游戏网站。2001 年 11 月,上海盛大代理的传奇正式上市,这代表着中国网络游戏的第一个巅峰,同时也引发了众多的非议。2003 年 9 月 25日,魔兽世界被九城、新加坡电信、搜狐和英特尔联手拿下,并凭借其优
22、秀的品质赢得了广大玩家的青睐。天津职业技术师范大学 2010 届本科生毕业设计52 整体设计方案2.1 系统的核心部分单片机2.1.1 单片机的选择单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和 I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。20 世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度
23、的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着 CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬
24、件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机经过 3 代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强 I/O 功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:1多功能 单片机中尽可能地把所需要的存储器和 I/O 口都集成在一块芯片上,使得单片机可以实现更多的功能。比如 A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、高速 I/O 口及计数器的捕获/比较逻辑等。有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以 51 内核为核心,集成了 USB 控制器、SMART CAR
25、D 接口、MP3 解码器、CAN 或者 I*I*C 总线控制器等,LED、LCD 或 VFD 显示驱动器也开始集成在 8 位单片机中。天津职业技术师范大学 2010 届本科生毕业设计62高效率和高性能为了提高执行速度和执行效率,单片机开始使用 RISC、流水线和 DSP 的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内 ROM(FLASH)和 RAM 的容量都突破了以往的数量和限制。由于系统资源和系统复杂程度的增加,开始使用高级语言(如 C 语言)来开发单片机的程序。使用高级语言可以降
26、低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3低电压和低功耗单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于 CMOS 等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V 或 0.9V),功耗已经降低到 uA 级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。4低价格单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。在此,我们采用型号为 AT89S52 的单片机。因为: AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K
27、 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33MH、三级加密程序存储器 、32个可编程I/O口线 、三个16位定时器/计数器八个中断源 、全双工UART串行通道、低功耗空闲和掉电模式 、掉电后中断可
28、唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52单片机有PDIP、PLCC、TQFP三种封装方式,在此我选用DPIP也就是双列直插封
29、装的单片机此种封装有如下特点:1. 适合PCB的穿孔安装;天津职业技术师范大学 2010 届本科生毕业设计72. 易于对PCB布线;3. 操作方便;2.1.2 AT89S52 引脚功能描述AT89S52 单片机的管脚说明如图 2-1 所示:图 2-1 DIP 封装 AT89S52 单片机引脚结构图1VCC:电源。2GND:接地端 。3P0口(P0.0P0.7):P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在Flas
30、h编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。4P1口(P1.0P1.7):P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和 P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如表2-1所示:P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.
31、0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17XTAL218XTAL119GND20 P2.0(A8) 21P2.1(A9) 22P2.2(A10) 23P2.3(A11) 24P2.4(A12) 25P2.5(A13) 26P2.6(A14) 27P2.7(A15) 28PSEN 29ALE/PROG 30EA/VPP 31P0.7(AD7) 32P0.6(AD6) 33P0.5(AD5) 34P0.4(AD4) 35P0.3(AD3) 36P0.2(AD2) 37P0.1
32、(AD1) 38P0.0(AD0) 39VCC 40天津职业技术师范大学 2010 届本科生毕业设计8在 Flash编程和校验时,P1口接收低8位地址字节。表2-1 P1口第二功能引脚号 第二功能P1.0 T2(定时器/计数器 T2 的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)5P2口(P2.0P2.7):P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此
33、时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如 MOVX RI)访问外部数据存储器时,P2口输出P2 锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。6P3口(P3.0P3.7):P3 口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为
34、输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为 AT89S52第二功能使用,如表2-2所示:表2-2 P3口第二功能引脚号 第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 I (外部中断 0)NT0P3.3 I (外部中断 0)P3.4 T0(定时器 0 外部输入)P3.5 T1(定时器 1 外部输入)P3.6 (外部数据存储器写选通)WR天津职业技术师范大学 2010 届本科生毕业设计9P3.7 (外部数据存储器写选通)RD在 flash 编程和校验时,P3 口也接收一些控制信号。RST:复位输入。晶振工作时,RST脚持续2个机器
35、周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器 AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/ :地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位PROG地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行
36、MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 PSENAT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。A/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA 必须接 GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电
37、路的输入端。XTAL2:振荡器反相放大器的输出端。2.1.3 晶振特性AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入,如图2-2所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。如图 2-2 所示:天津职业技术师范大学 2010 届本科生毕业设计10图 2-2 内部振荡电路连接图2.2 液晶显示模块显示器部分是由
38、 HD61202 液晶显示控制驱动器和 JM12864J 液晶显示器组成的,下面我们对其分别进行介绍。2.2.1 液晶显示控制驱动器 HD61202 的特点HD61202 液晶显示控制驱动器是一种带有驱动输出的图形液晶显示控制器,它可直接与 8 位微处理器相连,它可与 HD61203 配合对液晶屏进行行、列驱动。HD61202 是一种带有列驱动输出的液晶显示控制器,它可与行驱动器 HD61203 配合使用,组成液晶显示驱动控制系统。1.内藏 6464=4096 位显示 RAM,RAM 中每位数据对应 LCD 屏上一个点的亮、暗状态;2.HD61202 是列驱动器,具有 64 路列驱动输出;3.
39、HD61202 读、写操作时序与 68 系列微处理器相符,因此它可直接与 68 系列微处理器接口相连;4.HD61202 的占空比为 1/321/64。2.2.2 液晶显示控制驱动器 HD61202 的引脚功能引脚 CS1,CS2,CS3 为芯片的片选端;引脚 E 为读写使能信号,它是在下降沿时数据被锁存入 HD61202 的;在 E 高电平期间,数据被读出;R/W 为读写选择信号,天津职业技术师范大学 2010 届本科生毕业设计11当它为一时为读选通,为零时为写选通;DB0-DB7 为数据总线 RST 为复位信号复位信号有效时,关闭液晶显示,使显示起始行为 0,RST 可跟 MCU 相连,由
40、 MCU 控制;也可直接接 VDD,使之不起作用。HD61202 的引脚功能如下表 2-3 所示:表 2-3 HD61202 的引脚功能引脚符号 状态 引脚名称 功能CS1,CS2,CS3 输入 芯片片选端CS1 和 CS2 低电平选通,CS3 高电平选通。E 输入 读写使能信号在 E 下降沿,数据被锁存(写)入HD61202;在 E 高电平期间,数据被读出R/W 输入 读写选择信号 R/W=1 为读选通,R/W=0 为写选通RS 输入数据、指令选择信号RS=1 为数据操作 RS=0 为写指令或读状态DB0-DB7 三态 数据总线RST 输入 复位信号复位信号有效时,关闭液晶显示,使显示起始行
41、为 0,RST 可跟 MCU 相连,由 MCU控制;也可直接接 VDD,使之不起作用。2.2.3 液晶显示控制驱动器 HD61202 的指令系统HD61202 的指令系统比较简单,总共只有七种。现分别介绍如下:1. 显示开/关指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 1 1 1 1 1 1/0当 DBO=1 时,LCD 显示 RAM 中的内容;DBO=0 时,关闭显示。2. 显示起始行(ROW)设置指令该指令设置了对应液晶屏最上一行的显示 RAM 的行号,有规律的改变显示起始行,可以使 LCD 实现显示滚屏的效果。R/W RS DB7 DB
42、6 DB5 DB4 DB3 DB2 DB1 DB00 0 1 1 显示起始行(0-63)3. 页(PAGE)置指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 1 0 1 1 1 页号(0-7)显示 RAM 共 64 行,分 8 页,每页 8 行。天津职业技术师范大学 2010 届本科生毕业设计124. 列地址(Y Address)设置指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 1 显示列地址(0-63)设置了页地址和列地址,就唯一确定了显示 RAM 中的一个单元,这样 MCU 就可以用读、写指令读出该单元中
43、的内容或向该单元写进一个字节数据。5. 读状态指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB01 0 BUSY 0 ON/OFF REST 0 0 0 0该指令用来查询 HD61202 的状态,各参量含义如下:BUSY: 1-内部在工作 0-正常状态ON/OFF:1-显示关闭 0-显示打开REST: 1-复位状态 0-正常状态在 BUSY 和 REST 状态时,除读状态指令外,其它指令均不对 HD61202 产生作用。在对 HD61202 操作之前要查询 BUSY 状态,以确定是否可以对 HD61202 进行操作。6. 写数据指令R/W RS DB7 DB6 D
44、B5 DB4 DB3 DB2 DB1 DB00 1 写 数 据读、写数据指令每执行完一次读、写操作,列地址就自动增一,必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。7. 读数据指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB01 1 读 显 示 数 据2.2.4 HD61202 的软件设计液晶控制器 HD61202 一共有七条指令,从作用上可分为两类,显示状态设置指令和数据读/写操作指令。详见指令系统可查看图形液晶显示器产品有关手册。显示起始行设置中 L5L0 为显示起始行的地址,取值在 0-3FH(1-64 行)范围内
45、。页面地址设置中 P2-P0 为选择的页面地址,取值范围为 0-7H,代表 1-8 页。列地址设置中 C5-C0 为 Y 地址计数器的内容,取值在 0-3FH(1-64 行)范围内。显示器上 128 点64 点,每 8 点为一字节数据,都对应着显示数据 RAM(在HD61202 芯片内),一点对应一个 bit,计算机写入或读出显示存储器的数据代表显示屏上某一点列上的垂直 8 点行的数据。D0 代表最上一行的点数据,D1 为第二行天津职业技术师范大学 2010 届本科生毕业设计13的点数据,D7 为第八行的点数据。该 bit=1 时该点则显示黑点出来,该 bit=0 时该点则消失。另外 LCD
46、指令中有条 display ON/OFF 指令,display ON 时显示RAM 数据对应显示的画面;display OFF 则画面消失,RAM 中显示数据仍存在。点阵字模文件的建立:由于 MGLS12864 液晶显示器没有内部字符发生器,所以在屏幕上显示的任何字符、汉字等须自己建立点阵字模库,然后均按图形方式进行显示。由于 HD61202 显示存储器的特性,不能将计算机内的汉字库和其它字模库提出直接使用,需要将其旋转 90 度后再写入。点阵字模库建立包括以下几个方面:1.建立 816 点阵常用字符、数字、符号字模库。可选用计算机 BIOS 中 ASCII 的 816 字模库,所有字符按照
47、ASCII 值从小到大升序排列。asmMOV ax,1130h /*AH=11h功能调用。装入字库至软字库 */mov bh,6 /*AL=30h 取点阵信息 */int 10h /*BH=6 取 ROM8X16 点阵指针(VGA) */mov ax,es /*出口:ES:BP 指向字库指针 */mov ascii_es,axmov ax,bpmov ascii_bp,ax ;ascii_offset=ascii_bp+16*asciicode;for(j=0;j(shiftn-m)3.常用图形(如产品商标等)的点阵图形的建立。对已有的图形可采用扫描仪进行扫描,然后用图形处理软件进行处理,再将
48、 BMP 格式文件转换成 MCS-51 的汇编文件的格式。以上所有的字模数据都存放在单片机 W78E58 的程序存储器中,如用到的汉字、图形较多,可选用较大容量的程序存储器。通用子程序:通用子程序分左半屏、右半屏写指令代码子程序和写显示数据子程序。液晶显示驱动器 HD16202 内部有个忙标志寄存器,当 BF=1 时,表示内部操作正在运行,不能接受外部数据或指令。下面子程序中设指令代码寄存器为 COMM,数据寄存器为 DATA。(COMM EQU 20H /*指令寄存器*/ DATA EQU 21H /*数据寄存器*/)1.左半屏写指令子程序WR_CMD1: MOV DPTR,#CRADR1
49、;/*读状态字口地址*/WAIT1: MOVX A,DPTR ;/* 读状态字 */JB ACC.7,WAIT1 ;/*判忙标志 BF,如 BF=1 忙,等待*/MOV DPTR,#CWADR1 ;/*写指令字口地址*/MOV A,COMM ;/*取指令代码*/MOVX DPTR,A ;/*写指令代码*/RET2.左半屏写数据子程序WR_DATA1:MOV DPTR,#CRADR1 ;/*读状态字口地址*/WAIT11: MOVX A,DPTR ;/* 读状态字 */天津职业技术师范大学 2010 届本科生毕业设计15JB ACC.7,WAIT11 ;/*判忙标志 BF,如 BF=1 忙,等待*/MOV DPTR,#DWADR1 ;/*写数据字口地址*/MOV A,DATA ;/*取数据/MOVX DPTR,A ;/*写数据*/RET3.右半屏写指令子程序 WR_CMD2 和