利用華邦四位機實現帶農曆24節氣萬年曆的低成本設計

2020-12-17 電子產品世界

[摘要]: 本文描述了一種利用華邦四位機來設計帶有農曆24節氣的萬年曆的設計方法,同時對於其中軟體的算法和硬體的電路設計進行了計算和分析。

[關鍵字]:節氣, 列表法, 微處理器, 單片機, 算法

  在當前的產品設計中,人們在追求產品高性能的同時,也在追求產品的低成本。這就對開發工程師提出了更高的要求。

  對於萬年曆的產品市場上已經有了很多,但是帶有農曆24節氣,同時用LED數碼管顯示的萬年曆在市場上的銷售價明顯偏高,究其原因是因為如果將農曆24節氣設計加入其中,就要增加軟體程序,這樣就會使相應的程序存貯空間加大,自然硬體成本就會隨之增加。所以,最好可以找到一種既可以實現其功能,又可以節約成本的單片機來實現。

  以下就是豐寶電子科技公司開發部門研發出的一種只是利用的華邦的四位機就可以實現的帶有農曆24節氣的萬年曆的產品設計思路,由於用的是4位機,它的ROM空間和RAM空間比起8位機就少得多,這樣對軟體的設計提出了更高的要求,要求能夠找到適合4位機上使用的簡易算法。

  對於陽曆農曆的算法比較簡單,而且規律很容易找到。這裡就不再贅述。我們這裡重點討論一下對於農曆中二十四個節氣的算法。還考慮到單片機的性能情況和萬年曆的使用壽命,我們設計的是有限年(如50年)萬年曆,因此這裡我們的算法也是按著50年為年限來設計。

一、萬年曆農曆節氣算法:

  為了便於考察50年的無規律的農曆節氣分布時間,我們利用C語言在計算機中,實現了50年(2000~2049年)的陽曆和農曆節氣分布時間表。由於數據龐大,所以僅僅列出其中部分陽曆年對應的前6個節氣日期,簡表見表1。

  這張複雜冗長的節氣表中,每年的節氣具體日期雖然都在一定的範圍內變動,但是變動的趨勢毫無規律可尋,每個月的具體節氣日期有時候推前一兩天,有時候推後一兩天。

  但是,從這張複雜的表格中的眾多數據中,我們發現這樣一個規律:雖然,這些節氣的日期變化趨勢無法獲得,但是,這些日期的變化總是在3天之內變化的。

表格1、陽曆年中農曆節氣日期表

年\月

1

2

3

4~12

2000

6

21

4

19

5

20

上半月節氣日期

下半月節氣日期

⋯⋯

⋯⋯

2043

5

20

4

19

6

21

上半月節氣日期

下半月節氣日期

2044

6

20

4

19

5

20

上半月節氣日期

下半月節氣日期

2045

5

20

3

18

5

20

上半月節氣日期

下半月節氣日期

⋯⋯

⋯⋯

2049

5

19

3

18

5

20

上半月節氣日期

下半月節氣日期


  例如:每年的第一個節氣(小寒)出現的1月的5日,6日兩天中的某一天;每年的第二個節氣(大寒)出現在1月的20日,21日,19日三天中的某一天。

  這樣,我們只要固定每個節氣的基本日期,然後專門針對這兩三天編制一個相對日期的表格就可以了。考慮到最多變化範圍是3天,所以這個相對日期可以取值為1、0和-1。

  我們選定的基本日期如下:

  一月到三月的節氣基本日期: 6/20 、4/19、 6/21;

  四月到六月的節氣基本日期: 5/20 、6/21、 6/21;

  六月到九月的節氣基本日期: 7/23 、8/23、 8/23;

  十月到十二月的節氣基本日期:8/24 、8/22、 7/22;

  根據以上的思想,我們得到了下面的表格2。

  並且,仔細觀察表2,我們還可以得到以下關於節氣日期相對值的規律性結論:

  1、 只有以下四個節氣(2、12、19、22)同時出現三個相對值(1,-1和0)的情況。

  2、 其它的20個節氣中僅僅出現了0和-1這兩個相對值。

  3、 在有三個相對值的四個節氣(2、12、19、22)中,2044年以前,出現的非零相對值都是1;而2044年以及2044年以後,出現的非零相對值都是-1;

表格2、陽曆年中農曆節氣日期固定日期和相對值表

陰曆

節氣

1

2

3

4

5

6

7~23

8-24

陽曆

年\月

1

2

3

4~12

基本

日期

6

20

4

19

6

21

上半月節氣日期固定值

下半月節氣日期固定值

2000

0

1

0

0

-1

-1

上半月節氣日期相對值

下半月節氣日期相對值

⋯⋯

⋯⋯

2043

-1

0

0

0

0

0

上半月節氣日期相對值

下半月節氣日期相對值

2044

0

0

0

0

-1

-1

上半月節氣日期相對值

下半月節氣日期相對值

2045

-1

0

-1

-1

-1

-1

上半月節氣日期相對值

下半月節氣日期相對值

⋯⋯

⋯⋯

2049

-1

-1

-1

-1

-1

-1

上半月節氣日期

下半月節氣日期

  也就是說在50年內,大寒(2)、夏至(12)、寒露(19)和小雪(22)這四個節氣日期變化相對較多,一共有3天,它們的日期相對值可能需要使用三個狀態值來表示。


  下面是以上三條農曆節氣日期規律的相對值分布簡圖。

 

圖1、農曆節氣日期相對值分布簡圖


  根據表格2和圖1所示意的農曆節氣日期排布規律和形式,我們就可以構造一個表格,並且結合相應的算法來計算某個陽曆日期所對應的陰曆節氣了。

  利用上節分析結果,我們設想使用最少的字節來編制一個表格,使得它包含了50年內的所有相對值分布信息。由於一年包含農曆的24個節氣,也就是說共有24個日期相對值狀態量。

  為了能夠儘量減少存儲空間,我們使用一個位來代表一個農曆的節氣日期相對值。這樣1年的24個節氣就可以用24個位來表示,也就是3個字節(每個字節8個位)表示。

  由於農曆節氣日期相對值最多有三種狀態:-1、0和1,而一個位僅僅有2種狀態:0和1,為了能夠把3種狀態融合進兩種狀態中 ,我們根據上節中節氣日期相對值的規律性結論,採取了具有條件的二值狀態來表示三值狀態,制定了如下的編碼規則:


表格3、位狀態編碼規則

位值

節氣日期相對值

備註

0

0

適合於表格的50年所有節氣

1

1

適合於2044年以前的2、12、19、22四個節氣

-1

2044年和其後的2、12、19、22四個節氣

以及其它20個節氣

  利用以上的規則我們就可以對於50年的24個節氣進行編碼,得到如下的編碼表:

表格4、最終的編碼表

年份

LBA表值

2000

4E A6 99

2001

 

9C A2 98

2002

 

80 00 18

2003

00 10 24

⋯⋯

⋯⋯

2042

9E A2 98

2043

80 82 18

2044

0F EF FB

2045

BF E6 D9

2046

9E A6 98

2047

80 82 18

2048

0F FF FF

2049

FC EF D9

  由此看出,使用這種編碼的方式對農曆日期相對值進行編碼方法,一年的24個節氣的日期只需要3個字節表示就可以明確表示了。50年的節氣表,只需要150個字節的存儲空間。年份越多,這種編碼發方式能夠節約的存儲空間越大,優勢越明顯。

二、萬年曆的硬體實現

  我們使用的單片機是華邦公司的四位機。這種單片機的結構跟8位機的類似,雖然它的功能不如8位單片機。但是,它具有結構簡單、成本低的優勢,同時還包括了普通單片機的基本功能。它包含了128個字節的RAM,2k的ROM,定時器,外部中斷,內部中斷,此外,還有省電功能和驅動LED的功能。下圖就是利用華邦四位機W741E260實現萬年曆功能的原理框圖,

  其中,對於陽曆日期,農曆日期的顯示,是利用LED數碼顯示來實現,而對於二十四節氣則是利用24個發光二極體,在製做外觀模具時,可以將二十四節氣標誌在外觀模具上,如果到了相對應的節氣,相應的發光二極體就會點亮。

  利用了此方案實現 ,就用一個華邦的4位機,硬體成本就可以大大降低。

三、萬年曆的軟體實現

  由於萬年曆的其它的功能程序已經佔用了較大的存儲空間。所以能夠用於農曆節氣查詢的程序的空間不大,僅僅有0.5k的容量。也就是說表格和查表程序一共只有0.5k的空間,表格佔用的空間越大,可寫程序的空間就越小。

  如果使用把50年農曆24節氣日期表格1,僅僅表格就需要使用50

相關焦點

  • 萬年曆--陰曆日期和節氣的獲取
    在這幾年內也有不少人做過這個事情,如2013年的 feifei:fullCalendar 改造計劃之帶農曆節氣節假日的萬年曆。        文章連結:http://feifei.im/archives/168一、下載算法js                涉及到陰曆,肯定離不開萬年曆,網上有太多的萬年曆可以參考。當然,不僅僅是參考,可以直接拿來使用。
  • Win10 Cortana小娜新技能 可查看農曆萬年曆
    【天極網IT新聞頻道】【Yesky新聞頻道消息】 中秋節來臨之際,微軟為Win10/WP8.1版Cortana小娜新增新技能:公曆/農曆轉換。Win10 Cortana小娜新技能 可查看農曆萬年曆  一直以來,農曆是現今依舊廣泛使用的中國傳統曆法,在華夏文明中沿襲了上千年。
  • 節氣說:萬年曆順歷春分時節邀你看農曆
    節氣說:萬年曆順歷春分時節邀你看農曆 網絡
  • 《萬年曆》農曆切換方法
    很多小夥伴都比較喜歡看農曆的日期,所以在使用萬年曆app的時候,就想要切換農曆進行查看。萬年曆app是支持農曆日期的,那麼萬年曆app怎麼切換農曆呢?下面小編就為大家帶來了具體的教程,還不知道的小夥伴可以跟小編一起來看看哦!
  • 中華黃曆萬年曆
    中華黃曆萬年曆 生活工具 大小: 9.23M
  • 八字萬年曆
    【八字萬年曆,生活裡的好幫手】:萬年曆,老黃曆,農曆日曆,奇門日曆,方便中國傳統文化愛好者查詢、記錄.一目了然,方便快捷準確.
  • 十二地支之「子時與凌晨」,農曆節氣陰曆陽曆排八字之注意點
    時辰達標一天24小時,歸納為12個時辰,12個時辰拍上地支,然後從子時起即為凌晨。說到這裡,現在可以排八字了,但是如今手機APP和電腦在線查詢排八字如此方便,還要不要學的排八字?我個人認為很有必要,你得知道它裡面的流程和邏輯才會深刻理解和記憶下來。基本辦法即根據《萬年曆》查,按照12個節氣進行排。
  • 萬年曆順歷:《節氣說丨清明》
    同時清明也是二十四節氣的第五個節氣,根據靈機文化旗下專業黃曆順歷提供「精準到秒」的曆法大數據,今年春分節氣的準確時間為4月5日04時12分,由艾茸中醫和順歷聯合提供專業指導的《節氣說》兩分鐘節氣動畫本日全新上線,艾茸中醫郭強中博士表示,清明時節戶外春光最濃,大自然生機勃勃,最適合郊遊踏青,親近自然。
  • 二十四節氣表 24節氣表圖大全
    那時候有二十四個節氣,每6個節氣是一個季節,因此大家的農事活動都是根據節氣而來的。那麼,二十四節氣表去哪找呢?以下是萬年曆小編帶來的24節氣表圖大全,一起去看看吧。24節氣節氣指二十四時節和氣候,二十四節氣是中國古代訂立的一種用來指導農事的補充曆法,二十四節氣能反映季節的變化,指導農事活動,影響著千家萬戶的衣食住行。
  • 分享給大家一款mac好用的日曆軟體(萬年曆)
    萬年曆 for mac版強大好用的日曆軟體,萬年曆可以顯示農曆,顯示天氣預報,全國全球天氣,未來15天天氣預報,全國pm2.5實時顯示,節假日等等特點,萬年曆 mac版還具備記事日記功能,可以添加提醒任務,工作任務,提高工作效率。
  • 古代百年不傳秘法:不用萬年曆排作八字!
    以前要知道某一天的天幹地支最便捷的的方法就是帶一本萬年曆,如果沒有萬年曆怎麼辦,那麼就得學會盲人中流傳的「流星趕月法」,此法雖好也準確無誤,但是能背下這麼多口訣也是不容易的
  • 盲人算命是怎麼背誦《萬年曆》的?
    盲人算命是怎麼背誦《萬年曆》的? 盲人背誦的萬年曆叫「銀盤子」 盲人心算萬年曆法:只需記住十四字的歌訣,可迅速算出幹。 萬年曆是一種將公曆、農曆、幹支歷相互對應,編排在一起的歷學工具書。
  • 天幹地支齊全的中華萬年曆?中國風寶珀巍巍若山
    不過,最具代表性的,還是有著中國計時曆法的寶珀中華萬年曆。這款表除了有正常的計時功能外,還按照中國古代的時間,按照地支:子醜寅某辰巳午未申酉戌亥的計時方法顯示時間,子時對應的就是23點到次日一點,如果是這樣還是可以理解的,中國也有手錶是這樣的。
  • 立秋日曆:中華萬年曆日曆節氣提醒
    中華萬年曆日曆App提醒您,今天是中國傳統二十四節氣中的第十三個節氣——立秋,也是秋天的第一個節氣。立秋的到來,標誌著孟秋時節的正式開始。中伏已經接近尾聲,三伏天已過大半,即將迎來秋高氣爽的天氣。
  • 萬年曆老黃曆免費下載
    下載萬年曆老黃曆免費下載後,你就會被它深深吸引住。萬年曆老黃曆免費下載官方介紹:頭疼找不到有趣的軟體?下載萬年曆老黃曆免費下載吧,享受別樣的樂趣。
  • 風靡全中國的萬年曆,你了解嗎?
    現代的萬年曆能同時顯示公曆、農曆和幹支歷等多套曆法,更能包含黃曆相關吉兇宜忌、節假日、提醒等多種功能信息,極為方便人們查詢使用。一天,他上山砍柴,坐在樹陰下休息,樹影的移動啟發了他,他設計了一個測日影計天時的晷儀。可是,天陰雨霧,影響測量。後來,山崖上的滴泉引起了他的興趣,他又動手做了一個五層漏壺。天長日久,他發現每隔三百六十多天,天時的長短就會重複一遍。當時的國君叫祖乙,天氣風雲的不測,使他很苦惱。一個名叫阿衡的大臣,為討好皇上,奏稱要設天台敬祭天神。
  • 用傳統手作打卡24節氣 觀瀾湖24節氣手造藝術節開幕
    10月24日,近百位市民匯聚觀瀾手工藝場,用親手製作五穀畫的方式,拉開此次藝術節的帷幕。本次藝術節以手造藝術展、發布二十四節氣主題手作倡議、開辦節氣手作公益活動等方式,將傳統手作與節氣文化相結合。曾經抽象的節氣在這裡變為看得見、摸的著的藝術作品,觀眾還可以親自動手,完成一件自己的時令節氣作品。
  • 隨時查農曆算日子 中華萬年曆Win8版體驗
    想查農曆算算有啥好日子?不用搜索來搜索去的,在Win8使用一個叫「中華萬年曆」的應用即可。「中華萬年曆」Win8版除了提供農曆信息,包括每天適宜和忌諱的事情(這個真不知道怎麼算出來的,好像上千年前就已經安排好哪天應該做啥事),還具有天氣預報、鬧鐘提醒功能和和記事本功能。
  • 陰曆是農曆,24節氣是陰曆 很多人都理解錯了,這下終於區分了
    在我國有,公曆,陽曆,陰曆,農曆,很多年輕人分不開有何區別,今天小編就簡單的說下,這四種說法到底有何區別!如有不準確的還望大家給予斧正!感激不盡!隨著曆法的不斷發展,直到24節氣的出現,也就形成了農曆也就是「漢歷」!而我國目前使用的是「陰陽曆」!在我國,古代使用的基本是陰曆,原因是相對應「回歸年」塑望月更容易觀測!眾所周知,根據太陽曆法,地球圍繞太陽一圈是365日,而根據塑望月來定一年大致是354天,因此,也就有了閏月之說!
  • 公曆、農曆閏月之別及與節氣關係|文化傳家·曆法
    今早打開萬年曆app,不看不知道,一看嚇一跳。怎麼從今天開始又是四月?難道我穿越了……其實心細的朋友們早就發現,今年我們碰上了幾年一遇的閏四月!那麼,閏月究竟是什麼?公曆和農曆有什麼區別?閏月和節氣之間有關係嗎?