51单片机汉字显示综述_第1页
51单片机汉字显示综述_第2页
51单片机汉字显示综述_第3页
51单片机汉字显示综述_第4页
51单片机汉字显示综述_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的液晶汉字显示屏的设计摘摘 要要:本课题为基于 51 单片机的 LCD 汉字显示技术。基于在对单片机研究的基础上,本文提出了一种以 AT89C51 为核心的单片机构成液晶显示器的方法。该钟的显示电路采用 160128 点阵的图形点阵的液晶屏。关键字关键字: 单片机, LCD1引言引言 .- 1 -1.1课题背景 .- 2 -1.28051 单片机输入输出口 .- 2 -1.38051 单片机的指令时序 .- 4 -2单片机的编程软件及仿真软件介绍单片机的编程软件及仿真软件介绍 .- 6 -2.1.1Proteus的简介.- 6 -2.1.2Keil软件及其调试功能简介.- 7 -2.

2、1.3软件连接使用.- 9 -3控制系统硬件设计控制系统硬件设计 .- 11 -3.1硬件电路图 .- 11 -3.2显示部分 .- 11 -4软件设计软件设计 .- 12 -4.1程序仿真 .- 12 -5结结 论论 .- 13 -6 6谢谢 辞辞 .- 13 -7参考文献参考文献 .- 14 -附录:程序.- 15 -1引言引言1.1 课题背景课题背景目前单片机已渗透到生活的各个领域,几乎很难找到哪个领域没有单片机的足迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机

3、、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说全自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。科技越发达,智能化的东西就越多。看来学习单片机是社会发展的必然需求。 单片机即单片微型计算机,又称为微控制器,它的体积小,功能强,可靠性好,价格又便宜,成为传统工业技术改造和新产品更新换代的理想品种,具有广阔的发展前景,其中最具有代表性的就是Intel公司的8051系列单片机。 本文在对单片机研究的基础上,以 AT89C51为核心控制芯片,对汉字显示屏进行设计与应用,通过对其原理深入分析,探讨

4、以AT89C51单片机构成LCD液晶显示屏的实现方法。1.2 8051 单片机输入输出口单片机输入输出口8051有4组8位1/0口:P0, P1,P2和P3口,P1、P2和P3为准双向口, PO口则为双向三态输入输出口,下面分别介绍这几个口线:PO口和P2口:PO口和P2口电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,另外还有一个数据输出的驱动和控制电路。这两组口线用来作为CPU与外部数据存储器、外部程序存储器和 I/0扩展口,而不能像 Pl、P3直接用作输出口。它们一起可以作为外部地址总线,PO口身兼两职,既可作为地址总线,也可作为数据总线57。P2口作为外部数据存储器或程序存储器的

5、地址总线的高8位输出口AB8-AB15。 PO口由ALE选通作为地址总线的低 8位输出ABO-AB7。外部的程序存储器由 PSEA信号选通,数据存储器则由 WR和RD读写信号选通, 8051最大可外接 64kB的程序存储器和数据存储器。P1口:P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时, 1写入锁存器, Q(非)=0,内上拉电阻将电位拉至 “1”,此时该口输出为 1,当0写入锁存器, Q(非)=1,输出则为 0。作为输入口时,锁存器置 l, Q(非)=0,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,P1口常称为准双向口。需要说明

6、的是,作为输入口使用时,有两种情况,其一是:首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读一修改一写操作,像 JBC(逻辑判断 )、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。其二是 :读P1口线状态时,打开三态门 G2,将外部状态读入 CPU。P3口:P3口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。由于第二功能信号有输入输出两种情况,分别加以说明。P3口的输入输出及 P3口锁存器、中断、定时 /计数器、串行口和特殊功能寄存器有关, P3口的第一功能和P1口一

7、样可作为输入输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。着重讨论P3口的第二功能,P3口的第二功能各管脚定义如下 : P3.0 串行输入口 (RXD) P3.1 串行输出口 (TXD) P3.2 外中断0 (INTO) P3.3 外中断1(INT1) P3.4 定时/计数器0的外部输入口 (TO) P3.5 定时/计数器1的外部输入口 (T1) P3.6 外部数据存储器写选通 (WR) P3.7 外部数据存储器读选通 (RD)第二功能为输出引脚,当作 I/0口使用时,第二功能信号线应保持高电平与非门开通,以维持从锁存器到输出口数据输出通路畅通。当作第

8、二功能口线用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通,从而实现第二功能信号的输出。对于第二功能为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。而作为 I/0口线输入端时,取自三态缓冲器的输出端。这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置 “1”。1.3 8051 单片机的指令时序单片机的指令时序时序是用定时单位来描述的, 8051的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来分别加以说明。节拍与状态 :把振荡脉冲的周期定义为节拍 (为方便描述,用 P

9、表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态 (用S表示),这样一个状态就有两个节拍,前半周期相应的节拍定义为 1(P) ,后半周期对应的节拍定义为 2(P)。机器周期 :8051有固定的机器周期,规定一个机器周期有 6个状态,分别表示 S1-S6。而一个状态包含两个节拍,那么一个机器周期就有12个节拍,可以记着SIP2,SIP2. S6P1, S6P2,一个机器周期共包含 12个振荡脉冲,即机器周期就是振荡脉冲的 12分频,显然,如果使用 6MHZ的时钟频率,一个机器周期就是 2us,而如使用 12MHz的时钟频率,一个机器周期就是 lus。指令

10、周期 :执行一条指令所需要的时间称为指令周期,8051的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期。8051的指令时序 :8051指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:单字节指令单机器周期 ;单字节指令双机器周期 ;双字节指令单机器周期 ;双字节指令双机器周期 ;三字节指令双机器周期 ;单字节指令四机器周期 (如单字节的乘除法指令 )。单字节单周期指令 :单字节单周期指令只进行一次读指令操作,当第二个AL

11、E信号有效时, PC并不加1,读出的还是原指令,属于一次无效的读操作。双字节单周期指令 :这类指令两次的 ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个 ALE信号有效时读的是操作数。单字节双周期指令 :两个机器周期需进行四次读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。单字节双周期指令有一种特殊的情况,像 MOVX这类指令,执行这类指令时,先在 ROM中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会

12、再有读指令操作动作。外部程序存储器 (ROM)读时序: 8051外部程序存储器读时序图时 PO口提供低8位地址, P2口提供高 8位地址, S2结束前, PO口上的低 8位地址是有效的,之后出现在 PO口上的就不再是低 8位的地址信号,而是指令数据信号。当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求在S2期间必须把低 8位的地址信号锁存起来,这时是用 ALE选通脉冲去控制锁存器把低 8位地址予以锁存, P2口只输出地址信号,而没有指令数据信号。整个机器周期地址信号都是有效的,因而无需锁存地址信号。从外部程序存储器读取指令,必须有两个信号进行控制,除了上述的ALE信号,还有一个 P

13、SEN(外部ROM读选通脉冲 )。PSEN开始有效,直到将地址信号送出和外部程序存储器的数据读入 CPU后方才失效,接着从 S4P2开始执行第二个读指令操作。外部数据存储器 (RAM)读时序: 从ROM中读取需执行的指令,而 CPU对外部数据存储的访问是对 RAM进行数据的读或写操作,属于指令的执行周期,读或写是两个不同的机器周期,但他们的时序却是相似的,只对RAM的读时序进行分析。上一个机器周期是取指阶段,是从 ROM中读取指令数据,接着的下个周期才开始读取外部数据存储器 RAM中的内容。在 S4结束后,先把需读取RAM中的地址放到总线上,包括 PO口上的低 8位地址AO-A7和P2口上的高

14、 8位地址A8-A15。当RD选通脉冲有效时,将 RAM的数据通过 PO数据总线读进CPU。第二个机器周期的 ALE信号仍然出现,进行一次外部 ROM的读操作,但是这一次的读操作属于无效操作。对外部RAM进行写操作时, CPU输出的则是 WR(写选通信号 ),将数据通过P0数据总线写入外部存储中。2单片机的编程软件及仿真软件介绍单片机的编程软件及仿真软件介绍2.1.1 Proteus 的简介的简介Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件9。它运行于 Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现

15、了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C 调试器、SPI 调试器、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000 系列、8051 系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11 系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能

16、;同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE 分析于一身的仿真软件,功能极其强大。Proteus主要用于绘制原理图并可进行电路仿真,Proteus ARES 主要用于PCB 设计。ISIS 的主界面主要包括:1 是电路图概览区、2 是元器件列表区、3 是绘图区。绘制电路图的过程如下:单击2 区的P 命令即弹出元器件选择(Pick Devices)对话框,Proteus 提供了丰富的元器件资源,包括30 余种元器件库,有些元器件库还具有子库。利用该对话框提供的关键词(Keywords)搜索功能

17、,输入所要添加的元器件名称,即可在结果(Results)中查找,找到后双击鼠标左键即可将该元器件添到2 区,待所有需要的元器件添加完成后点击对话框右下角的OK 按钮,返回主界面。接着在2 区中选中某一个元器件名称,直接在3 区中单击鼠标左键即可将该元器件添加到3 区。由于是英国的软件,特别要注意的是绘图区中鼠标的操作和一般软件的操作习惯不同,这正像是司机座位和人行道走向和国内不同一样。单击左键是完成在2 区中被选中的元器件的粘贴功能;将鼠标置于某元器件上并单击右键则是选中该元器件(呈现红色),若再次单击右键的话则删除该元器件,而单击左键的话则会弹出该元器件的编辑对话框(Edit Compone

18、nt);若不需再选中任何元器件,则将鼠标置于3 区的空白处单击右键即可;另外如果想移动某元器件,则选中该元器件后再按住鼠标左键即可将之移动。元器件之间的连线方法为:将鼠标移至元器件的某引脚,即会出现一个“”符号,按住鼠标左键后移动鼠标,将线引至另一引脚处将再次出现符号“”,此时单击鼠标左键便可完成连线。连线时在需拐弯的地方单击鼠标左键即可实现方向的改变。绘制好电路后,可利用1 区的绿色边框对3 区的电路进行定位。2.1.2 Keil 软件及其调试功能简介软件及其调试功能简介目前流行的 51 系列单片机开发软件是德国 Keil 公司推出的 Keil C51 软件,它是一个基于 32 位 Wind

19、ows 环境的应用程序,支持 C 语言和汇编语言编程,其 6.0 以上的版本将编译和仿真软件统一为 Vision(通常称为 V2) 。Keil 提供包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:Vision IDE 集成开发环境(包括工程管理器、源程序编辑器、程序调试器) 、C51 编译器、A51 汇编器、LIB51 库管理器、BL51 连接/定位器、OH51 目标文件生成器以及 Monitor-51、RTX51 实时操作系统。应用 Keil 进行软件仿真开发的主要步骤为:编写源程序并保存建立工程并添加源文件设置工程编译/汇编、连接,

20、产生目标文件程序调试。Keil 使用“工程” (Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单 FileNew,在源程序编辑器中输入汇编语言或 C 语言源程序(或选择 FileOpen,直接打开已用其他编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单 ProjectNew Project,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2) ;工程保存后会立即弹出一个设备选择对话框,选择 CPU 后点确定返回主界

21、面。这时工程管理窗口的文件页(Files)会出现“Target1” ,将其前面+号展开,接着选择 Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group Source Group1” ,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其他文件) 。加入文件后点 close 返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的 Target1,再选择 ProjectOption for Target Target1(或

22、点右键弹出快捷菜单再选择该选项) ,打开工程属性设置对话框,共有 8 个选项卡,主要设置工作包括在 Target 选项卡中设置晶振频率、在Debug 选项卡中设置实验仿真板等,如要写片,还必须在 Output 选项卡中选中“Creat Hex Fi” ;其他选项卡内容一般可取默认值。工程设置后按 F7 键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。 成功编译/汇编、连接后,选择菜单 DebugStart/Stop Debug Session(或按Ctrl+F5 键)进入程序调试状态,Keil 提供对程序的模拟调试功能,内建一个功能强大的仿真 CPU 以模拟执行程序。Ke

23、il 能以单步执行(按 F11 或选择DebugStep) 、过程单步执行(按 F10 或选择 DebugStep Over) 、全速执行等多种运行方式进行程序调试。如果发现程序有错,可采用在线汇编功能对程序进行在线修改(DebugInline Assambly) ,不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(DebugInsert/Remove Breakpoint 或 DebugBreakpoints等) 。在模拟调试程序

24、后,还须通过编程器将.hex 目标文件烧写入单片机中才能观察目标样机真实的运行状况。Keil 软件 Eval 版(免费产品)的功能与商业版相同,只是程序的最大代码量不得超过 2kB,但对初学者而言已是足够。Keil 软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点而受到工程技术人员的欢迎,有人甚至认为 Keil 是目前最好的 51 单片机开发应用软件。2.1.3 软件连接软件连接使用使用a、假若 KeilC 与 Proteus 均已正确安装在 C:Program Files 的目录里,把C:Programe FileLabcenter ElectronicsProteus 6 P

25、rofessionalMODELSVDM51.dl 复制到 C:Program FileKeilCC51BIN 目录里。b、用记事本打开C:Program FileskeilCC51TOOLS.INI文件,在C51栏目下加入:TDRV5=BINVDM51.DLL (Proteus VSM Monitor-51 Driver)其中“TDRV5”中的“5”要根据实际情况写,不要和原来的重复。(步骤1和2只需在初次使用设置。 )c、进入KeilC Vision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:Atmel公司的AT89C51) 。并为该项目加入

26、KeilC源程序。d、单击“Project菜单/Options for Target”选项或者点击工具栏的“option for ta rget”按钮,弹出窗口,点击“Debug”按钮,出现如图所示页面。在出现的对话框里在右栏上部的下拉菜单里选中“Proteus VSM Monitor一51 Driver” 。并且还要点击一下“Use”前面表明选中的小圆点。再点击“Setting”按钮,设置通信接口,在“Host”后面添上“” ,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP地址(另一台电脑也应安装Proteus)。在“Port”后面添加“8000” 。设置好的情

27、形如图所示,点击“OK”按钮即可。最后将工程编译,进入调试状态,并运行。 e、Proteus的设置进入Proteus的ISIS,鼠标左键点击菜单“Debug” , 选中“use romote debuger monitor” ,如图所示。此后,便可实现KeilC与Proteus连接调试。f、KeilC与Proteus连接仿真调试单击仿真运行开始按钮,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。3控制系统硬件设计控制系统硬件设计3.1 硬件电路图硬件电路图3.2 显示部分显示部分显示部分采用 160X128 的图形液晶显示器。、4软件设计软件设计4.1 程序仿真程序仿

28、真 从 proteus 里可以看到程序的运行效果很令人满意5结结 论论本文主要对数字电子钟进行了研究,在学习单片机理论知识的基础上,以AT89C51芯片为控制核心,设计了检测系统的硬件电路和软件。本文主要完成下面工作:1. 8051芯片性能参数的分析。2相关软件的学习和使用。3. 数字电子钟的设计方案、显示电路及相应的软件的设计48051构成的液晶显示器及相应的软件的设计5单片机系统抗干扰方法从软件和硬件方面进行分析。由于能力有限,不能够充分利用所学知识,对所设计的显示器不能有进一步的简化,其电路及软件还有待更好的改善。6 谢 辞衷心感谢我的指导老师!本课题的研究工作是在老师的悉心指导和关怀下

29、才得以顺利完成。老师勤奋好思、严谨求实,在我学习过程中,给了我很多的启示和帮助。指导老师给予我的不仅仅是知识上、学习上的,更有方法上,思想上的帮助!感谢我们组的同学对我的帮助和支持,再次感谢大家!7参考文献参考文献参考文献:1 梅丽凤,王艳秋. 单片机原理及接口技术M.北京:清华大学出版社,2004P12P162朱定华,刘玉. 单片机原理及应用技术学习辅导M.北京:电子工业出版社,2001P19P023 夏继强.单片机实验与实践教程M. 北京:北京航空航天大学出(二) 2001.P18P264 何立明. MCS-51 系列单片机应用系统设计M.北京:北京航天航空大学出版社,2001P30P35

30、5 胡汉才.单片机原理及其接口技术M.北京:清华大学出版社,1996P58P62 P80P936 杨拴科.模拟电子技术M.北京:高等教育出版社,20037 范立南,谢子殿.单片机原理及应用教程M. 北京:清华大学出版社,2003P30P42 P103P1108 辛友顺. 单片机应用系统设计与实现M. 北京:电子工业出版社,1996P26P309 杨志忠,郭顺华. 数字电子技术基础M. 北京:高等教育出版社,2003P100P10810 薛钧义. MCS-51/96系列单片机微型计算机及其应用M.西安:西安交通大学出版社,1998 P90P9511 唐前辉.PROTEUS 中文教程+实例. pu

31、terA 12 Yao Liang , Zhang Zhenren ,Zhang Bo. Communication realization Between PC and MCS-51 SCM Based on MODBUS Protocol 附录:程序附录:程序T_SET BIT P1.0;调整A_SET BIT P1.1;加 1S_SET BIT P1.2;减 1D_SET BIT P1.3;日期TIMER_SET BIT P1.4;设置定时时间MM_SET BIT P1.5;秒表SECOND EQU 32HMINUTE EQU 31HHOUR EQU 30HTCNT EQU 39H;t0

32、 中断次数COUNT EQU 40H;判断哪位FRIST EQU 36HMIDDLE EQU 37HLASTER EQU 38HYEAR EQU 33HMON EQU 34HDAY EQU 35HTIMER_HOUR EQU 41HTIMER_MINUTE EQU 42HTIMER_SECOND EQU 43HTIMER_COUNT EQU 44H;定时判断哪位TIMERSYMBOL EQU 45H;定时到达标志位MMSEC EQU 47H;秒表,0。1 秒MSEC EQU 48H;1 秒MMIN EQU 49H;1 分ORG 0000HSJMP STARTORG 0BHLJMP INT_T0

33、ORG 001BHLJMP INT_T1START:MOV DPTR, #TABLEMOV HOUR, #12MOV MINUTE, #35MOV SECOND, #55MOV YEAR, #07MOV MON, #5MOV DAY, #15MOV TIMER_HOUR,#12MOV TIMER_MINUTE,#30MOV TIMER_SECOND,#30MOV TCNT, #0MOV COUNT,#0MOV TIMER_COUNT,#0MOV TIMERSYMBOL,#1;为 0 定时时间到MOV TMOD, #11HMOV TH0, #3CHMOV TL0, #0B0HMOV IE, #8

34、AHSETB PT0;设 t0 为最高优先级SETB TR0A1:LCALL CLOCKLCALL DISPLAYJNB T_SET, S10;调整时间JNB TIMER_SET,S20;设置定时时间JNB D_SET, S4;显日期JNB MM_SET,S3;显示秒表MOV A,TIMERSYMBOL;定时时间到标志JNZ A1;定时时间到AJMP ALARM AJMP A1S10:AJMP S1S20:AJMP S2MOV R2,#0FFH;定时时间到,启动闹铃ALARM:CPL P3.1DJNZ R2,A1MOV TIMERSYMBOL,#1SETB P3.1AJMP A1S3:MOV

35、MMSEC,#0;显示秒表MOV MSEC,#0MOV MMIN,#0LCALL MSECONDLCALL DISPLAYJNB A_SET,M1AJMP S3M1:MOV TH1, #0D8HMOV TL1, #0F0H;启动秒表SETB TR1LCALL MSECONDLCALL DISPLAYJNB S_SET,M2AJMP M1M2:;停止秒表CLR TR1LCALL MSECONDLCALL DISPLAYJNB MM_SET,J3JNB A_SET,M1AJMP M2J3:;判断停止秒表按键抬起JB MM_SET,A1LCALL MSECONDLCALL DISPLAYAJMP J

36、3S4:;显示日期LCALL DATELCALL DISPLAYLJMP J9J9:;判断显示日期按键抬起JB D_SET,A1LCALL DATELCALL DISPLAYSJMP J9A12:AJMP A1S2:;定时判断哪位INC TIMER_COUNTMOV A,TIMER_COUNTCJNE A,#5,SSSSMOV TIMER_COUNT,#1SSSS:MOV A,TIMER_COUNTDEC AJZ TIMER_HOUR0DEC AJZ TIMER_MINUTE0DEC A JZ TIMER_SECOND0DEC AJZ A12TIMER_HOUR0:;不变,闪烁MOV R3,T

37、IMER_HOURMOV R4,#8HT_HOUR0:MOV TIMER_HOUR,#0LCALL TIMERLCALL DISPLAYDJNZ R4,T_HOUR0MOV R4,#8HT_HOUR1:MOV TIMER_HOUR,R3JNB TIMER_SET,J01LCALL TIMERLCALL DISPLAYDJNZ R4,T_HOUR1JNB TIMER_SET,J01JNB A_SET,TIMER_HOUR1JNB S_SET,TIMER_HOUR2AJMP TIMER_HOUR0TIMER_MINUTE0:MOV R3,TIMER_MINUTEMOV R4,#8HT_MINUTE

38、0:MOV TIMER_MINUTE,#0LCALL TIMERLCALL DISPLAYDJNZ R4,T_MINUTE0MOV R4,#8HT_MINUTE1:MOV TIMER_MINUTE,R3JNB TIMER_SET,J01LCALL TIMERLCALL DISPLAYDJNZ R4,T_MINUTE1JNB TIMER_SET,J01JNB A_SET,TIMER_MINUTE1JNB S_SET,TIMER_MINUTE2AJMP TIMER_MINUTE0TIMER_SECOND0:MOV R3,TIMER_SECONDMOV R4,#8HT_SECOND0:MOV TIM

39、ER_SECOND,#0LCALL TIMERLCALL DISPLAYDJNZ R4,T_SECOND0MOV R4,#8HT_SECOND1:MOV TIMER_SECOND,R3JNB TIMER_SET,J01LCALL TIMERLCALL DISPLAYDJNZ R4,T_SECOND1JNB TIMER_SET,J01JNB A_SET,TIMER_SECOND1JNB S_SET,TIMER_SECOND2AJMP TIMER_SECOND0;定时检测有按键抬起J01:JB TIMER_SET,S011LCALL TIMERLCALL DISPLAYLJMP J01S011:;

40、远跳中转LJMP S2TIMER_HOUR2:;定时调时,减 1MOV A,TIMER_HOURJZ TIMER_HOUR00DEC TIMER_HOURDEC TIMER_HOURTIMER_HOUR1:;加 1MOV A,#23CLR CSUBB A,TIMER_HOURJZ TIMER_HOUR00INC TIMER_HOURTIMER_HOUR00:AJMP TIMER_HOUR0TIMER_MINUTE2:;定时调分MOV A,TIMER_MINUTEJZ TIMER_MINUTE00DEC TIMER_MINUTEDEC TIMER_MINUTETIMER_MINUTE1:MOV

41、A,#59CLR CSUBB A,TIMER_MINUTEJZ TIMER_MINUTE00INC TIMER_MINUTETIMER_MINUTE00:AJMP TIMER_MINUTE0TIMER_SECOND2:;定时调秒MOV A,TIMER_SECONDJZ TIMER_SECOND00DEC TIMER_SECONDDEC TIMER_SECONDTIMER_SECOND1:MOV A,#59CLR CSUBB A,TIMER_SECONDJZ TIMER_SECOND00INC TIMER_SECONDTIMER_SECOND00:AJMP TIMER_SECOND0A11:AJ

42、MP A1S1:;调时判断哪位INC COUNTMOV A,COUNTCJNE A,#5,SSSMOV COUNT,#1SSS:MOV A,COUNTDEC AJZ THOUR0DEC AJZ TMINUTE0DEC A JZ TSECOND0DEC AJZ A11THOUR0:MOV R3,HOURMOV R4,#8HHOUR0:MOV HOUR,#0LCALL CLOCKLCALL DISPLAYDJNZ R4,HOUR0MOV R4,#8HHOUR1:MOV HOUR,R3JNB T_SET,J1LCALL CLOCKLCALL DISPLAYDJNZ R4,HOUR1JNB T_SET

43、,J1JNB A_SET,THOUR1JNB S_SET,THOUR2AJMP THOUR0TMINUTE0:MOV R3,MINUTEMOV R4,#8HMINUTE0:MOV MINUTE,#0LCALL CLOCKLCALL DISPLAYDJNZ R4,MINUTE0MOV R4,#8HMINUTE1:MOV MINUTE,R3JNB T_SET,J1LCALL CLOCKLCALL DISPLAYDJNZ R4,MINUTE1JNB T_SET,J1JNB A_SET,TMINUTE1JNB S_SET,TMINUTE2AJMP TMINUTE0TSECOND0:MOV R3,SEC

44、ONDMOV R4,#8HSECOND0:MOV SECOND,#0LCALL CLOCKLCALL DISPLAYDJNZ R4,SECOND0MOV R4,#8HSECOND1:MOV SECOND,R3JNB T_SET,J1LCALL CLOCKLCALL DISPLAYDJNZ R4,SECOND1JNB T_SET,J1JNB A_SET,TSECOND1JNB S_SET,TSECOND2AJMP TSECOND0;检测有按键抬起J1:JB T_SET,S11LCALL CLOCKLCALL DISPLAYLJMP J1S11:;远跳中转LJMP S1THOUR2:;调时MOV

45、A,HOURJZ THOUR00DEC HOURDEC HOURTHOUR1:MOV A,#23CLR CSUBB A,HOURJZ THOUR00INC HOURTHOUR00:AJMP THOUR0TMINUTE2:;调分MOV A,MINUTEJZ TMINUTE00DEC MINUTEDEC MINUTETMINUTE1:MOV A,#59CLR CSUBB A,MINUTEJZ TMINUTE00INC MINUTETMINUTE00:AJMP TMINUTE0TSECOND2:;调秒MOV A,SECONDJZ TSECOND00DEC SECONDDEC SECONDTSECON

46、D1:MOV A,#59CLR CSUBB A,SECONDJZ TSECOND00INC SECONDTSECOND00:AJMP TSECOND0;定时中断INT_T0:MOV TH0, #3CHMOV TL0, #0B0HINC TCNTMOV A,TCNTCJNE A,#20,RETUNEINC SECONDMOV TCNT,#0MOV A,HOURCJNE A,TIMER_HOUR,NEXT;判断定时时间是否到MOV A,MINUTECJNE A,TIMER_MINUTE,NEXTMOV A,SECONDCJNE A,TIMER_SECOND,NEXTMOV TIMERSYMBOL,

47、#0NEXT:MOV A,SECONDCJNE A,#60,RETUNEINC MINUTESETB P3.0MOV SECOND,#0MOV A,MINUTECJNE A,#60,RETUNEINC HOURCLR P3.0;整点报时MOV MINUTE,#0MOV A,HOURCJNE A,#24,RETUNEMOV HOUR,#0INC DAY MOV R5, MONCJNE R5, #1, MON22MOV R5, DAYCJNE R5, #32, RETUNEINC MONMOV DAY, #1LJMP RETUNERETUNE:RETIMON22:MOV R5, MON CJNE

48、R5, #2, MON33MOV A, YEARMOV B, #4DIV AB MOV A, B JNZ OUT1MOV R5, DAYCJNE R5, #30,RETUNE INC MONMOV DAY, #1LJMP RETUNEOUT1: MOV R5, DAYCJNE R5,#29, RETUNEINC MON MOV DAY, #1LJMP RETUNEMON33:MOV R5, MON CJNE R5, #3, MON44MOV R5, DAYCJNE R5,#32,RETUNEINC MONMOV DAY, #1LJMP RETUNEMON44:MOV R5, MON CJNE R5, #4, MON55MOV R5, DAYCJNE R5,#31,RETUNEINC MONMOV DAY, #1LJMP RETUNEMON55:MOV R5, MON CJNE R5, #5, MON66MOV R5, DAYCJNE R5,#32,RETUNEINC MONMOV DAY, #1LJMP RETUNEMON66:MOV R5, MON CJNE R5, #6, MON77MOV R5, DAYCJNE R5,#31,RETU

温馨提示

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

评论

0/150

提交评论