單片機(jī)課程設(shè)計(jì)多功能電子時(shí)鐘_第1頁
單片機(jī)課程設(shè)計(jì)多功能電子時(shí)鐘_第2頁
單片機(jī)課程設(shè)計(jì)多功能電子時(shí)鐘_第3頁
單片機(jī)課程設(shè)計(jì)多功能電子時(shí)鐘_第4頁
單片機(jī)課程設(shè)計(jì)多功能電子時(shí)鐘_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、J I A N G S U U N I V E R S I T Y單片機(jī)課程設(shè)計(jì)多功能電子時(shí)鐘學(xué)院名稱: 專業(yè)班級: 學(xué)生姓名: 學(xué)生學(xué)號: 一、設(shè)計(jì)目的(1)能在LED顯示器上實(shí)現(xiàn)正常的時(shí)分秒計(jì)時(shí)(2)能通過鍵盤輸入當(dāng)前時(shí)間,并從該時(shí)間開始計(jì)時(shí)(3)有校時(shí)、校分功能(4)有鬧時(shí)功能,鬧時(shí)時(shí)間可以設(shè)定,通過指示燈表示二、設(shè)計(jì)內(nèi)容該課程設(shè)計(jì)是利用MCS-51單片機(jī)內(nèi)部的定時(shí)計(jì)數(shù)器、中斷系統(tǒng)、以及行列鍵盤和LED顯示器等部件,設(shè)計(jì)一個(gè)單片機(jī)電子時(shí)鐘。設(shè)計(jì)的電子時(shí)鐘通過數(shù)碼管顯示,并能通過按鍵實(shí)現(xiàn)設(shè)置時(shí)間和暫停、啟動控制等。三、MCS-51單片機(jī)系統(tǒng)簡介單片機(jī)應(yīng)用系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成。

2、硬件系統(tǒng)是指單片機(jī)以及擴(kuò)展的存儲器、IO接口、外圍擴(kuò)展的功能芯片以及接口電路。軟件系統(tǒng)包括監(jiān)控程序和各種應(yīng)用程序。在單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)是整個(gè)系統(tǒng)的核心,對整個(gè)系統(tǒng)的信息輸入、處理、信息輸出進(jìn)行控制。與單片機(jī)配套的有相應(yīng)的復(fù)位電路、時(shí)鐘電路以及擴(kuò)展的存儲器和IO接口,使單片機(jī)應(yīng)用系統(tǒng)能夠運(yùn)行。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,往往都會輸入信息和顯示信息,這就涉及鍵盤和顯示器。在單片機(jī)應(yīng)用系統(tǒng)中,一般都根據(jù)系統(tǒng)的要求配置相應(yīng)的鍵盤和顯示器。配置鍵盤和顯示器一般都沒有統(tǒng)一的規(guī)定,有的系統(tǒng)功能復(fù)雜,需輸入的信息和顯示的信息量大,配置的鍵盤和顯示器功能相對強(qiáng)大,而有些系統(tǒng)輸入/輸出的信息少,這時(shí)可能用幾個(gè)按

3、鍵和幾個(gè)LED指示燈就可以進(jìn)行處理了。在單片機(jī)應(yīng)用系統(tǒng)在中配置的鍵盤可以是獨(dú)立鍵盤,也可能是矩陣鍵盤。顯示器可以是LED指示燈,也可以是LED數(shù)碼管,也可以是LCD顯示器,還可以使用CRT顯示器。單片機(jī)應(yīng)用系統(tǒng)中鍵盤一般用的比較多的是矩陣鍵盤,顯示器用的比較多的是LED數(shù)碼管還LCD顯示器。四、設(shè)計(jì)方案通過鍵盤輸入,設(shè)置當(dāng)前時(shí)間,并顯示在LCD顯示器上,鍵盤和LED顯示通過鍵盤專用芯片HD7279A進(jìn)行控制,7279A也是I2C總線接口的芯片,系統(tǒng)中采用并行口線模擬I2C實(shí)現(xiàn) C8051F020和HD7279A的通信。采用LCD液晶顯示器顯示。而LCD液晶顯示則耗能少,能夠顯示年、月、日、星期

4、等漢字,在顯示方面更加靈活,而且改變顯示時(shí)只要改變軟件設(shè)計(jì)就可以,不用改變硬件電路的設(shè)計(jì),易于電路的功能擴(kuò)展。電路的軟件設(shè)計(jì)也很簡單。另外,這種設(shè)計(jì)硬件更加簡潔。采用LCD液晶顯示方案的缺點(diǎn)是在顯示位數(shù)比較少時(shí),價(jià)格略顯昂貴。時(shí)間顯示格式為小時(shí)十位、小時(shí)個(gè)位-分十位、分個(gè)位-秒十位、秒個(gè)位。在處理過程中加上了按鍵判斷程序,能對按鍵處理,A是進(jìn)入時(shí)間設(shè)置,按B進(jìn)入日歷設(shè)置,按C進(jìn)入鬧鐘設(shè)置,設(shè)置完畢按D退出。五、程序整個(gè)工程中一共有四個(gè)文件 main.c  LCD12864.c  key7279.c  Clock.c。首先是main.c,程序如下:#include

5、"c8051f020.h"  #include <intrins.h> unsigned char flag=0;  /設(shè)置標(biāo)記extern unsigned char h,m,s;/聲明時(shí),分,秒,原定義在Clock.c文件中unsigned char ch=0,cm=0,cs=0;/定義鬧鐘的 時(shí),分,秒unsigned int year=2013,mouth=12,day=31;/定義年,月,日int Count1s=1000; /定義倒數(shù)時(shí)間為1Sunsigned char newday=0;/新的一天  

6、;   void Delay1us(unsigned char us) while (us)    _nop_(); _nop_(); _nop_(); _nop_(); _nop_();   -us; void SYSCLK_Init (void)   int i;                  

7、60;           / delay counter   OSCXCN = 0x67;                      / start external oscillator with      

8、;                                 / 18.432MHz crystal   for (i=0; i < 256; i+) ;        

9、;   / Wait for osc. to start up   while (!(OSCXCN & 0x80) ;          / Wait for crystal osc. to settle   OSCICN = 0x88;                 

10、     / select external oscillator as SYSCLK                                       / source

11、 and enable missing clock                                       / detector#define PRT0CF P0MDOUT#define PRT1CF

12、 P1MDOUT#define PRT2CF P2MDOUTvoid PORT_Init (void)   XBR0    = 0x07;                     / Enable SMBus, SPI0, and UART0   XBR1    = 0x00;  

13、; XBR2    = 0x44;                     / Enable crossbar and weak pull-ups   EMI0CF  = 0x27;   EMI0TC  = 0x21;   P74OUT  = 0xFF;  

14、P0MDOUT = 0x15; P1MDOUT |= 0x3C;       /P1.2-P1.5推挽輸出   P1 &= 0xc3;       /P1.2-P1.5=0void SPI0_Init (void)   SPI0CFG = 0x07;              &#

15、160;      / data sampled on 1st SCK rising edge                                      

16、 / 8-bit data words   SPI0CFG|=0xC0; /CKPOL =1;   SPI0CN = 0x03;                      / Master mode; SPI enabled; flags        

17、60;                              / cleared   SPI0CKR = SYSCLK/2/8000000-1;       / SPI clock <= 8MHz (limited by

18、                                        / EEPROM spec.)unsigned char Count1ms;void Timer0_Init (void) 

19、60;  CKCON|=0x8;    TMOD|=0x1;     /16Bit   Count1ms=10;    TR0 = 0;                          / STOP Timer0

20、60;   TH0 = (-SYSCLK/1000) >> 8;      / set Timer0 to overflow in 1ms    TL0 = -SYSCLK/1000;    TR0 = 1;    / START Timer0    IE|= 0x2; void rili(unsigned char n); void Timer0_ISR (void) interrupt 1&

21、#160; /1ms TH0 = (-SYSCLK/1000) >> 8;      TL0 = -SYSCLK/1000; if (Count1ms) Count1ms-; Count1s-;                  /1000倒數(shù),為0是代表剛好一秒 if(Count1s=0)   

22、                  flag=1;                      /1S到了,將標(biāo)記至1 Count1s=1000;     

23、60;             /復(fù)位1S計(jì)數(shù)   if(flag=1)                   /判斷標(biāo)記       flag=0;     &

24、#160;              /復(fù)位標(biāo)記     s+;                       /1S到 ,s+,秒增加     if(s=60)

25、                /秒滿60           s=0;      m+;                  &#

26、160; /分增加          if(m=60)             /分滿60           m=0;      h+;         &#

27、160;         /時(shí)增加               if(h=24)             /時(shí)滿24          h=0;    

28、; newday=1;         /更新新一天標(biāo)記     rili(newday);       /日歷函數(shù),由新一天標(biāo)記為參數(shù),判斷年月日     void Delay1ms(unsigned char T) Count1ms=T; while (Count1ms);void Delay1s(uns

29、igned char T) while (T)   Delay1ms(200);  Delay1ms(200);  Delay1ms(200);  Delay1ms(200);  Delay1ms(200);  T-; void clock (void);void main (void)  WDTCN = 0xde; WDTCN = 0xad;       

30、   /關(guān)看門狗 SYSCLK_Init ();         /初始化時(shí)鐘 Timer0_Init();   /初始化定時(shí)器 PORT_Init ();           /初始化IO口 SPI0_Init ();        &#

31、160;  /初始化SPI0  CPT1CN|=0x80; /使能比較器1 REF0CN = 0x03;  /使能片內(nèi)參考電壓 DAC0CN |= 0x80; /使能DAC0 DAC0H=0; DAC0L=0; EA=1;     /開中斷 clock();               &

32、#160;              /進(jìn)入后,程序永遠(yuǎn)在此函數(shù)中循環(huán) void rili(unsigned char n) if(n=1) n=0; /day+; /1,3,5,7,8,10,12 每月31天while(1) if(mouth=1|mouth=3|mouth=5|mouth=7|mouth=8|mouth=10|mouth=12) if(day=31) day=1; if(mouth!=12) mouth+; else mouth=1;

33、year+; else day+; break; /4,6,9,11 每月30天 if(mouth=4|mouth=6|mouth=9|mouth=11) if(day=30) day=1; mouth+; else day+; break; if(mouth=2) if(year%4=0)&(year%100!=0)|(year%400=0) if(day=29) day=1; mouth+; else day+; else if(day=28) day=1;mouth+; elseday+; break; 下面是key7279.c  和 LCD12864.c 兩個(gè)文件,分

34、別為按鍵和顯示的控制函數(shù)。其中在LCD12864.c文件中加入了兩個(gè)反向顯示函數(shù)。key7279.c文件內(nèi)容#include "c8051f020.h" #include <intrins.h>sbit HD7279_DAT=P17;sbit HD7279_CLK=P16;#define NOSELECT7279   P5 |= 0x80  /SPICS4(P57)=1#define SELECT7279   P5 &= (0x80)   /SPICS4(

35、P57)=0;#define Set7279DAT   HD7279_DAT=1#define Clr7279DAT   HD7279_DAT=0#define Set7279CLK   HD7279_CLK=1#define Clr7279CLK   HD7279_CLK=0       void Delay1ms(unsigned char T);void Delay1s(unsigned char T);void Delay1us(unsigned

36、char T);void Send7279Byte(unsigned char ch)  char i; SELECT7279;      /置CS低電平  Delay1us(50);  /延時(shí)50  for (i=0;i<8;i+)    if (ch&0x80) /輸出7位到HD7279A的DATA端      Set7279DAT; &#

37、160;  else     Clr7279DAT;    Set7279CLK;  /置CLK高電平   ch=ch<<1;  /待發(fā)數(shù)據(jù)左移   Delay1us(8); /延時(shí)8  Clr7279CLK;  /置CLK低電平   Delay1us(8); /延時(shí)50  Clr7279DAT;

38、   /發(fā)送完畢,DATA端置低,返回 unsigned char Receive7279Byte(void) unsigned char i,ch; ch=0;   Set7279DAT;   /DATA端置為高電平,輸入狀態(tài) Delay1us(50);  /延時(shí)50 for (i=0;i<8;i+)   Set7279CLK;  /置CLK高電平  Delay1us(

39、8); /延時(shí)8  ch=ch<<1;  /接收數(shù)據(jù)左移1位  if (HD7279_DAT)   ch+=1;  /接收1位數(shù)據(jù)  Clr7279CLK;  /置CLK低電平  Delay1us(8); /延時(shí)8  Clr7279DAT;   /接收完畢,DATA端重新置成低電平(輸出狀態(tài)) return ch;void FlashL

40、ED(unsigned char No) char i; Send7279Byte(0x88); /發(fā)閃爍指令  i=0x1; while (No)   i=i<<1;  No-;  Send7279Byte(i);   /1閃爍 NOSELECT7279;      /置CS高電平 void MoveLeft(void) Send7279Byte(0xA1); /

41、發(fā)左移指令  NOSELECT7279;      /置CS高電平 void MoveRight(void) Send7279Byte(0xA0); /發(fā)右移指令  NOSELECT7279;      /置CS高電平 unsigned char code BdSeg=0x7e,0x30,0x6d,0x79, / 0 1 2 3 0x33,0x5b,0x5f,0x70, / 4 5 6 70x7f,0x7b,0x77,0x1f, / 8 9 a b0x4e

42、,0x3d,0x4f,0x47, / c d e f0x00,0x01; /*;              b6;             -;          b1| b0 |b5;      &

43、#160;      -        small;          b2| b3 |b4;             - .b7*/void DispLED(char *DispBuf,char ShowDot)/ShowDot 顯示小數(shù)點(diǎn)位 char i,ch;&#

44、160;ShowDot-; for (i=0;i<6;i+)   ch=DispBufi;  if (ch>='a') && (ch<='f')       ch-='a'ch+=0xa;    if (ch>='A') && (ch<='F')    &#

45、160;  ch-='A'ch+=0xa;    Send7279Byte(0x90+5-i); /不譯碼  if (ch=' ')   Send7279Byte(0x00);   else   if (ch='-')     Send7279Byte(0x01);    else    &

46、#160;   if (ShowDot=i)     Send7279Byte(0x80|BdSegch&0x0f);     else     Send7279Byte(BdSegch&0x0f);      NOSELECT7279;      /置CS高電平 unsigned char GetKeyValu

47、e(void) char KeyValue; if (CPT1CN&0x40) return -1; /無鍵按下  Send7279Byte(0x15); /發(fā)讀鍵盤指令  KeyValue=Receive7279Byte(); NOSELECT7279;      /置CS高電平  return KeyValue; void WaitKeyOff(void) while  (!(CPT1CN&0x40);LCD12864.c函數(shù)

48、內(nèi)容#include "c8051F020.h"#include <intrins.h>#define LCD_DATA P2#define LCD_RS P30#define LCD_RW P31#define LCD_E  P32#define LCD_CS1  P33#define LCD_CS2  P34#define LCD_RST  P35void Delay1ms(unsigned char);#define SELECTCS 0void LCD_WaitReady1(void) /判斷LCD控制芯片KS01

49、08是否忙 LCD_DATA=0xff; _nop_(); LCD_CS2=SELECTCS; LCD_RW=1; LCD_RS=0; LCD_E=1; while (LCD_DATA&0x80); LCD_CS2=!SELECTCS;void LCD_WaitReady2(void) /判斷LCD控制芯片KS0108是否忙 LCD_DATA=0xff; _nop_(); LCD_CS1=SELECTCS; LCD_RW=1; LCD_RS=0; 

50、LCD_E=1; while (LCD_DATA&0x80); LCD_CS1=!SELECTCS;void LCD_WriteCommand1(char ch) /向LCD控制芯片KS0108發(fā)送控制命令 LCD_WaitReady1(); LCD_CS2=SELECTCS; LCD_RW=0; LCD_RS=0; LCD_DATA=ch; LCD_E=1; LCD_E=0; LCD_CS2=!SELECTCS;void LCD_WriteCommand2(char ch) 

51、/向LCD控制芯片KS0108發(fā)送控制命令 LCD_WaitReady2(); LCD_CS1=SELECTCS; LCD_RW=0; LCD_RS=0; LCD_DATA=ch; LCD_E=1; LCD_E=0; LCD_CS1=!SELECTCS;void LCD_WriteData1(char ch) /向LCD控制芯片KS0108發(fā)送數(shù)據(jù)命令 LCD_WaitReady1(); LCD_CS2=SELECTCS; LCD_RW=0; LCD_RS=1;&#

52、160;LCD_DATA=ch; LCD_E=1; LCD_E=0; LCD_CS2=!SELECTCS;void LCD_WriteData2(char ch) /向LCD控制芯片KS0108發(fā)送數(shù)據(jù)命令 LCD_WaitReady2(); LCD_CS1=SELECTCS; LCD_RW=0; LCD_RS=1; LCD_DATA=ch; LCD_E=1; LCD_E=0; LCD_CS1=!SELECTCS;void LCD_WriteHZ(char x,char y,

53、char *Dot) /顯示16*16點(diǎn)陣漢字char i; for (i=0;i<32;i+)   if (x+i%16)<64)     LCD_WriteCommand1(0xB8+y+i/16);   LCD_WriteCommand1(0x40+x+i%16);   LCD_WriteData1(Doti);    else     L

54、CD_WriteCommand2(0xB8+y+i/16);   LCD_WriteCommand2(0x40+x-64+i%16);   LCD_WriteData2(Doti);   char code Number=/*-  文字:  0123456789:/  -*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,0x00,0x10,0x10,0xF8,0x

55、00,0x00,0x00,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x00,0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x18,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x0C,0x10,0x10,0x10,0x11,0x0E,0x00,0x00,0x80,0x40,0x20,0xF8,0x00,0x00,0x00,0x00,0x03,0x02,0x12,0x1F,0x12,0x12,0x00,0x

56、00,0xF8,0x88,0x48,0x48,0x48,0x88,0x00,0x00,0x0C,0x10,0x10,0x10,0x10,0x0F,0x00,0x00,0xE0,0x10,0x88,0x88,0x98,0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x10,0x0F,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x0E,0x11,0x10,0x

57、10,0x11,0x0E,0x00,0x00,0xF0,0x08,0x08,0x08,0x90,0xE0,0x00,0x00,0x00,0x19,0x11,0x11,0x08,0x07,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,;void LCD_WriteChar(char x,char y,char *Do

58、t) /顯示8*16點(diǎn)陣字符char i; for (i=0;i<16;i+)   if (x+i%8)<64)     LCD_WriteCommand1(0xB8+y+i/8);   LCD_WriteCommand1(0x40+x+i%8);   LCD_WriteData1(Doti);    else     LCD_WriteComm

59、and2(0xB8+y+i/8);   LCD_WriteCommand2(0x40+x-64+i%8);   LCD_WriteData2(Doti);   void LCD_WriteChar2(char x,char y,char *Dot) /顯示8*16點(diǎn)陣字符   /新添加反向顯示函數(shù)char i; for (i=0;i<16;i+)   if (x+i%8)<64)    

60、0;LCD_WriteCommand1(0xB8+y+i/8);   LCD_WriteCommand1(0x40+x+i%8);   LCD_WriteData1(Doti);    else     LCD_WriteCommand2(0xB8+y+i/8);   LCD_WriteCommand2(0x40+x-64+i%8);   LCD_WriteData2(Doti);

61、60;  void LCD_DispChar(char x,char y,char ch) /128*64  取值x=0-128 y=0-8 if (ch>=0)&&(ch<=0xb)   LCD_WriteChar(x,y,&Numberch*16); void LCD_DispChar2(char x,char y,char ch) /128*64  取值x=0-128 y=0-8  /新添加反向顯示函數(shù) if (ch>=0)&&a

62、mp;(ch<=0xb)   LCD_WriteChar2(x,y,&Numberch*16); void InitLCD(void) /初始化LCD char i,j; LCD_RST=0; Delay1ms(1); LCD_RST=1; LCD_WriteCommand1(0xc0);  LCD_WriteCommand2(0xc0); LCD_WriteCommand1(0x3f);   /開顯示 LCD_Write

63、Command2(0x3f); for (j=0;j<8;j+)   /清屏   LCD_WriteCommand1(0xB8+j); /清左半屏  LCD_WriteCommand1(0x40);  for (i=0;i<64;i+)   LCD_WriteData1(0x00);  LCD_WriteCommand2(0xB8+j); /清右半屏  LCD_WriteCommand

64、2(0x40);  for (i=0;i<64;i+)   LCD_WriteData2(0x00); void DispBmp(char *buf) /顯示一幅位圖int i,j; for (j=0;j<8;j+)   /顯示位圖   LCD_WriteCommand1(0xB8+j);   LCD_WriteCommand1(0x40);  for (i=0;i<64;i+) 

65、;  LCD_WriteData1(buf(j*2)*64+i);  LCD_WriteCommand2(0xB8+j);   LCD_WriteCommand2(0x40);  for (i=0;i<64;i+)   LCD_WriteData2(buf(j*2+1)*64+i); Clock.c內(nèi)容如下#include <c8051f020.h>unsigned char h=23,m=59,s=55;   

66、60; /設(shè)定初始時(shí)間extern unsigned char ch,cm,cs;      /申明鬧鐘時(shí)分秒extern unsigned int year,mouth,day;/申明年月日unsigned char key,key1,key2;      /按鍵 鍵值unsigned char i=0,j=0,y1=33,k=0; /循環(huán)標(biāo)記unsigned  char si6=0;        &#

67、160;   /設(shè)置模式中存儲時(shí)間設(shè)定值int rili8=3;                  /設(shè)置模式中存儲日歷設(shè)定值unsigned  char sn6=0;           /設(shè)置模式中存儲鬧鈴設(shè)定值void InitLCD(void); /初始化LCDvoid LCD_D

68、ispChar(char x,char y,char ch);void LCD_WriteHZ(char x,char y,char *Dot);void DispLED(char *DispBuf,char ShowDot);void Delay1ms(unsigned char T);unsigned char GetKeyValue(void);void WaitKeyOff(void);void LCD_DispChar2(char x,char y,char ch);/*- 文字: 時(shí) -*/char code Shi=0x00,0x00,0xFC,0x44,0x44,0xFC,0x

69、00,0x08,0x48,0x88,0x08,0xFF,0x08,0x08,0x08,0x00,0x00,0x00,0x1F,0x04,0x04,0x0F,0x00,0x00,0x00,0x11,0x20,0x1F,0x00,0x00,0x00,0x00,;/*- 文字: 鐘 -*/char code Zhong=0x00,0x60,0x38,0xE7,0x24,0x24,0x04,0x00,0xF8,0x88,0x88,0xFF,0x88,0x88,0xF8,0x00,0x00,0x01,0x01,0x3F,0x11,0x09,0x01,0x00,0x01,0x00,0x00,0x3F,0x

70、00,0x00,0x01,0x00,;/*- 文字: 鬧 -*/char code Nao=0x00,0x00,0xF9,0x12,0x90,0x92,0x96,0xFA,0x92,0x92,0x92,0x12,0x02,0xFE,0x00,0x00,0x00,0x00,0xFF,0x00,0x1F,0x00,0x00,0x7F,0x00,0x08,0x1F,0x40,0x80,0x7F,0x00,0x00,;/*- 文字: 日 -*/char code Ri=0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x

71、00,0x00,0x00, 0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,;/*- 文字: 歷 -*/char code Li=0x00,0x00,0xFE,0x02,0x22,0x22,0x22,0x22,0xFA,0x22,0x22,0x22,0xE2,0x02,0x02,0x00, 0x40,0x30,0x0F,0x00,0x40,0x20,0x18,0x06,0x01,0x00,0x20,0x60,0x3F,0x00,0x00,0x00,;void clock (void)

72、 InitLCD();DispLED(" ",0); while(1) LCD_WriteHZ(32,0,Ri); LCD_WriteHZ(48,0,Li); LCD_WriteHZ(64,0,Shi); LCD_WriteHZ(80,0,Zhong); LCD_WriteHZ(0,2,Shi); LCD_WriteHZ(16,2,Zhong); LCD_DispChar(49,2,0xa);LCD_DispChar(73,2,0xa);LCD_WriteHZ(0,4,Ri); LCD_WriteHZ(16,4,Li);LCD_WriteHZ(0,6,Nao); LCD_W

73、riteHZ(16,6,Zhong);LCD_DispChar(33,6,ch/10); LCD_DispChar(41,6,ch%10);LCD_DispChar(49,6,0xa);LCD_DispChar(57,6,cm/10);LCD_DispChar(65,6,cm%10);LCD_DispChar(73,6,0xa);LCD_DispChar(81,6,cs/10);LCD_DispChar(89,6,cs%10); key=GetKeyValue();/獲取按鍵值,當(dāng)沒有按鍵值時(shí),key=-1;整個(gè)循環(huán)只運(yùn)行if(GetKeyValue()=-1)內(nèi)程序。 if(GetKeyValue()=-1) Delay1ms(30); LCD_DispChar(33,2,h/10);LCD_DispChar(41,2,h%10);LCD_DispChar(57,2,m/10);LCD_DispChar(65,2,m%10);LCD_DispChar(81,2,s/10);LCD_DispChar(89,2,s%10); LCD_DispChar(33,4,year/1000); LCD_DispChar(41,4,(year%1000)/100); LCD_DispChar(49,4,(year

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論