資料介紹
公歷是全世界通用的歷法,以地球繞太陽的一周為一年,一年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單片機實現流水燈的詳細資料說明 21次下載
- 單片機C51編程的警告提示說明
- 如何進行51單片機的AD和DA轉換
- 51單片機系列命名規則資料說明
- 51單片機教程之51單片機的串行口應用舉例資料說明 18次下載
- 51單片機轉換程序(51Hex_bin)下載綠色版 0次下載
- AD轉換器AD976與51單片機的接口設計 82次下載
- 基于51單片機實現公歷與農歷、星期的轉換 93次下載
- 用51單片機實現公歷與農歷、星期的轉換
- 一種公歷到農歷日期轉換算法的實現
- 用51單片機實現公歷與農歷星期的轉換
- 什么是51單片機最小系統 2802次閱讀
- 詳解STM32單片機和51單片機的區別 3.8w次閱讀
- 51單片機實現最小系統的原理和電路與編程設計說明 8867次閱讀
- 單片機的結構和原理說明 5517次閱讀
- 51單片機的最小系統應用說明 8207次閱讀
- 51單片機引腳簡介 5.4w次閱讀
- 如何學習51單片機 5082次閱讀
- Office的公歷轉換農歷和隔行求和及兩頁紙打印到一頁紙上的3個小技巧 4357次閱讀
- 如何使用51單片機實現串口通信 3w次閱讀
- 如何用51單片機實現IIC通信 1.6w次閱讀
- 如何對51單片機進行外部擴展 1.5w次閱讀
- 51單片機和AVR單片機有什么區別 1.3w次閱讀
- 新手學習單片機的首選:51單片機 8836次閱讀
- 單片機8x8矩陣鍵盤原理說明 2.6w次閱讀
- 51單片機學習感悟與51單片機上拉電阻心得 4295次閱讀
下載排行
本周
- 1VCC啟動電路(可下載)
- 748.32 KB | 2次下載 | 免費
- 2TDA7850音頻功率放大器英文手冊
- 0.39 MB | 1次下載 | 免費
- 3HAC1108TS型LVCMOS時鐘緩沖器產品說明書
- 386.75 KB | 1次下載 | 免費
- 460KW電機控制器硬件驅動電路設計(可下載)
- 720.01 KB | 1次下載 | 免費
- 5LT7404FJ-X N溝道增強型功率MOSFET規格書
- 1.48 MB | 次下載 | 免費
- 6LTH004FK互補增強型功率MOSFET規格書
- 1.39 MB | 次下載 | 免費
- 7LT1756SJ N溝道增強型場效應晶體管規格書
- 0.94 MB | 次下載 | 免費
- 8廣州唯創電子WTK6900HC語音識別芯片資料
- 1.14 MB | 次下載 | 免費
本月
- 1STM32CubeMX用于STM32配置和初始化C代碼生成
- 21.90 MB | 627次下載 | 免費
- 2STM32開發板教程之STM32開發指南免費下載
- 24.88 MB | 176次下載 | 3 積分
- 3EN60335-1安規標準 中文版本
- 1.86 MB | 53次下載 | 1 積分
- 4OAH0428最新規格書(中文)
- 2.52 MB | 28次下載 | 10 積分
- 5Altium-常用3D封裝庫(Step)接插件篇
- 4.95 MB | 26次下載 | 免費
- 6UHV系列雷電沖擊電壓發生器試驗裝置詳細說明使用
- 1.07 MB | 17次下載 | 免費
- 7介紹一些常用的電子元器件
- 3.20 MB | 8次下載 | 免費
- 8麻將機升降電路
- 0.12 MB | 6次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935124次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191371次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183336次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81583次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論