一种基于中国干支历的电子时钟的制作方法

文档序号:19315398发布日期:2019-12-03 23:56阅读:853来源:国知局

技术领域
:本发明涉及一种基于中国干支历的电子时钟,属于测时学领域。
背景技术
::众所周知,历法自古以来对人类的生产生活息息相关。历法,是根据天象变化的自然规律,计量较长的时间间隔,判断气候的变化,预示季节来临的法则。总看历法分三种:阴历,阳历,阴阳历。阴历是月亮历,阳历是太阳历,中国的农历是在阴历的基础上融合了阳历成分的阴阳历。目前世界通用的是阳历,又称公历,西历。公历以耶稣诞生之年作为纪年的开始,它是一种平均太阳历,地球绕太阳一周的时间是365.2422天,平均每四年就会多1天,公历解决这个问题的做法是规定每4年里有1个闰年,将这1天加在天数最少的2月,所以闰年的2月有29天。但是4年实际累加的是0.9688天,并不是完整的1天,如果累计100年(25次置闰),误差将达到0.78天,于是为减少误差,公历又规定了闰年是不能被100整除的年,取消了第100年补闰的1天,但仍然有误差0.2512天(1-((1-0.9688)x24)),近四分之一的误差,为了修正这部分误差,公历又规定了每400年还是算闰年,这样公历的误差减少到每400年只有差0.0048天。我国国内和公历一起使用的还有农历,农历是我国传统历法,农历并不是纯阴历,而是一种阴阳合历,取月相的变化周期即朔望月为月的长度,参考太阳回归年为年的长度,通过设置闰月以使平均历年与回归年相适应。农历是以阴历为基础,融合阳历成分而成的一种历法。所以我国的农历从严格意义上说不应该叫阴历,而是阴阳合历。干支历,又称节气历,它是用60组各不相同的天干地支标记年月日时的历法。主要由干支纪年、干支纪月、干支纪日、干支纪时四部分组成。它以立春为岁首,交节日为月首。年长即回归年,一节加一气为一个月。干支历通过天干地支论太阳与地球的关系,二十四节气是根据黄道面划分出来的,南北半球的二十四节气是互为对冲的关系,用二十四节气划分出十二个月,每个月含有一节一气,没有闰月。二十四节气与地球环绕太阳的周期运动有关,其年月日全由太阳运动决定,与太阴月相无关。它又与通常的阳历(公历)不同,公历的月长由人为规定而与天象无涉;干支历的年月日均由天象决定,无需通过人为调整,是完全符合天象规律的一部历法,在使用时只需要关注当地太阳时的变化,将公历时间做些微调就可以。在现实生活中,我们日常使用的电子时钟,只有公历和农历,并没有显示完整的中华干支历时钟。技术实现要素:本发明的目的是使用干支历作为日历,用电子装置实现完整中华干支历的电子时钟。本发明已成功制作出样机,西元公历和对应时刻的完整中华干支历,可同步的显示在电子装置上。中华干支历时钟的发明,对于爱好中国古代术数的人,具有直接的现实意义。通过这类能直接显示完整中华干支历的时钟,那些已经掌握或者准备中华国学中八字,大六壬,奇门遁甲的国学爱好者,他们可以不需要自己通过西元公历用各类间接的方法查询当前时刻对应的干支历时间,直接看这类时钟的中文显示就可以了。与此同时,在此类干支历时钟的基础上,还能继续发展衍生功能,其衍生范围是巨大的。其核心的技术在于利用现代单片机和时钟芯片计时能力相结合,或者仅仅利用现代高位数(必须高于8位或16位单片机,至少达到32位)单片机的计算能力,将西元公历的时钟显示规则,实时的变换成对应时间的干支历显示规则。此技术的硬件的电子时钟芯片可以选用外部时钟芯片,也可以直接利用单片机自带的rtc实时时钟,用32位单片机自带的rtc实时时钟按秒计算,32位计算的最大累计秒数为2的32次方,即4294967296秒,大约136年,假设将基准时间点设置为1944年1月1日0时0分(癸未年甲子月甲子日甲子时),可以测算到2079年年底。同理,用64位计算系统测算,测算的年限将以亿为单位,可以说是几乎没有日历的年限限制。因为此类核心技术的表达,必须通过程序来展示,所以干支历电子时钟的单片机微电脑系统,将配合以下规则来编程才能获取完整的中华干支历信息:(装置的原理图和程序流程图,请参看说明书附图1和附图2)干支历计算,预先设定一个年月日时的基准,在此时间的基础上,计算由此基准开始计时的数量。每一个公历年,需要准备预先准备该公历年对应的12个月建的公历时间点,二十四节气中的12个节,就是干支历的12个月建,另外12个气是12个月将,(月建和月将是奇门遁甲和大六壬等中国古代术数的计算基础)。但就干支历本身,只需每年12个月建的公历数据,月将的数据可以用于本发明的衍生功能。完整的干支历需要得到年干支,月干支,日干支,时干支,合计8个符号;年干,月干,日干,时干的符号取值范围为:甲乙丙丁戊己庚辛壬癸(十天干循序符号)年支,月支,日支,时支的符号取值范围为:子丑寅卯辰巳午未申酉戌亥(十二地支循序符号)设立一个基准时间点;由基准时间点开始计算,累计到测算时间点的数据;由基准时间点开始计算,比较测算时间点所在年24节气的时间数据;年干支:由于干支历的年干支严格按照十天干十二地支周而复始的循环,可以利用计算得到的连续年数,由基准时间点预留的年干支推导到当前测算时间点的年干支,天干逢十循环,地支逢十二循环,计算得到年干支。月地支:调用当前测算时点所在年24节气的时间数据,逐个对比其中的数据,距离当前测算时间点之前最近的气就是月将,而距离当前测算时间点之前最近的节就是月建。月将和月建各自的12个数据分别按顺序代表十二地支的寅卯辰巳午未中酉戌亥子丑,干支历的12月地支就是12月建的符号。月天干的符号,需要用以下干支历法规则获得:若当前年干是甲或已,则如果当前月支是寅,月干是丙,如果月支是卯,月干是丁,余下按循序类推;若当前年干是乙或庚,则如果当前月支是寅,月干是戊,如果月支是卯,月干是己,余下按循序类推;若当前年干是丙或辛,则如果当前月支是寅,月干是庚,如果月支是卯,月干是辛,余下按循序类推;若当前年干是丁或壬,则如果当前月支是寅,月干是壬,如果月支是卯,月干是癸,余下按循序类推;若当前年干是戊或癸,则如果当前月支是寅,月干是甲,如果月支是卯,月干是乙,余下按循序类推;注意:在南北球使用干支历,因为节气是颠倒的,所以月支寅要换成中,卯换成酉,余下按对冲类推。日干支:日干支也是严格按照十天干十二地支周而复始的循环,由基准时间点预留的日干支可以推导到测算时间点的日干支,可以利用计算得到的连续日期数量,天干逢十复位,地支逢十二复位,计算得到日干支。时干支:时地支可以由测算时间点计算得到的当日小时数换算,时间大于23:00小于24:00的时支为子,时间大于0:00小于01:00的时支也为子,时间大于01:00小于03:00的时支为丑,时间大于03:00小于05:00的时支为寅,以此类推,到时间大于21:00小于23:00的时支为亥。时天干的符号,需要用以下干支历法规则获得:若当前日干是甲或已,则如果当前时支是子,时干是甲,如果时支是丑,时干是乙,余下按循序类推;若当前日干是乙或庚,则如果当前时支是子,时干是丙,如果时支是丑,时干是丁,余下按循序类推;若当前日干是丙或辛,则如果当前时支是子,时干是戊,如果时支是丑,时干是己,余下按循序类推;若当前日干是丁或壬,则如果当前时支是子,时干是庚,如果时支是丑,时干是辛,余下按循序类推;若当前日干是戊或癸,则如果当前时支是子,时干是壬,如果时支是丑,时干是癸,余下按循序类推;本发明的实现装置主要依靠单色或彩色液晶屏(说明书附图3),也可以通过led单色或彩色点阵显示屏(说明书附图4),但无论采用何种显示媒介,其系统的单片机微电脑编程具有相同的时间测算流程特点(即以上表述的年月日时天干地支获取流程),程序流程图见说明书附图的图2。本发明对公历时间的取得和设置方式没有限制,使用者可以直接手动输入年月日时等时间信息,可以通过单片机内部的rtc实时时钟取得,也可以通过ds1302之类的时钟芯片取得。同时本发明对于时间的校正手段也投有限制,使用者可以利用gps,电波钟,wifi等各类校时工具进行时钟校正。使用液晶屏时,十天干和十二地支的22个汉字的取模方式没有限制,但是用led点阵屏显示时,汉字库的取模需要按横向取模,高位在前,这是由于点阵led屏一般都通过类似74hc595之类的串行输入并行输出的位移缓存器发送点阵数据。附图说明:附图1:干支历电子钟的原理图;附图2:示例程序的流程图;附图3:用于时钟显示的液晶显示屏;附图4:用于时钟显示的led点阵屏;具体实施方式:举例程序将直接使用32位单片机中,stm32f1系列的rtc实时时钟功能虽然中华干支历仅涉及到22个汉字,所需的汉字库规模小,单纯的显示可以用任意符号代表这22个汉字库数组,但在单片机编程中,汉字是通过调用汉字的gbk码显示的,每个汉字的gbk码占用两个字节,为示例程序具有更好的可读性,编程中需要显示汉字的地方仍然将直接使用gbk码值。主要程序如下:十天干的gbk码取值:甲:0xbcd7,乙:0xd2d2,丙:0xb1fb,丁:0xb6a1,戊:0xceec,己:0xbcba,庚:0xb8fd,辛:0xd0c1,壬:0xc8c9,癸:0xb9ef十二地支的gbk码取值:子:0xd7d3,丑:0xb3f3,寅:0xd2fa,卯:0xc3ae,辰:0xb3bd,巳:0xcbc8,午:0xcee7,未:0xceb4,中:0xc9ea,酉:0xd3cf,戌:0xd0e7,亥:0xbaa5由以上数据建立地支的常量数组constu16tiangan[10]={0xbcd7,0xd2d2,0xb1fb,0xb6a1,0xceec,0xbcba,0xb8fd,0xd0c1,0xc8c9,0xb9ef};constu16dizhi[12]={0xd2fa,0xc3ae,0xb3bd,0xcbc8,0xcee7,0xceb4,0xc9ea,0xd3cf,0xd0e7,0xbaa5,0xd7d3,0xb3f3};定义天干的汉字四个变量:u16niangan;u16yuegan;u16rigan;u16shigan;定义地支的汉字四个变量:u16nianzhi;u16yuezhi;u16rizhi;u16shizhi;平年每月日数表:constuint_8tmonth_table[12]={31,28,31,30,31,30,31,31,30,31,30,31};闰年的判断函数:当前时间点到基准点之间的总秒数计算的函数(精确到分钟):设定或校正单片机rtc时钟:rtc时间校正后,可以随时读取待测时间数据。建立一个关于时间各类数据的结构体如下:取得rtc中的时间:以上通过rtc_get()得到当前测量时的公历参照时间。干支历实时测量的时间可以通过rtc->cnth和rtc->cntl直接得到,然后比较24节气数据进行时差计算,以确定测量时间所在的节气位置,从而可以按本发明的内容,计算得到各组干支符号。干支历的二十四节气时间数据表(内容十进制,可改为十六进制)至此,干支历需要的年干支,月干支,日干支,时干支,全部测算得到,接下来调用字符显示函数。因为液晶显示和点阵显示的字符显示程序不同,且不属于本发明核心技术,所以不予以展示。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1