资料介绍
公历是全世界通用的历法,以地球绕太阳的一周为一年,一年365天,分为12个月,1、331天,2月为28天,其余月份为30天。事实上地球绕太阳一周共365天5小时48分46秒。比公历一年多出5小时48分46秒,为使年误差不累积,公历年用闰年法来消除年误差,由于每年多出5小时48分46秒,每4年累计多出23小时15分4秒,接近1天,天文学家就规定每4年有一个年,把2月由28天改为29天。凡是公历年代能被4整除的那一年就是闰年。但是这样一来,每4年又少了44分56秒,为了更准确地计时,天文学家又规定,凡能被100整除的年份,只有能被400整除才是闰年,即每400年要减掉3个闰年,经过这样处理后实际上每400年的误差只有2小时53分20秒,已相当准确了农历与公历不同,农历把月亮绕地球一周作为一月。因为月亮绕地球一周不是一整天,所以农历把月分为大月和小月,大月30天,小月29天。通过设置大小月,使农历日始终与月亮与地球的位置相对应。为了使农历的年份与公历年相对应,农历通过设置闰月的办法使它的平均年长度与公历年相等。农历是中国传统文化的代表之ー,并与农业生产联系密切,中国人民特别是广大农民十分熟悉并喜爱农历公历与农历是我国目前并存的两种历法,各有其固有的规律。农历与月球的运行相对应,其影响因素多,它的大月和闰月与天体运行有关,计算十分复杂,且每年都不一致。因此要用单片机实现公历与农历的转换,用査表法是最方便实用的办法系列单片机因其在功能上能满足大部份对速度要求不高的应用场合的要求,且价格低廉,开发工具普及程度高是目前应用最多的单片机之一。本文介绍一种用51单片机实现从1901年到年199年公历日到农历日及星期的转换方法,并向读者提供完整的51汇编程序
基本原理实现公历与农历的转换,一般采用査表法,按日査表是速度最快的方法,但51单片机寻址能力有限,不可能采用按日查表的方法。除按日査外,我们可以通过按月查表和按年査表的方法,再通过适当的计算,来确定公历日所对应的农历日期。本文采用的是按年査表法,最大限度地减少表格所占的程序空间对于农历月来说,大月为30天,小月为29天,这是固定不变的,这样我们就可用1个BIT(位)来表示大小月信息。农历一年,如有闻月为13个月,否则是12个月,所以一年需要用13个BIT,间月在农历年中所在的月份并不固定大部分闰月分布在农历2-8月,但也有少量年份在9月以后,所以要表示间月的信息,至少要4BIT,在这里我们用4BIT的值来表示闰月的月份,值为0表示本年没有间月。有了以上信息,还不足以判断公历日对应的农历日,因为还需要个参照日,我们选用农历正月初一所对应的公历日期作参照日,公历日最大为31日,需要SBIT来表示,而春节所在的月份不是1月就是2月,用1BIT就够了,考虑到表达方便,我们用2BIT来表示春节月,2BIT的值直接表示月份。这样一年的农历信息只用3个字节就全部包括了计算公历日对应的农历日期的方法:先计算出公历日离当年元旦的天数,然后查表取得当年的春节日期,计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数,以后只要根据大小月和闰月信息,减一月天数,调整一月农历月份,即可推算出公历日所对应的农历日期。如公历日不到春节日期,农历年要比公历年小一年,农历大小月取前年的信息。农历月从12月向前推算公历日是非常有规律的,所以公历日所对应的星期天可以通过计算直接得到,理论上公元0年1月1日为星期日只要求得公历日离公元0年1月1日的日子数,除7后的余数就是星期天,为了简化计算,采用月校正法,根据公历的年月日可直接计算出星期天。其算法是:日期十年份十所过闰年数十月校正数之和除7的余数就是星期天,但如果是在闰年又不到3月份,上述之和要减一天再除7。其1-12月的校正数据为在本程序中采用1个字节表示年份,闰年数也只计算1900年以后的闰年数,所以实际校正数据也和上述数据不同
- DS1302的电子万年历_51单片机,年月日、星期、时分秒、农历和温度,带闹钟,全套资料
- C语言 | 用51单片机实现公历与农历星期的转换(完整源代码)
- 简单实现51单片机步进电机的驱动
- 51单片机的驱动说明 7次下载
- 使用51单片机实现流水灯的详细资料说明 20次下载
- 51单片机与串口通信的介绍代码说明 16次下载
- 单片机C51编程的警告提示说明
- 如何进行51单片机的AD和DA转换
- 51单片机教程之51单片机的串行口应用举例资料说明 18次下载
- 51单片机转换程序(51Hex_bin)下载绿色版 0次下载
- AD转换器AD976与51单片机的接口设计 80次下载
- 基于51单片机实现公历与农历、星期的转换 93次下载
- 用51单片机实现公历与农历、星期的转换
- 一种公历到农历日期转换算法的实现
- 用51单片机实现公历与农历星期的转换
- 详解STM32单片机和51单片机的区别 3.7w次阅读
- 51单片机实现最小系统的原理和电路与编程设计说明 8437次阅读
- 单片机的结构和原理说明 5025次阅读
- 51单片机的最小系统应用说明 7719次阅读
- 51单片机引脚简介 5.4w次阅读
- 如何学习51单片机 4929次阅读
- Office的公历转换农历和隔行求和及两页纸打印到一页纸上的3个小技巧 4170次阅读
- 如何使用51单片机实现串口通信 2.9w次阅读
- 如何用51单片机实现IIC通信 1.6w次阅读
- 如何对51单片机进行外部扩展 1.5w次阅读
- 51单片机和AVR单片机有什么区别 1.3w次阅读
- 新手学习单片机的首选:51单片机 8536次阅读
- 单片机8x8矩阵键盘原理说明 2.5w次阅读
- 什么是单片机_51单片机学前预备知识 1511次阅读
- 51单片机学习感悟与51单片机上拉电阻心得 4229次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 651单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 751单片机大棚环境控制器仿真程序
- 1.10 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多