首页 基于单片机的万年历设计_毕业设计

基于单片机的万年历设计_毕业设计

举报
开通vip

基于单片机的万年历设计_毕业设计基于单片机的万年历设计 III[摘要] IV[Abstract] 1引言 21绪论 21.1 集成电路 21.2 主要技术的背景 21.2.1 发展历史 31.2.2 现状 31.2.3 发展趋势 42器件简介 42.1 LED显示器 42.1.1 LED显示器的结构 52.1.2 LED的接线形式 52.2 AT89C52简介 52.2.1 AT89C52主要性能参数: 62.2.2 AT89C52单片机的功能特性概述: 92.3 ...

基于单片机的万年历设计_毕业设计
基于单片机的万年历设计 III[摘要] IV[Abstract] 1引言 21绪论 21.1 集成电路 21.2 主要技术的背景 21.2.1 发展历史 31.2.2 现状 31.2.3 发展趋势 42器件简介 42.1 LED显示器 42.1.1 LED显示器的结构 52.1.2 LED的接线形式 52.2 AT89C52简介 52.2.1 AT89C52主要性能参数: 62.2.2 AT89C52单片机的功能特性概述: 92.3 DS1302芯片 92.3.1 DS1302的性能特性: 102.3.2 DS1302数据操作原理 142.4 74LS164-八位移位寄存器 142.4.1 74LS64简介 152.4.2 74LS164逻辑介绍: 173硬件电路 173.1 线路的设计 183.1.1 电源转换模块 183.1.2 主控制模块 193.1.3 显示模块 203.1.4 键盘接口设计 203.2 电路图的绘制 203.3 电路板的焊接 203.4 打开电源前应注意的问题 214软件设计部分 214.1 阳历程序的设计 214.2 时间调整程序设计 234.3 阴历程序设计 285调试 296小结 307致谢 318参考文献 329附录 引言 随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求。现代的数字钟不仅需要数字电路技术而且需要模拟电路技术和单片机技术,增加了数字钟的功能。其电路可以由实时时钟模块、环境温度检测模块、人机接口模块、报警模块等部分组成。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用 数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 1绪论 1.1 集成电路 在此次设计中我们将用到集成电路。 集成电路是一种微型电子器件,采用一定的工艺将包含三极管、二极管、电阻、电容等元件及其相互连线的整个电路,集中制造在一个或几个很小的半导体晶片或介质基片上,再经引线和封装,成为具有所需功能的微型结构。每片芯片(半导体晶片或介质基片)集成的元件数叫做集成度,小规模集成电路的集成度是1~100,中规模集成电路的集成度是100~1000,大规模集成电路的集成度是1000~10万,超大规模集成电路的集成度是10万~100万,极大规模集成电路的集成度大于100万。 集成电路具有体积小、引出线和焊接点少、寿命长、成本低、可靠性高、性能好等优点,广泛应用于电子计算机、通讯设备、导弹、雷达、人造卫星和各种遥控、遥测设备中。 1.2 主要技术的背景 1.2.1 发展历史 集成电路是信息产业和高新技术的核心,是推动国民经济和社会信息化的关键技术。集成电路的产业规模和技术水平已成为国家综合国力的一个重要标志。     集成电路是随着计算机技术的发展而不断进步,1946年2月15日世界上第一台通用电子数字计算机使用了18000个电子管,1500个继电器以及其他器件,安装在面积为9*15平方米的室内。在20世纪50年代中期第二代电子计算机问世,它是以晶体管代替了电子管,此时第一个集成电路诞生了,它包括一个晶体管、两个电阻和一个电阻、电容的组合.后来集成电路工艺日趋完善,大部分电路元件都已经以集成电路的形式出现,甚至在约1平方厘米的芯片上,就可以集成上百万个电子元件。在1967年和1977年,分别出现了大规模集成电路和超大规模集成电路,不断的完善和改进计算机的性能与规模。 但我国集成电路相对于世界先进水平存在一定的差距,所以有发展本国集成电路的需要。 1.2.2 现状 现在我国集成电路产业已经经过30多年的发展现已形成了近百家的产业规模,其中具备一定设计规模的单位有20多家,其中北京华大、大唐、深圳华威和无锡矽科四家设计公司的销售额超过了1亿元。 2000年,我国集成电路总产量为58.80亿块,销售额近200亿元,产量和销售额分别比1999年增长50.3%和75%。并且集成电路芯片目前主要采用5~6英寸硅片、0.8~1微米技术 ,大部分设计公司的技术水平在0.8~0.5微米之间,最高设计水平可达0.35微米。不少设计公司可以设计上万门的集成电路产品,而北京华大和深圳华威最高可设计80万门的电路。目前国内的通信芯片行业取得了突破性进展,例如南京东南大学射频与光电集成电路研究所设计的第一批芯片已成功通过测试,其中的3个芯片还达到世界先进水平,填补了我国高速CMOS集成电路设计的技术空白,在此基础上开发出的实用产品可以打入光纤通信接口设备市场。多家外国著名公司也纷纷在中国建立起集成电路设计公司。 1.2.3 发展趋势 中国发展集成电路的主要目标为:达到大规模生产150mm和0.8微米的技术水平;200mm和0.5微米的制造技术的产业化;提高集成电路的设计能力以满足市场需求;跟踪0.3-0.4微米和先进封装技术的研发;开发200mm的硅片制造技术并在国内开始生产等。未来10年是我国微电子产业发展的关键时期。重点要推进超大规模集成电路和新技术的产业化。 我国集成电路市场潜力巨大, 是因为近年来因特网持续爆炸式增长、移动通信终端设备市场的迅猛发展,以及数码相机、手持电脑等电子产品市场的兴旺,尤其是移动通信业的高速发展成为推动半导体产业新一轮发展的强大动力。信息产业的高速发展,为集成电路产业提供了巨大的市场空间。 未来几年,我国集成电路市场需求主要来自以下几个方面: 1. 通信运营业的高速发展对集成电路提出新的需求; 2. 二是通信运营业的高速发展对集成电路提出新的需求; 3 国民经济和社会信息化建设给电子信息制造业创造了一个新市场; 4. 随着我国经济结构的战略性调整,传统产业改造升级,提高设计和制造水平推进机电一体化,为各行业提供先进和成套的技术准备,又会给集成电路产业带来新的市场。      综观中国集成电路的设计概况,可以看到从20世纪80年代末开始,经过90年代初的创业期,现正进入它的发展期,21世纪将是中国设计业的成熟期。 2器件简介 2.1 LED显示器 2.1.1 LED显示器的结构 LED显示块是发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED。七段LED内部由7个条形发光二极管和一个圆点发光二极管组成。 本设计中采用的是绿色七段数码管,每一段数码管内部相当于有一个发光二极管。发光二极管具有单向导电性,只有当外加的正向电压使得正向电流足够大时才发光,它的开启电压比普通二极管的大,红色的在1.8V-2.2V之间,绿色的约为2V。正向电流越大,发光越强。内部结构如图2-1。 2.1.2 LED的接线形式 根据内部发光二极管的接线形式分成共阴极型(公共点接地)和共阳极型(公共点接电源)。计算机与七段显示器的接口,分成静态显示接口和动态显示接口。静态接口是每个七段显示器单独用一组寄存器控制,将其公共点接地。动态接口使用两组寄存器。几个显示器的七段用一组寄存器控制,该寄存器称作段选寄存器。另一组寄存器控制这几个七段显示器的公共点,控制这几个显示器逐个循环点亮。适当选择循环速度,利用人眼“视觉暂留”效应,使看上去好像这几个七段显示器同时在显示一样。控制公共点的寄存器称为位选寄存器。 本次设计中采用共阳极型接法,公共级通过一个PNP三极管与+12V的电源相连。接口采用动态显示。 2.2 AT89C52简介 AT89C52是美国ATMEL公司生产的低电压、高性能的CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随即存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准的MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。AT89C52单片机适合于许多较为复杂控制应用场合。 2.2.1 AT89C52主要性能参数: 1.与MCS-51产品指令和引脚完全兼容 2.具有8k字节可重擦写Flash闪速存储器 3.1000次擦写周期 4.全静态操作:0Hz-24MHz 5.三级加密程序存储器 6.256×8字节内部RAM 7.32个可编程I/O口线 8.3个16位定时器/计数器 9.8个中断源 10.低功耗空闲和掉电方式 11.可编程串行UART通道 2.2.2 AT89C52单片机的功能特性概述: AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。 AT89C52单片机与MCS-51兼容,它与MCS-51的功能基本相同。 a.MCS-51单片机的中断系统 (1)中断源 MCS-51单片机是一个多中断源的单片机,有五个中断源:外部 中断0、定时器0中断、外部中断1、定时器1中断和串行接收或发送中断。 各中断源的中断处理程序入口地址如下表2-1所示: 表2-1 中断向量表 中断源 入口地址 外部中断0 0003H 定时器0 000BH 外部中断1 0013H 定时器1 001BH 串行口 0023H (2)中断控制 1.中断的开放或禁止是由中断允许寄存器IE控制的。IE的格式如下: EA ES ET1 EX1 ET0 EX0 EA-中断总允许位。EA=1,开放总中断,而各个中断源的中断请求是允许还是禁止,分别由各自的中断允许位确定;EA=0,禁止一切中断。 ES-串行口中断允许位。 ET1和ET0分别是定时器T1和T0的中断允许位。 EX1和EX0分别是外部中断1(INT1)和外部中断0(INT0)的中断允许位。 以上五个中断允许位的意义是:0为禁止中断,1为允许中断。 2.中断源优先级控制-中断优先级寄存器IP。 MCS-51单片机有高、低两个中断优先级,5个中断源可由程序设置为高优先级中断或低优先级中断,实现二级中断嵌套。一个正在执行的低优先级中断源的中断服务程序,能被高优先级中断源所中断,但不能被同级别的另一个中断源所中断。MCS-51单片机的5个中断源的优先级由中断优先级寄存器IP的相应位设定。 IP格式如下: PS PT1 PX1 PT0 PX0 PS是串行口的中断优先级控制位。 PT1和PT0分别是定时器T1和T0的中断优先级控制位。 PX1和PX0分别是外部中断INT1和INT0的中断优先级控制位。 中断优先级控制位的意义是:0为设定为低优先级中断源;1为设定为高优先级中断。 如果同优先级的多个中断请求同时出现时,则按MCS-51单片机的CPU查询次序确定那个中断请求被响应,其查询次序为:IE0、TF0、IE1、TF1、 RI或TI。 b.MCS-51的定时系统 在控制系统中,常常要求有一些实时时钟以实现定时或延时控制,如定时中断、定时检测、定时扫描等等,也往往要求有计数器能对外部事件计数。MCS-51单片机有2个定时器,称为定时器0(T0)和定时器1(T1)。 (1)定时器的结构 MCS-51单片机的定时器由计数器0、计数器1、方式控制寄存器和定时器控制寄存器组成。计数器0和计数器1分别由8位计数器TH0、TL0和TH1和TL1构成。TH0、TL0、TH1、TL1是不能位寻址的特殊功能寄存器,通过对TH0、TL0、TH1、TL1的初始化编程来控制T0和T1的计数初值。 MCS-51单片机的两个计数器TH0、TL0和TH1、TL1可以构成16位的计数器、13位的计数器和8位的计数器。计数器是定时器T0和T1的核心,它可以对引线T0和T1来的外部事件计数;也可以对单片机的机器周期计数。一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12。这样,不但可以根据计数值计算出定时时间,也可以反过来按定时时间的要求计算出计数器的预置值。计数器是加法计数器,所以预置的计数初值应为计数值的补码。 (2)定时器的工作方式 MCS-51单片机的T0有方式0、方式1、方式2和方式3四种工作方式。T1有方式0、方式1和方式2三种工作方式。 工作方式控制寄存器TMOD:TMOD寄存器是不能位寻址的特殊功能寄存器,用于控制T1和T0的工作方式,各位的定义如下: GATE C/T M1 M0 GATE C/T M1 M0 TMOD的高半字节和低半字节的定义相同,高半字节用于控制T1,低半字节用于控制T0,其中,GATE是门控位。GATE为1时,定时器的计数器受外部引线INT0或INT1输入电平的控制,输入高电平计数,输入低电平停止计数,这时可以用于测量在INTx引线出现的正脉冲宽度;GATE为0时,定时器的计数不受INT0或INT1引线的控制。 C/T是定时器和计数器选择位。C/T为1,选择计数器方式,计数器THi和TLi对Ti引线输入的外部事件计数;C/T为0,选择定时器方式,计数器THi和TLi对机器周期进行计数。 M1和M0是定时器的工作方式选择位。M1和M0这2位有00-11四个状态,分别选择方式0(13位定时器)、方式1(16位定时器)、方式2(8位自动重装载定时器)和方式3(T0分成两个8位的定时器)。 2.3 DS1302芯片 2.3.1 DS1302的性能特性: 1.实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数; 2.用于高速数据暂存的31×8位RAM 3.最少引脚的串行I/O; 4.2.5~5.5V电压工作范围; 5.2.5V时耗电小于300nA; 6.用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; 7.简单的3线接口 8.可选的慢速充电(至Vcc1)的能力 DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源,在这种运用方式中Vcc1连接到备份电,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电。 2.3.2 DS1302数据操作原理 DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输出。无论是读周期还是写周期,开始8位指定40存器中哪个将被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的始终周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字数。 如果在传送过程中置RST脚为低电平,则会中止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≧ 2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的引脚及内部结构图如图2.1所示,表2.1为各引脚的功能。 图2.1 DS1302引脚图及内部结构 图2.2 DS1302的控制字 DS1302的控制字如图2.2所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为0。则不能把数据写入到DS1302中。位6如果为0。则表示存取日历时钟数据;为1表示存取RAM数据。位5~1(A4~A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。 为了提高对32个地址的寻址能力(地址/命令位1~5 = 逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节,不管是否写了全部31字节,所写的每一字都将传送至RAM。 引脚号 引脚名称 功能 1 Vcc2 主电源 2,3 X1,X2 震荡源,外接32.768kHz晶振 4 GND 地线 5 RST 复位/片选线 6 I/O 串行数据输入/输出端(双向) 7 SCLK 串行数据输入端 8 Vcc1 后备电源 表2.1 DS1302引脚功能 图2.3 DS1302数据读/写时序 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2.2,其中奇数为读操作,偶数为写操作。 时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式。通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。 AM-PM/12-24[小]时方式:[小]时寄存器的位7定义为12或24[小]时方式选择位。它为高电平时,选择12[小]时方式。在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM。在24[小]时方式下,位5为第二个10[小]时位(20~23h)。 寄存器名 命令字节 取值范围 寄存器内容 写 读 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 00~59 CH 10s SEC 分寄存器 82H 83H 00~59 0 10min MIN [小]时寄存器 84H 85H 00~23或01~12 12/24 0 10A/P HR HR 日期寄存器 86H 87H 01~28,29,30,31 0 0 10DATE DATE 月份寄存器 88H 89H 01~12 0 0 0 10M MONTH 周寄存器 8AH 8BH 01~07 0 0 0 0 0 DAY 年寄存器 8CH 8DH 00~99 10YEAR YEAR 表2.2 内部寄存器地址和内容 DS1302的晶振选用32.768kHz,电容推荐值为6pF,因为振荡频率较低,也可以不接电容,对记时精度影响不大。 2.4 74LS164-八位移位寄存器 2.4.1 74LS64简介 74LS164是一个8位移位寄存器,起其主要电特性的典型值如下: 型号 fm Pn 54/74164 36MHz 185mW 54/74LS164 36MHz 80mW 当清除(CLEAR)为低电平时,输出端(QA~QH)均为低电平。 串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。 引出端符号: CLOCK 时钟输入端 CLEAR 同步清楚输入端(低电平有效) A,B 串行数据输入端 QA~QH 输出端 其管脚图如图2.3: 图2.3 74LS164管脚图 2.4.2 74LS164逻辑介绍: 1.极限值: 电源电压……………………… 7V 输入电压……………………… 5.5V 工作环境温度: 54164……………………… -55~125°C 74164……………………… -0~70°C 储存温度……………………… -65~150°C 2.其真值表如表2.3 操作模式 输入 输出 复位 MR A B Q0 Q1~Q7 移位 L × × L Q0~Q6 H L L L Q0~Q6 H L H L Q0~Q6 H H L L Q0~Q6 H H H H Q0~Q6 表2.3 74LS164特性表 H — 高电平 L — 低电平 × — 任意电平 3.时序图: 时序图如图2.4 图2.4 74LS164时序图 3硬件电路 3.1 线路的设计 根据本课题的要求:数字钟要显示现在的日历时间包括年、月、日、星期、时、分、秒和是否为闰年。所以,需要选用19个共阳极数码管,且选用3片74LS164。数码管要通过74LS164送显,所以19个数码管必须排成3排。 设计思想:按照系统设计功能的要求,初步确定设计系统由电源转换模块、主控制模块、时钟模块、显示模块、键盘接口模块共5个模块组成,电路系统构成框图如图3.1所示: 图3.1 电路系统构成框图 3.1.1 电源转换模块 日常用到的都是220V的交流电源,所以,需要用变压器将其转换为线路设计中所用到的直流电源。此转换后的直流电源为+12V,而线路设计中许多芯片所用到的电压为+5V,因此,还需有12V到5V的转换电路。此转换采用7805(三端稳压器)来完成,转换图如下: Vin=12V Vout=5V 470uF 470uF 104pF 图3-1 7805电压转换电路 当Vin>5V时,Vout端可得到稳定的5V电压。 图中,104pF电容的作用是去高频干扰; 3.1.2 主控制模块 此模块由实时时钟芯片DS1302和AT89C52组成。DS1302只有3个管脚SCLK,I/O,RST分别接AT89C52的P3.2,P3.3,P3.4。通过串行输入并行输出来送显示模块。 3.1.3 显示模块 显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路。考虑到一次扫描19位数码管显示时会出现闪烁情况,设计时19个数码管分为3排同时扫描。第一排6个数码管分别为千年、百年、十年、年、十月、月,第二排6个数码管分别为十时、时、十分、分、十秒、秒,第三排7个数码管分别为星期、阴历十月、阴历月、阴历十日、阴历日、十日、日。显示时采用串行口输出段码,用3片74LS164来驱动3排数码管,这样扫描一次只需7ms。 74LS164内部为8个D触发器,用以实现数据的串行移位。单片机一串行口方式0(移位寄存器方式)输出数据,3片74LS164作为3排共阳数码管的串/并转换显示借口。74LS164为TTL单向8位移位寄存器,可以实现串行输入,并行输出。其中A、B(第1、2管脚)为串行数据输入端,2个引脚按逻辑“与”运算规律输入信号,共一个输入信号时可以并接,共同作为输入脚。CP(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到CP 端时,移位寄存器移一位。8个时钟脉冲过后,8位二进制数全部移入74LS164中。MR(第9脚)为复位端,当该脚为低电平时,移位寄存器各位复0;只有当它为高电平时,时钟脉冲才起作用。Q1~Q8(第3~6和10~13引脚)并行输出端分别数码管的h~a(因为串行口从低位开始传送)各段对应的引脚上。在给出了8个脉冲后,最先进入74LS164的第1个字节数据到达了最高位。再来1个脉冲,第1个脉冲就会从最高位移出,进入下个74LS164的第1位。3片74LS164首尾相串,而时钟端则接在一起。这样,当输入8个脉冲时,从单片机RXD端输出的第1字节数据就进入了第1片74LS164中,而当第2个8个脉冲到来后,第1字节数据就进入了第2片74LS164,而随后的第2字节的数据则进入了第1片74LS164。这样,当第3个8个脉冲完成后,首次送出的数据被送到了最下面的164(第3片)中,其它数据依次出现在第2和第1片74LS164中,实现了数据在74LS164中的串行输入、并行输出。 在方式0状态下,串行口为同步移位寄存器方式,其波特率是固定的,为fOSC/12。数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端输出。发送、接收数据时低位在先。所以根据本小姐下面提供的电路图,在编写程序时,查共阳数码管的段码的二进制数据应该将正常的共阳数码管0~9的二进制值按位反序排序,如原来的二进制为11000000(C0H),要改为00000011(03H),就能使数码管正常显示了。 3.1.4 键盘接口设计 用普通按钮接10KΩ上拉电阻,用查询法完成读键功能。 3.2 电路图的绘制 电路图的绘制通过PROTELL 99 SE完成。选定需要的芯片,按照PROTEL绘图的步骤完成。 3.3 电路板的焊接 在完成PROTEL绘图后,按照连接好的线路图,将芯片焊接到对应的位置上。检查线路,看是否焊接出现短路情况。 3.4 打开电源前应注意的问题 1)先测火线、地线、零线各线之间有没有电阻; 2)测控制板上各IC的5V电源是否接正确、有没有与地短路; 3)确认IC方向是否插正确; 4)第一次开开关时,必须手不能离开开关。若有异样,立刻切断电源; 4软件设计部分 4.1 阳历程序的设计 因为使用了时钟芯片DS1302,阳历程序只需要从DS1302各寄存器中读出年、周、月、日、小时、分、秒等数据,再处理既可。在首次对DS1302进行操作之前,必须对他进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓存单元。阳历程序流程图见图4.1所示。 图4.1 阳历程序流程图 4.2 时间调整程序设计 调整时间用3个调整按纽,1个作为移位、控制用,另外2个作为加个减用,分别定义为控制按纽、加按纽、减按纽。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定时间熄灭一次,比如说50ms。利用定时器记时,当到达50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序流程图如图4.2所示。 图4.2 时间调整程序流程图 4.3 阴历程序设计 阴历程序的实现是要靠阳历日期来推算的,要根据阳历来推算阴历日期,首先要计算法。推算方法就是,根据阳历当前日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年2月为29秒天,平年2月为28天)。阴历一年有12个月或13个月(含闰月),一个月为30天 或29天。如果把一个只有29天的月称为小月,用1为标志,把30天的月称为大月,用0为标志,那么12位二进制能表示一年12个月的大小。如果有闰月,则把闰月的月份作为一个字节的高4位,低4位表示闰月大小,大月为0,小月为1,这样一个字节就包含了所有闰月的信息。阴历春节和阳历元旦相差的天数也用一个字节表示。总共用4字节就可以存储一年中任何一天阳历和阴历的对应关系的有关数据,例如2004年的阴历和阳历对应关系表如表4.1所示。 2004年的春节和元旦差21天,这样2004年的信息表示为:21,42H,52H,21H。其中表示12个月大小信息的字节,第4位和第7位不用。第个字节为十进制,其他的都为十六进制。按此方法,50年的阳历和阴历对应关系表总共使用200字节。 月份 1 2 3 4 5 6 7 8 9 10 11 12 闰 2月 大小 小 大 大 大 小 大 小 大 小 大 小 大 小 天数 1 0 0 0 1 0 1 0 1 0 1 0 1 二进制 29 30 30 30 29 30 29 30 29 30 29 30 16进制 4 2 5 2 21 表4.1 2004年阴历和阳历对应关系表 2000 — 2050年的关系表: 35,15H,51H,00H(2000)23,11H,52H,41H(2001)42,12H,65H,00H(2002) 31,11H,32H,00H(2003)21,42H,52H,21H(2004)39,52H,25H,00H(2005) 28,25H,04H,71H(2006)48,66H,42H,00H(2007)37,33H,22H,00H(2008) 25,15H,24H,51H(2009)44,05H,52H,00H(2010)33,22H,65H,00H(2011) 22,21H,25H,41H(2012)40,24H,52H,00H(2013)30,52H,42H,91H(2014) 49,55H,05H,00H(2015)38,26H,44H,00H(2016)27,53H,50H,60H(2017) 46,53H,24H,00H(2018)35,25H,54H,00H(2019)24,41H,52H,41H(2020) 42,45H,25H,00H(2021)31,24H,52H,00H(2022)21,51H,12H,21H(2023) 40,55H,11H,00H(2024)28,26H,21H,61H(2025)47,26H,61H,00H(2026) 36,13H,31H,00H(2027)25,05H,31H,51H(2028)43,12H,54H,00H(2029) 33,51H,25H,00H(2030)22,42H,25H,31H(2031)41,32H,22H,00H(2032) 30,55H,02H,71H(2033)49,55H,22H,00H(2034)38,26H,62H,00H(2035) 27,13H,64H,60H(2036)45,13H,32H,00H(2037)34,12H,55H,00H(2038) 23,10H,53H,51H(2039)42,22H,45H,00H(2040)31,52H,22H,00H(2041) 21,52H,44H,21H(2042)40,55H,44H,00H(2043)29,26H,50H,71H(2044) 47,26H,64H,00H(2045)36,25H,32H,00H(2046)25,23H,32H,50H(2047) 44,44H,55H,00H(2048)32,24H,45H,00H(2049)22,55H,11H,30H(2050) 有了算法和数据以后,就可以设计软件了。根据当前阳历的日期,算出阳历为该年中的第几天。图4.3为计算阳历中任何一天在该年中为第几天的流程图。 计算出当前阳历日期为该年中的第几天后,再减去阳历该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年的总第几天了。根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历年为阳历年的前一年。这种情况下,根据实际,当前阴历日期会处于阴历11月或12月,此时春节和元旦的日差减去前面计算出的当前阳历日期在阳历年为第几天的数据,其结果表示当前阴历日期离春节的天数。计算出阳历天数为该年的第几天,存放在R2和R3中。计算出天数后如果大于#FFH,则把#FFH存放在R2中,余值存放在R3中。也就是说在用积存器R2和R3表示的天数信息中,R2充当主积存器,数据先存满R2,再存R3。在整个转换程序中,这里面的数据不能被覆盖。 计算出阳历总天数后,就可以根据它来推算阴历日期。推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计算春节和元旦的日差时,假设元旦为0天,春节为n天,则日差为n。前面计算的阳历总天数是该天在该年中的第几天,是以元旦为1而得到的,与计算春节和元旦日差的这种方法相比,其数值少了1,所以要在原来本应该以0作为该天就是春节的依据的基础上加1,所以以1作为该天是春节的标志);如果结果小于1,则阴历应该是阳历的前一年;如果结果大于1,说明阳历和阴历为同一年。再根据查表所得的该年的阴历的闰月和大小月的信息,就可以推算出该天的阴历日期了。图4.4为由总天数推算出阴历日期的程序流程图。 图4.3 计算阳历天数程序流程图 图4.4 推算阴历日期的程序流程图 5调试 调试中出现的问题及解决方法: (1)晶振无法正常起振 原因:VCC混有交流成分 解决方法:在电源正负极间接上一个电容。 (2)数码管显示乱码形式 原因:数码管的段码表错误,没有与硬件相结合。 解决方法:将0-9十个数字全部输入显示,找出与之对应的正确的数码管段码表。 (3)无法初始化DS1302 原因:电路板上DS1302虚焊。 解决方法:将DS1302虚焊部分重新焊接。 6小结 可见技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的数字时钟。数字时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。 无可否认机械时代已经过去,电子时代已经到来。做为新时代的我们,更应该提高自身能力,适应新时代的发展。知识来自实践,多去生活中探询所需要的。对于上述所提到的研究课题,我们应尽量考虑到人的因素,增强时钟的实用性和操作性,为使用者提供切实的方便,营造一种舒适的生活氛围。所以,在设计的时候,应该从多方面、多角度去考虑问题,而且应该进一步提高时钟的质量。 7致谢 首先,感谢学校四年来对我的培养。本课题的前期准备以及整个研究过程是在王文强老师的耐心指导下完成的,他严谨的治学态度、扎实的理论基础、全身心投入工作的精神以及对学生尽心尽力的态度给了我极大的帮助与鼓励,使我受益匪浅,在此谨对他表示崇高的敬意和衷心的感谢! 还要衷心感谢其他所有对本课题的研究和论文撰写有过帮助的同学。 8参考文献 【1】余永权.ATMEL89 系列单片机应用技术,北京航空航天大学出版社,2002 【2】李广弟等.单片机基础,北京航空航天大学出版社,2001 【4】AT89C52 Datasheet ,ATMEL,2004 【5】DS1302 Datasheet ,DALLAS Semiconductor,2004 【6】74LS164 Datasheet www.21IC.com 9附录 ;*************************** ;* 万 年 历 程 序 * ;*************************** ;从1302中读出数据放在67H(高两位年)66H(低两位年)65H(月)64H(星期) ;63H(日)62H([小]时)61H(分)60H(秒)57H(农历月)56H(农历日) ;显示缓存单元7CH-7BH(4CH-4BH)(年低位),7AH-79H(4AH-49H)月,78H(48H)星期 ;77H-76H(47H-46H)日,75H-74H(45H-44H)[小]时,73H-72H(43H-42H)分 ;71H-70H(41H-40H)秒,5EH-5DH(55H-54H)农历年 ;5CH-5BH(53H-52H)农历月,5AH-59H(51H-50H)农历日 ;闰月标志为F0,定时器T1为调整时间闪烁用。 ; ; SCLK EQU P3.2 IO EQU P3.3 RST EQU P3.4 year DATA 66H month DATA 65H week DATA 64H day DATA 63H hour DATA 62H mintue DATA 61H second DATA 60H DS1302_ADDR DATA 32H DS1302_DATA DATA 31H ORG 0000H AJMP START ORG 0003H RETI ORG 000BH RETI ORG 001BH LJMP INTT1 ORG 0023H RETI ORG 002BH RETI ;*************************** ;* 主 程 序 * ;*************************** START: SETB EA MOV SCON,#00H ;串行输出,方式0 MOV TMOD,#10H ;计数器1,方式1 MOV TL1,#00H MOV TH1,#00H MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写1302 LCALL WRITE MOV DS1302_ADDR,#90H MOV DS1302_DATA,#0A6H ;1302充电,充电电流1.1mA LCALL WRITE MAIN1: MOV DS1302_ADDR,#8DH ;读出年 LCALL READ MOV year,DS1302_DATA MOV DS1302_DATA,#8BH ;读出星期 LCALL READ MOV week,DS1302_DATA MOV DS1302_ADDR,#89H ;读出月 LCALL READ MOV month,DS1302_DATA MOV DS1302_ADDR,#87H ;读出日 LCALL READ MOV day,DS1302_DATA MOV DS1302_ADDR,#85H ;读出[小]时 LCALL READ MOV hour,DS1302_DATA MOV DS1302_ADDR,#83H ;读出分 LCALL READ MOV mintue,DS1302_DATA MOV DS1302_ADDR,#81H ;读出秒 LCALL READ MOV second,DS1302_DATA MOV R0,year ;年分离,送显示缓存 LCALL DIVIDE MOV 7BH,R1 MOV 4BH,R1 MOV 7CH,R2 MOV 4CH,R2 MOV 78H,week MOV 48H,week MOV R0,month ;月分离,送显示缓存 LCALL DIVIDE MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2 MOV R0,day ;日分离,送显示缓存 LCALL DIVIDE MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2 MOV R0,hour ;[小]时分离,送显示缓存 LCALL DIVIDE MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2 MOV R0,minute ;分分离,送显示缓存 LCALL DIVIDE MOV 72H,R1 MOV 42H,R1 MOV 73H,R2 MOV 43H,R2 MOV R0,second ;秒分离,送显示缓存 LCALL DIVIDE MOV 70H,R1 MOV 40H,R1 MOV 71H,R2 MOV 41H,R2 LCALL DISPLAY LCALL GENGXIAN ;更新农历程序 JNB P1.1,SETG JNB F0,SSS CLR P1.3 ;闰月,则p1.3清0,指示灯亮 LJMP MAIN1 SSS: SETB P1.3 ;非闰月,则p1.3置位,指示灯灭 LJMP MAIN1 ;*************************** ;* 公 历 设 置 程 序 * ;*************************** SETG: SETB TR1 SETB ET1 CLR 08H CLR 09H CLR 0AH CLR 0BH CLR 0CH CLR 0DH CLR 0EH CLR 0FH MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写1302 LCALL WRITE MOV DS1302_ADDR,#80H MOV DS1302_DATA,#80H ;1302停止振荡 LCALL WRITE GWAIT: LCALL DISPLAY JNB P1.1,GWAIT SETG1: LCALL DISPLAY JNB P1.1,SETG2 JNB P1.2,GADDYEAR AJMP SETG1 GADDYEAR: MOV R7,66H ;年加1 LCALL ADD1 MOV 66H,A CJNE A,#51H,GADDYEAR1 MOV 66H,#01H GADDYEAR1: MOV DS1302_ADDR,#8CH ;年值送入1302 MOV DS1302_DATA,66H LCALL WRITE MOV R0,66H LCALL DIVIDE ;年分离送显示缓存 MOV 4BH,R1 MOV 7BH,R1 MOV 4CH,R2 MOV 7CH,R2 WAITT1: LCALL DISPLAY JNB P1.2,WAITT1 AJMP SETG1 SETG2: SETB 0AH ;调月时闪标志 GWAIT2: LCALL DISPLAY JNB P1.1,GWAIT2 SETG3: LCALL DISPLAY JNB P1.1,SETG4 JNB P1.2.GADDMONTH AJMP SETG3 GADDMONTH: MOV R7,65H ;月加1 LCALL ADD1 MOV 65H,A CJNE A,#13,GADDMONTH1 MOV 65H,#01H GADDMONTH1: MOV DS1302_ADDR,#88H ;月值送入1302 MOV DS1302_DATA,65H LCALL WRITE MOV R0,65H LCALL DIVIDE ;月分离送显示缓存 MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2 WAITT2: LCALL DISPLAY JNB P1.2,WAITT2 AJMP SETG3 SETG4: SETB 0BH ;调日时闪标志 GWAIT4: LCALL DISPLAY JNB P1.1,GWAIT4 SETG5: LCALL DISPLAY JNB P1.1,SETG6 JNB P1.2,GADDDAY AJMP SETG5 GADDDAY: MOV R7,63H ;日加1 LCALL ADD1 MOV 63H,A CJNE A,#32H,GADDDAY1 MOV 63H,#01H GADDDAY1: MOV DS1302_ADDR,#86H ;日值送入1302 MOV DS1302_DATA,63H LCALL WRITE MOV R0,63H LCALL DIVIDE ;日分离送显示缓存 MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2 WAITT3: LCALL DISPLAY JNB P1.2,WAITT3 AJMP SETG5 SETG6: SETB 0CH ;调星期时闪标志 GWAIT6: LCALL DISPLAY JNB P1.1,GWAIT6 SETG7: LCALL DISPLAY JNB P1.1,SETG8 JNB P1.2,GADDWEEK AJMP SETG7 GADDWEEK: MOV R7,64H LCALL ADD1 MOV 64H,A CJNE A,#08,GADDWEEK1 MOV 64H,#01H GADDWEEK1: MOV DS1302_ADDR,#8AH ;星期值送入1302 MOV DS1302_DATA,64H LCALL WRITE MOV R0,64H LCALL DIVIDE ;星期分离送显示缓存 MOV 48H,R1 MOV 78H,R1 WAITT4: LCALL DISPLAY JNB P1.2,WAITT4 AJMP SETG7 SETG8: SETB 0DH ;调[小]时时闪标志 GWAIT8: LCALL DISPLAY JNB P1.1,GWAIT8 SETG9: LCALL DISPLAY JNB P1.1,SETG10 JNB P1.2,GADDHOUR AJMP SETG9 GADDHOUR: MOV R7,62H ;[小]时加1 LCALL ADD1 MOV 62H,A CJNE A,#24H,GADDHOUR1 MOV 62H,#00H GADDHOUR1: MOV DS1302_ADDR,#84H ;[小]时值送入1302 MOV DS1302_DATA,62H LCALL WRITE MOV R0,62H LCALL DIVIDE ;[小]时分离送显示缓存 MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2 WAITT5: LCALL DISPLAY JNB P1.2,WAITT5 AJMP SETG9 SETG10: SETB 0EH ;调分时闪标志 GWAIT10: LCALL DISPLAY JNB P1.1,GWAIT10 SETG11: LCALL DISPLAY JNB P1.1,SETGOUT JNB P1.2,GADDMINTUE AJMP SETG11 GADDMINTUE: MOV R7,61H ;分加1 LCALL ADD1 MOV 61H,A CJNE A,#60H,GADDMINTUE1 MOV 61H,#00H GADDMINTUE1: MOV DS1302_ADDR,#82H ;分值送入1302 MOV DS1302_DATA,61H LCALL WRITE MOV R0,61H LCALL DIVIDE ;分分离送显示缓存 MOV 72H,R1 MOV 42H,R1 MOV 73H,R2 MOV 43H,R2 WAITT6: LCALL DISPLAY JNB P1.2,WAITT6 AJMP SETG11 SETGOUT: LCALL DISPLAY JNB P1.1,SETGOUT LCALL GENGXIAN MOV DS1302_ADDR,#80H MOV DS1302_DATA,#00H ;1302晶振开始振荡 LCALL WRITE MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#80H ;禁止写入1302 LCALL WRITE CLR 08H CLR 09H CLR 0AH CLR 0BH CLR 0CH CLR 0DH CLR 0EH CLR 0FH CLR ET1 ;关闪中断 CLR TR1 LJMP MAIN1 ;*************************** ;* 闪 动 调 时 程 序 * ;*************************** INTT1: PUSH ACC PUSH PSW GFLASH: CPL 0FH JB 0FH,GFLASH1 MOV 7CH,4CH ;全部显示 MOV 7BH,4BH MOV 7AH,4AH MOV 79H,49H MOV 78H,48H MOV 77H,47H MOV 76H,46H MOV 75H,45H MOV 74H,44H MOV 73H,43H MOV 72H,42H MOV 71H,41H MOV 70H,40H GFLASHOUT: POP PSW POP ACC RETI GFLASH1: JB 0AH,GFLASH2 ;调年闪 MOV 7CH,#0AH MOV 7BH,#0AH AJMP GFLASHOUT GFLASH2: JB 0BH,GFLASH3 ;调月闪 MOV 7AH,#0AH MOV 79H,#0AH AJMP GFLASHOUT GFLASH3: JB 0CH,GFLASH4 ;调日闪 MOV 77H,#0AH MOV 76H,#0AH AJMP GFLASHOUT GFLASH4: JB 0DH,GFLASH5 ;调星期闪 MOV 78H,#0AH AJMP GFLASHOUT GFLASH5: JB 0AH,GFLASH6 ;调[小]时闪 MOV 75H,#0AH MOV 74H,#0AH AJMP GFLASHOUT GFLASH6: MOV 73H,#0AH ;调分闪 MOV 72H,#0AH AJMP GFLASHOUT ;*************************** ;* 加 1 程 序 * ;*************************** ADD1: MOV A,R7 ADD A,#01H DA A RET ;*************************** ;* 分 离 程 序 * ;*************************** DIVIDE: MOV A,R0 ANL A,#0FH MOV R1,A MOV A,R0 SWAP A ANL A,#0FH MOV R2,A RET ;*************************** ;* 写 1302 程 序 * ;*************************** WRITE: CLR SCLK NOP SETB RST NOP MOV A,DS1302_ADDR MOV R4,#8 WRITE1: RRC A ;送地址给1302 NOP NOP CLR SCLK NOP NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE1 CLR SCLK NOP MOV A,DS1302_DATA MOV R4,#8 WRITE2: RRC A NOP ;送数据给1302 CLR SCLK NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE2 CLR RST RET ;*************************** ;* 读 1302 程 序 * ;*************************** READ: CLR SCLK NOP NOP SETB RST NOP MOV A,DS1302_ADDR MOV R4,#8 READ1: RRC A ;送地址给1302 NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP NOP CLR SCLK NOP NOP DJNZ R4,READ1 MOV R4,#8 READ2: CLR SCLK NOP ;从1302中读出数据 NOP NOP MOV C,IO NOP NOP NOP NOP NOP RRC A NOP NOP NOP NOP SETB SCLK NOP DJNZ R4,READ2 MOV DS1302_DATA,A CLR RST RET ;*************************** ;* BCD码转换为十进制程序 * ;*************************** BCD_10: MOV A,R0 ANL A,#0FH MOV R1,A ;高位*10,加低位 MOV A,R0 SWAP A ANL A,#0FH MOV B,#10 MUL AB ADD A,R1 MOV R0,A RET ;*************************** ;* 查 一 年 数 据 程 序 * ;*************************** CHECKMONTH: LCALL BCD_10 MOV A,R0 MOV B,#04 MUL AB MOV R1,A MOV DPTR,#TAB MOVC A,@A+DPTR MOV R7,A ;第1字节送R7 INC R1 MOV A,R1 MOVC A,@A+DPTR MOV R6,A ;第2字节送R6 INC R1 MOVC A,@A+DPTR MOV R5,A ;第3字节送R5 INC R1 MOV A,R1 MOVC A,@A+DPTR MOV R4,A ;第4字节送R4 RET ;*************************** ;* 自 动 更 新 农 历 * ;*************************** GENGXIAN: MOV R2,#00H MOV R3,#00H MOV A,month CJNZ A,#01H,GM2 MOV R0,day ;当前月为1月 LCALL BCD_10 ;当前日转换为十进制,送R2 MOV A,R0 MOV R2,A AJMP TIAOZHENG1 GM2: CJNE A,#02H,GM3 MOV R0,day ;当前月为2月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加31,送R2 ADD A,#31 MOV R2,A AJMP TIAOZHENG1 GM3: CJNE A,#03H,GM4 MOV R0,day ;当前月为3月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加59,送R2 ADD A,#59 MOV R2,A AJMP TIAOZHENG1 GM4: CJNE A,#04H,GM5 MOV R0,day ;当前月为4月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加90,送R2 ADD A,#90 MOV R2,A AJMP TIAOZHENG1 GM5: CJNE A,#05H,GM6 MOV R0,day ;当前月为5月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加120,送R2 ADD A,#120 MOV R2,A AJMP TIAOZHENG1 GM6: CJNE A,#06H,GM7 MOV R0,day ;当前月为6月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加151,送R2 ADD A,#151 MOV R2,A AJMP TIAOZHENG1 GM7: CJNE A,#07H,GM8 MOV R0,day ;当前月为7月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加181,送R2 ADD A,#181 MOV R2,A AJMP TIAOZHENG1 GM8: CJNE A,#08H,GM9 MOV R0,day ;当前月为8月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加212,送R2 ADD A,#212 MOV R2,A AJMP TIAOZHENG1 GM9: CJNE A,#09H,GM10 MOV R0,day ;当前月为9月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加243 CLR C ADD A,#243 JC GGG MOV R2,A ;A没有溢出,送R2 AJMP TIAOZHENG1 GGG: MOV R3,#0FFH ;A溢出,A加1送R2 INC A ;R3中送#0FFH MOV R2,A AJMP TIAOZHENG1 GM10: CJNE A,#10H,GM11 MOV R0,day ;当前月为10月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加18,送R2 ADD A,#18 ;R3中送#0FFH MOV R2,A MOV R3,#0FFH AJMP TIAOZHENG1 GM11: CJNE A,#11H,GM12 MOV R0,day ;当前月为11月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加49,送R2 ADD A,#49 ;R3中送#0FFH MOV R2,A MOV R3,#0FFH AJMP TIAOZHENG1 GM12: MOV R0,day ;当前月为12月 LCALL BCD_10 ;当前日转换为十进制 MOV A,R0 ;再加79,送R2 ADD A,#79 ;R3中送#0FFH MOV R2,A MOV R3,#0FFH AJMP TIAOZHENG1 TIAOZHENG1: MOV A,year MOV B,#04 DIV AB MOV A,B JNZ GGG1 MOV A,65H ;当前年为闰年 CJNE A,#01H,AAAA AJMP GGG1 ;当前月是1 AAAA: CJNE A,#02H,BBBB AJMP GGG1 ;当前月是2 BBBB: CJNE R2,#0FFH,GGG2 MOV R3,#0FFH ;当前月不是1和2 MOV R2,#01H ;R1和R2总和加1 AJMP GGG1 GGG2: INC R2 GGG1: MOV R0,year ;查一年数据 LCALL CHECKMONTH MOV A,R2 CLR C SUBB A,R7 MOV P1.6,C CJNE A,#01H,GGG3 MOV R2,#01H MOV A,R3 CJNE A,#00H,NEW1 MOV 57H,#01H ;R2和R3总和减R7 MOV 56H,#01H ;为0,则为春节 LJMP S_PLAY GGG3: CJNE A,#00H,GGG6 MOV R2,A AJMP OLD GGG6: JNB P1.6,NEW2 MOV A,R7 CLR C SUBB A,R2 MOV R7,A CJNE R3,#0FFH,GGG5 MOV A,R3 CLR C SUBB A,R7 MOV R2,A MOV R3,#00H AJMP NEW GGG5: MOV A,R7 MOV R2,A AJMP OLD NEW1: MOV R2,#0FFH MOV R3,#01H AJMP NEW NEW2: MOV R2,A MOV A,R3 CJNE A,#0FFH,GGG4 MOV A,R2 MOV R3,A MOV R2,#0FFH GGG4: AJMP NEW ;*************************** ;* OLD * ;*************************** ;农历为公历的前一年 OLD: MOV A,year DEC A MOV R0,A LCALL CHECKMONTH MOV A,R2 CLR C SUBB A,#29 MOV P1.6,C MOV R6,A MOV A,R5 JB ACC.0,AAA ;12月为小月,转到AAA MOV A,R2 CLR C SUBB A,#30 MOV P1.6,C MOV R6,A AAA: MOV A,R6 CJNE A,#00H,BBB MOV 56H,#29H ;为0,则为11月最后一天 MOV A,R5 ;小月为11月29 JB ACC.1,CCC MOV 56H,#30H ;大月为11月30 CCC: MOV 57H,#11H LJMP S_PLAY BBB: JNB P1.6,DDD MOV A,#29 ;CY为置为,为12月 CLR C SUBB A,R2 MOV R4,A MOV A,R5 JB ACC.0,EEE MOV A,#30 CLR C SUBB A,R2 MOV R4,A EEE: MOV A,R4 MOV R0,A LCALL D_BCD MOV 56H,A MOV 57H,#12H LJMP S_PLAY DDD: MOV A,#29 ;CY为0,为11月 CLR C SUBB A,R4 MOV R1,A MOV A,R5 JB ACC.1,FFF MOV A,#30 CLR C SUBB A,R4 MOV R1,A FFF: MOV A,R1 MOV R0,A LCALL D_BCD MOV 56H,A MOV 57H,#11H LJMP S_PLAY ;*************************** ;* NEW * ;*************************** ;农历和公历为同一年,此时R2中的值为FFH时,R3有值,否则为0 NEW: NOP M1: MOV A,R2 ;R2减1月天数 CLR C SUBB A,#29 MOV R1,A MOV A,R6 JB ACC.6,SM11 MOV A,R2 CLR C SUBB A,#30 MOV R1,A SM11: JC SM12 MOV A,R1 ;R2减1月天数,够减 MOV R2,A ;转2月 AJMP M2 SM12: CJNE R3,#00H,M13 ;R2减1月天数 LJMP Y1 ;不够减,判R3为0否 M13: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让1月减 MOV R2,A ;还不够,则转Y1 MOV R3,#00H AJMP M1 M2: CLR C ;R2减1月天数,够减 MOV A,R2 ;转3月 SUBB A,#29 MOV R1,A MOV A,R6 JB ACC.5,M21 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M21: JC M22 MOV A,R1 ;R2减2月天数,够减 MOV R2,A AJMP MM2 M22: CJNE R3,#00H,M23 ;R2减2月天数 LJMP Y2 ;不够减,判R3为0否 M23: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让2月减 MOV R2,A ;还不够,则转Y2 MOV R3,#00H AJMP M2 MM2: LCALL CHECKRE ;查2月,如果不为2月 CJNE A,#02H,M3 ;转3月 RM2: MOV A,R4 ANL A,#0FH JNZ RM21 MOV A,R2 CLR C SUBB A,#30 MOV R1,A AJMP RM22 RM21: MOV A,R2 CLR C SUBB A,#29 MOV R1,A RM22: JC RM23 MOV A,R1 ;R2减闰2月天数,够减 MOV R2,A ;转3月 AJMP M3 RM23: CJNE R3,#00H,RM24 ;R2减闰2月天数 LJMP RY2 ;不够减,判R3为0否 RM24: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让闰2月减 MOV R3,#00H ;还不够,则转RY2 AJMP RM2 M3: MOV A,R2 ;R2减3月天数 CLR C SUBB A,#29 MOV R1,A MOV A,R6 JB ACC.4,M31 CLR C MOV A,R2 SUBB A,#30 MOV R1,A M31: JC M32 MOV A,R1 ;R2减3月天数,够减 MOV R2,A AJMP MM3 M32: CJNE R3,#00H,M33 ;R2减3月天数 LJMP Y3 ;不够减,判R3为0否 M33: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让3月减 MOV R2,A ;还不够,则转Y3 MOV R3,#00H AJMP M3 MM3: LCALL CHECKRE ;查3月如果不为闰月 CJNE A,#03H,M4 ;转4月 RM3: MOV A,R4 ANL A,#0FH ;R2减闰3月天数 JNZ RM31 MOV A,R2 CLR C SUBB A,#30 MOV R1,A AJMP RM32 RM31: MOV A,R2 CLR C SUBB A,#29 MOV R1,A RM32: JC RM33 MOV A,R1 ;R2减闰3月天数,够减 MOV R2,A ;转4月 AJMP M4 RM33: CJNE R3,#00H,RM34 ;R2减闰3月天数 LJMP RY3 ;不够减,判R3为0否 RM34: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让闰3月减 MOV R2,A ;还不够,则转RY3 MOV R3,#00H AJMP RM3 M4: MOV A,R2 CLR C ;R2减4月天数 SUBB A,#29 MOV R1,A MOV A,R6 JB ACC.2,M41 CLR C MOV A,R2 SUBB A,#30 MOV R1,A M41: JC M42 MOV A,R1 ;R2减4月天数,够减 MOV R2,A AJMP MM4 M42: CJNE R3,#00H,M43 ;R2减4月天数 LJMP Y4 ;不够减,判R3为0否 M43: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让4月减 MOV R2,A ;还不够,则转Y4 MOV R3,#00H AJMP M4 MM4: LCALL CHECKRE ;查4月,如果不为闰月 CJNE A,#04H,M5 ;转5月 RM4: MOV A,R4 ANL A,#0FH ;R2减闰4月天数 JNZ RM41 MOV A,R2 CLR C SUBB A,#30 MOV R1,A AJMP RM42 RM41: MOV A,R2 CLR C SUBB A,#29 MOV R1,A RM42: JC RM43 MOV A,R1 ;R2减闰4月天数,够减 MOV R2,A ;转5月 AJMP M5 RM43: CJNE R3,#00H,RM44 ;R2减闰4月天数 LJMP RY4 ;不够减,判R3为0否 RM44: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让闰4月减 MOV R2,A ;还不够,则转Y4 MOV R3,#00H AJMP RM4 M5: MOV A,R2 CLR C ;R2减5月天数 SUBB A,#29 MOV R1,A MOV A,R6 JB ACC.1,M51 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M51: JC M52 MOV A,R1 ;R2减5月天数,够减 MOV R2,A AJMP MM5 M52: CJNE R3,#00H,M53 ;R2减5月天数 LJMP Y5 ;不够减,判R3为0否 M53: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让5月减 MOV R2,A ;还不够,则转Y5 MOV R3,#00H LJMP M5 MM5: LCALL CHECKRE ;查5月,如果不为闰月 CJNE A,#05H,M6 ;转6月 RM5: MOV A,R4 ;R2减闰5月天数 ANL A,#0FH JNZ RM51 MOV A,R2 CLR C SUBB A,#30 MOV R1,A LJMP RM52 RM51: MOV A,R2 CLR C SUBB A,#29 MOV R1,A RM52: JC RM53 MOV A,R1 ;R2减闰5月天数,够减 MOV R2,A ;转6月 AJMP M6 RM53: CJNE R3,#00H,RM54 ;R2减闰5天数 LJMP RY5 ;不够减,判R3为0否 RM54: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让闰5月减 MOV R2,A ;还不够,则转RY5 MOV R3,#00H LJMP RM5 M6: MOV A,R2 CLR C ;R2减6月天数 SUBB A,#29 MOV R1,A MOV A,R6 JB ACC.0,M61 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M61: JC M62 MOV A,R1 ;R2减6月天数,够减 MOV R2,A LJMP MM6 M62: CJNE R3,#00H,M63 ;R2减6月天数 LJMP Y6 ;不够减,判R3为0否 M63: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让6月减 MOV R2,A ;还不够,则转Y6 MOV R3,#00H LJMP M6 MM6: LCALL CHECKRE ;查6月,如果不为闰月 CJNE A,#06H,M7 ;转7月 RM6: MOV A,R4 ANL A,#0FH ;R2减闰6月天数 JNZ RM61 MOV A,R2 CLR C SUBB A,#30 MOV R1,A LJMP RM62 RM61: MOV A,R2 CLR C SUBB A,#29 MOV R1,A RM62: JC RM63 MOV A,R1 ;R2减闰6月天数,够减 MOV R2,A ;转7月 LJMP M7 RM63: CJNE R3,#00H,RM64 ;R2减闰6天数 LJMP RY6 ;不够减,判R3为0否 RM64: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让闰6月减 MOV R2,A ;还不够,则转RY6 MOV R3,#00H LJMP RM6 M7: MOV A,R2 CLR C ;R2减7月天数 SUBB A,#29 MOV R1,A MOV A,R5 JB ACC.6,M71 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M71: JC M72 MOV A,R1 ;R2减7月天数,够减 MOV R2,A LJMP MM7 M72: CJNE R3,#00H,M73 ;R2减7月天数 LJMP Y7 ;不够减,判R3为0否 M73: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让7月减 MOV R2,A ;还不够,则转Y7 MOV R3,#00H LJMP M7 MM7: LCALL CHECKRE ;查7月,如果不为闰月 CJNE A,#07H,M8 ;转8月 RM7: MOV A,R4 ANL A,#0FH ;R2减闰7月天数 JNZ RM71 MOV A,R2 CLR C SUBB A,#30 MOV R1,A LJMP RM72 RM71: MOV A,R2 CLR C SUBB A,#29 MOV R1,A RM72: JC RM73 MOV A,R1 ;R2减闰7月天数,够减 MOV R2,A ;转8月 LJMP M8 RM73: CJNE R3,#00H,RM74 ;R2减闰7月天数 LJMP RY7 ;不够减,判R3为0否 RM74: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让闰7月减 MOV R2,A ;还不够,则转RY7 MOV R3,#00H LJMP RM7 M8: MOV A,R2 CLR C ;R2减8月天数 SUBB A,#29 MOV R1,A MOV A,R5 JB ACC.5,M81 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M81: JC M82 MOV A,R1 ;R2减8月天数,够减 MOV R2,A ;转9月 LJMP M9 M82: CJNE R3,#00H,M83 ;R2减8月天数 LJMP Y8 ;不够减,判R3为0否 M83: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让8月减 MOV R2,A ;还不够,则转Y8 MOV R3,#00H LJMP M8 M9: MOV A,R2 CLR C ;R2减9月天数 SUBB A,#29 MOV R1,A MOV A,R5 JB ACC.4,M91 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M91: JC M92 MOV A,R1 ;R2减9月天数,够减 MOV R2,A LJMP MM9 M92: CJNE R3,#00H,M93 ;R2减9月天数 LJMP Y9 ;不够减,判R3为0否 M93: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让9月减 MOV R2,A ;还不够,则转Y9 MOV R3,#00H LJMP M9 MM9: LCALL CHECKRE ;查9月,如果不为闰月 CJNE A,#09H,M10 ;转10月 RM9: MOV A,R4 ANL A,#0FH ;R2减闰7月天数 JNZ RM91 MOV A,R2 CLR C SUBB A,#30 MOV R1,A LJMP RM92 RM91: MOV A,R2 CLR C SUBB A,#29 MOV R1,A RM92: JC RM93 MOV A,R1 ;R2减闰9月天数,够减 MOV R2,A ;转10月 LJMP M10 RM93: CJNE R3,#00H,RM94 ;R2减闰9月天数 LJMP RY9 ;不够减,判R3为0否 RM94: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让闰9月减 MOV R2,A ;还不够,则转RY9 MOV R3,#00H LJMP RM9 M10: MOV A,R2 CLR C ;R2减10月天数 SUBB A,#29 MOV R1,A MOV A,R5 JB ACC.2,M101 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M101: JC M102 MOV A,R1 ;R2减10月天数,够减 MOV R2,A ;转11月 LJMP M11 M102: CJNE R3,#00H,M103 ;R2减1月天数 LJMP Y10 ;不够减,判R3为0否 M103: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让10月减 MOV R2,A ;还不够,则转Y10 MOV R3,#00H LJMP M10 M11: MOV A,R2 CLR C ;R2减11月天数 SUBB A,#29 MOV R1,A MOV A,R5 JB ACC.1,M111 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M111: JC M112 MOV A,R1 ;R2减11月天数,够减 MOV R2,A ;转12月 LJMP M12 M112: CJNE R3,#00H,M113 ;R2减11月天数 LJMP Y11 ;不够减,判R3为0否 M113: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让11月减 MOV R2,A ;还不够,则转Y11 MOV R3,#00H LJMP M11 M12: MOV A,R2 CLR C ;R2减12月天数 SUBB A,#29 MOV R1,A MOV A,R5 JB ACC.0,M121 MOV A,R2 CLR C SUBB A,#30 MOV R1,A M121: CJNE R3,#00H,M122 ;R2减12月天数 LJMP Y12 ;不够减,判R3为0否 M122: MOV A,R2 ;不为0,R3加到R2中 ADD A,R3 ;再让12月减 MOV R2,A ;还不够,则转Y12 MOV R3,#00H LJMP M12 Y1: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#01H CLR F0 ;非闰月 LJMP S_PLAY Y2: CJNE R2,#00H,Y21 MOV A,R6 ;R2中为0,则为前一个月 MOV 56H,#29 ;的最后一天 JB ACC.6,Y22 MOV 56H,#30 Y22: MOV 57H,#01H CLR F0 LJMP S_PLAY Y21: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#02H CLR F0 ;非闰月 LJMP S_PLAY RY2: CJNE R2,#00H,RY21 MOV A,R6 ;R2中为0,则为前一个月 MOV 56H,#29 ;的最后一天 JB ACC.5,RY22 MOV 56H,#30 RY22: MOV 57H,#02H CLR F0 LJMP S_PLAY RY21: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#02H SETB F0 ;闰月 LJMP S_PLAY Y3: CJNE R2,#00H,Y31 LCALL CHECKRE ;查前一个月是否为闰月 CJNE A,#02H,Y32 MOV 56H,#29H ;前一个月是闰月 MOV A,R4 ANL A,#0FH ;R2中为0,则为前一个月 JNZ Y33 ;的最后一天 MOV 56H,#30H MOV 57H,#02H SETB F0 LJMP S_PLAY Y33: MOV 57H,#02H SETB F0 LJMP S_PLAY Y32: MOV 56H,#29 ;前一个月不是闰月 MOV A,R6 JB ACC.5,Y34 MOV 56H,#30 Y34: MOV 57H,#02H CLR F0 LJMP S_PLAY Y31: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#03H CLR F0 LJMP S_PLAY RY3: CJNE R2,#00H,RY31 MOV 56H,#29H MOV A,R6 JB ACC.4,RY32 ;R2中为0,则为前一个月 MOV 56H,#30H ;的最后一天 RY32: MOV 57H,#03H CLR F0 LJMP S_PLAY RY31: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#03H SETB F0 LJMP S_PLAY Y4: CJNE R2,#00H,Y41 LCALL CHECKRE ;查前一个月是否为闰月 CJNE A,#03H,Y42 MOV 56H,#29H ;前一个月是闰月 MOV A,R4 ANL A,#0FH ;R2中为0,则为前一个月 JNZ Y43 ;的最后一天 MOV 56H,#30H MOV 57H,#03H SETB F0 LJMP S_PLAY Y43: MOV 57H,#03H SETB F0 LJMP S_PLAY Y42: MOV 56H,#29 ;前一个月不是闰月 MOV A,R6 JB ACC.4,Y44 MOV 56H,#30 Y44: MOV 57H,#03H CLR F0 LJMP S_PLAY Y41: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#04H CLR F0 LJMP S_PLAY RY4: CJNE R2,#00H,RY41 MOV 56H,#29H MOV A,R6 JB ACC.2,RY42 ;R2中为0,则为前一个月 MOV 56H,#30H ;的最后一天 RY42: MOV 57H,#04H CLR F0 LJMP S_PLAY RY41: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#04H SETB F0 LJMP S_PLAY Y5: CJNE R2,#00H,Y51 LCALL CHECKRE ;查前一个月是否为闰月 CJNE A,#04H,Y52 MOV 56H,#29H ;前一个月是闰月 MOV A,R4 ANL A,#0FH ;R2中为0,则为前一个月 JNZ Y53 ;的最后一天 MOV 56H,#30H MOV 57H,#04H SETB F0 LJMP S_PLAY Y53: MOV 57H,#04H SETB F0 LJMP S_PLAY Y52: MOV 56H,#29 ;前一个月不是闰月 MOV A,R6 JB ACC.2,Y54 MOV 56H,#30 Y54: MOV 57H,#04H CLR F0 LJMP S_PLAY Y51: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#05H CLR F0 LJMP S_PLAY RY5: CJNE R2,#00H,RY51 MOV 56H,#29H MOV A,R6 JB ACC.1,RY52 ;R2中为0,则为前一个月 MOV 56H,#30H ;的最后一天 RY52: MOV 57H,#05H CLR F0 LJMP S_PLAY RY51: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#05H SETB F0 LJMP S_PLAY Y6: CJNE R2,#00H,Y61 LCALL CHECKRE ;查前一个月是否为闰月 CJNE A,#05H,Y62 MOV 56H,#29H ;前一个月是闰月 MOV A,R4 ANL A,#0FH ;R2中为0,则为前一个月 JNZ Y63 ;的最后一天 MOV 56H,#30H MOV 57H,#05H SETB F0 LJMP S_PLAY Y63: MOV 57H,#05H SETB F0 LJMP S_PLAY Y62: MOV 56H,#29 ;前一个月不是闰月 MOV A,R6 JB ACC.1,Y64 MOV 56H,#30 Y64: MOV 57H,#05H CLR F0 LJMP S_PLAY Y61: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#06H CLR F0 LJMP S_PLAY RY6: CJNE R2,#00H,RY61 MOV 56H,#29H MOV A,R6 JB ACC.0,RY62 ;R2中为0,则为前一个月 MOV 56H,#30H ;的最后一天 RY62: MOV 57H,#06H CLR F0 LJMP S_PLAY RY61: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#06H SETB F0 LJMP S_PLAY Y7: CJNE R2,#00H,Y71 LCALL CHECKRE ;查前一个月是否为闰月 CJNE A,#06H,Y72 MOV 56H,#29H ;前一个月是闰月 MOV A,R4 ANL A,#0FH ;R2中为0,则为前一个月 JNZ Y73 ;的最后一天 MOV 56H,#30H MOV 57H,#06H SETB F0 LJMP S_PLAY Y73: MOV 57H,#06H SETB F0 LJMP S_PLAY Y72: MOV 56H,#29 ;前一个月不是闰月 MOV A,R6 JB ACC.0,Y74 MOV 56H,#30 Y74: MOV 57H,#06H CLR F0 LJMP S_PLAY Y71: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#07H CLR F0 LJMP S_PLAY RY7: CJNE R2,#00H,RY71 MOV 56H,#29H MOV A,R5 JB ACC.6,RY72 ;R2中为0,则为前一个月 MOV 56H,#30H ;的最后一天 RY72: MOV 57H,#07H CLR F0 LJMP S_PLAY RY71: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#07H SETB F0 LJMP S_PLAY Y8: CJNE R2,#00H,Y81 LCALL CHECKRE ;查前一个月是否为闰月 CJNE A,#07H,Y82 MOV 56H,#29H ;前一个月是闰月 MOV A,R4 ANL A,#0FH ;R2中为0,则为前一个月 JNZ Y83 ;的最后一天 MOV 56H,#30H MOV 57H,#07H SETB F0 LJMP S_PLAY Y83: MOV 57H,#07H SETB F0 LJMP S_PLAY Y82: MOV 56H,#29 ;前一个月不是闰月 MOV A,R5 JB ACC.6,Y74 MOV 56H,#30 Y84: MOV 57H,#07H CLR F0 LJMP S_PLAY Y81: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#08H CLR F0 LJMP S_PLAY Y9: CJNE R2,#00H,Y91 MOV 56H,#29H ;R2中为0,则为前一个月 MOV A,R5 ;的最后一天 JB ACC.5,Y92 MOV 56H,#30H Y92: MOV 57H,#08H CLR F0 LJMP S_PLAY Y91: MOV A,R2 ;R2中为日的值 MOV R0,A LCALL D_BCD MOV 56H,A MOV 57H,#09H CLR F0 LJMP S_PLAY RY9: CJNE R2,#00H,RY91 MOV 56H,#29H MOV A,R5 JB ACC.4,RY92 ;R2中为0,则为前一个月 MOV 56H,#30H ;的最后一天 RY92: MOV 57H,#09H CLR F0 LJMP S_PLAY RY91: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#09H SETB F0 LJMP S_PLAY Y10: CJNE R2,#00H,Y101 LCALL CHECKRE ;查前一个月是否为闰月 CJNE A,#09H,Y102 MOV 56H,#29H ;前一个月是闰月 MOV A,R4 ANL A,#0FH ;R2中为0,则为前一个月 JNZ Y103 ;的最后一天 MOV 56H,#30H MOV 57H,#09H SETB F0 LJMP S_PLAY Y103: MOV 57H,#09H SETB F0 LJMP S_PLAY Y102: MOV 56H,#29 ;前一个月不是闰月 MOV A,R5 JB ACC.4,Y104 MOV 56H,#30 Y104: MOV 57H,#09H CLR F0 LJMP S_PLAY Y101: MOV A,R2 MOV R0,A ;R2中为日的值 LCALL D_BCD MOV 56H,A MOV 57H,#10H CLR F0 LJMP S_PLAY Y11: CJNE R2,#00H,Y111 MOV 56H,#29H ;R2中为0,则为前一个月 MOV A,R5 ;的最后一天 JB ACC.2,Y112 MOV 56H,#30H Y112: MOV 57H,#10H CLR F0 LJMP S_PLAY Y111: MOV A,R2 ;R2中为日的值 MOV R0,A LCALL D_BCD MOV 56H,A MOV 57H,#11H CLR F0 LJMP S_PLAY Y12: CJNE R2,#00H,Y121 MOV 56H,#29H ;R2中为0,则为前一个月 MOV A,R5 ;的最后一天 JB ACC.1,Y122 MOV 56H,#30H Y122: MOV 57H,#11H CLR F0 LJMP S_PLAY Y121: MOV A,R2 ;R2中为日的值 MOV R0,A LCALL D_BCD MOV 56H,A MOV 57H,#12H CLR F0 LJMP S_PLAY S_PLAY: MOV R0,57H LCALL DIVIDE ;月分离送显示缓存 MOV 52H,R1 MOV 53H,R2 MOV R0,56H LCALL DIVIDE ;日分离送显示缓存 MOV 50H,R1 MOV 51H,R2 RET ;*************************** ;* 查 是 否 闰 月 程 序 * ;*************************** CHECKRE: MOV A,R4 SWAP A ANL A,#0FH RET ;*************************** ;* 十进制转换为BCD码程序 * ;*************************** D_BCD: MOV A,R0 MOV B,#10 DIV AB SWAP A ORL A,B RET ;*************************** ;* 显 示 程 序 * ;*************************** DISPLAY: MOV 7EH,#02H MOV 7DH,#00H MOV R0,#76H MOV R1,#70H MOV R2,79H MOV R3,#79H MOV R5,#0FEH PLAY1: MOV A,#0FFH MOV P2,A MOV A,@R0 MOV DPTR,#TAB1 MOVC A,@A+DPTR MOV SBUF,A ;送第1字节 JNB TI,$ CLR TI MOV A,@R1 MOV DPTR,#TAB1 MOVC A,@A+DPTR MOV SBUF,A ;送第2字节 JNB TI,$ CLR TI MOV A,R2 MOV DPTR,#TAB1 MOVC A,@A+DPTR MOV SBUF,A ;送第3字节 JNB TI,$ CLR TI INC R0 INC R1 INC R3 MOV A,R3 SETB PSW.4 ;选2组寄存器 MOV R0,A MOV A,@R0 CLR PSW.4 MOV R2,A MOV A,R0 CJNE A,#78,PLAY2 MOV R0,#50 PLAY2: CJNE A,#54H,PLAY3 MOV R0,#78H PLAY3: MOV A,R5 MOV P2,A LCALL DL1MS MOV A,R5 JNB ACC.6,PLAYOUT RL A MOV R5,A LJMP PLAY1 PLAYOUT: SETB P2.6 RET DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;*************************** ;* 数 据 表 * ;*************************** TAB1: DB 03H,9FH,25H,0DH,99H DB 49H,41H,1FH,01H,09H,0FFH TAB: DB 35,15H,51H,00H,23,11H,52H,41H,42,12H,65H,00H DB 31,11H,32H,00H,21,42H,52H,21H,39,52H,25H,00H DB 28,25H,04H,71H,48,66H,42H,00H,37,33H,22H,00H DB 25,15H,24H,51H,44,05H,52H,00H,33,22H,65H,00H DB 22,21H,25H,41H,40,24H,52H,00H,30,52H,42H,91H DB 49,55H,05H,00H,38,26H,44H,00H,27,53H,50H,60H DB 46,53H,24H,00H,35,25H,54H,00H,24,41H,52H,41H DB 42,45H,25H,00H,31,24H,52H,00H,21,51H,12H,21H DB 40,55H,11H,00H,28,26H,21H,61H,47,26H,61H,00H DB 36,13H,31H,00H,25,05H,31H,51H,43,12H,54H,00H DB 33,51H,25H,00H,22,42H,25H,31H,41,32H,22H,00H DB 30,55H,02H,71H,49,55H,22H,00H,38,26H,62H,00H DB 27,13H,64H,60H,45,13H,32H,00H,34,12H,55H,00H DB 23,10H,53H,51H,42,22H,45H,00H,31,52H,22H,00H DB 21,52H,44H,21H,40,55H,44H,00H,29,26H,50H,71H DB 47,26H,64H,00H,36,25H,32H,00H,25,23H,32H,50H DB 44,44H,55H,00H,32,24H,45H,00H,22,55H,11H,30H END 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的 材料 关于××同志的政审材料调查表环保先进个人材料国家普通话测试材料农民专业合作社注销四查四问剖析材料 。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 指导教师评阅书 指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、学生掌握专业知识、技能的扎实程度 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 □ 优 □ 良 □ 中 □ 及格 □ 不及格 4、研究方法的科学性;技术线路的可行性;设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的合理性 □ 优 □ 良 □ 中 □ 及格 □ 不及格 5、完成毕业论文(设计)期间的出勤情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 指导教师: (签名) 单位: (盖章) 年 月 日 评阅教师评阅书 评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 评阅教师: (签名) 单位: (盖章) 年 月 日 教研室(或答辩小组)及教学系意见 教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、对答辩问题的反应、理解、表达情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生答辩过程中的精神状态 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 评定成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 教研室主任(或答辩小组组长): (签名) 年 月 日 教学系意见: 系主任: (签名) 年 月 日 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。 学位论文作者(本人签名): 年 月 日 学位论文出版授权书 本人及导师完全同意《中国博士学位论文全文数据库出版 章程 公司章程范本下载项目章程下载公司章程下载公司章程下载公司章程下载 》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。 论文密级: □公开 □保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ) 作者签名:_______ 导师签名:_______ _______年_____月_____日 _______年_____月_____日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 二〇一〇年九月二十日   毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 二〇一〇年九月二十日 致 谢 时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。 首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。 首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。 其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。 另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。 最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。 四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。 回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。 学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。 在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。 最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 年 月 日   毕业设计(论文)使用授权声明 本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 年 月 日 基本要求:写毕业论文主要目的是培养学生综合运用所学知识和技能,理论联系实际,独立分析,解决实际问题的能力,使学生得到从事本专业工作和进行相关的基本训练。毕业论文应反映出作者能够准确地掌握所学的专业基础知识,基本学会综合运用所学知识进行科学研究的方法,对所研究的题目有一定的心得体会,论文题目的范围不宜过宽,一般选择本学科某一重要问题的一个侧面。 毕业论文的基本教学要求是: 1、培养学生综合运用、巩固与扩展所学的基础理论和专业知识,培养学生独立分析、解决实际问题能力、培养学生处理数据和信息的能力。2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。3、培养学生进行社会调查研究;文献资料收集、阅读和整理、使用;提出论点、综合论证、总结写作等基本技能。 毕业论文是毕业生总结性的独立作业,是学生运用在校学习的基本知识和基础理论,去分析、解决一两个实际问题的实践锻炼过程,也是学生在校学习期间学习成果的综合性总结,是整个教学活动中不可缺少的重要环节。撰写毕业论文对于培养学生初步的科学研究能力,提高其综合运用所学知识分析问题、解决问题能力有着重要意义。 毕业论文在进行编写的过程中,需要经过开题报告、论文编写、论文上交评定、论文答辩以及论文评分五个过程,其中开题报告是论文进行的最重要的一个过程,也是论文能否进行的一个重要指标。 撰写意义:1.撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。大学生在毕业前都必须完成毕业论文的撰写任务。申请学位必须提交相应的学位论文,经答辩通过后,方可取得学位。可以这么说,毕业论文是结束大学学习生活走向社会的一个中介和桥梁。毕业论文是大学生才华的第一次显露,是向祖国和人民所交的一份有份量的答卷,是投身社会主义现代化建设事业的报到书。一篇毕业论文虽然不能全面地反映出一个人的才华,也不一定能对社会直接带来巨大的效益,对专业产生开拓性的影响。但是,实践证明,撰写毕业论文是提高教学质量的重要环节,是保证出好人才的重要措施。 2.通过撰写毕业论文,提高写作水平是干部队伍“四化”建设的需要。党中央要求,为了适应现代化建设的需要,领导班子成员应当逐步实现“革命化、年轻化、知识化、专业化”。这个“四化”的要求,也包含了对干部写作能力和写作水平的要求。 3.提高大学生的写作水平是社会主义物质文明和精神文明建设的需要。在新的历史时期,无论是提高全族的科学文化水平,掌握现代科技知识和科学管理方法,还是培养社会主义新人,都要求我们的干部具有较高的写作能力。在经济建设中,作为领导人员和机关的办事人员,要写指示、通知、总结、调查报告等应用文;要写说明书、广告、解说词等说明文;还要写科学论文、经济评论等议论文。在当今信息社会中,信息对于加快经济发展速度,取得良好的经济效益发挥着愈来愈大的作用。写作是以语言文字为信号,是传达信息的方式。信息的来源、信息的收集、信息的储存、整理、传播等等都离不开写作。 论文种类:毕业论文是学术论文的一种形式,为了进一步探讨和掌握毕业论文的写作规律和特点,需要对毕业论文进行分类。由于毕业论文本身的内容和性质不同,研究领域、对象、方法、表现方式不同,因此,毕业论文就有不同的分类方法。 按内容性质和研究方法的不同可以把毕业论文分为理论性论文、实验性论文、描述性论文和设计性论文。后三种论文主要是理工科大学生可以选择的论文形式,这里不作介绍。文科大学生一般写的是理论性论文。理论性论文具体又可分成两种:一种是以纯粹的抽象理论为研究对象,研究方法是严密的理论推导和数学运算,有的也涉及实验与观测,用以验证论点的正确性。另一种是以对客观事物和现象的调查、考察所得观测资料以及有关文献资料数据为研究对象,研究方法是对有关资料进行分析、综合、概括、抽象,通过归纳、演绎、类比,提出某种新的理论和新的见解。 按议论的性质不同可以把毕业论文分为立论文和驳论文。立论性的毕业论文是指从正面阐述论证自己的观点和主张。一篇论文侧重于以立论为主,就属于立论性论文。立论文要求论点鲜明,论据充分,论证严密,以理和事实服人。驳论性毕业论文是指通过反驳别人的论点来树立自己的论点和主张。如果毕业论文侧重于以驳论为主,批驳某些错误的观点、见解、理论,就属于驳论性毕业论文。驳论文除按立论文对论点、论据、论证的要求以外,还要求针锋相对,据理力争。 按研究问题的大小不同可以把毕业论文分为宏观论文和微观论文。凡届国家全局性、带有普遍性并对局部工作有一定指导意义的论文,称为宏观论文。它研究的面比较宽广,具有较大范围的影响。反之,研究局部性、具体问题的论文,是微观论文。它对具体工作有指导意义,影响的面窄一些。 另外还有一种综合型的分类方法,即把毕业论文分为专题型、论辩型、综述型和综合型四大类: 1.专题型论文。这是分析前人研究成果的基础上,以直接论述的形式发表见解,从正面提出某学科中某一学术问题的一种论文。如本书第十二章例文中的《浅析领导者突出工作重点的方法与艺术》一文,从正面论述了突出重点的工作方法的意义、方法和原则,它表明了作者对突出工作重点方法的肯定和理解。2.论辩型论文。这是针对他人在某学科中某一学术问题的见解,凭借充分的论据,着重揭露其不足或错误之处,通过论辩形式来发表见解的一种论文。3.综述型论文。这是在归纳、总结前人或今人对某学科中某一学术问题已有研究成果的基础上,加以介绍或评论,从而发表自己见解的一种论文。4.综合型论文。这是一种将综述型和论辩型两种形式有机结合起来写成的一种论文。如《关于中国民族关系史上的几个问题》一文既介绍了研究民族关系史的现状,又提出了几个值得研究的问题。因此,它是一篇综合型的论文。 写作步骤:毕业论文是高等教育自学考试本科专业应考者完成本科阶段学业的最后一个环节,它是应考者的 总结 性独立作业,目的在于总结学习专业的成果,培养综合运用所学知识解决实际 问题 的能力。从文体而言,它也是对某一专业领域的现实问题或 理论 问题进行 科学 研究 探索的具有一定意义的论说文。完成毕业论文的撰写可以分两个步骤,即选择课题和研究课题。 首先是选择课题。选题是论文撰写成败的关键。因为,选题是毕业论文撰写的第一步,它实际上就是确定“写什么”的问题,亦即确定科学研究的方向。如果“写什么”不明确,“怎么写”就无从谈起。 教育部自学考试办公室有关对毕业论文选题的途径和要求是“为鼓励理论与工作实践结合,应考者可结合本单位或本人从事的工作提出论文题目,报主考学校审查同意后确立。也可由主考学校公布论文题目,由应考者选择。毕业论文的总体要求应与普通全日制高等学校相一致,做到通过论文写作和答辩考核,检验应考者综合运用专业知识的能力”。但不管考生是自己任意选择课题,还是在主考院校公布的指定课题中选择课题,都要坚持选择有科学价值和现实意义的、切实可行的课题。选好课题是毕业论文成功的一半。 第一、要坚持选择有科学价值和现实意义的课题。科学研究的目的是为了更好地认识世界、改造世界,以推动社会的不断进步和发展 。因此,毕业论文的选题,必须紧密结合社会主义物质文明和精神文明建设的需要,以促进科学事业发展和解决现实存在问题作为出发点和落脚点。选题要符合科学研究的正确方向,要具有新颖性,有创新、有理论价值和现实的指导意义或推动作用,一项毫无意义的研究,即使花很大的精力,表达再完善,也将没有丝毫价值。具体地说,考生可从以下三个方面来选题。首先,要从现实的弊端中选题,学习了专业知识,不能仅停留在书本上和理论上,还要下一番功夫,理论联系实际,用已掌握的专业知识,去寻找和解决工作实践中急待解决的问题。其次,要从寻找科学研究的空白处和边缘领域中选题,科学研究。还有许多没有被开垦的处女地,还有许多缺陷和空白,这些都需要填补。应考者应有独特的眼光和超前的意识去思索,去发现,去研究。最后,要从寻找前人研究的不足处和错误处选题,在前人已提出来的研究课题中,许多虽已有初步的研究成果,但随着社会的不断发展,还有待于丰富、完整和发展,这种补充性或纠正性的研究课题,也是有科学价值和现实指导意义的。 第二、要根据自己的能力选择切实可行的课题。毕业论文的写作是一种创造性劳动,不但要有考生个人的见解和主张,同时还需要具备一定的客观条件。由于考生个人的主观、客观条件都是各不相同的,因此在选题时,还应结合自己的特长、兴趣及所具备的客观条件来选题。具体地说,考生可从以下三个方面来综合考虑。首先,要有充足的资料来源。“巧妇难为无米之炊”,在缺少资料的情况下,是很难写出高质量的论文的。选择一个具有丰富资料来源的课题,对课题深入研究与开展很有帮助。其次,要有浓厚的研究兴趣,选择自己感兴趣的课题,可以激发自己研究的热情,调动自己的主动性和积极性,能够以专心、细心、恒心和耐心的积极心态去完成。最后,要能结合发挥自己的业务专长,每个考生无论能力水平高低,工作岗位如何,都有自己的业务专长,选择那些能结合自己工作、发挥自己业务专长的课题,对顺利完成课题的研究大有益处。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 图2-1 控制键有效,跳出时间调整程序,进入主循环程序 DS1302 时钟电路 小时减1 分加1 Y 月加1 够减 下个月为闰月? 减去闰月天数 Y 小时加1 分减1 减键有效 加键有效 减键有效 加键有效 加键有效 加键有效 减键有效 等待按键程序 等待按键程序 等待按键程序 控制键有效,进入月调整程序 年加1 控制键有效,进入年调整程序 等待按键程序 控制键有效,进入小时调整程序 控制键有效,进入分调整程序 日减1 星期加1 日加1 星期减1 减键有效 加键有效 加键有效 减键有效 等待按键程序 等待按键程序 控制键有效,进入日调整程序 控制键有效,进入星期调整程序 年减1 月加1 减键有效 月减1 总天数加入号数 Y 月数加1 总天数中加入该月天数 当前月为1月? 置阴历总天数为0 当前数是总天数 N R2减1月天数 程序入口 计算阳历天数结束,总天数中的为当前日期在阳历年中的第几天 Y N 与当前月同? 7805 读出的数据都为BCD码,将其高低位分离,送显示缓存 从1302中读出年、周、月、日、小时、分、秒 1302开始振荡 初始化1302 开 始 电源模块 (89C52) 主控制模块 键扫描电路 显示电路 N R3=0? N R2=R2+R3 R3=0 N R2=0? Y 月份为当前正在减的月份的前一个月的最后一天 Y 月份为当前正在减的月份,号数为R2中的值 N II
本文档为【基于单片机的万年历设计_毕业设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
不系舟红枫
从教近30年,经验丰富,教学水平较高
格式:doc
大小:672KB
软件:Word
页数:89
分类:工学
上传时间:2019-01-24
浏览量:14