欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于51单片机的电子日历的设计.doc

    • 资源ID:9980040       资源大小:484.50KB        全文页数:40页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于51单片机的电子日历的设计.doc

    编号 淮安信息职业技术学院淮安信息职业技术学院 毕毕业业论论文文 题 目基于单片机的电子日历的设计 学生姓名 学 号 院 系电子工程学院 专 业应用电子技术 班 级 指导教师 顾问教师 二一二年六月 摘摘 要要 电子万年历是实现对年、月、日、时、分、秒数字显示的计时装置,广泛 用于个人家庭、车站、码头、办公室、银行大厅等场所,是人们日常生活中的 必需品 。 本文通过对基于单片机实现万年历功能的电子日历的设计,介绍了 AT89S52 单片机的多功能电子万年历的硬件结构和软硬件的设计、使用方法。 系统以 AT89S52 单片机为主控制模块,以串行时钟日历芯片 DS1302 记录日 历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿、时 间校准等多种功能。万年历采用直观的数字显示,可以在 LCD 上同时显示年、 月、日、星期、时、分、秒。更有按键电路模块与之相结合,不仅能实现时钟 日历显示的功能,并可进行调整,使用更便捷、直接。 万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多 优点,具有广阔的市场前景。 关键词:万年历 单片机 AT89S52 DS1302 目目 录录 摘摘 要要.I 第一章第一章 绪论绪论.1 1.1 课题研究的意义.1 1.2 本课题主要的研究工作.1 1.3 本课题主要解决的内容.1 1.4 论文主要章节安排.2 1.5 本章小结.2 第二章第二章 方案论证方案论证.3 2.1 设计要求.3 2.2 单片机芯片的选择方案和论证.3 2.3 显示模块的选择方案和论证.3 2.4 时钟芯片的选择方案和论证.4 2.5 电路设计最终方案.4 第三章第三章 系统的硬件设计与实现系统的硬件设计与实现.5 3.1 电路总体设计.5 3.2 主控模块的设计.5 3.2.1 AT89S52 的内部结构及各引脚功能.5 3.2.2 单片机最小系统设计.7 3.3 时钟模块设计.7 3.4 显示模块设计.9 3.5 键盘模块.10 第四章第四章 系统的软件设计系统的软件设计.11 4.1 主程序设计.11 4.2 万年历优化算法.12 4.3 阳历与星期的换算方法.13 4.4 万年历工作的简易流程图.14 第五章第五章 PROTEUS 软件仿真软件仿真 .15 5.1 PROTEUS ISIS 简介.15 5.2 PROTEUS 运行流程.15 5.3 PROTEUS 功能仿真.15 5.4 本章小结.18 第六章第六章 测试与结果分析测试与结果分析.19 6.1 硬件测试.19 6.2 软件测试.19 6.3 测试结果分析与结论.19 第七章第七章 总结与展望总结与展望.21 7.1 总结.21 7.2 展望.21 致致 谢谢.23 参考文献参考文献.25 附录附录 1 系统电路图系统电路图.27 附录附录 2 系统程序系统程序.28 第一章第一章 绪论绪论 1.1 课题研究的意义课题研究的意义 万年历是我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功 绩,便将这部历法命名为“万年历” 。而现在所使用的万年历,实际上就是记录 一定时间范围内(比如 100 年或更多)的具体阳历或阴历的日期的年历,方便 有需要的人查询使用,与原始历法并无直接联系。 随着微电子技术的高速发展,人类用于计时的工具也在不断发展更新,单 片机技术的出现使得万年历有了新的发展方向。 单片机以其体积小、功能全、性价比高等诸多优点,在工业控制、家用电 器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片 机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人 员必须掌握的技术。目前世界上单片机年产量已达十多亿片,通常是当年微处 理器产量的 4-5 倍以上。用最少的芯片就能实现最强大的功能,这是将来电子 产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应 用面之广,是其它任何类型的计算机所无法比拟的。 本文采用单片机的万年历作为设计课题,因为它有很好的开放性和可发挥 性,对作者的要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片 机扩展的应用。另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、 办公室、大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时 准确、可调整、进行夜视等功能。所以,电子万年历作为课题设计很有价值。 1.2 本课题主要的研究工作本课题主要的研究工作 本论文主要研究基于单片机的万年历设计。当程序执行后,LCD 显示年、月、 日、时、分、秒和星期。 设计共设置 4 个操作键:K1:选择修改键;K2:上调键;K3:下调键; K4:确定键。 设计的主要内容有: 1、了解单片机技术的发展现状,熟悉万年历个模块的工作原理; 2、选择适当的芯片和元器件,确定系统电路,绘制电路原理图,尤其是各 接口电路; 3、熟悉单片机使用方法和 C 语言的编程规则,编写出相应模块的应用程序; 4、分别在各自的模块中调试出相应的功能,在 Proteus 软件上进行仿真。 1.3 本课题主要解决的内容本课题主要解决的内容 本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究 内容包括以下几个方面: 1、选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、 低功耗、抗断电的器件。 2、根据选用的电子万年历芯片设计外围电路和单片机的接口电路。 3、在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。 4、根据设计的硬件电路,编写控制 AT89S51 芯片的单片机程序。 5、通过编程、编译、调试,把程序下载到 Proteus 上运行,并实现本设计 的功能。 6、在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便 用户操作等因素。 7、软件设计时必须要有完善的思路,要做到程序简单,调试方便。 1.4 论文主要章节安排论文主要章节安排 第一章:绪论是介绍了基于 STC89S52 单片机的万年历研究意义,重点阐述 了本课题的研究内容和研究工作。 第二章:主要介绍了设计要求和课题器件选择的论证方案。 第三章:硬件基础中主要描述了万年历的各个模块的硬件设计方案,并结 合各个元器件和相应的硬件原理图进行分析,最后展示为了实现研究目标所需 要的全部硬件基础。 第四章:软件基础主要罗列了实现万年历各个功能的 C 语言程序的流程图, 并分别对其进行了解释和分析,最后把各个 C 语言子程序在巧妙结合在一起, 共同控制整个系统,也就形成了实现研究目标所需要的所有软件基础。 第五章:主要是对硬件和软件测试结果的分析以及得出的相关结论。 第六章:主要对 Keil 软件、Proteus 软件进行简单介绍,并给出了关于 Proteus 软件仿真调试万年历的过程。最后简要的介绍了硬件调试中的问题和解 决办法。 第七章:主要是对本次实验研究的总结,提出本次实验的不足之处以及相 应的改进方法,以便后人继续深入研究。 最后一部分是论文的附录,它为论文的内容做了补充、解释,以便阅读时 条理更清晰。 1.5 本章小结本章小结 本章是论文的绪论部分,着重介绍了万年历的研究意义。然后介绍了本文 所要解决的实际问题及意义,以及要电子万年历系统要实现的功能和方法。最 后简单地描述了本论文的整体框架和论文章节的安排。 第二章第二章 方案论证方案论证 2.12.1 设计要求设计要求 在电子日历设计中需具备的基本功能。 1能显示实时时钟、日历 2允许误差:10 秒/天; 3可以通过按键设置(调整)时钟; 4显示模式:数码管或液晶显示; 2.22.2 单片机芯片的选择方案和论证单片机芯片的选择方案和论证 方案一: 采用 AT89C51 芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存 储空间,能于 3V 的超低压工作,而且与 MCS-51 系列单片机完全兼容,但是运 用于电路设计中时由于不具备 ISP 在线编程技术, 当在对电路进行调试时,由 于程序的错误修改或对程序的新增功能需要导入程序时,对芯片的多次拔插会 对芯片造成一定的损坏。 方案二: 采用 AT89S52,片内 ROM 全都采用 Flash ROM;能以 3V 的超底压工作;同 时也与 MCS-51 系列单片机完全该芯片内部存储器为 8KB ROM 存储空间,同样具 有 89C51 的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于 程序的错误修改或对程序的新增功能需要导入程序时,不需要对芯片多次拔插, 所以不会对芯片造成损坏。 根据主功能模块的各项功能、使用便捷程度、单片存储、低功耗、等原因, 选择采用 AT89S52 作为主控制系统。 2.32.3 显示模块的选择方案和论证显示模块的选择方案和论证 方案一: 采用 LED 数码管动态扫描,LED 数码管价格适中,对于显示数字合适,采用 动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一 点时间,所以也不用此种作为显示。 方案二: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成, 对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高, 所以也不用此种作为显示。 方案三: 采用 LCD 液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图 形等,显示信息丰富。 由于需要显示年、月、日、星期、等,需要可大量显示文字和数字的显示 模块。结合数码管和液晶显示的各项特点,此设计采用 LCD 液晶显示屏。 2.4 时钟芯片的选择方案和论证时钟芯片的选择方案和论证 方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、 时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现 的时间误差较大,所以不采用此方案。 方案二: 采用 DS1302 时钟芯片实现时钟,DS1302 芯片是一种高性能的时钟芯片,可 自动对秒、分、时、日、周、月、年进行计数,而且精度高,主要特点是采用 串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电 功能。工作电压在 2.5V5.5V 范围内,2.5V 时耗电小于 300nA。 根据时钟芯片的性能、功耗和显示的准确度,设计采用 DS1302 时钟芯片。 2.5 电路设计最终方案电路设计最终方案 本章主要介绍了系统要实现的功能和万年历系统硬件平台的选择,比较了 主控模块,时钟模块,显示模块中不同器件的功能及优劣,最后确定了电路设 计的整体方案: 采用 AT89S52 作为主控制系统; DS1302 提供时钟;LCD 液晶显 示屏作为显示模块。 第三章第三章 系统的硬件设计与实现系统的硬件设计与实现 3.1 电路总体设计电路总体设计 在方案设计中,整个系统主要包括四个部分:主控制模块、显示模块、时 钟模块和键盘部分。设计的总系统原理图如下图 3-1 所示。 图 3-1 总系统原理图 本电路是由 AT89S52 单片机为控制核心,具有在线编程功能,低功耗,能 在 3V 超低压工作; DS1302 内部有一个 31*8 的用于临时性存放数据的 RAM 寄存器。可产生年、 月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时 具有掉电自动保存功能; 显示部份由 LCD 点阵液晶显示屏显示; 键盘模块实现对万年历进行调节。 3.2 主控模块的设计主控模块的设计 AT89S52 在设计中作为主控制模块使用,它是 40 引脚双列直插芯片,有四 个 I/O 口 P0、P1、P2、P3,每一条 I/O 线都能独立地作输出或输入。 3.2.1 AT89S52AT89S52 的内部结构及各引脚功能的内部结构及各引脚功能 AT89S52 单片机按功能分为 8 部分:CUP,程序存储器,数据存储器,时钟 电路,串行口,并行 I/O 口,中断系统,定时/计数器。 1.电源及时钟引脚 Vcc:接+5V 电源 Vss:接地 XTAL1 和 XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此 两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟 脉冲信号。 2.控制引脚 RST/Vpq:RST 是复位信号输入端,Vpd 是备用电源输入端。当 RST 输入端 保持 2 个机器周期以上高电平时,单片机完成复位初始化操作。 显示模块 DS1302 时钟模块 主控模块 键盘模块 当主电源 Vcc 发生故障而突然下降到一定低电压或断电时,第 2 功能 Vpd 将为片内 RAM 提供电源以保护片内 RAM 中的信息不丢失。 ALE/PROG:地址锁存允许信号输入端。在存取外存储器时,用于锁存低 8 位地址信号。当单片机正常工作后,ALE 端就周期性地以时钟振荡频率的 1/6 固 定频率向外输出正脉冲信号。此引脚的第 2 功能 PROG 是对片内带有 4K 字节 EPROM 的 8751 固外程序时,作为编程脉冲输入端。 PSEN:程序存储器允许输出端。当片外程序存储器的读选通信号,低电平 有效。CPU 从外部程序存储器取指令时,PSEN 信号会自动产生负脉冲,作为外 部程序存储器的选通信号。 EA/Vpp:程序存储器地址允许输入端。当 EA 为高电平时,CPU 执行片内程 序存储器指令但当 PC 中的值超过 0FFFH 时,将自动转向执行片外程序存储器指 令;当 EA 为低电平时,CPU 只执行片外程序存储器指令。 3.I/O 口引脚 P0.0P0.7:P0 口 8 位双向 I/O 口; P1.0P1.7:P1 口 8 位准双向 I/O 口; P2.0P2.7:P2 口 8 位准双向 I/O 口; P3.0P3.7:P3 口 8 位准双向 I/O 口。 4片外总线结构 分为三部分:数据总线 Data Bus(DB) ,地址总线 Address Bus (AB) ,控 制总线 Control Bus(CB)。 5.图 3-2 为 AT89S52 的系统引脚图。 图 3-2 AT89S52 系统引脚图 3.2.2 单片机最小系统设计单片机最小系统设计 单片机的最小系统如图 3-3 所示。18 引脚和 19 引脚接时钟电路,XTAL1 接 外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2 接外 部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第 9 引脚 为复位输入端,接上电容,电阻及开关后够上电复位电路,20 引脚为接地端, 40 引脚为电源端。 图 3-3 单片机最小系统 3.3 时钟模块设计时钟模块设计 实时时钟电路 DS1302 是 DALLAS 公司的一种具有涓细电流充电能力的电路, 主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并 且可以关闭充电功能。采用普通 32.768kHz 晶振。 它是一种一种高性能、低功耗、带 RAM 的实时时钟电路,可以对年、月、 日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送 多个字节的时钟信号或 RAM 数据。 图 3-4 示出 DS1302 的引脚排列图。 图 3-4 DS1302 的引脚图 其中 Vcc1 为后备电源,Vcc2 为主电源。在主电源关闭的情况下,也能保持 时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc1+0.2V 时,Vcc2 给 DS1302 供电。当 Vcc2 小于 Vcc1 时,DS1302 由 Vcc1 供 电。X1 和 X2 是振荡源,外接 32.768KHz 晶振。RST 是复位/片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入 移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当 RST 为高 电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程 中 RSTS 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电动行 时,在 Vcc 大于等于 2.5V 之前,RST 必须保持低电平。中有在 SCLK 为低电平 时,才能将 RST 置为高电平,I/O 为串行数据输入端(双向) 。SCLK 始终是输入 端。 使用 DS1302 时可参考它的硬件接线图,如图 3-5 所示。 VCC2 X1 X2 GNDRST I/O SLCK VCC1 U1 DS1302VCC 12 Y1 C1 20 1 2 P1 Header 2 C2 20 P1.2 P1.1 P1.0 32.768KHZ 图 3-5 DS1302 的硬件接线图 1.时钟芯片 DS1302 的工作原理: DS1302 在每次进行读、写程序前都必须初始化,先把 SCLK 端置 “0” ,接 着把 RST 端置“1” ,最后才给予 SCLK 脉冲;读/写时序如下图 4 所示。DS1302 的控制字的位 7 必须置 1,若为 0 则不能把对 DS1302 进行读写数据。对于位 6,若对程序进行读/写时 RAM=1,对时间进行读/写时,CK=0,位 1 至位 5 指操 作单元的地址。位 0 是读/写操作位,进行读操作时,该位为 1;该位为 0 则表 示进行的是写操作。控制字节总是从最低位开始输入/输出的。表.2 为 DS1302 的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为 1 时,时钟振 荡器停止,DS1302 处于低功耗状态;当该位为 0 时,时钟开始运行。 “WP”是写 保护位,在任何的对时钟和 RAM 的写操作之前,WP 必须为 0。当“WP”为 1 时, 写保护位防止对任一寄存器的写操作。 2.DS1302 的控制字节: DS1302 控制字节的高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把 数据写入 DS1302 中,位 6 如果 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据;位 5 至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要 进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出 3.数据输入输出(I/O) 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1302, 数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据,读出数据时从低位 0 位到高位 7。 4.DS1302 的寄存器 DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据 位为 BCD 码形式。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存 器及与 RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器 外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0HFDH, 其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方 式下可一次性读写所有的 RAM 的 31 个字节,命令控制字为 FEH(写)、FFH(读)。 3.4 显示模块设计显示模块设计 本设计中由于要对年、月、日、星期、时、分、秒、显示,选择液晶显示 器 1602 字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD。它可以显示两行, 每行 16 个字符,采用单+5V 电源供电,外围电路配置简单,价格便宜,具有很 高的性价比。它可以显示的字符有:阿拉伯数字、英文字母的大小写、常用的 符号等,每一个字符都有一个固定的代码,例如大写的英文字母“A”的代码是 01000001B(41H) ,显示时模块把地址 41H 中的点阵字符图形显示出来,我们就 能看到字母“A” 。 如图 3-6 即为 LCD 显示模块的接口线路,和附录一的连线一样,无需修改。 图 3-6 LCD 液晶显示模块 3.5 键盘模块键盘模块 键盘模块用于调节、校准万年历的时间,更根据各个键盘的功能选择合适 的键盘使用。 按键功能自上而下依次为: 1 选择修改项键、 2 增大键、 3 减小键、 4 确定键. 文中系统软件设计使用开关做键盘使用如下图 3-7 所示。 图 3-7 开关 第四章第四章 系统的软件设计系统的软件设计 4.1 主程序设计主程序设计 电子万年历的功能是在程序控制下实现的。 首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式, 无按键按下时读取时间等数据送入液晶屏显示;在修改时间模式下设置时间完 成后再送数据到液晶屏显示。 该系统的软件设计方法按整体功能分成多个不同的程序模块,分别进行设 计、编程和调试,最后通过主程序将各程序模块连接起来。这样有利于程序修 改和调试,增强了程序的可移植性。 万年历的主程序流程图如图 4-1 所示。 开始 初始化 读日期、时间 写日期、时间 显示子程序 开关控制子程序 时间修改子程序 日期修改子程序 显示结果 返回 图 4-1 主程序流程图 4.2 万年历优化算法万年历优化算法 阳历算法: 阳历的算法比较简单,每十月的总的天数相对来说是固定的。只有 2 月份, 在闰年是 29 天,在非闰年是 28 天。每个月的日历排法主要是确定每个月第 一天是星期几。我们知道 1901 年 1 月 1 日是星期二,星期的变化是 7 天一个周 期,比如说要计算 1901 年 2 月 1 日是星期几,可以这样推算:从 1901 年 1 月 1 日到 1901 年 2 月 1 日总共经过了 31 天(从表 1 可 看出),31 对 7 取模是 3:i901 年 1 月 1 日是星期二,加三后,是星期五。因此 1901 年 2 月 1 日是星 期五。同理,可以推算出从 19012100 年任何一天是星期几,如下表 4.1 所示。 表 4.1 月份 123456789101112 闰年 312931303130313130313031 非闰年 312831303130313130313031 下图 4-2 是阳历计算程序流程图。 图 4-2 阳历计算程序流程图 4.3 阳历与星期的换算方法阳历与星期的换算方法 在现行阳历中,历年的长度 365 天(平年)或者 366 天(闰年)都不是七的整 数倍,所以日期与星期之间没有明显的对应关系。一般情况下,不看日历牌就 无法知道某月某日是星期几。不过,它们之间还是有一定规律可循的,只要经 过简单计算,或者查找表格,就可以知道与任何日期相对应的星期数。这里列 出两种方法供读者选用。 (1)公式法:设 y 麦示公元年数,d 表示从 1 月 1 日起算的日数。 首先求出 1 月 0 日(即上一年 12 月 31 日)的星期序数,然后与日数 d 相加, 其和用 7 除,余数就是答案。为了推导公式,我们想一想,第一年 1 月 0 日的 星期序数与第二年 1 月 0 日的星期序数有什么关系?平年 365 天,等于 52 个星 期零 1 天,所以第二年 1 月 0 日的星期序数比第一年的多 l,但这个 l 已包含在 y 中了,因为第二年的年数 y 比第一年大 1;闰年 366 天,等于 52 个星期零二 天,所以第二年 1 月 0 日的星期序数等于第一年(闰年)的星期序数加 2,除了 y 中包含的 1 外,还需加修正值 1。根据这些道理我们可以推得三个公式,将式中 S 用 7 除,余数就表示星期几。 从公元 1900 年 1 月 1 日到公元 2101 年 1 月 1 日之间这 201 年,可用公式: S y1900 + (y1901)/4 + d 方括号表示取商的整数部分,对于 1900 年1904 年这五年方括号值为 0。这个公式是这样来的:1900 年 1 月 0 日 (即 1899 年 12 月 31 日)是星期天。这年是平年,以后直到 2100 年前都是每隔 4 年一闰,闰年多出的那一天,影响到下一年 1 月 0 日的星期序数,并不影响闰 年本身,闰年产生的修正值应加到下一年上去,所以(y1901)/4中,计算 时用 190l 而不是 1900。 例:求 2000 年 12 月 31 日是星期几? 2000 年是闰年,从 1 月 1 日算起,12 月 31 日是第 366 天,所以 d366。 根据公式有: S20001900 +(20001901)/4+ 366 100 +99/4+ 366 l00 + 24 + 366 490 490 为 7 的整数倍,即余数为 0,所以 2000 年 12 月 31 日为星期日。 (2)更普遍的公式为: sv1 +(y1/4(y1/100+(y1/400+ d 对于这个公式,我们不妨这样考虑:阳历 400 年中有 97 个闰年,共 365x 400 + 97 146.097 天,146,09720,871 7,即正好是 7 的整数倍。这表 明某年某月某日所对应的星期序数与四百年前同月同日所对应的星期序数完全 相同。前边例中我们已算出公元 2001 年 1 月 0 日(即 2000 年 12 月 31 日)是星 期日,那么,公元 1601 年、1201 年以及公元 1 年的 1 月 0 日都是星期日。 假如每个历年都是 365 天的话,那么,由于公元 1 年 1 月 0 日是星期日,只要 公式 Sy1 + d 就可以了,但实际上闰年是 366 天,所以我们必须根据闰年 的有关规定进行修正。 (y1)/4是四年一闺产生的修正值。如果只取这一个 修正项,就会多修正以至造成错误,这是因为,根据阳历的规定,逢百之年虽 然能被 4 整除,却不一定是闰年,所以必须减去多修正的值,它等于 (y1/100) 。如果逢百之年都是平年,只要这两个修正项也就可以了。可是, 公元年数能被 400 整除的年(当然也一定能被 100 整除)仍是闰年,所

    注意事项

    本文(毕业设计(论文)基于51单片机的电子日历的设计.doc)为本站会员(土8路)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开