基于单片机的万年历设计
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