基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第1頁(yè)
基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第2頁(yè)
基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第3頁(yè)
基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第4頁(yè)
基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 目錄1.引言11.1背景11.2應(yīng)用價(jià)值11.3設(shè)計(jì)目的22.設(shè)計(jì)方案32.1設(shè)計(jì)任務(wù)32.2設(shè)計(jì)內(nèi)容33.總體設(shè)計(jì)及核心部件簡(jiǎn)介33.1總體設(shè)計(jì)框圖33.2硬件設(shè)計(jì)53.3軟件設(shè)計(jì)63.3.1主程序:63.3.2lcd12864顯示273.3.3ds18b20程序段323.3.4ds1302程序段353.4時(shí)鐘芯片ds1302403.4.1 ds1302芯片相關(guān)知識(shí)403.5溫度傳感器ds18b20433.5.1ds18b20芯片相關(guān)知識(shí)433.6顯示lcd12864453.6.1lcd12864的基本知識(shí)454.仿真與調(diào)試486.參考文獻(xiàn)50附錄1.電路硬件仿真圖50附錄2.元器件清單5

2、01.引言1.1背景1946年2月15日,第一臺(tái)電子數(shù)字計(jì)算機(jī)eniac問(wèn)世,這標(biāo)志著計(jì)算機(jī)時(shí)代的到來(lái)。計(jì)算機(jī)的發(fā)展,經(jīng)歷了電子計(jì)算機(jī)、晶體管計(jì)算機(jī)、集成電路計(jì)算機(jī)、大規(guī)模集成電路計(jì)算機(jī)和超大規(guī)模集成電路計(jì)算機(jī)五個(gè)時(shí)代。微處理器、存儲(chǔ)器和i/o接口電路構(gòu)成微型計(jì)算機(jī),從應(yīng)用形態(tài)上,微型計(jì)算機(jī)可以分為三種:多板機(jī)(系統(tǒng)機(jī))、單板機(jī)和單片機(jī)。在一片集成電路芯片上集成微處理器、存儲(chǔ)器和i/o接口電路,從而構(gòu)成了單芯片微型計(jì)算機(jī),即單片機(jī)。單片機(jī)體積小、控制功能強(qiáng),其非凡的嵌入式應(yīng)用形態(tài)對(duì)于滿(mǎn)足嵌入式應(yīng)用需求具有獨(dú)特的優(yōu)勢(shì)!單片機(jī)技術(shù)發(fā)展十分迅速,產(chǎn)品種類(lèi)以琳瑯滿(mǎn)目,其發(fā)展經(jīng)過(guò)三個(gè)階段:其一:?jiǎn)纹瑱C(jī)形

3、成階段。1976年,intel公司提出了mcs-48系列單片機(jī)。主要特點(diǎn):在單個(gè)芯片內(nèi)完成了cpu、存儲(chǔ)器和i/o接口等部件的集成;但存儲(chǔ)器容量較小,尋址范圍?。ú淮笥?k),無(wú)串行接口,指令系統(tǒng)功能不強(qiáng)。其二:?jiǎn)纹瑱C(jī)結(jié)構(gòu)成熟階段。1980年,1976年,intel公司提出mcs-51系列單片機(jī)。主要特點(diǎn):存儲(chǔ)器容量增加,尋址范圍擴(kuò)大(64k),結(jié)構(gòu)體系成熟。其三:性能提高階段。近年來(lái),個(gè)半導(dǎo)體廠商不斷推出新型單片機(jī)芯片,典型的產(chǎn)品如atmel公司的at89c51rd2單片機(jī)。主要特點(diǎn):控制性能優(yōu)異、種類(lèi)繁多?,F(xiàn)在,單片機(jī)芯片市場(chǎng)已經(jīng)呈現(xiàn)出百發(fā)齊放、欣欣向榮的局面!單片機(jī)應(yīng)用技術(shù)已經(jīng)成為電子應(yīng)

4、用系統(tǒng)設(shè)計(jì)中最為常用的技術(shù)手段,學(xué)習(xí)和掌握單片機(jī)應(yīng)用技術(shù)具有極其重要的現(xiàn)實(shí)意義。1.2應(yīng)用價(jià)值 由于單片機(jī)具有良好地控制性能和靈活的潛入品質(zhì),其在各種領(lǐng)域都獲得了極為廣泛的應(yīng)用。單片機(jī)用于各種儀器儀表,一方面提高了儀器儀表的使用功能和精度,是儀器儀表智能化,同時(shí)還簡(jiǎn)化了儀器儀表的硬件結(jié)構(gòu),從而可以方便地完成與企業(yè)把產(chǎn)品的升級(jí)換代。機(jī)電一體化產(chǎn)品是集機(jī)械技術(shù)、微電子技術(shù)、自動(dòng)控制技術(shù)和計(jì)算機(jī)技術(shù)與一體,具有智能化特征的各種機(jī)電產(chǎn)品。單片機(jī)還可以用于各種物理量的采集與控制,電流、電壓、溫度、液壓、流量等物理參數(shù)的采集和控制均可以利用單片機(jī)方便地實(shí)現(xiàn)。在較復(fù)雜的工業(yè)系統(tǒng)中,經(jīng)常采用分布式測(cè)控系統(tǒng)完成

5、大量的分布參數(shù)的采集。在這一系統(tǒng)中,采用單片機(jī)作為分布式系統(tǒng)的前端采集模塊,系統(tǒng)具有運(yùn)行可靠,數(shù)據(jù)采集方便靈活,成本低廉這一系列優(yōu)點(diǎn)。家用電器是單片機(jī)的又一重要領(lǐng)域,前景十分廣,另外,在交通領(lǐng)域中,汽車(chē)、火車(chē)、飛機(jī)、航天器等均有單片機(jī)的廣泛應(yīng)用。1.3設(shè)計(jì)目的利用單片機(jī),時(shí)鐘芯片、溫度傳感器、數(shù)碼管等實(shí)現(xiàn)日期、時(shí)間、溫度的顯示即一個(gè)簡(jiǎn)單的萬(wàn)年歷。將我所學(xué)的單片機(jī)匯編語(yǔ)言應(yīng)用及對(duì)所學(xué)知識(shí)的了解熟練運(yùn)用!加強(qiáng)對(duì)51系列單片機(jī)的構(gòu)造了解及應(yīng)用,熟悉匯編語(yǔ)言或c語(yǔ)言編程,綜合掌握和理解設(shè)計(jì)各部分的工作原理、設(shè)計(jì)過(guò)程、芯片器件的選擇方法、模塊化編程等多項(xiàng)知識(shí)。(1) 通過(guò)萬(wàn)年歷的設(shè)計(jì)掌握好對(duì)proteu

6、s仿真設(shè)計(jì)的熟練使用;(2) 通過(guò)萬(wàn)年歷的設(shè)計(jì)熟練掌握單片機(jī)的各個(gè)功能,并且對(duì)單片機(jī)有一個(gè)總體的把握,設(shè)計(jì)中對(duì)單片機(jī)各功能的了解,達(dá)到理想設(shè)計(jì)效果;(3) 設(shè)計(jì)中使用了時(shí)鐘芯片ds1302、溫度傳感器ds18b20、lcd顯示等,通過(guò)設(shè)計(jì)對(duì)他們熟練掌握;(4)用proteus仿真模擬實(shí)現(xiàn)具體應(yīng)用使個(gè)人設(shè)計(jì)系統(tǒng)能夠真正使用運(yùn)行,遇到問(wèn)題在解決問(wèn)題;(5)把理論知識(shí)與實(shí)踐知識(shí)相結(jié)合,充分發(fā)揮個(gè)人能力,并在實(shí)踐中得到鍛煉,合作解決問(wèn)題,直到弄透弄懂;(6)提高利用已學(xué)的知識(shí)分析和解決問(wèn)題的能力,加深自己對(duì)所學(xué)知識(shí)的理解運(yùn)用。2.設(shè)計(jì)方案2.1設(shè)計(jì)任務(wù)通過(guò)對(duì)所學(xué)知識(shí),及對(duì)單片機(jī)的認(rèn)識(shí)理解,完成一個(gè)帶有

7、溫度測(cè)量功能的萬(wàn)年歷的軟件、硬件設(shè)計(jì)。(1)萬(wàn)年歷設(shè)計(jì)系統(tǒng)硬件(2)萬(wàn)年歷設(shè)計(jì)系統(tǒng)軟件2.2設(shè)計(jì)內(nèi)容(1) 設(shè)計(jì)前進(jìn)行總體規(guī)劃,設(shè)計(jì)步驟;(2) 對(duì)各個(gè)元件的了解,畫(huà)出設(shè)計(jì)原理電路圖;(3) 用proteus軟件畫(huà)出設(shè)計(jì)電路圖;(4) 用keil軟件編寫(xiě)程序;(5) 把c語(yǔ)言編寫(xiě)的程序轉(zhuǎn)化成單片機(jī)可以識(shí)別的程序;(6) 在proteus里模擬并調(diào)試程序,使其達(dá)到理想效果;(7) 填寫(xiě)設(shè)計(jì)任務(wù)書(shū)、說(shuō)明書(shū)。3.總體設(shè)計(jì)及核心部件簡(jiǎn)介3.1總體設(shè)計(jì)框圖 開(kāi)始 開(kāi)中斷:初始化顯示開(kāi)機(jī)圖畫(huà)調(diào)節(jié)標(biāo)志調(diào)節(jié)值關(guān)中斷讀溫度調(diào)節(jié)標(biāo)志數(shù)據(jù)處理542137其它它6顯示數(shù)據(jù)月年周日秒分時(shí)開(kāi)中斷 主程序流程圖退出中斷 萬(wàn)

8、年歷設(shè)計(jì)包括三大模塊:lcd顯示(ampire128x64)、ds1302時(shí)鐘芯片與單片機(jī)時(shí)鐘模塊和ds18b20溫度傳感器與單片機(jī)溫度模塊。3.2硬件設(shè)計(jì)主控制器選用at89c51單片機(jī),利用at89c51單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其實(shí)現(xiàn)開(kāi)始暫停的功能。p0口輸出數(shù)據(jù),p1.1-p1.4口接四個(gè)按鈕開(kāi)關(guān),分別實(shí)現(xiàn)。電路原理圖設(shè)計(jì)最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照?qǐng)D3.1進(jìn)行設(shè)計(jì)。 ds1302 at89c51 lcd顯示 單片機(jī) 控制器 控制開(kāi)關(guān) ds18b20圖3.1 萬(wàn)年歷硬件電路基本原

9、理圖at89c51各引腳主要功能簡(jiǎn)介: (1)vss(20腳):接地(2)vcc(40腳): 主電源+5v(3)xtal1(19腳):接外部晶體的一端。在片內(nèi)它是振蕩電路反相放大器的輸入端。在采用外部時(shí)鐘時(shí),對(duì)于hmos單片機(jī),該端引腳必須接地;對(duì)于chmos單片機(jī),此引腳作為驅(qū)動(dòng)端。xtal2(18腳):接外部晶體的另一端。在片內(nèi)它是一個(gè)振蕩電路反相放大器的輸出端,振蕩電路的頻率是晶體振蕩頻率。若需采用外部時(shí)鐘電路,對(duì)于hmos單片機(jī),該引腳輸入外部時(shí)鐘脈沖;對(duì)于chmos單片機(jī),此引腳應(yīng)懸浮。(4) rst(9腳): 單片機(jī)剛接上電源時(shí),其內(nèi)部各寄存器處于隨機(jī)狀態(tài),在該腳輸入24個(gè)時(shí)鐘周期

10、寬度以上的高電平將使單片機(jī)復(fù)位(reset)(5)psen(29腳): 在訪問(wèn)片外程序存儲(chǔ)器時(shí),此端輸出負(fù)脈沖作為存儲(chǔ)器讀選通信號(hào)。cpu在向片外存儲(chǔ)器取指令期間,psen信號(hào)在12個(gè)時(shí)鐘周期中兩次生效。不過(guò),在訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效psen信號(hào)不出現(xiàn)。psen端同樣可驅(qū)動(dòng)8個(gè)lsttl負(fù)載。我們根據(jù)psen、ale和xtal2輸出端是否有信號(hào)輸出,可以判別at89c51是否在工作。(6)ale/prog(30腳):在訪問(wèn)片外程序存儲(chǔ)器時(shí),此端輸出負(fù)脈沖作為存儲(chǔ)器讀選通信號(hào)。cpu在向片外存儲(chǔ)器取指令期間,psen信號(hào)在12個(gè)時(shí)鐘周期中兩次生效。不過(guò),在訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有

11、效psen信號(hào)不出現(xiàn)。psen端同樣可驅(qū)動(dòng)8個(gè)lsttl負(fù)載。我們根據(jù)psen、ale和xtal2輸出端是否有信號(hào)輸出,可以判別80c51是否在工作。(7)ea/vpp(31腳):當(dāng)ea端輸入高電平時(shí),cpu從片內(nèi)程序存儲(chǔ)器地址0000單元開(kāi)始執(zhí)行程序。當(dāng)?shù)刂烦?kb時(shí),將自動(dòng)執(zhí)行片外程序存儲(chǔ)器的程序。當(dāng)ea輸入低電平時(shí),cpu僅訪問(wèn)片外程序存儲(chǔ)器。在對(duì)87c51eprom編程時(shí),此引腳用于施加編程電壓vpp。(8)輸入/輸出引腳:1)p0.0p0.7 (39腳32腳) 2)p1.0p1.7 (01腳08腳)3)p2.0p2.7 (26腳21腳)4)p3.0p3.7 (10腳17腳) 3.3

12、軟件設(shè)計(jì)3.3.1主程序:#include #include #include zimo.h #include ds1302.h#include ds18b20.h#include lcd12864.h /按鍵定義sbit key0 = p11;sbit key1 = p12;sbit key2 = p13;sbit key3 = p14;/鍵盤(pán)函數(shù)所要用到的變量unsigned char key_operate = 0;unsigned char timer =0;unsigned char key_flag;unsigned int counter=0;unsigned char lcd_

13、t = 0; /lcd刷新間隔unsigned char flicker = 0; /調(diào)時(shí)閃爍間隔/-void inittimer0(void)/產(chǎn)生10ms時(shí)間間隔 tmod = (tmod & 0xf0) | 0x01; /定時(shí)器0工作在模式1,16bit定時(shí)器模式 th0 = (65536 - 8000)/256; tl0 = (65536 - 8000)%256; tr0 =1; et0 =1;/開(kāi)啟定時(shí)器和中斷 ea = 1;/*陽(yáng)歷轉(zhuǎn)換陰歷*/code unsigned char year_code597= 0x04,0xae,0x53, /1901 0 0x0a,0x57,0x4

14、8, /1902 3 0x55,0x26,0xbd, /1903 6 0x0d,0x26,0x50, /1904 9 0x0d,0x95,0x44, /1905 12 0x46,0xaa,0xb9, /1906 15 0x05,0x6a,0x4d, /1907 18 0x09,0xad,0x42, /1908 21 0x24,0xae,0xb6, /1909 0x04,0xae,0x4a, /1910 0x6a,0x4d,0xbe, /1911 0x0a,0x4d,0x52, /1912 0x0d,0x25,0x46, /1913 0x5d,0x52,0xba, /1914 0x0b,0x54

15、,0x4e, /1915 0x0d,0x6a,0x43, /1916 0x29,0x6d,0x37, /1917 0x09,0x5b,0x4b, /1918 0x74,0x9b,0xc1, /1919 0x04,0x97,0x54, /1920 0x0a,0x4b,0x48, /1921 0x5b,0x25,0xbc, /1922 0x06,0xa5,0x50, /1923 0x06,0xd4,0x45, /1924 0x4a,0xda,0xb8, /1925 0x02,0xb6,0x4d, /1926 0x09,0x57,0x42, /1927 0x24,0x97,0xb7, /1928 0

16、x04,0x97,0x4a, /1929 0x66,0x4b,0x3e, /1930 0x0d,0x4a,0x51, /1931 0x0e,0xa5,0x46, /1932 0x56,0xd4,0xba, /1933 0x05,0xad,0x4e, /1934 0x02,0xb6,0x44, /1935 0x39,0x37,0x38, /1936 0x09,0x2e,0x4b, /1937 0x7c,0x96,0xbf, /1938 0x0c,0x95,0x53, /1939 0x0d,0x4a,0x48, /1940 0x6d,0xa5,0x3b, /1941 0x0b,0x55,0x4f,

17、 /1942 0x05,0x6a,0x45, /1943 0x4a,0xad,0xb9, /1944 0x02,0x5d,0x4d, /1945 0x09,0x2d,0x42, /1946 0x2c,0x95,0xb6, /1947 0x0a,0x95,0x4a, /1948 0x7b,0x4a,0xbd, /1949 0x06,0xca,0x51, /1950 0x0b,0x55,0x46, /1951 0x55,0x5a,0xbb, /1952 0x04,0xda,0x4e, /1953 0x0a,0x5b,0x43, /1954 0x35,0x2b,0xb8, /1955 0x05,0x

18、2b,0x4c, /1956 0x8a,0x95,0x3f, /1957 0x0e,0x95,0x52, /1958 0x06,0xaa,0x48, /1959 0x7a,0xd5,0x3c, /1960 0x0a,0xb5,0x4f, /1961 0x04,0xb6,0x45, /1962 0x4a,0x57,0x39, /1963 0x0a,0x57,0x4d, /1964 0x05,0x26,0x42, /1965 0x3e,0x93,0x35, /1966 0x0d,0x95,0x49, /1967 0x75,0xaa,0xbe, /1968 0x05,0x6a,0x51, /1969

19、 0x09,0x6d,0x46, /1970 0x54,0xae,0xbb, /1971 0x04,0xad,0x4f, /1972 0x0a,0x4d,0x43, /1973 0x4d,0x26,0xb7, /1974 0x0d,0x25,0x4b, /1975 0x8d,0x52,0xbf, /1976 0x0b,0x54,0x52, /1977 0x0b,0x6a,0x47, /1978 0x69,0x6d,0x3c, /1979 0x09,0x5b,0x50, /1980 0x04,0x9b,0x45, /1981 0x4a,0x4b,0xb9, /1982 0x0a,0x4b,0x4

20、d, /1983 0xab,0x25,0xc2, /1984 0x06,0xa5,0x54, /1985 0x06,0xd4,0x49, /1986 0x6a,0xda,0x3d, /1987 0x0a,0xb6,0x51, /1988 0x09,0x37,0x46, /1989 0x54,0x97,0xbb, /1990 0x04,0x97,0x4f, /1991 0x06,0x4b,0x44, /1992 0x36,0xa5,0x37, /1993 0x0e,0xa5,0x4a, /1994 0x86,0xb2,0xbf, /1995 0x05,0xac,0x53, /1996 0x0a,

21、0xb6,0x47, /1997 0x59,0x36,0xbc, /1998 0x09,0x2e,0x50, /1999 294 0x0c,0x96,0x45, /2000 297 0x4d,0x4a,0xb8, /2001 0x0d,0x4a,0x4c, /2002 0x0d,0xa5,0x41, /2003 0x25,0xaa,0xb6, /2004 0x05,0x6a,0x49, /2005 0x7a,0xad,0xbd, /2006 0x02,0x5d,0x52, /2007 0x09,0x2d,0x47, /2008 0x5c,0x95,0xba, /2009 0x0a,0x95,0

22、x4e, /2010 0x0b,0x4a,0x43, /2011 0x4b,0x55,0x37, /2012 0x0a,0xd5,0x4a, /2013 0x95,0x5a,0xbf, /2014 0x04,0xba,0x53, /2015 0x0a,0x5b,0x48, /2016 0x65,0x2b,0xbc, /2017 0x05,0x2b,0x50, /2018 0x0a,0x93,0x45, /2019 0x47,0x4a,0xb9, /2020 0x06,0xaa,0x4c, /2021 0x0a,0xd5,0x41, /2022 0x24,0xda,0xb6, /2023 0x0

23、4,0xb6,0x4a, /2024 0x69,0x57,0x3d, /2025 0x0a,0x4e,0x51, /2026 0x0d,0x26,0x46, /2027 0x5e,0x93,0x3a, /2028 0x0d,0x53,0x4d, /2029 0x05,0xaa,0x43, /2030 0x36,0xb5,0x37, /2031 0x09,0x6d,0x4b, /2032 0xb4,0xae,0xbf, /2033 0x04,0xad,0x53, /2034 0x0a,0x4d,0x48, /2035 0x6d,0x25,0xbc, /2036 0x0d,0x25,0x4f, /

24、2037 0x0d,0x52,0x44, /2038 0x5d,0xaa,0x38, /2039 0x0b,0x5a,0x4c, /2040 0x05,0x6d,0x41, /2041 0x24,0xad,0xb6, /2042 0x04,0x9b,0x4a, /2043 0x7a,0x4b,0xbe, /2044 0x0a,0x4b,0x51, /2045 0x0a,0xa5,0x46, /2046 0x5b,0x52,0xba, /2047 0x06,0xd2,0x4e, /2048 0x0a,0xda,0x42, /2049 0x35,0x5b,0x37, /2050 0x09,0x37

25、,0x4b, /2051 0x84,0x97,0xc1, /2052 0x04,0x97,0x53, /2053 0x06,0x4b,0x48, /2054 0x66,0xa5,0x3c, /2055 0x0e,0xa5,0x4f, /2056 0x06,0xb2,0x44, /2057 0x4a,0xb6,0x38, /2058 0x0a,0xae,0x4c, /2059 0x09,0x2e,0x42, /2060 0x3c,0x97,0x35, /2061 0x0c,0x96,0x49, /2062 0x7d,0x4a,0xbd, /2063 0x0d,0x4a,0x51, /2064 0

26、x0d,0xa5,0x45, /2065 0x55,0xaa,0xba, /2066 0x05,0x6a,0x4e, /2067 0x0a,0x6d,0x43, /2068 0x45,0x2e,0xb7, /2069 0x05,0x2d,0x4b, /2070 0x8a,0x95,0xbf, /2071 0x0a,0x95,0x53, /2072 0x0b,0x4a,0x47, /2073 0x6b,0x55,0x3b, /2074 0x0a,0xd5,0x4f, /2075 0x05,0x5a,0x45, /2076 0x4a,0x5d,0x38, /2077 0x0a,0x5b,0x4c,

27、 /2078 0x05,0x2b,0x42, /2079 0x3a,0x93,0xb6, /2080 0x06,0x93,0x49, /2081 0x77,0x29,0xbd, /2082 0x06,0xaa,0x51, /2083 0x0a,0xd5,0x46, /2084 0x54,0xda,0xba, /2085 0x04,0xb6,0x4e, /2086 0x0a,0x57,0x43, /2087 0x45,0x27,0x38, /2088 0x0d,0x26,0x4a, /2089 0x8e,0x93,0x3e, /2090 0x0d,0x52,0x52, /2091 0x0d,0x

28、aa,0x47, /2092 0x66,0xb5,0x3b, /2093 0x05,0x6d,0x4f, /2094 0x04,0xae,0x45, /2095 0x4a,0x4e,0xb9, /2096 0x0a,0x4d,0x4c, /2097 0x0d,0x15,0x41, /2098 0x2d,0x92,0xb5, /2099;/月份數(shù)據(jù)表code unsigned char day_code19=0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3;code unsigned int day_code23=0x111,0x130,0x14e;/* 子

29、函數(shù),用于讀取數(shù)據(jù)表中農(nóng)歷月的大月或小月,如果該月為大返回1,為小返回0*/bit getmoonday(unsigned char month_p,unsigned short table_addr)switch (month_p)case 1:if(year_codetable_addr&0x08)=0)return(0);else return(1); case 2:if(year_codetable_addr&0x04)=0)return(0);else return(1);case 3:if(year_codetable_addr&0x02)=0)return(0);else ret

30、urn(1);case 4:if(year_codetable_addr&0x01)=0)return(0);else return(1);case 5:if(year_codetable_addr+1&0x80)=0)return(0);else return(1);case 6:if(year_codetable_addr+1&0x40)=0)return(0);else return(1);case 7:if(year_codetable_addr+1&0x20)=0)return(0);else return(1);case 8:if(year_codetable_addr+1&0x1

31、0)=0)return(0);else return(1);case 9:if(year_codetable_addr+1&0x08)=0)return(0);else return(1);case 10:if(year_codetable_addr+1&0x04)=0)return(0);else return(1);case 11:if(year_codetable_addr+1&0x02)=0)return(0);else return(1);case 12:if(year_codetable_addr+1&0x01)=0)return(0);else return(1);case 13

32、:if(year_codetable_addr+2&0x80)=0)return(0);else return(1);return(0);/* 公農(nóng)歷轉(zhuǎn)換(只允許1901-2099年)*/unsigned char getchinacalendar(unsigned int year,unsigned char month,unsigned char day,unsigned char *p) unsigned char temp1,temp2,temp3,month_p,yearh,yearl;unsigned char flag_y;unsigned short temp4,table_a

33、ddr;yearh=year/100;yearl=year%100;if(yearh!=19)&(yearh!=20)return(0);/ 定位數(shù)據(jù)表地址if(yearh=20)table_addr=(yearl+100-1)*3;else table_addr=(yearl-1)*3;/ 取當(dāng)年春節(jié)所在的公歷月份 temp1=year_codetable_addr+2&0x60;temp1=5;/ 取當(dāng)年春節(jié)所在的公歷日 temp2=year_codetable_addr+2&31; / 計(jì)算當(dāng)年春年離當(dāng)年元旦的天數(shù),春節(jié)只會(huì)在公歷1月或2月 if(temp1=1) temp3=temp2

34、-1; else temp3=temp2+31-1; / 計(jì)算公歷日離當(dāng)年元旦的天數(shù) if (month2)&(yearl%4=0) temp4+;/ 判斷公歷日在春節(jié)前還是春節(jié)后 if (temp4=temp3) temp4-=temp3;month=1;month_p=1;flag_y=0;if(getmoonday(month_p,table_addr)=0)temp1=29; /小月29天else temp1=30; /大小30天/ 從數(shù)據(jù)表中取該年的閏月月份,如為0則該年無(wú)閏月 temp2=year_codetable_addr/16; while(temp4=temp1)temp4

35、-=temp1;month_p+;if(month=temp2)flag_y=flag_y;if(flag_y=0)month+;else month+;if(getmoonday(month_p,table_addr)=0)temp1=29;else temp1=30;day=temp4+1;/ 公歷日在春節(jié)前使用下面代碼進(jìn)行運(yùn)算 else temp3-=temp4;if (yearl=0)yearl=100-1;yearh=19;else yearl-;table_addr-=3;month=12;temp2=year_codetable_addr/16; if (temp2=0)month_p=12; else month_p=13; flag_y=0;if(getmoonday(month_p,table_addr)=0)temp1=29; else temp1=30; while(temp3temp1)temp3-=temp1;month_p-;if(flag_y=0)month-;if(month=temp2)flag_y=flag_y;if(g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論