4.3毕业设计说明书格式_第1页
4.3毕业设计说明书格式_第2页
4.3毕业设计说明书格式_第3页
4.3毕业设计说明书格式_第4页
4.3毕业设计说明书格式_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

无锡职业技术学院毕业设计说明书(论文)PAGEPAGE47无锡职业技术学院毕业设计说明书(论文)PAGE16课题名称(小三、宋体、1.5倍行距)摘要:(五号字,宋体,单倍行距,不能定义文档网格)(不超过100个字)本文介绍了一种名叫智能音乐闹钟的设计。本设计系统是由中央控制器、时钟系统、存储器、显示器及键盘部分组成。控制器采用单片机AT89C51,时钟系统采用时钟芯片DS1302,用LED8段数码管作为显示器,用单片机内置ROM作为存储器件。单片机通过时钟芯片DS1302获取时间数据,对数据处理后,单片机再把时间数据送LED数码管显示器显示,还可以显示代码;键盘是用来调时的。关键词:单片机、DS1302、音乐闹钟(五号字,宋体,单倍行距,不能定义文档网格)(不超过5个词)(下面正文部分约2万字)(小四号字,宋体,单倍行距,不能定义文档网格,首行缩进2个字符)1引言自单片机出现至今,单片机技术已走过了近20年的发展路程。电子技术和计算机技术应用领域不断扩大,单片机技术已成为电子技术领域中的一个新的亮点,随着单片机技术的迅猛发展和应用领域不断扩大,纵观20年来单片机发展里程可以看出,单片机技术渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。基于单片机的通用定时控制系统正是属于单片机技术范围。特别是在智能化控制高度发展的前提下,定时控制是不可或缺的条件。可以说只要有智能化的存在,就必须要用到定时控制。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,民用豪华轿车的安全保障系统,全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机通用定时技术。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,基于单片机的通用定时控制的学习是非常重要的也是非常关键的。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,单片机应用系统的软件(常称为监控程序或固件——固化到单片机内部或外部的程序存储器内)一般由主程序和若干个中断程序组成,以作完善。基于单片机的通用定时控制也是如此。带有闹时装置的钟。既能指示时间,又能按人们预定的时刻发出音响信号或其他信号。43年前,现代闹钟的前辈们承担了1964年东京奥运会的计时工作。从那时起,电子闹钟就慢慢的进入了我们的日常生活之中,为我们的生活与工作带来了意想不到的结果。目前市面上的数字闹钟种类繁多,有可爱型的,有带计算器的,有数码管显示的,有液晶显示的等等。其中在欧西亚公司所倡导的数字生活中,有几款很有特色的电子闹钟:法拉利版电子投影闹钟,BAR839HG和RMR826HG等型号的闹钟,不仅具有显示时间的功能,炫酷的外形,记忆最高/最低温度值、时钟、日历、闹钟、第二时区、夜光等功能还可以将时间投影到墙上,天花板上,让你在黑暗里只要一睁眼就能看到时间,除了能闹醒大家外,还提供了6种甜睡的音乐帮助用户入睡。2总体方案设计2.1方案一:首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功能扩展,本设计加进了日期显示与调整功能。2.2方案二:本设计以单片机AT89C51作为核心主控芯片,采用DS1302实时时钟芯片,将产生的时间信号传递给单片机,经单片机处理再通过LED8段数码管显示当前的时间。当到达所设定的闹铃时间后,单片机将调用相应的程序,播放音乐,并且此时LED8段数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭,结束闹铃。用户可以通过键盘设置闹铃的时间和校正当前的时间。3分电路设计和论证3.1**电路设计和论证a)、如果用8031系列,由于它没有内部RAM,系统又需要大量内存存储数据,因而不可用。b)、8051或8052系列具有片内ROM或EPROM,而52子系列与51子系列的不同之处在于:片内数据存储器增支256字节;片内程序存储器增之8KB(8032无);有3个16位定时/计数器,6个中断源。8051片内程序存储器为4KB,对于本设计来说已经足够,因此选择8051弹片机。(2)、时钟功能的实现方案:a)、用软件实现,直接用单片机的定时器编程以实现时钟;b)、用专门的时钟芯片实现时钟的记时,再把时间数据送入单片机,由单片机控制显示。比较两种方案,用软件实现时钟固然可以,但是程序运行的每一步都需要时间,多一步或少一步程序都会影响记时的准确度,用专用时钟芯片可以实现准确记时。因此选择b方案。(3)、显示器:a)、液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。b)、用数码管作为显示器。数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。由于数码管使用起来较为方便,在夜间看时间也很方便,因此我们选择了方案b。(4)、发音部分用软件方法产生波性输出,通过三极管放大后驱动喇叭发音,这样就可以省去硬件振荡电路,降低成本。(5)、键盘a):4*3矩阵式键盘。如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。b):独立式按键。如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,此方案适用于按键较少的情况。因此选择方案a。3.1.1系统结构框图键键盘LED功放单片机时钟芯片图2-1系统框图本设计以单片机AT89C51作为核心主控芯片,采用美国DALLAS公司生产的DS1302实时时钟芯片,产生时间信号传递给单片机,经单片机处理再通过LED8段数码管完成当前时间的显示,当到达所设定的闹铃时间后,音乐将播放出来,并且此时LED数码管所显示的不再是时间而是一个代码,只有用户在将这个代码从键盘上正确的输入进去,才能将其音乐关闭。用户可以通过键盘设置闹铃的时间和校正当前的时间。3.12器件说明:(1)时钟芯片本设计采用的时钟芯片DSl302是美国DALLAS公司生产的一种具有涓细电流充电能力的芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。该芯片是一种体积小、高性能、低功耗、接口容易、占用CPUI/O口线少、带RAM的实时时钟电路等主要特点,故该芯片作为实时时钟广泛应用于智能化仪器仪表中。它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。引脚排列如下图所示:图2-2DS1302引脚排列(2)DS1302的引脚排列:Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。/RST是复位/片选线,通过把/RST输入驱动置高电平来启动所有的数据传送。/RST输入有两种功能:首先,/RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,/RST提供终止单字节或多字节数据的传送手段。当/RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中/RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,/RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK始终是输入端。

1)、DS1302的控制字如下图所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。图2-3DS1302命令码格式DS1302与单片机的连接图:图2-4DS1302与AT89C51的硬件连接图2)、数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。注意:第一个数据位被送出发生在写命令字节最后一位的第一个下降沿,数据输出开始位为位0。单字节读操作每次需16个时钟,地址字节在前8个时钟周期的上升沿输入,而数据字节在后8个时钟周期的下降沿输出。图2-5单字节读操作时序3)DA1302寄存器分布DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见下表。表2-1DS1302寄存器分布表此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.1.2单片机本系统采用最常用的AT89C51单片机,它是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚排列如下图所示:图2-6AT89C51引脚排列\o"返回页首"主要特性:·与MCS-51兼容

·4K字节可编程闪烁存储器

·寿命:1000写/擦循环

·数据保留时间:10年

·全静态工作:0Hz-24Hz

·三级程序存储器锁定

·128×8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路\o"返回页首"管脚说明:Vcc:供电电压。GND:接地。P0口:在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。P1口:准双向输入/输出口。P2口:一般可作为准双向输入/输出口。在接有片外存储器或扩展I/O口且寻址范围超过256字节时,用作高8位地址总线。P3口:除作为准双向输入/输出口外,P3口也可作为AT89C51的一些特殊功能口。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.13单片机系统图3-2AT89C51最小系统电路图单片机采用AT89C51,使用P0口作为I/O口,则需外接上拉电阻。使用P0.0、P0.1、P0.2、P0.3分别与74LS48译码器的输入端相连接;P0.4、P0.5、P0.6、P0.7分别与显示电路的4个LED数码管片选信号相连接;P1.0到P1.6连接外接键盘;P1.7(即B0)作为功放的输出端与功放驱动电路相连接;P2.0到P2.2分别与时钟芯片DS1302的/RET(“5”)、I/O(“6”)、SCLK(“7”)三个引脚相连接;31脚(即/EA)接高电平,因此首先执行片内程序存储器的程序;19脚(即X1)与18脚(即X2)连接外部振荡电路;9脚(即RESET)连接复位电路。3.14键盘电路键盘电路采用4*3行列式键盘,用P1口线组成行、列结构,按键设置在行列的交点上。当进行键盘扫描时,则将扫描信号送至P1.4、P1.5、P1.6,再从P1.0、P1.1、P1.2、P1.3读取键盘状态,即可判断哪个键盘被按下。P1.0、P1.1、P1.2、P1.3分别连接一个10K的上拉电阻到公共接点上,公共接点连接在VCC上,因此采用低电平扫描。送入P1.4、P1.5、P1.6的扫描信号中,只有一个为低电平(即0),其余为高电平。紧接着读取P1.0、P1.1、P1.2、P1.3的状态,哪个为低电平(即0)则表示被按下,如果都是高电平,则从头开始继续扫描。按键S0到S11分别代表的意义是“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“闹钟”与“时间”。当长时间按下“闹钟”键时,为开启或关闭闹钟;当短时间按下“闹钟”键时,为设置闹钟时间。当按下“时间”键时,为设置时间。电路图如下图3-3所示:图3-34*3键盘电路图3.15功放电路本系统是利用程序产生频率脉冲信号,送到P1.7(即B0)口,通过一个限流电阻连接到喇叭的驱动电路。P1.7口输出的是一组脉冲信号,当输出为高电平时晶体管工作于饱和状态,当输出为低电平时晶体管工作于截止状态,从而使喇叭播放出音乐。图3-4功放电路图3.16显示电路图3-5显示电路图数码管在夜间看时间的时候就不需要有光源,非常方便,因此采用4个共阳极8段LED数码管作为显示系统,片选信号分别连接在A4(P0.4)、A5(P0.5)、A6(P0.6)、A7(P0.7),LED8段数码管的a、b、c、d、e、f、g分别与74LS48译码器的输出端相连接。LED数码管的dp端接高电平。电路图如上图3-5所示。3.17时钟电路图3-6DS1302时钟电路图选用DS1302作为时钟芯片,X1与X2连接32.768kHz的晶体振荡电路,DS1302与单片机AT89C51采用串行数据传输方式,/RET、I/O、SCLK分别与单片机的P2.0(B1)、P2.1(B2)、P2.2(B3)相连接。Vcc2(即“1”)连接电源。电路图如上图3-6所示。4软件设计4.1程序流程4.1.1系统主程序流程图4.1.1系统主程序流程图本章主要讲述软件方面的实现。本系统程序紧紧围绕所要实现的功能进行编写,采用模块化编程结构。开始初始化闹钟与时间比较开始初始化闹钟与时间比较键盘扫描放音与显示代码关音输入代码比较闹钟或时间设置键是否按下显示时间设置闹钟是否开启NYYNNYYNYNY图4-1主程序流程图系统启动后,进行初始化设置,键盘扫描,显示当前的时间。判断闹钟或时钟是否需要设置,如果需要则进行相应的设置,如果不需要则跳转到判断闹钟是否开启,如果没有开启则跳回键盘扫描,开启则进行判断闹钟与时间是否相等,相等则放音乐同时显示代码,进行输入码与显示代码比较是否相等,相等则关闭音乐,转到键盘扫描,否则一直播放音乐直到正确输入代码。4.1.2各子程序流程图4.2程序4.2.1主程序4.2比较闹钟与时间程序43H,42H存放闹钟的时位;41H,40H存放闹钟的分位33H,32H存放时间的时位;31H,30H存放时间的分位NNNNNNYYY(33H)=(43H)?(32H)=(42H)?(31H)=(41H)?(30H)=(40H)?开始RETY图4-2比较闹钟与时间程序MOVA,33HXRLA,43HJNZTO-END…………MOVA,30HXRLA,40HJNZTO-ENDSETBF0SETBP1.7TO-END:POPARET判断33H与43H存储的内容是否相等,如果不相等则停止该程序,相等说明时间与闹钟时位的高位相等;继续判断32H与42H分别存储的时间与闹钟时位的低位是否相等,不相等则停止该程序,相等则继续判断31H与41H分别存储的时间与闹钟分位的高位是否相等,与上面同理;当判断30H与40H存储的内容是否相等时,如果相等则说明闹钟时间到达,音乐开启,F0=1,此时按键可以使用,反之则停止该程序。4.3键盘扫描程序系统启动后,判断有无按键按下,R2存储是哪个按键按下,然后判断R2的值。当R2为11时,F0置位,进行时间调整,调整完毕则显示,并从新开始键盘扫描。当R2为10时,进行1秒钟的延时,判断是否长按闹钟键(S10),如果长按,则进行闹钟开启与关闭设置,R1为FFH时闹钟开启,R1为00H时闹钟关闭;如果没有长按,则直接跳转到进行F0置位,闹钟调整。调整完毕则显示,并从新开始键盘扫描。当R2为其他数值时,判断F0是否为1,如果F0为1时,调用相应键值程序,否则返回键盘扫描。F0的值判断数字键“0”到“9开始开始键盘扫描R1=0FFH?判断R2F0置位,时间调整键值存入R2CPLR1F0置位,闹钟调整显示F0=1?P1.5=0&R2=10是否调整完毕1秒延时相应键值程序有无键按下是否调整完毕NYNR2为11R2为其他R2为10YNYNYNYNY图4-3键盘扫描流程图4.4对DS1302操作的程序初始化要求/RST为低电平,SCLK为低电平,/RST被设置为高就启动了一个数据传送的过程。SCLK的16个方波完成一次数据传送,前8个方波用于输入命令字节,后8个方波用于数据的输出(读DS1302)或数据的输入(写DS1302)。在SCLK的上升沿,I/O线上数据被送入DS1302,在SCLK下降沿DS1302输出数据在I/O线上。读DS1302驱动程序图,如下图所示:结束结束YNY开始初始化/RST变高启动一次数据传送工作写命令字节一位SCLK发脉冲/RST发低电平到8次吗?SCLK发脉冲读命令字节一位N到8次吗?图4-4读DS1302驱动程序图读写操作各用一个程序,读DS1302如上图所示,写DS1302程序框图与之相似,只需上图第二个循环中“读数据字节一位”改为“写数据字节一位”即可。读DS1302驱动程序:RDRTC:CLR/RET;置控制引脚为低电平,禁止数据传送NOPCLRSCLK;初始化串行时钟线为低电平NOPSETB/RET;置控制引脚为高电平,允许数据传送NOPMOVA,#0BFH;准备“接收多字节数据”的命令码MOVR2,#8;1字节命令码需要传送8次RDRTC0:CLRSCLK;置串行时钟线为低电平RRCA;将最低位传送给进位标志CMOVP2.1,A;再传送至数据端口NOPSETBSCLK;置串行时钟线为高电平,其上升沿发送1位数据DJNZR2,RDRTC0;直到发送完1字节的命令码MOVR0,#2EHRDRTC1:MOVR2,#8;每字节数据需要接受8次RDRTC2:CLRSCLK;置串行时钟线为低电平,其下降沿接收1位数据NOPMOVC,P2.1;将数据端口的信息传送给进位标志CRRCASETBSCLK;置串行时钟线为高电平DJNZR2,RDRTC2;直到接收到1个完整字节的数据MOV@R0,AINCR0DJNZR3,RDRTC1;直到接收完全部数据CLR/RETRET4.5播放音乐程序YYYN时间与闹钟相等调用曲目,装入相应音符节拍单元是否为0返回主程序开始查找音频装入T0,节拍装入节拍单元T0计数,从P1.7输出脉冲信号图4-5播放音乐程序当时间与所设的闹钟时间相等时,调用曲目,查找相应的音符,音符的高四位(即音频)装入T0,音符的低四位(即节拍)装入节拍单元。T0开始计数,从P1.7输出脉冲信号,播放音乐。音乐播放结束,返回主程序。4.2程序4.2.1主程序********************************************主程序********************************************/RSTBITP2.0I/OBITP2.1SCLKBITP2.2ORG0026HLJMPSTARTORG000BHLJMPNEXTORG0060HSTART:MOVTMOD,#01HMOVTH0,#0FCHMOVTL0,#48HMOVIE,#82HSETBTR0;启动TR0LOOP:LCALLTRAID;调用时间读取子程序LCALLDISPLAY1;时间显示调用ONE:CJNER2,#10,T1LCALLDISPLAY2;闹钟时间显示子程序LCALLHOLD;等待键按下MOVA,R5;R5在显示子程序中自减JNZONEMOVR7,#04T1:CJNER2,#11,TWOLCALLDISPLAY1;时间显示子程序LCALLHOLDDJNZR7,T1LCALLWRTC;时间写入时钟芯片程序TWO:;闹钟时间比较程序CJNERO,#0FFH,T4;判断闹钟开/关LCALLTO-2JBCF0,T2AJMPLOOPT2:SETBP1.7;闹钟响起MOVR7,#04LCALLDISPLAY2;代码显示子程序MOVR0,#3EH;取代码程序GO:ACALLHOLDTHREE:MOVA,R2;B存放的是键码ACALLDISPLAY2CJNEA,@R0,T3AJMPT4T3:ACALLHOLD ;等待键按下AJMPTHREET4:DJNZR7,GOCLRP1.7LJMPLOOPMEXT:CLRTF0MOVTH0,#0FCHMOVTL0,#18HMOVIE,#82HSETBTR0RETIEND4.2.2各子程序********************************************比较程序********************************************TO-2:PUSHAMOVA,33HXRLA,43HJNZTO-ENDMOVA,32HXRLA,42HJNZTO-ENDMOVA,31HXRLA,41HJNZTO-ENDMOVA,30HXRLA,40HJNZTO-ENDSETBF0SETBP1.7TO-END:POPARET*******************************************************存时间与闹钟*******************************************************WORD11:MOVR5,#00HINCR5CJNER5,#05H,RET11MOVR5,#00HRET11:LJMPJZKEYWORD10:MOVR5,#00HINCR5CJNER5,#05H,RET10MOVR5,#00HRET10:LJMPJZKEYWORD9:CJNER5,#01H,RET9ACALLGEWEIRET9:RETWORD8:CJNER5,#01H,RET8ACALLGEWEIRET8:RETWORD7:CJNER5,#01H,RET7ACALLGEWEIRET7:RETWORD6:CJNER5,#01H,RET6ACALLGEWEIRET6:RETWORD5:CJNER5,#01H,RR5ACALLGEWEILJMPRET5RR5:CJNER5,#02H,RET5ACALLSHIWEIRET5:RETWORD4:CJNER5,#01H,RR4ACALLGEWEILJMPRET4RR4:CJNER5,#02H,RRR4ACALLSHIWEILJMPRET4RRR4:CJNER5,#03H,RET4ACALLBAIWEIRET4:RETWORD3:CJNER5,#01H,RR3ACALLGEWEILJMPRET3RR3:CJNER5,#02H,RRR3ACALLSHIWEILJMPRET3RRR3:CJNER5,#03H,RET3ACALLBAIWEIRET3:RETWORD2:CJNER5,#01H,RR2ACALLGEWEILJMPRET2RR2:CJNER5,#02H,RRR2ACALLSHIWEILJMPRET2RRR2:CJNER5,#03H,RET2ACALLBAIWEIRET2:RETWORD1:CJNER5,#01H,RR1ACALLGEWEILJMPRET1CJNER5,#02,RRR1ACALLSHIWEILJMPRET1CJNER5,#03,RRRR1ACALLBAIWEILJMPRET1RRRR1:ACALLQIANWEIRET1:RETGEWEI:MOVA,BXORA,#0AHJZCLK9MOVR0,#30HMOV@R0,R2LJMPRETGCLK9:MOVR0,#40HMOV@R0,#R2RETG:RETSHIWEI:MOVA,BXORA,#0AHJZCLK5MOVR0,#31HMOV@R0,R2LJMPRETSCLK5:MOVR0,#41HMOV@R0,#R2RETS:RETBAIWEI:MOVA,BXORA,#0AHJZCLK6MOVR0,#32HMOV@R0,R2LJMPRETHCLK6:MOVR0,#42HMOV@R0,#R2RETH:RETQIANWEI:MOVA,BXORA,#0AHJZCLK7MOVR0,#33HMOV@R0,R2LCALLWRTCLJMPRETKCLK7:MOVR0,#43HMOV@R0,#R2RETK:RET******************************************代码显示程序******************************************DISPLAY2:ACALLDELAYPUSHAMOVR3,#01HMOVR0,#3EHMOVA,R3SWAPALOOP-COD:CLRCORA,@ROMOVP1,AINCR0MOVA,R3SWAPARLCAJCLOOP-CODPOPARET****************************************键盘扫描*****************************************JZKEY:MOVP1,#70HMOVA,P1CPLAANLA,#0E0HMOVR2,AJZJZKEYMOVP1,#0FHMOVA,P1CPLAANLA,#0FHMOVR3,AJZJZKEYLCALLDELAYWAIT:MOVA,P1CLPPANLA,#8FHJNZWAITMOVA,R2MOVR2,#02HMOVR4,#03HCLRCRLCAKEY1:RLCAJCKEY2DECR2DJNZR4,KEY1LJMPJZKEYKEY2:MOVA,R3MOVR3,#00HMOVR4,#04HCLRCKEY3:RRCAJCKEY4INCR3DJNZR4,KEY3KEY4:MOVA,R3CLRCRLCRLCADDA,R2MOVB,AMOVR2,AXRLA,#0AHJZKEY5MOVR2,AMOVB,AXRLA,#0BHJZKEY6MOVR2,AXRLA,#09JZNUM9MOVR2,AXRLA,#08JZNUM8MOVR2,AXRLA,#07JZNUM7MOVR2,AXRLA,#06JZNUM6MOVR2,AXRLA,#05JZNUM5MOVR2,AXRLA,#04JZNUM4MOVR2,AXRLA,#03JZNUM3MOVR2,AXRLA,#02JZNUM2MOVR2,AXRLA,#01JZNUM1MOVR2,AXRLA,#00JZNUM0KEY5:MOVR1,#00HMOVR5,#10HACALLDELAYDJNZR5,KEY5JNBP1.6,RIN0RINO:CJNER2,#10,KE5RETMOVA,R1CPLAMOVR1,ASETBF0LJMPWORD10KE5RET:LJMPJZKEYDJZKEYD:RETKET6:SETBF0LJMPWORD11LJMPJZKEYDNUM0:JBCF0,WORD0LJMPJZKEYDNUM1:JBCF0,WORD1LJMPJZKEYDNUM2:JBCF0,WORD2LJMPJZKEYDNUM3:JBCF0,WORD3LJMPJZKEYDNUM4:JBCF0,WORD4LJMPJZKEYDNUM5:JBCF0,WORD5LJMPJZKEYDNUM6:JBCF0,WORD6LJMPJZKEYDNUM7:JBCF0,WORD7LJMPJZKEYDNUM8:JBCF0,WORD8LJMPJZKEYDNUM9:JBCF0,WORD9LJMPJZKEYDDELAY:MOVR7,#18H;延时10msTM:MOVR6,#FFHTM6:DJNZR6,TM6DJNZR7,TMRET*****************************************时钟数据读取*****************************************TRALD:MOVR3,#03HLCALLRDRTCRDRTC:CLRCENOPCLRSCLKNOPSETBCENOPMOVA,#BFHMOVR2,#8RDRTC0:CLRSCLKRRCAMOVP2.1,ANOPSETBSCLKDJNZR2,RDRTC0MOVR0,#2EHRDRTC1:MOVR2,#8RDRTC2:CLRSCLKNOPMOVC,P2.1RRCASETBSCLKDJNZR2,RDRTC2MOV@R0,AINCR0DJNZR3,RDRTC1CLRCERET*******************************************时钟写入*******************************************WRTC:CLRCENOPCLRSCLKNOPSETBCENOPMOVA,#0BEHMOVR2,#8WRTC0:CLRSCLKRRCAMOVP2.1,CNOPSETBSCLKDJNZR2,WRTC0MOVR0,#3EHMOVR3,#7WRTC1:MOVA,@R0MOVR2,#8WRTC2:CLRSCLKRRCAMOVP2.1,CNOPSETBSCLKDJNZR2,WRTC2INCR0DJNZR3,WRTC1CLRCERET******************************************************闹钟显示******************************************************DISPLAY1:MOVR3,#01HMOVA,BCJNEA,#0AH,DISPLAYDMOVR0,#40HMOVA,R3SWAPALOOP1:CLRCORA,@R0MOVP1,AINCR0MOVA,R3SWAPARLCAJNCLOOP1DISPLAYD:RET*******************************************************时钟显示********************************************************DISPLAY2:MOVR3,#01HMOVA,BCJNEA,#11,DISPLAYTMOVR0,#30HMOVA,R3SWAPALOOP2:CLRCORA,@R0MOVP1,AINCR0MOVA,R3SWAPARLCAJNCLOOP2DISPLAYT:RET***************************************************等待程序***************************************************HOLD:MOVA,P1CJNEA,7FH,$RET***************************************************音乐程序***************************************************SOUND:MOVTMOD,#00000001BMOVIE,10000011BJBP3.2,$CALLDELAY1JNBP3.2,$MOV31H,#00HSTART0:MOV30H,#LOWSONGNEXT:MOVA,30HMOVDPTR,#TABLEMOVCA,@A+DPTRMOVR2,AJZEND0ANLA,#0FHMOVR5,AMOVA,R2SWAPAANLA,#0FHJNZSINGCLRTR0JMPD1SING:DECAMOV22H,ARLAMOVDPTR,#TABLEMOVCA,@A+DPTRMOVTH0,AMOV21H,AMOVA,22HRLAINCAMOVCA,@A+DPTRMOVTL0,AMOV20H,ASETBTR0D1:CALLDELAYINC30HJMPNEXTEND0:CLRTR0MOVA,31HXRLA,#00HJNZEND1JBP3.2,$CALLDELAY1JNBP3.2,$INC31HMOV30H,#LOWSONG1JMPNEXTTIME0:PUSHACCPUSHPSWSETBRS0CLRRS1MOVTL0,20HMOVTH0,21HCPLP1.7POPPSWPOPACCRETIXINT0:PUSHACCPUSHPSWJMPSTPOPPSWPOPACCRETIDELAY:MOVR7,#0

温馨提示

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

评论

0/150

提交评论