《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于單片機(jī)的BSMA法在求取農(nóng)歷節(jié)氣中的應(yīng)用研究

基于單片機(jī)的BSMA法在求取農(nóng)歷節(jié)氣中的應(yīng)用研究

2009-08-14
作者:曾慶化1, 劉建業(yè)1, 林雪原1

  摘? 要: 基于農(nóng)歷節(jié)氣的內(nèi)在規(guī)律提出了一種新型實(shí)用列表算法——按位列表法(BSMA),利用單片機(jī)Tm8706實(shí)現(xiàn)了電子萬(wàn)年歷的研究和開(kāi)發(fā)。
  關(guān)鍵詞: 節(jié)氣? 列表法? 微處理器? 單片機(jī)? 算法

?

  農(nóng)歷24節(jié)氣是我國(guó)民間傳統(tǒng)節(jié)令,對(duì)于農(nóng)事活動(dòng)有廣泛的應(yīng)用價(jià)值。因而帶有24節(jié)氣的電子萬(wàn)年歷在農(nóng)村有廣泛的市場(chǎng)。

本文通過(guò)分析24節(jié)氣,找出了其中內(nèi)在的隱含規(guī)律,并且根據(jù)這種規(guī)律提出了一種最新的查表方法。由于這種查表方法是基于位查詢(xún)的,所以稱(chēng)之為按位列表法(Bit Schedule Method Arithmetic,BSMA)。

1? 陰歷節(jié)氣的隱含規(guī)律

  為了便于考察50年中無(wú)規(guī)律的陰歷節(jié)氣分布時(shí)間,本文利用C語(yǔ)言在計(jì)算機(jī)中實(shí)現(xiàn)了50年(2000~2049年)的陽(yáng)歷和陰歷節(jié)氣分布時(shí)間表。由于數(shù)據(jù)龐大,所以?xún)H列出其中部分陽(yáng)歷年對(duì)應(yīng)的前6個(gè)節(jié)氣日期,見(jiàn)表1。

?

  表1中,每年的節(jié)氣具體日期雖然都在一定的范圍內(nèi)變動(dòng),但是變動(dòng)的趨勢(shì)毫無(wú)規(guī)律可尋,每個(gè)月的具體節(jié)氣日期有時(shí)候推前一、二天,有時(shí)候推后一、二天。但是,從這張復(fù)雜表格中的眾多數(shù)據(jù)中可以發(fā)現(xiàn)一個(gè)規(guī)律:雖然,無(wú)法獲得這些節(jié)氣變化的具體日期,但是,這些日期的變化總是在3天之內(nèi)發(fā)生。例如:每年的第1個(gè)節(jié)氣(小寒)出現(xiàn)在1月的5日、6日2天中的某一天;每年的第2個(gè)節(jié)氣(大寒)出現(xiàn)在1月的19日、20日、21日3天中的某一天。這樣,只要固定每個(gè)節(jié)氣的基本日期,然后專(zhuān)門(mén)針對(duì)這二、三天編制一個(gè)相對(duì)日期的表格就可以了。考慮到最多變化范圍是3天,所以這個(gè)相對(duì)日期可以取值為1、0和-1。

  選定的基本日期是:1月到3月的節(jié)氣基本日期:6/20、4/19、6/21;4月到6月的節(jié)氣基本日期:5/20、6/21、6/21;6月到9月的節(jié)氣基本日期:7/23、8/23、8/23;10月到12月的節(jié)氣基本日期:8/24、8/22、7/22。

  根據(jù)以上的思路,可得到表2所示的相對(duì)值表。

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

  (1)只有4個(gè)節(jié)氣(大寒、夏至、寒露、小雪)是3個(gè)相對(duì)值(1,-1和0)同時(shí)出現(xiàn)。

  (2)其他的20個(gè)節(jié)氣中僅僅出現(xiàn)了0和-1這2個(gè)相對(duì)值。

  (3)在有3個(gè)相對(duì)值的4個(gè)節(jié)氣(大寒、夏至、寒露、小雪)中,2044年以前,出現(xiàn)的非零相對(duì)值都是1;而2044年以及2044年以后,出現(xiàn)的非零相對(duì)值都是-1;

?

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

  圖1是以上4條農(nóng)歷節(jié)氣日期規(guī)律的相對(duì)值分布簡(jiǎn)圖。

?

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

2?按位列表法(BSMA)及其編碼方法

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

  為了能夠盡量減少存儲(chǔ)空間,可以使用1個(gè)位來(lái)代表1個(gè)農(nóng)歷的節(jié)氣日期相對(duì)值。這樣一年的24個(gè)節(jié)氣就可以用24個(gè)位來(lái)表示,也就是3個(gè)字節(jié)(每個(gè)字節(jié)8個(gè)位)表示。這就是所說(shuō)的按位列表法。

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

?

  利用以上的規(guī)則就可對(duì)50年的24個(gè)節(jié)氣進(jìn)行編碼,得到如表4所示的編碼表。

?

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

3?BSMA法在單片機(jī)中的實(shí)現(xiàn)

  本文使用的單片機(jī)是十速公司的4位機(jī),型號(hào)為T(mén)m8706。這種單片機(jī)的結(jié)構(gòu)與8位機(jī)類(lèi)似,但是功能遠(yuǎn)遜于8位計(jì)算機(jī)。選此機(jī)型的原因是它具有結(jié)構(gòu)簡(jiǎn)單、成本低的優(yōu)勢(shì),同時(shí)還包括了普通單片機(jī)的基本功能。它包含了256個(gè)字節(jié)的RAM、2KB的ROM、定時(shí)器、外部中斷、內(nèi)部中斷,此外,還有省電功能和驅(qū)動(dòng)LED的功能。

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

  如果使用表1所示的50年農(nóng)歷24節(jié)氣日期表,僅僅表格就需要使用50×24個(gè)字節(jié)=1200個(gè)字節(jié)的存儲(chǔ)空間,其要求空間遠(yuǎn)遠(yuǎn)超出了0.5KB的容量。而使用LBA編碼方法得到的表格,只需要150個(gè)字節(jié),存儲(chǔ)空間僅僅是表1所需存儲(chǔ)空間的1/8,其余部分可以供查表程序使用。

  在單片機(jī)中,查表程序是使用匯編程序完成的,實(shí)現(xiàn)起來(lái)也很容易。為了便于理解,這里把查表程序用C語(yǔ)言實(shí)現(xiàn)的部分介紹如下:

  輸入?yún)?shù)是陽(yáng)歷的年月日:day、month、year,要求查表尋找它附近的農(nóng)歷節(jié)氣和農(nóng)歷節(jié)氣的日期。

  if(day>=15) half_mon=1;     //判斷是否是上半月

  else half_mon=0;

  col=(month-1)*2+half_mon;    //獲得節(jié)氣順序標(biāo)號(hào)(0~23)

  kc_byte=col/8;          //獲得節(jié)氣日期的相對(duì)值所在的

                   //字節(jié)位置(0~2)

  kc_bit=col%8;          //獲得節(jié)氣日期的相對(duì)值在字節(jié)中的

                   //位位置(0~7)

  tmp_modi=modi_datas[year-2000][kc_byte];

                  //獲得節(jié)氣日期相對(duì)值所在字節(jié)

  value=( (tmp_modi<

                      //日期相對(duì)值狀態(tài)

  if(value!=0){          //判斷年份,以決定節(jié)氣相對(duì)值1代表1

                   //還是-1。

  if( (col==1 || col==11 || col==18 || col==21) &&

  year<2044)

????????????? J_qi=days[col]+1;   //年份<2044的4個(gè)特定

                   //月份中,取+1。

  else

????????????? J_qi=days[col]-1;    //其他情況下,取-1。

  }

  else

  J_qi=days[col];        //狀態(tài)為0,節(jié)氣日期相對(duì)值

                  //為節(jié)氣基本日期值。

  由此程序即可獲得所輸入陽(yáng)歷日期(年、月、日)附近的農(nóng)歷節(jié)氣準(zhǔn)確日期值。

  通過(guò)上面的BSMA列表編碼和查詢(xún)的方法,實(shí)現(xiàn)了基于四位單片機(jī)的萬(wàn)年歷的研制和實(shí)現(xiàn)。它用匯編程序方便地實(shí)現(xiàn)了陰歷24節(jié)氣功能,同時(shí)還可以方便地算出某年的某天距離下一個(gè)節(jié)氣的天數(shù)。

  從上面可以看出,按位列表法(BSMA)思路清晰明了,實(shí)現(xiàn)起來(lái)非常方便,同時(shí)節(jié)省了大量的ROM空間。所做萬(wàn)年歷的時(shí)間跨度越大,LBA算法在節(jié)省ROM空間的優(yōu)勢(shì)就越明顯。

?

參考文獻(xiàn)

1? 李勇,許邦信.太陽(yáng)黃經(jīng)和節(jié)氣時(shí)間的近似推算與Newcomb太陽(yáng)表.南京大學(xué)學(xué)報(bào),1995;31(3)

2? 張培瑜,黃洪峰.中歷及二十四節(jié)氣時(shí)刻計(jì)算.廣西科學(xué),1994;1(3)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品美女一区二区| 亚洲人人精品| 欧美激情综合在线| 久久伊人一区二区| 久久激情一区| 欧美在线一二三区| 欧美一级视频| 性色av一区二区三区| 亚洲永久免费观看| 亚洲亚洲精品三区日韩精品在线视频| 一区二区三区**美女毛片| 亚洲美女视频网| 亚洲精品久久久久| 亚洲美女黄网| 一本色道婷婷久久欧美| 中文精品在线| 亚洲在线成人| 欧美在线看片| 久久久久久九九九九| 久久激情视频久久| 久久免费视频在线观看| 老牛影视一区二区三区| 欧美jjzz| 欧美四级在线观看| 国产精品一区二区欧美| 国产婷婷色综合av蜜臀av| 国产在线观看一区| 在线欧美三区| 日韩天天综合| 亚洲视频在线一区| 性欧美18~19sex高清播放| 欧美在线二区| 亚洲人体1000| 亚洲一区免费看| 久久久国产午夜精品| 女人香蕉久久**毛片精品| 欧美精品一区视频| 国产精品va在线| 国产亚洲一区二区在线观看| 在线日韩电影| 一本色道精品久久一区二区三区| 亚洲综合色在线| 亚洲国产精品成人va在线观看| 日韩视频久久| 香蕉乱码成人久久天堂爱免费| 久久国产精品高清| 欧美福利一区二区三区| 欧美午夜激情在线| 国产一区二区成人久久免费影院| 亚洲国产毛片完整版| 亚洲综合日本| 亚洲九九精品| 欧美一区午夜视频在线观看| 奶水喷射视频一区| 欧美小视频在线| 黄色日韩在线| 亚洲视频一起| 亚洲高清免费| 亚洲图片你懂的| 久久综合给合久久狠狠狠97色69| 欧美日韩免费看| 国产一区二区三区自拍| 亚洲免费电影在线观看| 性欧美xxxx大乳国产app| 亚洲精品一区二区三区樱花| 午夜在线精品| 欧美激情a∨在线视频播放| 国产欧美在线| 亚洲裸体在线观看| 久久精品官网| 小黄鸭视频精品导航| 欧美不卡福利| 国产亚洲在线观看| 中文欧美在线视频| 亚洲精品久久久久久久久久久久久| 午夜视频久久久久久| 欧美电影专区| 韩国美女久久| 亚洲欧美精品一区| 制服丝袜亚洲播放| 牛夜精品久久久久久久99黑人 | 亚洲精品少妇30p| 久久激情网站| 国产精品日韩欧美一区二区| 亚洲精品在线三区| 亚洲福利视频网| 欧美一区二区三区婷婷月色| 欧美日韩亚洲精品内裤| 亚洲国产视频一区二区| 亚洲电影下载| 久久国产色av| 国产精品亚洲精品| 亚洲欧洲一区二区在线播放| 亚洲国产精品悠悠久久琪琪| 久久激情五月激情| 国产日韩精品在线播放| 一区二区三区视频在线播放| 亚洲乱码国产乱码精品精| 久久亚洲综合色| 国产一区二区看久久| 羞羞色国产精品| 欧美一区二区三区成人 | 国产欧美精品日韩精品| 亚洲视频一区| 亚洲女同在线| 欧美三级午夜理伦三级中视频| 亚洲日本在线观看| 亚洲三级观看| 欧美国产日韩精品| 亚洲国产一区在线| 亚洲精品日日夜夜| 欧美a级在线| 亚洲激情第一页| 日韩天堂在线观看| 欧美久久久久久久| 亚洲精品网址在线观看| av不卡免费看| 欧美日韩性视频在线| 一本不卡影院| 亚洲欧美三级伦理| 国产精品一区二区三区观看 | 在线综合亚洲欧美在线视频| 欧美连裤袜在线视频| 亚洲精品免费在线| 中日韩美女免费视频网址在线观看 | 亚洲国产精品123| 亚洲精品免费在线播放| 欧美护士18xxxxhd| 亚洲三级电影在线观看| 中文亚洲免费| 国产精品欧美日韩久久| 亚洲欧美日本在线| 久久国产精品一区二区三区四区 | 亚洲黄色性网站| 欧美日本一区二区视频在线观看| 亚洲精品在线免费| 亚洲女人天堂成人av在线| 国产伦精品一区二区三区高清版| 欧美一区二区三区四区视频| 久久综合狠狠综合久久激情| 亚洲激精日韩激精欧美精品| 国产精品99久久久久久人| 国产精品美女一区二区| 欧美在线观看www| 免费欧美网站| 99视频在线精品国自产拍免费观看 | 欧美一级免费视频| 国自产拍偷拍福利精品免费一| 亚洲人成在线免费观看| 欧美午夜电影网| 午夜视频在线观看一区二区三区| 久久男人资源视频| 亚洲精品在线一区二区| 亚洲综合电影| 黑人一区二区三区四区五区| 9久re热视频在线精品| 国产精品日韩一区二区三区| 亚洲二区视频| 欧美日韩伦理在线免费| 香蕉成人伊视频在线观看| 欧美ed2k| 亚洲在线视频一区| 毛片av中文字幕一区二区| 夜夜爽www精品| 久久亚洲一区二区三区四区| 日韩视频二区| 久久久91精品| 日韩视频一区二区在线观看 | 国产精品久久看| 亚洲国产精品精华液2区45| 欧美日韩一区二区三区在线视频| 欧美在现视频| 欧美午夜精品久久久久久浪潮| 亚洲第一精品在线| 欧美性开放视频| 亚洲人成网站精品片在线观看| 国产精品区一区二区三| 亚洲精品国产系列| 国产欧美 在线欧美| 日韩亚洲视频在线| 国产有码在线一区二区视频| 亚洲网站在线播放| 在线免费日韩片| 久久精品99| 日韩一区二区精品视频| 久久青草欧美一区二区三区| 99re热这里只有精品免费视频| 久久亚洲精品一区| 亚洲午夜电影在线观看| 欧美成人中文| 欧美一区二区三区的| 欧美三级日本三级少妇99| 亚洲福利视频网站| 国产乱码精品| 亚洲一区中文字幕在线观看| 亚洲国产精品小视频| 久久精品成人一区二区三区蜜臀 | 国产亚洲欧美日韩精品| 亚洲免费人成在线视频观看| 91久久久久久久久|