CMOS高速锁相环的研究与设计毕业设计

上传人:仙*** 文档编号:28062806 上传时间:2021-08-23 格式:DOC 页数:99 大小:1.76MB
收藏 版权申诉 举报 下载
CMOS高速锁相环的研究与设计毕业设计_第1页
第1页 / 共99页
CMOS高速锁相环的研究与设计毕业设计_第2页
第2页 / 共99页
CMOS高速锁相环的研究与设计毕业设计_第3页
第3页 / 共99页
资源描述:

《CMOS高速锁相环的研究与设计毕业设计》由会员分享,可在线阅读,更多相关《CMOS高速锁相环的研究与设计毕业设计(99页珍藏版)》请在装配图网上搜索。

1、毕 业 设 计设计题目:CMOS高速锁相环的研究与设计 系 别: 信息工程系 班 级: 电子信息工程 姓 名: 指 导 教 师: 年6月10日CMOS高速锁相环的研究与设计摘 要在现今电子信息高速发展的时代,通信等技术变得越来越重要。锁相环作为一种能够跟踪输入信号的闭环自动相位控制系统,因其电路结构简单,性能优越等特点,现在被广泛应用于无线电通信、雷达、流体力学等众多领域。本文介绍了一种高速锁相环的设计方法。本文设计的锁相环采用当前主流的电路结构数模混合结构的电荷泵锁相环。锁相环路中的鉴频鉴相器采用RS锁存器实现鉴频/鉴相功能,有效地提高了整个电荷泵锁相环对相位变化的灵敏度。电荷泵电路也做了一

2、定的改进,性能更为优越。压控振荡器采用常用的环形振荡器结构,采用电流驱动逻辑(CSL)电路作为缓冲单元。分频器采用单相时钟TSPC逻辑实现。论文从系统设计角度出发对电荷泵锁相环的工作原理、数学模型及基本性能多做了详细的分析。该电荷泵锁相环采用0.13mCMOS工艺实现。利用Tanner软件进行各模块、整体电路的设计,及版图的绘制与验证。从锁相环的仿真结果可知,我们的实验结果和理论结果相符。关键词:电荷泵锁相环电荷泵压控振荡器 鉴频鉴相器 AbstractCommunications technology is becoming increasingly important in todays

3、era of rapid development of electronic information. A tetris games design method has been introduced in this thesis based on STC89C53 MCU. This system is chiefly constituted of STC89C53 MCU, KXM12864J LCD, independent keys and buzzer. MCU is the core controller in this design. To make related inform

4、ation of the game seen by players, an area is differentiated showing shape of next graph, score, game time, speed and level in the screen. When playing this game, we can control the graph shown to move left and right, fall quickly and transform into another one flexibly by pressing keys. After passi

5、ng one level, the screen shows us “GOOD JOB”, or we get “GAME OVER”. The buzzer gives out different sounds meanwhile to warn game-players of the current state.In this design, the simulation is done in Proteus simulative software. Code compiling, debugging and modification of hardware circuit are don

6、e with the help of Kiel C51 tool. Then it is debuged again after circuit board welded. Finally, the system raslizes all the functions of a minitype tetris machine. Key words: MCU; KXM12864J; Tetris; Keil目 录1 引言12 芯片简介22.1 单片机简介22.2 KXM12864J简介43 系统硬件的设计93.1 单片机最小系统的设计93.1.1 电源电路的设计93.1.2 振荡电路的设计113.

7、1.3 复位电路的设计123.1.4 下载电路的设计133.2 LCD显示电路的设计163.3 按键电路的设计173.4 声音电路的设计184 系统软件的设计194.1 LCD显示子程序204.1.1 显示字符子程序204.1.2 显示图形子程序214.1.3 设定游戏显示区域子程序224.1.4 清屏子程序224.1.5 显示计时子程序234.1.6 消行积分子程序244.1.7 闯关设置子程序254.2 按键操作子程序264.3 声音子程序285 系统调试与仿真295.1 KEIL软件和PROTEUS软件简介295.2 系统调试与仿真315.3 仿真过程中的问题336 硬件焊接与调试366

8、.1电路板焊接366.2 硬件调试376.2.1 LCD显示的调试376.2.2 按键调试396.2.3 声音调试397 结论40谢辞41参考文献42附录43附录一 总体设计电路原理图43附录二 程序清单80附录三 器件清单80外文资料811 引言1.1锁相技术的发展锁相技术是一门实现相位自动控制的学科,是专门研究系统相位的技术。利用锁相技术而成的锁相环PLL(Phase-Locked Loop)是一个闭环的相位自动控制系统,它的输出信号能够自动跟踪输入信号的相位变化,也可以将之称为一个相位差自动跟踪系统,它能够自动跟踪两个信号的相位差,并且靠反馈控制来达到自动调节输出信号相位的目的。“锁相”

9、的起源可以追溯到17世纪,荷兰天文学家、物理学家Christiana Huygens,通过观察首次提出了“同步振荡器”(synehronized oseillator)的概念,但因为当时科学技术条件的限制,并没有引起重视,得到应有的发展。1932年法国科学家De Belleseize在“La Reception Synehrone”一文中,首先公开发表了对锁相环路的数学描述,明确提出了“锁相”的概念,且运用此概念论述了无线电信号的同步接收。但是他的同步检波理论在当时并没有引起普遍的重视。直到1940年锁相环技术才得到了第一次成功的应用,在电视机水平扫描行同步装置中,有效的抑制外界噪声对同步信号

10、的干扰,使电视图像的同步性能得到很大的改善。同时,在此期间的第二次世界大战中,各种武器装备对锁相环提出了更多的要求,也极大地推动了锁相技术的发展。为了满足这些极具挑战性的要求,很多先进的反馈控制理论在此期间得到发展。随着对锁相技术理论以及应用的广泛而深入的研究,锁相技术己经成为一门比较系统的理论科学。但是,研究的不断深入,科技技术的不断前进,新的物理现象和问题还是层出不穷,得不到解释。因此直到现在,世界各国科技工作者对锁相环的理论和应用进行还在继续的进行研究,而且锁相环原理的应用已经深入到许多其他学科中去了,如气象学、海洋学、生物物理学、原子物理学等等。在锁相环发展的最初阶段,PLL都是由分立

11、元器件组成的,电路复杂,调整困难。随着半导体集成技术的日趋成熟,锁相环技术成为模拟集成电路设计中一个重要的研究方向3。之后的几年内就出现了数模混合的锁相环电路,以及后来的全数字锁相环电路。这三种锁相环电路各有千秋,相互弥补,分别存在于各类电子产品中。模拟锁相环在稳定工作时,各模块都可以认为是线性工作的,所以也称为线性锁相环。模拟锁相环对正弦特性信号的相位跟踪非常好,环路特性主要由鉴相器的特性决定,主要用于对信号的调制解调。模拟锁相环的优点是电路简单有效,低通滤波器设计良好时,输出频率纯净稳定,跟随性能好,理想情况下输出频率完全等于同步频率,对晶振压控特性的线性要求不高。缺点是一旦失去基准频率,

12、输出频率立刻跳回晶振本身的频率。全数字锁相环的英文全称是All Digital Phase-Locked Loop,简称是ADPLL。ADPLL的经典结构为鉴相器用过零检测数字鉴相器,环路滤波器一般用可逆计数器来实现,振荡器则用数控振荡器实现。全数字锁相环具有精度高且不受温度和电压影响,环路带宽和中心频率编程可调,易于构建高阶锁相环等优点,缺点是不能过滤时钟源的抖动,会引入固有抖动,造成抖动的累积。数模混合锁相环的部分环路部件为数字电路,但是环路控制仍是模拟形式。数模混合锁相环的优点是相位误差、温度误差等较小,电路结构较简单,且噪声较小,具有高速低功耗等优越特性。电荷泵锁相环CPPLL(Cha

13、rge-Pump Phase-Locked Loop)是数模混合锁相环中的典型代表。数模混合锁相环主要用于频率综合,时钟处理等领域。虽然PLL技术已经发展了半个多世纪,但是由于其应用领域的扩展,而且高新科技的发展对它的性能又不断提出新的要求,所以一直以来PLL的设计与分析都是集成电路设计者的热点。设计者们也不断的提出新的结构和新的分析方法,以满足不同应用的需要。本文设计了一种高速电荷泵锁相环,并用0.13mCMOS工艺实现。利用Tanner软件进行仿真,并进行版图的绘制与验证。2 芯片简介2.1 单片机简介单片微型计算机简称单片微机或单片机,又称微控制器(MCU)。它是在一块半导体芯片上,集成

14、了CPU、ROM、RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成了一台完整的数字电子计算机。该器件采用高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性好且性价比高的设计方案。随着集成电路技术的发展,单片机功能逐渐增强,由单片机构成的计算机应用系统的功能也日益增强,进一步深化了单片机在工业控制、自动检测、智能仪器仪表、家用电器等领域的突出地位2。STC系列单片机功能基本相同,在此以STC89C51为代表进行简单介绍。1. STC

15、89C51单片机引脚STC89C51单片机封装引脚如图2-1所示。T2/P1.0 T2EX/P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST RXD/P3.0 TXD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 WR/P3.6 RD/P3.7 XTAL2 XTAL1 T1/P3.5 VSS VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA ALE/PROG PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12

16、P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 311132 33 34 35 36 37 38 39 40 DIP40 图2-1 STC89C51单片机封装引脚图STC89C51有4个8位可编程并行I/O口(P0、P1、P2、P3),1个全双工串行口,2个定时器/计数器,2个外部中断输入口。各个引脚的功能说明如下:GND:接地端。VCC:电源端,接+5V。XTAL1:接外部石英晶体的一端。在单片机内部,它是反相放大

17、器的输入端,这个放大器构成了片内振荡器。当采用外部时钟时,该引脚作为外部振荡的输入端。XTAL2:接外部石英晶体的另外一端。在单片机内部,它是反相放大器的输出端。RST:该引脚为单片机的上电复位引脚,高电平有效。当单片机电源电压达到单片机工作电压、同时单片机振荡器正常工作后,该引脚上必须持续两个机器周期的高电平,才可能实现复位操作,使单片机回到初始状态。ALE/PROG:地址锁存允许。 PSEN:外部程序存储器读允许。:为0时,单片机只访问外部程序存储器。P0口:P0数据/低八位地址复用总线端口。P1口:P1静态通用端口。P2口:P2高八位地址总线动态端口。P3口:P3双功能静态端口。P3口也

18、可作为STC89C51的一些特殊功能口。如:P3.0为串行输入口(RXD),P3.1为串行输出口(TXD),P3.2为外部中断0(INT0),P3.3为外部中断1(INT1),P3.4为定时/计数器0的外部输入口(T0),P3.5为定时/计数器1的外部输入口(T1),P3.6为外部数据存储器写选通(WR),P3.7为外部数据存储器读选通(RD)。由于本设计中定时器的应用很多而且很重要,在此对定时器/计数器T1、T0的使用方法进行简单说明:STC89C51单片机内有两个可编程的定时器/计数器T1、T0。两个定时器都具有定时器和计数器两种工作模式,四种工作方式(方式0、方式1、方式2和方式3),其

19、控制字均在相应的特殊功能存储器中,通过对它的特殊功能寄存器编程,用户可方便地选择定时器/计数器的两种工作模式和四种工作方式。定时器/计数器T0由特殊功能寄存器TH0、TL0构成,定时器/计数器T1由特殊功能寄存器TH1、TL1构成。特殊功能寄存器TMOD用于选择定时器/计数器T1、T0的工作模式和工作方式。特殊功能寄存器TCON用于控制T1、T0的启动和停止计数,同时包含了T1、T0的状态。TMOD、TCON这两个寄存器的内容由软件设置3。2. STC89C51单片机特点STC89C51单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,其主要特点

20、:(1) 增强型6时钟/机器周期,12时钟/机器周期,8051CPU。(2) 工作电压:3.45.5V。(3) 工作频率040MHZ,实际工作频率可达48MHZ。(4) 应用程序空间8K字节。(5) RAM存储容量为128B,可扩展至64KB。(6) I/O口有32个,P0口开漏输出,作为I/O口需要上拉;P1、P2、P3口是准双向/弱上拉。(7) ISP,无需专用编程器/仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成。(8) 具有看门狗,冷启动后为关闭状态。(9) 工作温度范围:075。(10) STC89C51单片机的抗干扰与抗EMI辐射能力。2.2 KXM

21、12864J简介型的液晶显示模块种类繁多,而且大部分液晶显示模块都自带驱动,使用时直接连接控制器件即可。型的液晶显示模块分为带字库的和不带字库的。带字库的液晶显示模块可以直接从字库中调用汉字或字符,减少了代码长度,方便用户使用。不带字库的液晶显示模块,每个字符要逐个按一定的规则送出显示,但掌握一定的使用方法后使用会很方便,可以显示汉字、字符和图形。不带字库的液晶显示模块价格相对便宜又是其一大优势。本次设计选用KXM12864J显示模块。KXM12864J是一种不带字库的图形点阵液晶显示器。它主要采用动态驱动原理由行驱动控制器和列驱动器两部分组成了128(列)64(行)的全点阵液晶显示。此显示器

22、采用了COD的软封装方式(COD:英文全称为CacheonDie,芯片内集成缓存),通过导电橡胶和压框连接LCD,使其寿命长,连接可靠。1. KXM12864J的特点(1) 工作电压为5V10%,可自带驱动LCD所需的负电压。(2) 全屏幕点阵,点阵数为128(列)64(行),可显示8(行)4(行)个(1616点阵)汉字,也可完成图形,字符的显示。(3) 与CPU接口采用5条位控制总线和8位并行数据总线输入输出,适配M系列时序。(4) 内部有显示数据锁存器。(5) 简单的操作指令。如显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。2. KXM12864J的内部结构KXM12864

23、J内部主要包括以下部分:数据显示RAM(DDRAM)、I/O缓冲器(DB0DB7)、输入寄存器、输出寄存器、指令寄存器、状态字寄存器、地址寄存器、Y地址计数器、Z地址计数器、显示起始行寄存器、显示开/关触发器、复位端RES、背光接线4。KXM12864J的内部原理图如图2-1所示。图2-1 KXM12864J原理图3. KXM12864J的软件应用规则KXM12864J的指令功能:(1) 读状态字状态字是MPU了解LCM(液晶显示模块)当前状态,或LCM向MPU提供其内部状态的唯一的信息渠道。BUSY表示当前LCM接口控制电路运行状态。BUSY=1表示LCM正在处理MPU发过来的指令或数据。此

24、时接口电路被封锁,不能接受除读状态字以外的任何操作。BUSY=0表示LCM接口控制电路已外于“准备好”状态,等待MPU的访问。ON/OFF表示当前的显示状态。ON/OFF=1表示关显示状态,ON/OFF=0表示开显示状态。 RESET表示当前LCM的工作状态,即反映RES端的电平状态。当RES为低电平状态时,LCM处于复位工作状态,标志位RESET=1。当RES为高电平状态时,LCM为正常工作状态,标志位RESET=0。在指令设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时,MPU对LCM的操作才能有效。因此MPU在每次对LCM操作之前,都要读出状态字判断BUSY是否为“0”

25、。若不为“0”,则MPU需要等待,直至BUSY=0为止。(2) 显示开关设置该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态。D位为显示开/关的控制位。当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中ON/OFF=0。当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中ON/OFF=1。(3) 显示起始行设置该指令设置了显示起始行寄存器的内容。LCM通过CS的选择分别具有64行显示的管理能力,该指令中L5L0为显示起始行的地址,取值在03FH(164行)范围内,

26、它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。(4) 页面地址设置该指令设置了页面地址X地址寄存器的内容。LCM将显示存储器分成8页,指令代码中P2P0就是要确定当前所要选择的页面地址,取值范围为07H ,代表第18页。该指令规定了以后的读/写操作将在哪一个页面上进行。(5) 列地址设置该指令设置了Y地址数计数器的内容,LCM通过CS的选择分别具有64列显示的管理能力,C5C0=03FH(164)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。Y地

27、址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通。KXM12864J的接口时序:(1) 写操作将8位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加一。时序如图2-2所示。图2-2 写操作时序图(2) 读操作该操作将LCM接口部的输出寄存器内容读出,然后列地址计数器自动加一。时序如图2-3所示。图2-3 读操作时序图4. KXM12864J的显示方法点阵式LCD的取模方式有逐列式、逐行式、列行式、行列式等。

28、本设计中选用列行式。列行式就是:先选择点阵的第一页,逐列查表显示一个汉字的上半部分,再选择第二页,逐列查表显示一个汉字的下半部分。显示字符,一页就可以显示完整一个。每次显示要先通过指令选中显示位置的页和列,然后将字模逐个送入。(1) 汉字取模应用51单片机工具箱取汉字字模。取字模的方法以汉字“唐”为例进行介绍。设定每个汉字大小为1616。首先将汉字“唐”写入汉字字模生成工具1616的点阵中,如图2-4所示。图2-4 汉字1616点阵图然后就可以生成“唐”字字模,“0xFF,0xFF,0xBF,0xBB,0xD8,0x1B,0xDB,0xAB,0x7A,0xAB,0x9A,0xAB,0xDA,0

29、xAB,0xF2,0xAB,0xEA,0xAB,0xDA,0xAB,0x1A,0xAB,0xDE,0xFB,0xDD,0x7B,0xDB,0xBB,0xD7,0xAB,0xDF,0xF7”。(2) 字符取模51单片机工具箱不可以实现字符取模,没有找到相应的取模工具,使用了一种比较传统的取模方式。以字符“T”为例进行介绍。设定每个字符大小为58。首先将字符“T”写入58的点阵中,如图2-5所示。图2-5 字符58点阵图然后每列从下往上读,亮的点为“1”,暗的点为“0”。读出“T”的二进制字模“00000001,00000001,01111111,00000001,00000001”。最后转换为十

30、六进制字模“0x01,0x01,0x7F,0x01,0x01”。3 系统硬件的设计俄罗斯方块游戏系统硬件电路的设计分为四大模块,分别是单片机最小系统模块、LCD显示模块、独立按键模块和声音模块。单片机最小系统显示模块按键模块PC机声音模块硬件电路整体框图如图3-1所示。图3-1 硬件电路整体框图1. 单片机最小系统模块,包括电源电路、复位电路、振荡电路和下载接口电路。2. LCD显示模块,采用KXM12864J型液晶显示器显示图形的形状、游戏得分游戏时间、游戏速度和游戏等级等信息。3. 独立按键模块,设定六个独立按键进行游戏操作,功能分别为左移、右移、快速下移、翻转、变形、确定和暂停,其中确定

31、和暂停功能由一个独立按键来实现。4. 声音模块,主要由蜂鸣器构成,可以在不同的游戏进程发出不同的音乐,增加了游戏的娱乐性。系统总体设计电路原理图见附录一。3.1 单片机最小系统的设计 单片机最小系统包括:V直流电源电路、振荡电路、复位电路和下载电路。下面分模块进行介绍。3.1.1 电源电路的设计设计中单片机和LCD显示屏所需电源均为V直流电。一般将220V交流电转化为稳定的V直流电的电路设计流程是把单相交流电经过电源变压器、整流电路、滤波电路和稳压电路转换成稳定的直流电5,其框图如图3-2所示。220V 50HZ整流电路滤波电路电源变压 器稳压电路+5v图3-2 电源电路框图由于上述供电方法需

32、要220V到12V的电源变压器,这种变压器相对系统来说体积偏大,而且偏重。本次设计选择USB供电和外部供电。电路图如图3-3所示。图3-3 电源电路图1. USB供电在很多情况下使用USB供电比较方便,不必携带不方便的AC适配器。在设计过程中电路板直接和笔记本电脑连接就可以供电。 所有主机USB设备(如PC和笔记本电脑)至少可以供出500mA电流或每个USB插口提供5个“单元负载”。在USB述语中,“一个单元负载”是100mA。自供电USB插孔也可以提供5个单元负载。总线供电USB插孔保证提供一个单元负载(100mA)。所有USB设备在连接主机时需要主机对其加以识别。在识别过程中,主机决定US

33、B设备的电源以及是否为其供电,对于被认可的设备将负载电流从100mA增大到500mA。USB供电方式,可以选择比较简单的电路来实现。如图3-3所示,在电路板上只需要有一个USB接口,传输过来的电流经过滤波后接电源开关。最后连接上熔断器,在电流过大时熔断器首先被烧坏使主板断电,可以有效的保护电路主板6。2. 外部电源供电USB供电可能出现供电不足,在此又设计了外部供电。外部供电方式,首先需要用电源变压器将220V交流电转变为直流电,然后经过滤波和7805稳压后与USB供电电路重合。7805的引脚1是输入脚,接+8+20V直流电源。引脚2是接地脚,接直流电源的负极。引脚3是输出脚,输出+5V的稳定

34、电压,确保在输入交流电压波动或负载和温度变化时输出电压的稳定。后面电路与USB供电电路重合,如图3-3所示。3. 电源指示灯电路为了可以直观的观测到电源接通情况,在电源设计部分增加了电源指示灯电路,如图3-4所示。图3-4 电源指示灯电路图此电路由一个发光二极管和一个1K的限流电阻构成,两端连接电路板电源的正负极。当按下电源开关时,电路板得电,同时指示灯亮。3.1.2 振荡电路的设计单片机以晶体振荡器的振荡周期为最小的时序单位,片内的各种微操作都以此周期为时序基准。STC89C53可以选用外部振荡方式和内部振荡方式。内部振荡方式所得的时钟信号比较稳定,实用电路中实用较多,本设计选用内部振荡方式

35、。STC89C53中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶振一起构成自激振荡器,振荡电路如图3-5所示。图3-5 振荡电路图外接晶振及电容C2、C3接在放大器的反馈回路中构成并联振荡电路。外接电容C2、C3起稳定振荡频率,快速起振的作用。对外接电容C2、C3虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,电容使用30pF10pF,而如果使用陶瓷谐振器则选择30pF10pF 7。在此选用石英晶体,电容使用30pF。3.

36、1.3 复位电路的设计STC89C53单片机的复位引脚RST出现2个机器周期(1个机器周期为12个振荡周期)以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机将处于循环复位状态不在执行程序。复位操作分可分为上电复位和开关复位两种方式。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,单片机运行期间,如果发生死机,用按下复位按钮操作使单片机复位。本设计中选用上电复位和开关复位并存的复位方式,如图3-6所示。基本原理是:上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复

37、位的操作。通常选择C=1030uF,R=101 k。本设计中选择C=30uF,R=10 k。图3-6 复位电路图如果不仅要使单片机复位,而且还要使单片机的外围芯片也同时复位,上述电路中应进行少许调整。单片机的复位操作使单片机进入初始化过程,其中包括使程序计数器PC=0000H,P0P3=FFH,SP=07H,其他寄存器从H地址单元开始执行8。单片机复位后不改变片内RAM区中的内容,特殊功能寄存器复位后的状态见表3-1所示。表3-1 特殊工作寄存器复位状态表特殊功能寄存器初始状态特殊功能寄存器初始状态A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL

38、00HTH100HDPH00HTL100HP0P3FFHSBUF不定IE*00000BSCON00HIP0*00000BPCON0*B值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的初始化部分是十分必要的。说明:表中符号*为随机状态;A=00H,表明累加器已被清零;PSW=00H,表明选寄存器0组为工作寄存器组;SP=07H,表明堆栈指针指向片内RAM的H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;P0P3FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;IP00000B,表明各个中断源处于低优先级

39、;IE000000B,表明各个中断均被关断。3.1.4 下载电路的设计本次设计,软件程序是通过串行编程方式写入单片机Flash存储器的,即ISP编程方式,需要电平转换芯片MAX232。同时上位机与系统的连接需要一条下载线,下载线的一端是USB口接PC机,另一端是九针的串行口接系统电路板。1. ISP简介STC系列单片机提供ISP在线系统可编程,可方便使用RS232接口直接下载程序。ISP的好处是:不用购买通用编程器,单片机在系统上即可下载/烧录用户程序,而无须将单片机从已生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。这种方法极大地方便了软件编写过程中的调试工作。STC89系列单

40、片机在出厂之前已在单片机内部固化有ISP系统引导程序,配合ISP端的控制程序即可将用户的程序代码下载进单片机内部,故无需编程器,而且速度比通用编程器快。2. MAX232简介MAX232芯片(如图3-7所示)是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用V电源供电。内部结构基本可分三个部分:第一部分是电荷泵电路。由芯片的1、2、3、4、5、6脚和4只电容构成。功能是产生V和V两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由芯片的7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14

41、脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出11。第三部分是供电。15脚GND、16脚VCC(V)。16 15 14 13 12 11 10 91121314151617181C1+ V+ C1- C2+ C2- V- T2OUT R2IN VCC GND T1OUT R1IN R1OUT T1IN

42、T2IN R2OUT 图3-7 MAX232芯片引脚图3. ISP下载电路图3-8 下载电路图如图3-8所示STC系列单片机下载电路需要一片MAX232及五只电容即可,电路简单易行。两个发光二极管在下载程序时会不断闪烁,方便用户观察。下载程序时还需要使用STC提供的下载软件STC_ISP.exe,软件界面如图3-9所示。图3-9 软件界面图下载步骤:(1) 选择MCU类型:STC89C53RC。(2) 将编译链接代码文件形成的为扩展的文件调入缓冲区,每次调入,都会使校验和改变。(3) 选择PC串口,若没有串口,则需要USB转串口转换器。波特率可以使用默认值;若通信不正常,可以将波特率值降低后再

43、试,知道通信正常。(4) 不要改动无关的一些默认值。(5) 点击“Download/下载”按钮,屏幕提示单片机上电,这时PC等待单片机冷启动(给单片机通电),随后就可以看到HEX文件写入单片机。给单片机断电,点击“Donload/下载”按钮,单片机上电,消息框提示握手成功,几秒种后程序下载完毕,单片机自动开始运行下载的程序9。3.2 LCD显示电路的设计LCD显示电路部分为该设计系统的主要部分。在前面已经介绍了LCD显示模块KXM12864J的显示原理,在此不再重复叙述。KXM12864J的D0D7端口与单片机P0口相连,用于数据传输(单片机的P0口连接了10K的排阻,用于拉高电平)。E、R/

44、W、RS、CS1、CS2分别与单片机的P2.0P2.4相连,用于控制。显示电路图如图3-10所示。图3-10 显示电路图KXM12864J的接线需要注意以下几点:1. 在KXM12864J和单片机连接。不同的12864LCD部分引脚功能不同,而且不对应。连接时应对应所用型号LCD的引脚图逐个接线,以免因接线错误烧坏LCD。2. KXM12864J背光的连接。KXM12864J的19、20引脚分别为LED+和LED-,是背光电源引脚。在接线时,LED+要接V电源,LED-接系统的地,如图3-11所示。LCMLCM20195V图3-11 背光电路图3. KXM12864J亮度调节的电路连接。KXM

45、12864J的18引脚为VEE,输出-10V的负电压(单电源供电),3引脚为VLCD是LCD的驱动负电压。KXM12864J需要连接一个电位器,用于调节背光的亮度。设计中选用电位器的可调范围为020K。线路连接方式如图3-12所示。LCD-VLCDLCD-VEER320KVCC 图3-12 亮度调节电阻连接图3.3 按键电路的设计 电路板的功能键可以使用矩阵键盘,也可以使用独立按键,在本设计中采用独立按键。根据系统功能需要,使用了六个独立按键。四个操作按键的功能分别为左移、快速下移、右移、翻转,分别与单片机的P1.0P1.3口相接;变形键和确定/暂停键分别与单片机的P1.4P1.5口相接。当有

46、键按下时,则对应端口电平被拉低。系统中设置了定时器中断,定时对按键进行扫描,当扫描到有键按下时,执行相应程序完成相应功能。键盘接口电路如图3-13所示。图3-13 键盘接口电路3.4 声音电路的设计为了增加游戏的娱乐性系统中增设由蜂鸣器产生的游戏声音,通过编程控制蜂鸣器在游戏进程中发出不同的音调。这部分电路设计比较简单,由一个蜂鸣器,一个三极管驱动和一个200的限流电阻组成。当向蜂鸣器送入脉冲时,蜂鸣器就会发出声音10。改变输入脉冲频率蜂鸣器所发声音的音调就会发生变化。蜂鸣器电路图如图3-14所示。图3-14 蜂鸣器电路4 系统软件的设计本系统软件设计主要分为三部分:LCD显示部分、功能按键部

47、分和音乐部分。主程序中有两个循环:在一个图形下落到底时将下一个图形设定为当前图形并产生新的下一个图形为大循环,当前下落图形的状态检测和自动下移为小循环换。本设计软件编程主程序流程图如图4-1所示。程序清单见附录二。开始给定时器0赋初值开定时器初始化否计时显示按键操作下落到底?是否音乐闯关成功?闯关失败?产生图形否否有满行?消行积分是图形下移一行是是图4-1 主程序流程图4.1 LCD显示子程序显示分为两部分:左半屏显示游戏;右半屏显示游戏进程的相关信息,包括下一个图形形状、当前速度、游戏积分、游戏时间和游戏等级。本设计选用的KXM12864J型LCD,为128列、8页(每页8行)的点阵显示屏。

48、它的使用有两个基本操作:送指令和送数据。通过“page0x7; page0xb8; lcdCmd(page);”语句选定显示屏的页;“column0x40;column0x3f; lcdCmd(column);” 语句选定显示屏的列。主要用于显示字符、显示图形、设定游戏显示区域和清屏。4.1.1 显示字符子程序否开 始选取字模首位置设定显示起始列colume,i=5+columei64?是选择右屏选择左屏选择页、列写入字模+i,i5+colume?否是结 束图4-2 LCD显示流程图显示流程图如图4-2所示。每个字符为58点阵,即字符占5列、8行的点阵,采用列行式的输入方法。每个字符有五个字模

49、,字符取字模后存入asii数组。通过选择asii的脚标选择需要输出字符的字模(取模方式已在LCD简介中介绍)。4.1.2 显示图形子程序本设计定义了七个图形,每个图形由四个小方块构成,小方块为33的点阵。图形定义在cube数组中13。七个图形的形状如图4-3所示。图4-3 七种显示图形 每个图形的显示,是将小方块写入指定区域。图形显示流程图如图4-4所示。开 始i 4 ?是否写入图形的模选择行、列i=0i=i-1结 束图4-4 中断程序流程图4.1.3 设定游戏显示区域子程序本设计将游戏显示区设定在左半屏,显示区宽度为48列,高度为62行。可以容纳33的小方块16列,21行。按照所用显示屏的列

50、行式显示方法,将左半屏的最顶行和最底行写入高电平,显示屏左起第2列和第51列送入高电平,其它位置写入“0”,这样就可以在蓝色显示屏上显示出一个白框。4.1.4 清屏子程序清屏包括整体清屏和部分清屏,在程序除的位置再写入“0”即可。清屏的应用,可使图形和字符清晰显示,使显示界面更加中选择要清整洁。部分程序如下所示。void lcdClear(void) uchar i,page; CS1=0; CS2=1; for(page=0;page8;page+) lcdSetPage(page); lcdSetColumn(0); for(i=0;i64;i+)lcdWriteByte(0); CS1=

51、1; CS2=0; for(page=0;page8;page+) lcdSetPage(page); lcdSetColumn(0); for(i=0;i64;i+) lcdWriteByte(0); 4.1.5 显示计时子程序计时流程图如图4-5所示。中断入口t0ms=50? downtimegapdowntimegap=50?产生中断?+s20=20?是是否否t0ms=0?是是是否否按键扫描downtimegap+,t0ms=+t0ms%100+m+s=60?结 束否改变“:”状态图形下移一行设置中断初值,开中断图4-5 计时程序流程图本设计在按键扫描、游戏计时、图形自动下移中均应用到时

52、间。在此利用单片机的定时器T0使用方式1来实现所有的计时和定时。所用的定时器方式在每次中断后要重新载入初值,设置每次中断的时间为10ms。按键每次中断扫描一次。变量t0ms每次中断加一,计时时间每1s改变一次,在变量t0ms=100时改变时间显示值;分与秒之间的“:”每0.5ms改变一次状态,在变量t0ms=50时改变状态。在没有任何按键操作时当前图形每隔一段时间自动下移一行,变量downtimegap每次中断加一,当downtimegap=50时图形下移,并将downtimegap清零。4.1.6 消行积分子程序俄罗斯方块游戏系统的设计每当一个图形下落到设定区域底部就会检测是否有满行。如果有

53、满行则将此行逐行下移,移至最低端时将其消除,每消除一行就获得一分,一次消除delete行,可获得deletedelete分,由于图形最长由四个小方块组成所以最多一次只可以消除四行。若未有满行则图形仍会继续下落,每个图形的摆放都会对下一个图形造成影响,当图形累积到最顶行时游戏结束。开 始i = 0 ?第i(j)行满行?j = 0 ?是是否否将i行内容下移一行i = i-1score= score+deletedelete是否清除第0行,+ delete ,- -j结 束消行积分环节的流程图如图4-6所示。图4-6 消行积分流程图4.1.7 闯关设置子程序本游戏共设置10个关卡,每20分闯一关。打

54、开游戏提示是否开始游戏,界面显示“NEW GAME”按确定键就可以开始游戏。游戏每上升一关图形的下落速度就会加快一级,当玩家闯入第六关时变量“cdoor=1”有效(开始游戏是cdoor初始化为0)变形键可以使用。当玩家闯关失败时,界面将显示“GAME OVER”,延时后提示玩家是否开始新游戏,界面显示“NEW GAME”,再次按确定键就可以重新开始游戏。当玩家闯关成功时,界面将显示“GOOD JOB”,延时后提示玩家是否再次闯关,界面显示“AGAIN”,按下确定键界面显示“NEW GAME”再次按确定键就可以开始新游戏。开 始score40?score20?是是否否speed=1,level=

55、1显示Score、Speed、level是否speed=10,level=10speed=2,level=2score200?score120?结 束否是speed=6,level=6,cdoor=1,闯关设置的流程图如图4-7所示。图4-7 闯关设置流程图4.2 按键操作子程序本设计使用的按键包括左移键、右移键、快速下移键、变形键、翻转键、确定键和暂停键。确定键和暂停键为复用键,该键在游戏进行过程中为暂停功能,在游戏开始前或结束一场游戏时为确定键功能。按键扫描部分位于中断子程序中,每10ms扫描一次。每个按键按下10ms后若此按键仍然按下则变量keyflag=1有效,在主函数的循环中执行相应

56、的按键操作,否则当做按键抖动不执行操作。左移键、右移键、快速下移键每按下一次图形向相应方向移动一行,若按下0.5s后(此时t0ms1=PUSHON)此键仍持续按下则每100ms 使图形向相应方向移动一次。翻转键每按下一次图形将按顺时针方向旋转。变形键在玩家闯入第六关时才可以使用,每按下一次,系统将重新选择一个图形赋给当前下落图形。确定键是用于游戏开始或结束时游戏玩家进行确认的按键。为方便玩家,增设了暂停键。当按下一次暂停键时变量zt取反,当zt=0时游戏处于暂停状态,zt=1时继续游戏。下面以左移操作为例说明按键的操作流程,如图4-8所示。否开 始清除图形列减一是列加一结 束写入原图形是否到达边界?图4-8 左移操作流程图开 始cdoor=1?是否有键按下?是是否否是否变形左移右移翻转下移暂停10ms后是否仍按下?key=5?key=3?key=2?key=1?key=0?key=5?是是是是是是否否否否否结 束按键扫描流程图如图4-9所示。图4-9 按键扫描流程图4.3 声音子程序 本设计利用蜂鸣器设置了声音部分。程序中定义蜂鸣器为BEEP,它对应着端口P3.6。当向BEEP送入脉冲时,蜂鸣器响;向BEEP持续送入高电平时,关蜂鸣器14。要想使蜂鸣器发出不同的音调就要改变送入BEEP脉冲的频率。部分程序如下所示:vo

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!