新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 利用華邦四位機(jī)實(shí)現(xiàn)帶農(nóng)歷24節(jié)氣萬年歷的低成本設(shè)計(jì)

利用華邦四位機(jī)實(shí)現(xiàn)帶農(nóng)歷24節(jié)氣萬年歷的低成本設(shè)計(jì)

——
作者:劉春華 時(shí)間:2005-11-08 來源: 收藏

[摘要]: 本文描述了一種利用華邦四位機(jī)來設(shè)計(jì)帶有農(nóng)歷24節(jié)氣的萬年歷的設(shè)計(jì)方法,同時(shí)對于其中軟件的算法和硬件的電路設(shè)計(jì)進(jìn)行了計(jì)算和分析。

[關(guān)鍵字]:節(jié)氣, 列表法, 微處理器, 單片機(jī), 算法

  在當(dāng)前的產(chǎn)品設(shè)計(jì)中,人們在追求產(chǎn)品高性能的同時(shí),也在追求產(chǎn)品的低成本。這就對開發(fā)工程師提出了更高的要求。

  對于萬年歷的產(chǎn)品市場上已經(jīng)有了很多,但是帶有農(nóng)歷24節(jié)氣,同時(shí)用LED數(shù)碼管顯示的萬年歷在市場上的銷售價(jià)明顯偏高,究其原因是因?yàn)槿绻麑⑥r(nóng)歷24節(jié)氣設(shè)計(jì)加入其中,就要增加軟件程序,這樣就會使相應(yīng)的程序存貯空間加大,自然硬件成本就會隨之增加。所以,最好可以找到一種既可以實(shí)現(xiàn)其功能,又可以節(jié)約成本的單片機(jī)來實(shí)現(xiàn)。

  以下就是豐寶電子科技公司開發(fā)部門研發(fā)出的一種只是利用的華邦的四位機(jī)就可以實(shí)現(xiàn)的帶有農(nóng)歷24節(jié)氣的萬年歷的產(chǎn)品設(shè)計(jì)思路,由于用的是4位機(jī),它的ROM空間和RAM空間比起8位機(jī)就少得多,這樣對軟件的設(shè)計(jì)提出了更高的要求,要求能夠找到適合4位機(jī)上使用的簡易算法。

  對于陽歷農(nóng)歷的算法比較簡單,而且規(guī)律很容易找到。這里就不再贅述。我們這里重點(diǎn)討論一下對于農(nóng)歷中二十四個節(jié)氣的算法。還考慮到單片機(jī)的性能情況和萬年歷的使用壽命,我們設(shè)計(jì)的是有限年(如50年)萬年歷,因此這里我們的算法也是按著50年為年限來設(shè)計(jì)。

一、萬年歷農(nóng)歷節(jié)氣算法:

  為了便于考察50年的無規(guī)律的農(nóng)歷節(jié)氣分布時(shí)間,我們利用C語言在計(jì)算機(jī)中,實(shí)現(xiàn)了50年(2000~2049年)的陽歷和農(nóng)歷節(jié)氣分布時(shí)間表。由于數(shù)據(jù)龐大,所以僅僅列出其中部分陽歷年對應(yīng)的前6個節(jié)氣日期,簡表見表1。

  這張復(fù)雜冗長的節(jié)氣表中,每年的節(jié)氣具體日期雖然都在一定的范圍內(nèi)變動,但是變動的趨勢毫無規(guī)律可尋,每個月的具體節(jié)氣日期有時(shí)候推前一兩天,有時(shí)候推后一兩天。

  但是,從這張復(fù)雜的表格中的眾多數(shù)據(jù)中,我們發(fā)現(xiàn)這樣一個規(guī)律:雖然,這些節(jié)氣的日期變化趨勢無法獲得,但是,這些日期的變化總是在3天之內(nèi)變化的。

表格1、陽歷年中農(nóng)歷節(jié)氣日期表

年月

1

2

3

4~12

2000

6

21

4

19

5

20

上半月節(jié)氣日期

下半月節(jié)氣日期

⋯⋯

⋯⋯

2043

5

20

4

19

6

21

上半月節(jié)氣日期

下半月節(jié)氣日期

2044

6

20

4

19

5

20

上半月節(jié)氣日期

下半月節(jié)氣日期

2045

5

20

3

18

5

20

上半月節(jié)氣日期

下半月節(jié)氣日期

⋯⋯

⋯⋯

2049

5

19

3

18

5

20

上半月節(jié)氣日期

下半月節(jié)氣日期


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

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

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

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

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

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

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

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

  并且,仔細(xì)觀察表2,我們還可以得到以下關(guān)于節(jié)氣日期相對值的規(guī)律性結(jié)論:

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

  2、 其它的20個節(jié)氣中僅僅出現(xiàn)了0和-1這兩個相對值。

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

表格2、陽歷年中農(nóng)歷節(jié)氣日期固定日期和相對值表

陰歷

節(jié)氣

1

2

3

4

5

6

7~23

8-24

陽歷

年月

1

2

3

4~12

基本

日期

6

20

4

19

6

21

上半月節(jié)氣日期固定值

下半月節(jié)氣日期固定值

2000

0

1

0

0

-1

-1

上半月節(jié)氣日期相對值

下半月節(jié)氣日期相對值

⋯⋯

⋯⋯

2043

-1

0

0

0

0

0

上半月節(jié)氣日期相對值

下半月節(jié)氣日期相對值

2044

0

0

0

0

-1

-1

上半月節(jié)氣日期相對值

下半月節(jié)氣日期相對值

2045

-1

0

-1

-1

-1

-1

上半月節(jié)氣日期相對值

下半月節(jié)氣日期相對值

⋯⋯

⋯⋯

2049

-1

-1

-1

-1

-1

-1

上半月節(jié)氣日期

下半月節(jié)氣日期

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


  下面是以上三條農(nóng)歷節(jié)氣日期規(guī)律的相對值分布簡圖。

 

圖1、農(nóng)歷節(jié)氣日期相對值分布簡圖


  根據(jù)表格2和圖1所示意的農(nóng)歷節(jié)氣日期排布規(guī)律和形式,我們就可以構(gòu)造一個表格,并且結(jié)合相應(yīng)的算法來計(jì)算某個陽歷日期所對應(yīng)的陰歷節(jié)氣了。

  利用上節(jié)分析結(jié)果,我們設(shè)想使用最少的字節(jié)來編制一個表格,使得它包含了50年內(nèi)的所有相對值分布信息。由于一年包含農(nóng)歷的24個節(jié)氣,也就是說共有24個日期相對值狀態(tài)量。

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

  由于農(nóng)歷節(jié)氣日期相對值最多有三種狀態(tài):-1、0和1,而一個位僅僅有2種狀態(tài):0和1,為了能夠把3種狀態(tài)融合進(jìn)兩種狀態(tài)中 ,我們根據(jù)上節(jié)中節(jié)氣日期相對值的規(guī)律性結(jié)論,采取了具有條件的二值狀態(tài)來表示三值狀態(tài),制定了如下的編碼規(guī)則:


表格3、位狀態(tài)編碼規(guī)則

位值

節(jié)氣日期相對值

備注

0

0

適合于表格的50年所有節(jié)氣

1

1

適合于2044年以前的2、12、19、22四個節(jié)氣

-1

2044年和其后的2、12、19、22四個節(jié)氣

以及其它20個節(jié)氣

  利用以上的規(guī)則我們就可以對于50年的24個節(jié)氣進(jìn)行編碼,得到如下的編碼表:

表格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

  由此看出,使用這種編碼的方式對農(nóng)歷日期相對值進(jìn)行編碼方法,一年的24個節(jié)氣的日期只需要3個字節(jié)表示就可以明確表示了。50年的節(jié)氣表,只需要150個字節(jié)的存儲空間。年份越多,這種編碼發(fā)方式能夠節(jié)約的存儲空間越大,優(yōu)勢越明顯。

二、萬年歷的硬件實(shí)現(xiàn)

  我們使用的單片機(jī)是華邦公司的四位機(jī)。這種單片機(jī)的結(jié)構(gòu)跟8位機(jī)的類似,雖然它的功能不如8位單片機(jī)。但是,它具有結(jié)構(gòu)簡單、成本低的優(yōu)勢,同時(shí)還包括了普通單片機(jī)的基本功能。它包含了128個字節(jié)的RAM,2k的ROM,定時(shí)器,外部中斷,內(nèi)部中斷,此外,還有省電功能和驅(qū)動LED的功能。下圖就是利用華邦四位機(jī)W741E260實(shí)現(xiàn)萬年歷功能的原理框圖,

  其中,對于陽歷日期,農(nóng)歷日期的顯示,是利用LED數(shù)碼顯示來實(shí)現(xiàn),而對于二十四節(jié)氣則是利用24個發(fā)光二極管,在制做外觀模具時(shí),可以將二十四節(jié)氣標(biāo)志在外觀模具上,如果到了相對應(yīng)的節(jié)氣,相應(yīng)的發(fā)光二極管就會點(diǎn)亮。

  利用了此方案實(shí)現(xiàn) ,就用一個華邦的4位機(jī),硬件成本就可以大大降低。

三、萬年歷的軟件實(shí)現(xiàn)

  由于萬年歷的其它的功能程序已經(jīng)占用了較大的存儲空間。所以能夠用于農(nóng)歷節(jié)氣查詢的程序的空間不大,僅僅有0.5k的容量。也就是說表格和查表程序一共只有0.5k的空間,表格占用的空間越大,可寫程序的空間就越小。

  如果使用把50年農(nóng)歷24節(jié)氣日期表格1,僅僅表格就需要使用50

c語言相關(guān)文章:c語言教程




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉