基于嵌入式系統(tǒng)的LCD電子時鐘設(shè)計(jì)_第1頁
基于嵌入式系統(tǒng)的LCD電子時鐘設(shè)計(jì)_第2頁
基于嵌入式系統(tǒng)的LCD電子時鐘設(shè)計(jì)_第3頁
基于嵌入式系統(tǒng)的LCD電子時鐘設(shè)計(jì)_第4頁
基于嵌入式系統(tǒng)的LCD電子時鐘設(shè)計(jì)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 院 系: 物理工程學(xué)院 年 級: 2009級專業(yè): 測控技術(shù)與儀器學(xué) 號: 20092240111姓 名: 雷 亞 東 指導(dǎo)老師: 田 增 國 基于嵌入式系統(tǒng)的LCD電子時鐘設(shè)計(jì)目錄前言1第一章 課題目標(biāo)及總體方案2第二章 系統(tǒng)設(shè)計(jì)31、系統(tǒng)結(jié)構(gòu)原理32、硬件組成與設(shè)計(jì)43、軟件組成與設(shè)計(jì)4 第三章 實(shí)驗(yàn)結(jié)果5 心得體會5 參考文獻(xiàn)5 附錄6 前 言嵌入式系統(tǒng)反映了當(dāng)代最新的技術(shù)水平。嵌入式系統(tǒng)不僅和一般的PC機(jī)上的應(yīng)用系統(tǒng)不同,就是針對不同的具體應(yīng)用而設(shè)計(jì)的嵌入式系統(tǒng)之間差別也很大。嵌入式系統(tǒng)一般功能單一,簡單而且兼容性方面要求不高,但是在大小和成本方面限制較多。在本實(shí)驗(yàn)中以arm7處理器

2、S3C44B0X和液晶顯示屏LRH9J515XA STN/BW為基礎(chǔ),設(shè)計(jì)實(shí)現(xiàn)了帶農(nóng)歷的實(shí)時時鐘電路。當(dāng)有外部中斷產(chǎn)生時,串口與S3C44B0X進(jìn)行通信,實(shí)現(xiàn)更改時鐘時間,且應(yīng)用公歷轉(zhuǎn)農(nóng)歷的算法,實(shí)現(xiàn)將農(nóng)歷時間實(shí)時顯示在LCD上。另外還具有鬧鈴、星期提示功能,基本上能夠滿足人們的需求。關(guān)鍵字:arm7 S3C44B0X LCD 農(nóng)歷 串口第一章 課題目標(biāo)及總體方案一、目的l 了解實(shí)時時鐘的硬件控制原理及設(shè)計(jì)方法。l 掌握S3C44B0X處理器的RTC模塊程序設(shè)計(jì)方法。 l 初步掌握液晶顯示屏的使用及其電路設(shè)計(jì)方法。l 掌握S3C44B0X處理器的LCD控制器的使用。l 通過實(shí)驗(yàn)掌握液晶顯示文本

3、和圖形的方法以及程序設(shè)計(jì)的方法。二、設(shè)備1. 硬件:Embest EDUKIT /實(shí)驗(yàn)平臺,Embest ARM標(biāo)準(zhǔn)/增強(qiáng)型仿真器套件,PC機(jī)。2. 軟件:Embest IDE Pro 2004集成開發(fā)環(huán)境,Windows 98/2000/NT/XP操作系統(tǒng)。三、內(nèi)容 通過運(yùn)用S3C44B0X的RTC模塊、串口模塊和LCD模塊,編寫應(yīng)用程序,在LCD上實(shí)時顯示當(dāng)前時間及農(nóng)歷時間。四、研究方法1. 將任務(wù)分成若干模塊,查閱相關(guān)論文資料,分模塊調(diào)試和完成任務(wù)。2. 連接PC和Embest EDUKIT /實(shí)驗(yàn)箱,進(jìn)行整個實(shí)驗(yàn)環(huán)境搭建。 第二章 系統(tǒng)設(shè)計(jì)1、 系統(tǒng)結(jié)構(gòu)原理圖 本實(shí)驗(yàn)電子時鐘的設(shè)計(jì)主要

4、是將RTC模塊中的時間傳到LCD上進(jìn)行實(shí)時顯示;此外,通過串口與PC機(jī)通信,設(shè)置RTC模塊中當(dāng)前時間及報(bào)警時間,并把當(dāng)前公歷時間轉(zhuǎn)換為農(nóng)歷時間一起在LCD上進(jìn)行顯示,其結(jié)構(gòu)框圖如右圖所示:LCD顯示PC串口RTC模塊2、硬件組成與設(shè)計(jì)2.1 實(shí)時時鐘RTC模塊 S3C44B0X實(shí)時時鐘單元是處理器集成的片內(nèi)外設(shè),由開發(fā)板上的后備電池供電,可以在系統(tǒng)電源關(guān)閉的情況下運(yùn)行,RTC發(fā)送8位BCD碼數(shù)據(jù)到CPU。傳送的數(shù)據(jù)包括秒、分、時、星期、日期、月份和年份。RTC單元時鐘源頻率由外部32.768 kHz晶振提供,可以實(shí)現(xiàn)鬧鐘(報(bào)警)功能及時間片中斷、置0計(jì)數(shù)功能。2.2 串口通信模塊S3C44B0

5、X串行通信單元UART提供2個獨(dú)立的異步串行通信口,皆可工作于中斷和DMA模式。最高波特率達(dá)115200b/s。每個UART單元包含一個16字節(jié)FIFO,用于數(shù)據(jù)接收和發(fā)送。此外,每個UART模塊還包含可編程波特率、紅外發(fā)送/接收、1個或2個停止位、5/6/7/8位數(shù)據(jù)寬度和奇偶校驗(yàn)。通過初始化好串口,與RTC進(jìn)行通信,來設(shè)置RTC當(dāng)前時間及報(bào)警時間。2.3 液晶顯示LCD模塊S3C44B0X處理器集成了LCD控制器,支持4位單掃描、4位雙掃描和8位單掃描工作方式。處理器使用內(nèi)部RAM區(qū)作為顯示緩存,并支持屏幕水平和垂直滾動顯示。數(shù)據(jù)的傳送采用DMA(直接內(nèi)存訪問)方式,以達(dá)到最小延遲。根據(jù)實(shí)

6、際硬件水平和垂直像素點(diǎn)數(shù)、傳送數(shù)據(jù)位數(shù)、時間線和幀速率方式等進(jìn)行編程,以支持多種類型的顯示屏。LCD控制器主要液晶屏顯示數(shù)據(jù)的傳送、時鐘和各種信號的產(chǎn)生與控制功能。3、軟件組成與設(shè)計(jì) 3.1 讀寫RTC模塊 S3C44B0X內(nèi)部集成了RTC模塊,通過讀取RTC模塊中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR的值得到當(dāng)前的相應(yīng)的時間值。還可以往這些寄存器里寫值以設(shè)置當(dāng)前的時間值。 3.2 串口通信UART模塊 開 始串 口 初 始 化設(shè) 置 報(bào) 警 時 鐘設(shè)置報(bào)警時間?設(shè)置當(dāng)前時間? 結(jié) 束 設(shè)置當(dāng)前時間YNYN采用S3C44B0

7、X的UART模塊,利用PC機(jī)進(jìn)行當(dāng)前時鐘時間和時鐘報(bào)警時間的設(shè)置。其通信協(xié)議如下:首先S3C44B0X發(fā)送字符串命令詢問是否要設(shè)置報(bào)警時間值,若回復(fù)'y'或'Y',則從PC機(jī)上的鍵盤上發(fā)送報(bào)警時間值傳遞給報(bào)警寄存器ALMYEAR、ALMMON、ALMDAY、ALMHOUR、ALMMIN、ALMSEC;然后,S3C44B0X發(fā)送命令詢問是否要重新設(shè)置當(dāng)著時間,若回復(fù)'y'或'Y',則發(fā)送新的時間值到BCDYEAR、BCDMON、BCDDAY、BCDHOUR、BCDMIN、BCDSEC,從而實(shí)現(xiàn)對報(bào)警時間及當(dāng)前時鐘時間的設(shè)置。程序流程

8、圖如下: 開 始串 口 初 始 化設(shè) 置 報(bào) 警 時 鐘設(shè)置報(bào)警時間?設(shè)置當(dāng)前時間? 結(jié) 束 設(shè)置當(dāng)前時間YNYN3.3 農(nóng)歷顯示設(shè)計(jì) S3C44B0X中RTC模塊中沒有提供農(nóng)歷的時間信息,因此采用公歷轉(zhuǎn)農(nóng)歷的方式來顯示農(nóng)歷信息。公歷轉(zhuǎn)農(nóng)歷的算法是:首先建立公歷年對應(yīng)的農(nóng)歷數(shù)據(jù),將其存入數(shù)組中,然后查找數(shù)組,實(shí)現(xiàn)公歷到農(nóng)歷的轉(zhuǎn)換并在LCD上顯示。公歷轉(zhuǎn)農(nóng)歷算法框圖如下所示:3.4 液晶屏LCD顯示設(shè)計(jì)使用液晶屏顯示最基本的是像素控制數(shù)據(jù)的使用。像素控制數(shù)據(jù)的存放與傳送形式?jīng)Q定了顯示的效果。圖形顯示可以直接使用像素控制函數(shù)實(shí)現(xiàn)。把像素控制數(shù)據(jù)按一定形式存入即可實(shí)現(xiàn)字符顯示。本項(xiàng)目通過調(diào)用字符顯示

9、函數(shù),將讀取的實(shí)時時鐘顯示在LCD屏幕上。 第三章 實(shí)驗(yàn)結(jié)果心得體會 通過本次的實(shí)驗(yàn)操作,不僅使我深刻體會打了嵌入式系統(tǒng)的廣闊的應(yīng)用前景,而且也是我對課本知識的一次較深的回顧與體悟。溫故而知新,只有通過自己動手操作才能掌握真正的技術(shù)。在有限的課時內(nèi)我們掌握的知識也是相當(dāng)有限的,我們對嵌入式系統(tǒng)的硬件和軟件的基本原理,特點(diǎn)有了更深的認(rèn)識。這些知識對于本次實(shí)驗(yàn)是不夠的。我自己查找了許多資料,同時也參考了過去的課題,取長補(bǔ)短。經(jīng)過不斷的努力,在老師和同學(xué)們的幫助之下,我順利的完成了課程設(shè)計(jì),對嵌入式系統(tǒng)的硬件/軟件有了更深的了解,也深入掌握了嵌入式系統(tǒng)設(shè)計(jì)的基本方法,達(dá)到了預(yù)期的目的。 不僅這一次,

10、以后我要更加努力的學(xué)習(xí)嵌入式系統(tǒng),以期能夠有更大的進(jìn)步。參考文獻(xiàn)1. 林志琦 ARM微控制器與液晶屏接口的研究J. 長春大學(xué)學(xué)報(bào),2010,20(2):71-74.2. 耿輝.S3C44B0X數(shù)據(jù)手冊,2006.3. 田澤 ARM7嵌入式開發(fā)實(shí)驗(yàn)與實(shí)踐 北京:北京航空航天大學(xué)出版社 20104. 鄭麗麗, 謝磊, 李清寶. 一種公歷到農(nóng)歷日期轉(zhuǎn)換算法 的實(shí)現(xiàn) J. 微計(jì)算機(jī)信息, 2005, 21( 2): 74- 76.5. 石熊 基于ARM9的帶農(nóng)歷實(shí)時時鐘LCD顯示設(shè)計(jì) D 陜西 西安電子科技大學(xué) 20116.EL-ARM-830 實(shí)驗(yàn)系統(tǒng)的資源介紹,2000.附 錄 實(shí)時時鐘外圍電路E

11、XTAL1XTAL1晶陣32.768 kHz15pF15pFGNDD9 1N4148C 104VDDRTCGNDBAT1電池 R 10K1. 電路原理圖 128Hz1Hz分頻時鐘 時鐘發(fā)生器 控制寄存器復(fù)位寄存器 閏年產(chǎn)生器SECMINHOURDATEDAYMONYEAR 報(bào)警產(chǎn)生器XTALEXTALRTCONRTCRSTTIME TICKTICNTPMWKUPPWDNALMINTRTCALM S3C44B0X處理器RTC功能框圖系 統(tǒng) 總 線 寄存器控制信號產(chǎn)生電路DMA傳送控制數(shù)據(jù)控制VCLK VLINE VFRAME VMVD3:0 VD7:4 S3C44B0X處理器的LCD控制器框圖2

12、. 主要程序代碼/* File:lcd.c* Author:embest* Desc:LCD control and display functions* History:*/#include "lcd.h"#include "bmp.h"#include "44b.h"#define XWIDTH 6#define LCD_STN256_COLOR#define ASCII6x8UINT32T g_unLcdActiveBufferLCD_YSIZELCD_XSIZE/4;volatile extern int data=0x201

13、2,0x12,0x17,0x2,0x12,0x30,0x00;volatile extern char *f_szdate8 = "","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"extern UINT8T g_ucAscii8x16;extern const UINT8T g_ucHZK16;void lcd_init(void) /LCD

14、初始化函數(shù) rDITHMODE = 0x12210;rDP1_2 = 0xa5a5; rDP4_7 = 0xba5da65;rDP3_5 = 0xa5a5f;rDP2_3 = 0xd6b;rDP5_7 = 0xeb7b5ed;rDP3_4 = 0x7dbe;rDP4_5 = 0x7ebdf;rDP6_7 = 0x7fdfbfe;rLCDCON1 = (0x0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);rLCDCON2 = (LINEVAL)|(HOZVAL

15、_COLOR<<10)|(10<<21); rLCDCON3 = 0;rLCDSADDR1 = (0x3<<27) | ( (unsigned int)g_unLcdActiveBuffer>>22)<<21 ) | M5D(unsigned int)g_unLcdActiveBuffer>>1);rLCDSADDR2 = M5D(unsigned int)g_unLcdActiveBuffer+(SCR_XSIZE*LCD_YSIZE)>>1) | (MVAL<<21);rLCDSADDR3 =

16、(LCD_XSIZE/2) | ( (SCR_XSIZE-LCD_XSIZE)/2)<<9 );rREDLUT =0xfdb96420; / 1111 1101 1011 1001 0110 0100 0010 0000rGREENLUT=0xfdb96420; / 1111 1101 1011 1001 0110 0100 0010 0000rBLUELUT =0xfb40; / 1111 1011 0100 0000rLCDCON1=(0x1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(C

17、LKVAL_COLOR<<12);rPDATE=rPDATE&0x0e;lcd_clr();void lcd_clr(void) UINT32T i;UINT32T *pDisp = (UINT32T*)g_unLcdActiveBuffer;for (i = 0; i < (SCR_XSIZE * SCR_YSIZE / 4); i+)*pDisp+ = ALLWHITE;void lcd_disp_ascii8x16(UINT16T x0, UINT16T y0, UINT8T ForeColor, UINT8T * s) /字符串顯示函數(shù)UINT16T i,j,

18、k,x,y,xx;UINT8T qm;UINT32T ulOffset;INT8T ywbuf16,temp2;for( i = 0; i < strlen(const char *)s); i+ )if( (UINT8T)*(s+i) >= 161 )temp0 = *(s + i);temp1 = '0'return;elseqm = *(s+i);ulOffset = (UINT32T)(qm) * 16;/Here to be changed tomorrowfor( j = 0; j < 16; j + )ywbufj = g_ucAscii8x16

19、ulOffset + j; for( y = 0; y < 16; y+ ) for( x = 0; x < 8; x+ ) k = x % 8; if( ywbufy & (0x80 >> k) ) xx = x0 + x + i*8; LCD_PutPixel(xx, y + y0, (UINT8T)ForeColor); void lcd_disp_hz16(UINT16T x0, UINT16T y0, UINT8T ForeColor, UINT8T *s) /漢字顯示函數(shù)UINT16T i,j,k,x,y,xx;UINT8T qm,wm;UINT32

20、T ulOffset;INT8T hzbuf32,temp2;for( i = 0; i < strlen(const char*)s); i+ )if( (UINT8T)(*(s+i) < 161 )temp0 = *(s+i);temp1 = '0'break;elseqm = *(s+i) - 161; wm = *(s + i + 1) - 161; ulOffset = (UINT32T)(qm * 94 + wm) * 32;for( j = 0; j < 32; j + ) hzbufj = g_ucHZK16ulOffset + j; for(

21、 y = 0; y < 16; y+ ) for( x = 0; x < 16; x+ ) k = x % 8; if( hzbufy * 2 + x / 8 & (0x80 >> k) ) xx = x0 + x + i * 8; LCD_PutPixel( xx, y + y0, (UINT8T)ForeColor); i+;void rtc_init(void) /時鐘模塊RTC初始化函數(shù)rRTCCON = 0x01;/ R/W enable, 1/32768, Normal(merge), No reset/ set the default data f

22、or RTCrBCDYEAR = data0;rBCDMON = data1;rBCDDAY = data2;/ SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7rBCDDATE = data3;rBCDHOUR = data4;rBCDMIN = data5;rBCDSEC = data6;/ set the test data for RTCrALMYEAR = 0x12;rALMMON = 0x12;rALMDAY = 0x17;rALMHOUR = 0x12;rALMMIN = 0x32 ;rALMSEC = 0x00+1; rRTCCON = 0x0

23、;/ R/W disable, 1/32768, Normal(merge), No resetvoid rtc_read(void) /讀當(dāng)前時間函數(shù)while(1)/ read the data from RTC registersif(rBCDYEAR = 0x99) data0 = 0x1999;else data0 = 0x2000 + rBCDYEAR;data1 = rBCDMON;data2 = rBCDDAY;data3 = rBCDDATE;data4 = rBCDHOUR;data5 = rBCDMIN;data6 = rBCDSEC;/ display the defa

24、ult timeuart_printf("r Set Default Time at %02x-%02x-%02x %s",data0,data1,data2,f_szdatedata3);uart_printf(" %02x:%02x:%02xnr",data4,data5,data6); int BCDToD(int a) /將BCD碼轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)int b=0;b+=(a>>12)*1000+(a>>8)&0x0f)*100+(a&0xf0)>>4)*10+(a&0x0f);retur

25、n b;void rtc_tick_test(void) /設(shè)置RTC時間片中斷 / enable rtc_tick interruptrRTCALM = 0x7f; pISR_RTC = (unsigned int) rtc_int; rINTMSK = (BIT_GLOBAL|BIT_RTC);pISR_TICK = (unsigned)rtc_tick;rINTMSK = (BIT_GLOBAL|BIT_TICK); rTICINT = 127+(1<<7);/ STARTvoid rtc_tick(void) /RTC時間片中斷函數(shù)rI_ISPC = BIT_TICK; r

26、tc_read();void rtc_int(void) /RTC報(bào)警中斷函數(shù)UINT8T i;rI_ISPC = BIT_RTC; for(i=0;i<25;i+) beep(1); delay(100); beep(0); /* File:main.c* Author:embest* Desc:c main entry* History:*/#include "lcd.h"#include "bmp.h"extern void lcd_test();void Main(void);void lcd_test(void);volatile int

27、 data;volatile char *f_szdate;typedef struct _hjz /帶有年、月、日的結(jié)構(gòu)體 int year; int month; int day; int reserved; hjz; unsigned int lunar200y199 = /與陽歷對應(yīng)的農(nóng)歷時間信息 0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,0x46AAB9,0x056A4D,0x09AD42,0x24AEB6,0x04AE4A,/*1901-1910*/ 0x6A4DBE,0x0A4D52,0x0D2546,0x5D52BA,0x0B54

28、4E,0x0D6A43,0x296D37,0x095B4B,0x749BC1,0x049754,/*1911-1920*/ 0x0A4B48,0x5B25BC,0x06A550,0x06D445,0x4ADAB8,0x02B64D,0x095742,0x2497B7,0x04974A,0x664B3E,/*1921-1930*/ 0x0D4A51,0x0EA546,0x56D4BA,0x05AD4E,0x02B644,0x393738,0x092E4B,0x7C96BF,0x0C9553,0x0D4A48,/*1931-1940*/ 0x6DA53B,0x0B554F,0x056A45,0x4

29、AADB9,0x025D4D,0x092D42,0x2C95B6,0x0A954A,0x7B4ABD,0x06CA51,/*1941-1950*/ 0x0B5546,0x555ABB,0x04DA4E,0x0A5B43,0x352BB8,0x052B4C,0x8A953F,0x0E9552,0x06AA48,0x6AD53C,/*1951-1960*/ 0x0AB54F,0x04B645,0x4A5739,0x0A574D,0x052642,0x3E9335,0x0D9549,0x75AABE,0x056A51,0x096D46,/*1961-1970*/ 0x54AEBB,0x04AD4F,

30、0x0A4D43,0x4D26B7,0x0D254B,0x8D52BF,0x0B5452,0x0B6A47,0x696D3C,0x095B50,/*1971-1980*/ 0x049B45,0x4A4BB9,0x0A4B4D,0xAB25C2,0x06A554,0x06D449,0x6ADA3D,0x0AB651,0x093746,0x5497BB,/*1981-1990*/ 0x04974F,0x064B44,0x36A537,0x0EA54A,0x86B2BF,0x05AC53,0x0AB647,0x5936BC,0x092E50,0x0C9645,/*1991-2000*/ 0x4D4A

31、B8,0x0D4A4C,0x0DA541,0x25AAB6,0x056A49,0x7AADBD,0x025D52,0x092D47,0x5C95BA,0x0A954E,/*2001-2010*/ 0x0B4A43,0x4B5537,0x0AD54A,0x955ABF,0x04BA53,0x0A5B48,0x652BBC,0x052B50,0x0A9345,0x474AB9,/*2011-2020*/ 0x06AA4C,0x0AD541,0x24DAB6,0x04B64A,0x69573D,0x0A4E51,0x0D2646,0x5E933A,0x0D534D,0x05AA43,/*2021-2

32、030*/ 0x36B537,0x096D4B,0xB4AEBF,0x04AD53,0x0A4D48,0x6D25BC,0x0D254F,0x0D5244,0x5DAA38,0x0B5A4C,/*2031-2040*/ 0x056D41,0x24ADB6,0x049B4A,0x7A4BBE,0x0A4B51,0x0AA546,0x5B52BA,0x06D24E,0x0ADA42,0x355B37,/*2041-2050*/ 0x09374B,0x8497C1,0x049753,0x064B48,0x66A53C,0x0EA54F,0x06B244,0x4AB638,0x0AAE4C,0x092

33、E42,/*2051-2060*/ 0x3C9735,0x0C9649,0x7D4ABD,0x0D4A51,0x0DA545,0x55AABA,0x056A4E,0x0A6D43,0x452EB7,0x052D4B,/*2061-2070*/ 0x8A95BF,0x0A9553,0x0B4A47,0x6B553B,0x0AD54F,0x055A45,0x4A5D38,0x0A5B4C,0x052B42,0x3A93B6,/*2071-2080*/ 0x069349,0x7729BD,0x06AA51,0x0AD546,0x54DABA,0x04B64E,0x0A5743,0x452738,0x

34、0D264A,0x8E933E,/*2081-2090*/ 0x0D5252,0x0DAA47,0x66B53B,0x056D4F,0x04AE45,0x4A4EB9,0x0A4D4C,0x0D1541,0x2D92B5 /*2091-2099*/ ; int monthTotal13 = 0,31,59,90,120,151,181,212,243,273,304,334,365; hjz toLunar(hjz solar) /將陽歷轉(zhuǎn)換為農(nóng)歷函數(shù) int year = solar.year, month = solar.month, day = solar.day; int bySpri

35、ng,bySolar,daysPerMonth; int index,flag; hjz lunar; if( (lunar200yyear-1901 & 0x0060) >> 5) = 1) bySpring = (lunar200yyear-1901 & 0x001F) - 1; else bySpring = (lunar200yyear-1901 & 0x001F) - 1 + 31; bySolar = monthTotalmonth-1 + day - 1; if( (!(year % 4) && (month > 2) b

36、ySolar+; if (bySolar >= bySpring) /陽歷日在春節(jié)后(含春節(jié)那天) bySolar -= bySpring; month = 1; index = 1; flag = 0; if( ( lunar200yyear - 1901 & (0x80000 >> (index-1) ) =0) daysPerMonth = 29; else daysPerMonth = 30; while(bySolar >= daysPerMonth) bySolar -= daysPerMonth; index+; if(month = (lunar

37、200yyear - 1901 & 0xF00000) >> 20) ) flag = flag; if(flag = 0) month+; else month+; if( ( lunar200yyear - 1901 & (0x80000 >> (index-1) ) =0) daysPerMonth=29; else daysPerMonth=30; day = bySolar + 1; else /陽歷日在春節(jié)前 bySpring -= bySolar; year-; month = 12; if ( (lunar200yyear - 1901

38、& 0xF00000) >> 20) = 0) index = 12; else index = 13; flag = 0; if( ( lunar200yyear - 1901 & (0x80000 >> (index-1) ) =0) daysPerMonth = 29; else daysPerMonth = 30; while(bySpring > daysPerMonth) bySpring -= daysPerMonth; index-; if(flag = 0) month-; if(month = (lunar200yyear -

39、1901 & 0xF00000) >> 20) flag = flag; if( ( lunar200yyear - 1901 & (0x80000 >> (index-1) ) =0) daysPerMonth = 29; else daysPerMonth = 30; day = daysPerMonth - bySpring + 1; lunar.day = day; lunar.month = month; lunar.year = year; if(month = (lunar200yyear - 1901 & 0xF00000) >> 20) lunar.reserved = 1; else lunar.reserved = 0; return lunar; void Main(void) sys_init(); /* Initial 44B0X's Interrupt,Port and UA

溫馨提示

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

最新文檔

評論

0/150

提交評論