2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  實(shí)時(shí)日歷時(shí)鐘顯示系統(tǒng)的制作</p><p><b>  一、背景及意義</b></p><p>  在當(dāng)前繁忙的生活,學(xué)習(xí),工作中,時(shí)間與每個(gè)人都有密切的關(guān)系,每個(gè)人都受到時(shí)間的影響,隨著生活水平的提高,傳統(tǒng)時(shí)鐘已不能滿足人們的需求,因此實(shí)時(shí)日歷時(shí)鐘面市了,應(yīng)用于日常日歷時(shí)間顯示方面,并得到廣泛推廣。</p><p>  

2、本設(shè)計(jì)的實(shí)時(shí)日歷時(shí)鐘顯示系統(tǒng),共可以顯示計(jì)時(shí)萬(wàn)年,最小時(shí)間單位是1s;其基本功能如下:</p><p>  (一)在51單片機(jī)系統(tǒng)中設(shè)置、獲取、記錄實(shí)時(shí)的日歷時(shí)鐘信息并通過(guò)LCD顯示。</p><p>  (二)能夠進(jìn)行長(zhǎng)時(shí)間的記錄,并且存儲(chǔ)的時(shí)間信息在掉電情況下能長(zhǎng)期保存。</p><p>  (三)初始的時(shí)間信息用戶可用鍵盤輸入來(lái)設(shè)置。</p>

3、<p><b>  二、系統(tǒng)分析</b></p><p>  設(shè)計(jì)出具鍵盤輸入?yún)?shù)設(shè)置的時(shí)間、處理、顯示,并且可在線鍵盤參數(shù)設(shè)置、定時(shí)檢測(cè)、顯示的實(shí)時(shí)日歷顯示系統(tǒng)。整個(gè)系統(tǒng)的設(shè)計(jì)包括電路設(shè)計(jì)和軟件設(shè)計(jì),電路的設(shè)計(jì)只須知道所需的硬件即可,因?yàn)檎麄€(gè)電路被集中到一個(gè)模板上,只須設(shè)計(jì)出程序輸入單片機(jī)中,安在模板上即可工作。軟件則須根據(jù)所要的硬件寫出日歷工作的程序即可 。</p&g

4、t;<p>  (一)根據(jù)設(shè)計(jì)要求確定系統(tǒng)方案,給出系統(tǒng)方框圖</p><p><b>  三、系統(tǒng)硬件設(shè)計(jì)</b></p><p>  根據(jù)實(shí)時(shí)日歷時(shí)間顯示系統(tǒng)顯示的要求,本系統(tǒng)的設(shè)計(jì)主要包括以下幾個(gè)部分,矩陣鍵盤模塊,lcd1602液晶顯示器,數(shù)據(jù)儲(chǔ)存模塊,處理模塊以及蜂鳴器模塊組成,下面我將逐一介紹。</p><p>  矩

5、陣鍵盤模塊:用于調(diào)節(jié)時(shí)間和日期</p><p>  S9:時(shí)間功能鍵與P3.0相連</p><p>  S13:增加鍵與P3.1相連</p><p>  S17:減少鍵與P3.2相連</p><p>  S9:日期功能鍵與P3.3相連</p><p>  RD:置低電平,按鍵有效</p><p>

6、;  LCD1602液晶顯示模塊:顯示時(shí)間和日期</p><p>  LCD1602液晶顯示器是本系統(tǒng)的一個(gè)主要部分,由它實(shí)時(shí)顯示時(shí)間日歷, </p><p>  RS:讀控制與P3.5相連</p><p>  WR:寫控制與P3.6相連</p><p>  D0-D7:數(shù)據(jù)端口</p><p>  AT24C02:數(shù)

7、據(jù)存儲(chǔ)芯片,用于斷電存儲(chǔ)數(shù)據(jù)。</p><p>  SCL:控制總線與P2.1相連</p><p>  SDA:數(shù)據(jù)總線與P2.0相連</p><p>  主控電路STC89C52模塊:作為主控芯片,并用其內(nèi)部定時(shí)器計(jì)時(shí)。</p><p>  P0,P1,P2,P3四個(gè)IO口,用于接收和傳送地址與數(shù)據(jù);其中P3口有第二功能;</p>

8、;<p><b>  RES:硬件復(fù)位鍵</b></p><p>  蜂鳴器模塊:發(fā)出滴的響聲,表示有按鍵按下。</p><p>  FM:蜂鳴器控制接口,與P2.3相接,低電平有效。</p><p><b>  四、系統(tǒng)軟件設(shè)計(jì)</b></p><p>  軟件部分則需要DS1302

9、的運(yùn)行程序,鍵盤掃描的相關(guān)程序,液晶寫入相關(guān)程序,還有主程序,最后把各個(gè)程序組合在一起。</p><p><b>  (一)總體設(shè)計(jì)思想</b></p><p> ?。ǘ?各子程序的功能及設(shè)計(jì)要點(diǎn)</p><p>  本系統(tǒng)的程序設(shè)計(jì)主要包括初始化函數(shù)模塊,鍵盤掃描子程序,延時(shí)子程序以及液晶顯示子程序幾部分組成。初始化子程序主要是初始,鍵盤掃

10、描子程序主要負(fù)責(zé)對(duì)按鍵的處理響應(yīng),延時(shí)子程序是不可少的,可以給硬件足夠時(shí)間響應(yīng),液晶顯示子程序是時(shí)間顯示時(shí)候所用到的,反復(fù)調(diào)用。</p><p>  這部分內(nèi)容放在附錄中詳細(xì)解說(shuō),詳見(jiàn)附錄一,</p><p><b>  五、結(jié)束語(yǔ)</b></p><p>  經(jīng)過(guò)幾周的不斷調(diào)試更改再調(diào)試,最終得到了完整的成功的一個(gè)實(shí)時(shí)日歷時(shí)鐘顯示系統(tǒng)的系統(tǒng)。

11、在次過(guò)程中遇到了各種各樣的問(wèn)題,也采取了不同的處理方法。</p><p>  這一點(diǎn)我體會(huì)是十分深刻。例如:前面提到的鍵盤輸入導(dǎo)致每次循環(huán)都得進(jìn)行一次參數(shù)設(shè)置的問(wèn)題,經(jīng)過(guò)每一個(gè)子程序的單獨(dú)運(yùn)行,發(fā)現(xiàn)都可以正常運(yùn)行,但融合到一起就出現(xiàn)問(wèn)題了。單步運(yùn)行,也沒(méi)發(fā)現(xiàn)問(wèn)題,一個(gè)一個(gè)子程序的屏蔽,找到了鍵盤輸入的問(wèn)題。于是解決辦法就如前說(shuō)產(chǎn)生出來(lái)了。</p><p>  此外,本次實(shí)時(shí)日歷時(shí)鐘顯示系統(tǒng)

12、設(shè)計(jì)具有閏年調(diào)節(jié),日期錯(cuò)誤調(diào)整等校正功能;按鍵自校正功能,防止誤按鍵等措施,能保證時(shí)間日期的正確運(yùn)行調(diào)節(jié);共能顯示萬(wàn)年的日歷,時(shí)間能正確地走秒運(yùn)行,但仍有其不足之處,其中走秒時(shí)間與真實(shí)走秒時(shí)間有一定的誤差.</p><p><b>  【參考文獻(xiàn)】</b></p><p>  [1] 李廣弟等.《單片機(jī)基礎(chǔ)》[M].北京:航空航天大學(xué)出版社,2001</p>

13、;<p>  [2]李朝青編.《單片機(jī)原理及接口技術(shù)》(簡(jiǎn)明修訂版).北京航空航天大學(xué)出版社,1998</p><p>  [3]馮克.《MCS-51單片機(jī)實(shí)用子程序及其應(yīng)用實(shí)例》.黑龍江科學(xué)技術(shù)出版社,1990</p><p>  [4]楊欣榮等.《智能儀器原理、設(shè)計(jì)與發(fā)展》.中南大學(xué)出版社,2003</p><p>  [5]孫傳友等.《感測(cè)技術(shù)基

14、礎(chǔ)》. 電子工業(yè)出版社,2001</p><p>  [6]王福瑞等.《單片微機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全》.北京航空航天大學(xué)出版社,1999</p><p><b>  附錄1</b></p><p><b>  源程序:</b></p><p>  /***************************

15、********</p><p><b>  功能介紹:</b></p><p>  有時(shí)間功能鍵,增加鍵,減少鍵,日期功能鍵;</p><p>  可根據(jù)不同鍵調(diào)節(jié)百年,年,月,日,時(shí),分,秒;</p><p>  具有閏年調(diào)節(jié),日期錯(cuò)誤調(diào)整等校正功能;</p><p>  具有按鍵自校正功能,

16、防止誤按鍵;</p><p>  ***********************************/</p><p>  #include<reg52.h>//包含52單片機(jī)頭文件</p><p>  #define uchar unsigned char </p><p>  #define uint unsigned i

17、nt</p><p>  bit write=0; //寫24C02的標(biāo)志;</p><p>  sbit sda=P2^0; </p><p>  sbit scl=P2^1;</p><p>  void delay0()</p><p><

18、;b>  { ;; }</b></p><p>  void start() //開始信號(hào)</p><p><b>  {</b></p><p><b>  sda=1;</b></p><p><b>  delay0();</b></p>

19、<p><b>  scl=1;</b></p><p><b>  delay0();</b></p><p><b>  sda=0;</b></p><p><b>  delay0();</b></p><p><b>  

20、}</b></p><p>  void stop() //停止</p><p><b>  {</b></p><p><b>  sda=0;</b></p><p><b>  delay0();</b></p><p><b

21、>  scl=1;</b></p><p><b>  delay0();</b></p><p><b>  sda=1;</b></p><p><b>  delay0();</b></p><p><b>  }</b></

22、p><p>  void respons() //應(yīng)答</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p><b>  scl=1;</b></p><p><b>  delay0();

23、</b></p><p>  while((sda==1)&&(i<250))i++;</p><p><b>  scl=0;</b></p><p><b>  delay0();</b></p><p><b>  }</b></p

24、><p>  void init_24c02()//IIC初始化函數(shù)</p><p><b>  {</b></p><p><b>  sda=1;</b></p><p><b>  delay0();</b></p><p><b>  sc

25、l=1;</b></p><p><b>  delay0();</b></p><p><b>  }</b></p><p>  void write_byte(uchar date)//寫一個(gè)字節(jié)函數(shù)</p><p><b>  {</b></p>

26、<p>  uchar i,temp;</p><p>  temp=date;</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  temp=temp<<1;</p><p><b>  sc

27、l=0;</b></p><p><b>  delay0();</b></p><p><b>  sda=CY;</b></p><p><b>  delay0();</b></p><p><b>  scl=1;</b></p&

28、gt;<p><b>  delay0();</b></p><p><b>  }</b></p><p><b>  scl=0;</b></p><p><b>  delay0();</b></p><p><b>  sd

29、a=1;</b></p><p><b>  delay0();</b></p><p><b>  }</b></p><p>  uchar read_byte()//讀一個(gè)字節(jié)函數(shù)</p><p><b>  {</b></p><p>

30、;  uchar i,k;</p><p><b>  scl=0;</b></p><p><b>  delay0();</b></p><p><b>  sda=1;</b></p><p><b>  delay0();</b></p>

31、;<p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p><b>  scl=1;</b></p><p>  delay0();</p><p>  k=(k<<1)|sda;</p><p>

32、<b>  scl=0;</b></p><p>  delay0();</p><p><b>  }</b></p><p><b>  return k;</b></p><p><b>  }</b></p><p>  

33、void write_add(uchar address,uchar date)//指定地址寫一個(gè)字節(jié)</p><p><b>  {</b></p><p><b>  start();</b></p><p>  write_byte(0xa0);</p><p>  respons();<

34、;/p><p>  write_byte(address);</p><p>  respons();</p><p>  write_byte(date);</p><p>  respons();</p><p><b>  stop();</b></p><p><

35、b>  }</b></p><p>  char read_add(uchar address)//指定地址讀一個(gè)字節(jié)</p><p><b>  {</b></p><p>  uchar date;</p><p><b>  start();</b></p>&

36、lt;p>  write_byte(0xa0);</p><p>  respons();</p><p>  write_byte(address);</p><p>  respons();</p><p><b>  start();</b></p><p>  write_byte(

37、0xa1);</p><p>  respons();</p><p>  date=read_byte();</p><p><b>  stop();</b></p><p>  return date;</p><p><b>  }</b></p>&l

38、t;p>  sbit dula=P2^6; //定義鎖存器鎖存端</p><p>  sbit wela=P2^7;</p><p>  sbit rs=P3^5; //定義1602液晶RS端</p><p>  sbit lcden=P3^4;//定義1602液晶LCDEN端</p><p>  sbit rw=P3^6;</

39、p><p>  sbit s1=P3^0; //定義按鍵--功能鍵</p><p>  sbit s2=P3^1;//定義按鍵--增加鍵</p><p>  sbit s3=P3^2;//定義按鍵--減小鍵</p><p>  sbit s4=P3^3; //定義按鍵--riqi功能鍵</p><p>  sb

40、it rd=P3^7;</p><p>  sbit beep=P2^3; //定義蜂鳴器端</p><p>  uchar count,s1num;</p><p>  char miao,shi,fen;</p><p>  uchar n,moon,d,t,s4num,m;</p><p>  uchar cod

41、e table[]=" 2013-12-03 ";//定義初始上電時(shí)液晶默認(rèn)顯示狀態(tài)</p><p>  void delay(uint z) //延時(shí)函數(shù)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  f

42、or(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void di()//蜂鳴器發(fā)聲函數(shù)</p><p><b>  {</b></p><p><b>

43、  beep=0;</b></p><p>  delay(100);</p><p><b>  beep=1;</b></p><p><b>  }</b></p><p>  void write_com(uchar com)//液晶寫命令函數(shù)</p><p&

44、gt;<b>  {</b></p><p><b>  rs=0;</b></p><p><b>  rw=0;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=com;</b>&l

45、t;/p><p><b>  delay(5);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p&g

46、t;<b>  }</b></p><p>  void write_date(uchar date)//液晶寫數(shù)據(jù)函數(shù)</p><p><b>  {</b></p><p><b>  rs=1;</b></p><p><b>  rw=0;</b>

47、</p><p><b>  lcden=0;</b></p><p><b>  P0=date;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=1;</b></p><p&g

48、t;<b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_sfm(uchar add,uchar date)//寫時(shí)分秒函數(shù)</p><p><b&

49、gt;  {</b></p><p>  uchar shi,ge;</p><p>  shi=date/10;//分解一個(gè)2位數(shù)的十位和個(gè)位</p><p>  ge=date%10;</p><p>  write_com(0x80+0x40+add);//設(shè)置顯示位置</p><p>  write

50、_date(0x30+shi);//送去液晶顯示十位</p><p>  write_date(0x30+ge); //送去液晶顯示個(gè)位</p><p><b>  }</b></p><p>  void write_nyr(uchar add,uchar date)//寫年月日函數(shù)</p><p><b>

51、  {</b></p><p>  uchar shi,ge;</p><p>  shi=date/10;//分解一個(gè)2位數(shù)的十位和個(gè)位</p><p>  ge=date%10;</p><p>  write_com(0x80+add);//設(shè)置顯示位置</p><p>  write_date(0x

52、30+shi);//送去液晶顯示十位</p><p>  write_date(0x30+ge); //送去液晶顯示個(gè)位</p><p><b>  }</b></p><p>  void init()//初始化函數(shù)</p><p><b>  {</b></p><p>

53、  uchar num;</p><p>  rd=0; //軟件將矩陣按鍵第4列一端置低用以分解出獨(dú)立按鍵</p><p>  dula=0;//關(guān)閉兩鎖存器鎖存端,防止操作液晶時(shí)數(shù)碼管會(huì)出亂碼</p><p><b>  wela=0;</b></p><p><b>  lcden=0;</b&g

54、t;</p><p>  fen=0; //初始化種變量值</p><p><b>  miao=0;</b></p><p><b>  shi=0;</b></p><p><b>  m=0;</b></p><p><b>  moon

55、=0;</b></p><p><b>  d=0;</b></p><p><b>  n=0;</b></p><p><b>  s4num=0;</b></p><p><b>  count=0;</b></p><

56、;p><b>  s1num=0;</b></p><p>  init_24c02();</p><p>  write_com(0x38);//初始化1602液晶</p><p>  write_com(0x0c);</p><p>  write_com(0x06);</p><p>

57、  write_com(0x01);</p><p>  write_com(0x80);//設(shè)置顯示初始坐標(biāo)</p><p>  for(num=0;num<13;num++)//顯示年月日</p><p><b>  {</b></p><p>  write_date(table[num]);</p&g

58、t;<p><b>  delay(5);</b></p><p><b>  }</b></p><p>  write_com(0x80+0x40+6);//寫出時(shí)間顯示部分的兩個(gè)冒號(hào)</p><p>  write_date(':');</p><p><b

59、>  delay(5);</b></p><p>  write_com(0x80+0x40+9);</p><p>  write_date(':');</p><p><b>  delay(5);</b></p><p>  miao=read_add(1);//首次上電從AT24

60、C02中讀取出存儲(chǔ)的數(shù)據(jù)</p><p>  fen=read_add(2);</p><p>  shi=read_add(3);</p><p>  d=read_add(4);//首次上電從AT24C02中讀取出存儲(chǔ)的數(shù)據(jù)</p><p>  moon=read_add(5);</p><p>  n=read_

61、add(6);</p><p>  m=read_add(7);</p><p>  write_nyr(10,d);//分別送去液晶顯示</p><p>  write_nyr(7,moon);</p><p>  write_nyr(4,n);</p><p>  write_nyr(2,m);</p>

62、<p>  write_sfm(10,miao);//分別送去液晶顯示</p><p>  write_sfm(7,fen);</p><p>  write_sfm(4,shi);</p><p>  TMOD=0x01;//設(shè)置定時(shí)器0工作模式1</p><p>  TH0=(65536-50000)/256;//定時(shí)器裝初

63、值</p><p>  TL0=(65536-50000)%256;</p><p>  EA=1;//開總中斷</p><p>  ET0=1;//開定時(shí)器0中斷</p><p>  TR0=1;//啟動(dòng)定時(shí)器0</p><p><b>  }</b></p><p&g

64、t;  void keyscan()//按鍵掃描函數(shù)</p><p><b>  {</b></p><p>  if(s1==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  i

65、f(s1==0)//確認(rèn)功能鍵被按下</p><p><b>  {</b></p><p>  s1num++;//功能鍵按下次數(shù)記錄</p><p>  while(!s1);//釋放確認(rèn)</p><p>  di();//每當(dāng)有按鍵釋放蜂鳴器發(fā)出滴聲</p><p>  s4num=0;

66、//終止日期調(diào)節(jié)</p><p>  write_com(0x0c);//光標(biāo)不再閃爍</p><p>  if(s1num==1)//第一次被按下時(shí)</p><p><b>  {</b></p><p>  TR0=0; //關(guān)閉定時(shí)器</p><p>  write_com(0x80+0x

67、40+10);//光標(biāo)定位到秒位置</p><p>  write_com(0x0f); //光標(biāo)開始閃爍</p><p><b>  }</b></p><p>  if(s1num==2)//第二次按下光標(biāo)閃爍定位到分鐘位置</p><p><b>  {</b></p><

68、p>  write_com(0x80+0x40+7);write_com(0x0f);</p><p><b>  }</b></p><p>  if(s1num==3)//第三次按下光標(biāo)閃爍定位到小時(shí)位置</p><p><b>  {</b></p><p>  write_com(0x

69、80+0x40+4);write_com(0x0f);</p><p><b>  }</b></p><p>  if(s1num==4)//第四次按下</p><p><b>  {</b></p><p>  s1num=0;//記錄按鍵數(shù)清零</p><p>  wr

70、ite_com(0x0c);//取消光標(biāo)閃爍</p><p>  TR0=1;//啟動(dòng)定時(shí)器使時(shí)鐘開始走</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  i

71、f(s1num!=0)//只有功能鍵被按下后,增加和減小鍵才有效</p><p><b>  {</b></p><p><b>  if(s2==0)</b></p><p><b>  {</b></p><p><b>  delay(5);</b>

72、</p><p>  if(s2==0)//增加鍵確認(rèn)被按下</p><p><b>  {</b></p><p>  while(!s2);//按鍵釋放</p><p>  di();//每當(dāng)有按鍵釋放蜂鳴器發(fā)出滴聲</p><p>  if(s1num==1)//若功能鍵第一次按下</

73、p><p><b>  {</b></p><p>  miao++; //則調(diào)整秒加1</p><p>  if(miao==60)//若滿60后將清零</p><p><b>  miao=0;</b></p><p>  write_sfm(10,miao);//每調(diào)節(jié)一次

74、送液晶顯示一下</p><p>  write_com(0x80+0x40+10);//顯示位置重新回到調(diào)節(jié)處</p><p>  write_add(1,miao);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  if(s1num==2)//若功能鍵第二次按下</p&

75、gt;<p><b>  {</b></p><p>  fen++;//則調(diào)整分鐘加1</p><p>  if(fen==60)//若滿60后將清零</p><p><b>  fen=0;</b></p><p>  write_sfm(7,fen);//每調(diào)節(jié)一次送液晶顯示一下

76、</p><p>  write_com(0x80+0x40+7);//顯示位置重新回到調(diào)節(jié)處</p><p>  write_add(2,fen);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  if(s1num==3)//若功能鍵第三次按下</p><p

77、><b>  {</b></p><p>  shi++;//則調(diào)整小時(shí)加1</p><p>  if(shi==24)//若滿24后將清零</p><p><b>  shi=0;</b></p><p>  write_sfm(4,shi);//每調(diào)節(jié)一次送液晶顯示一下</p>

78、<p>  write_com(0x80+0x40+4);//顯示位置重新回到調(diào)節(jié)處</p><p>  write_add(3,shi);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

79、  }</b></p><p><b>  if(s3==0)</b></p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(s3==0)//確認(rèn)減小鍵被按下</p><p>

80、;<b>  {</b></p><p>  while(!s3);//按鍵釋放</p><p>  di();//每當(dāng)有按鍵釋放蜂鳴器發(fā)出滴聲</p><p>  if(s1num==1)//若功能鍵第一次按下</p><p><b>  {</b></p><p>  m

81、iao--;//則調(diào)整秒減1</p><p>  if(miao==-1)//若減到負(fù)數(shù)則將其重新設(shè)置為59</p><p><b>  miao=59;</b></p><p>  write_sfm(10,miao);//每調(diào)節(jié)一次送液晶顯示一下</p><p>  write_com(0x80+0x40+10);/

82、/顯示位置重新回到調(diào)節(jié)處</p><p>  write_add(1,miao);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  if(s1num==2)//若功能鍵第二次按下</p><p><b>  {</b></p><p>

83、;  fen--;//則調(diào)整分鐘減1</p><p>  if(fen==-1)//若減到負(fù)數(shù)則將其重新設(shè)置為59</p><p><b>  fen=59;</b></p><p>  write_sfm(7,fen);//每調(diào)節(jié)一次送液晶顯示一下</p><p>  write_com(0x80+0x40+7);//

84、顯示位置重新回到調(diào)節(jié)處</p><p>  write_add(2,fen);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  if(s1num==3)//若功能鍵第二次按下</p><p><b>  {</b></p><p> 

85、 shi--;//則調(diào)整小時(shí)減1</p><p>  if(shi==-1)//若減到負(fù)數(shù)則將其重新設(shè)置為23</p><p><b>  shi=23;</b></p><p>  write_sfm(4,shi);//每調(diào)節(jié)一次送液晶顯示一下</p><p>  write_com(0x80+0x40+4);//顯示

86、位置重新回到調(diào)節(jié)處</p><p>  write_add(3,shi);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b&

87、gt;  }</b></p><p><b>  }</b></p><p>  /************************</p><p><b>  時(shí)間調(diào)整</b></p><p>  ************************/</p><p&g

88、t;<b>  //閏年判斷</b></p><p>  uchar nian(uchar n)</p><p><b>  {</b></p><p><b>  uchar y;</b></p><p>  if(n%400==0)</p><p>

89、<b>  {</b></p><p><b>  y=1;</b></p><p><b>  }</b></p><p>  else if(n%100==0)</p><p><b>  {</b></p><p><b

90、>  y=0;</b></p><p><b>  }</b></p><p>  else if(n%4==0)</p><p><b>  {</b></p><p><b>  y=1;</b></p><p><b>

91、  }</b></p><p><b>  else y=0;</b></p><p><b>  return y;</b></p><p><b>  }</b></p><p><b>  //月天數(shù)判斷</b></p>&

92、lt;p>  uchar m_tian(uchar moon)</p><p><b>  {</b></p><p>  uchar y,tian,nm;</p><p>  nm=n+m*100;</p><p>  y=nian(nm);</p><p>  if(moon==2)&l

93、t;/p><p><b>  {</b></p><p><b>  if(y==0)</b></p><p><b>  tian=28;</b></p><p>  else tian=29;</p><p><b>  }</b>

94、</p><p>  else if(moon==4||moon==6||moon==9||moon==11)</p><p><b>  {</b></p><p><b>  tian=30;</b></p><p><b>  }</b></p><p

95、>  else tian=31;</p><p>  return tian;</p><p><b>  }</b></p><p><b>  //鍵盤掃描1</b></p><p>  void keyscan1()</p><p><b>  {<

96、;/b></p><p>  if(s4==0)//日期功能鍵實(shí)現(xiàn)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p><b>  if(s4==0)</b></p><p><b&

97、gt;  {</b></p><p>  s4num++;//s4按下的次數(shù)</p><p>  while(!s4);</p><p><b>  di();</b></p><p>  s1num=0;//終止時(shí)間調(diào)節(jié)</p><p>  write_com(0x0c);//光標(biāo)不

98、再閃爍</p><p>  switch(s4num)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  {</b></p><p><b>  TR0=0;</b&g

99、t;</p><p>  write_com(0x80+10);</p><p>  write_com(0x0f);//光標(biāo)顯示并閃爍</p><p><b>  break;</b></p><p><b>  }</b></p><p>  case 2:write_c

100、om(0x80+7);write_com(0x0f);break;</p><p>  case 3:write_com(0x80+4);write_com(0x0f);break;</p><p>  case 4:write_com(0x80+2);write_com(0x0f);break;</p><p><b>  case 5:</b&g

101、t;</p><p><b>  {</b></p><p><b>  s4num=0;</b></p><p>  write_com(0x0c);//光標(biāo)不再閃爍</p><p><b>  TR0=1;</b></p><p><b>

102、  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

103、  //日期調(diào)整</b></p><p>  if(s4num!=0)</p><p><b>  {</b></p><p><b>  if(s2==0)</b></p><p><b>  {</b></p><p><b>

104、  delay(5);</b></p><p>  if(s2==0)//時(shí)間增加調(diào)整</p><p><b>  {</b></p><p>  while(!s2);</p><p><b>  di();</b></p><p>  if(s4num==1)

105、</p><p><b>  {</b></p><p><b>  d++;</b></p><p>  t=m_tian(moon);</p><p><b>  if(d>t)</b></p><p><b>  d=1;</

106、b></p><p>  write_nyr(10,d);</p><p>  write_com(0x80+10);</p><p>  write_add(4,d);</p><p><b>  }</b></p><p>  if(s4num==2)</p><p&

107、gt;<b>  {</b></p><p><b>  moon++;</b></p><p>  if(moon==13)</p><p><b>  moon=1;</b></p><p>  write_nyr(7,moon);</p><p>

108、  write_com(0x80+7);</p><p>  write_add(5,moon);</p><p><b>  }</b></p><p>  if(s4num==3)</p><p><b>  {</b></p><p><b>  n++;&l

109、t;/b></p><p>  if(n==100)</p><p><b>  n=0;</b></p><p>  write_nyr(4,n);</p><p>  write_com(0x80+4);</p><p>  write_add(6,n);</p><

110、p><b>  }</b></p><p>  if(s4num==4)</p><p><b>  {</b></p><p><b>  m++;</b></p><p>  if(m==100)</p><p><b>  m=0;

111、</b></p><p>  write_nyr(2,m);</p><p>  write_com(0x80+2);</p><p>  write_add(7,m);</p><p><b>  }</b></p><p><b>  }</b></p

112、><p><b>  }</b></p><p>  if(s3==0)//時(shí)間減少調(diào)整</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p><b>  if(s3==0)</b&g

113、t;</p><p><b>  {</b></p><p>  while(!s3);</p><p><b>  di();</b></p><p>  if(s4num==1)</p><p><b>  {</b></p><

114、p>  t=m_tian(moon);</p><p><b>  if(d==1)</b></p><p><b>  d=t+1;</b></p><p><b>  d--;</b></p><p>  write_nyr(10,d);</p><

115、;p>  write_com(0x80+10);</p><p>  write_add(4,d);</p><p><b>  }</b></p><p>  if(s4num==2)</p><p><b>  {</b></p><p>  if(moon==1)

116、</p><p><b>  moon=13;</b></p><p><b>  moon--;</b></p><p>  write_nyr(7,moon);</p><p>  write_com(0x80+7);</p><p>  write_add(5,moon

117、);</p><p><b>  }</b></p><p>  if(s4num==3)</p><p><b>  {</b></p><p><b>  if(n==0)</b></p><p><b>  n=100;</b>

118、;</p><p><b>  n--;</b></p><p>  write_nyr(4,n);</p><p>  write_com(0x80+4);</p><p>  write_add(6,n);</p><p><b>  }</b></p>&

119、lt;p>  if(s4num==4)</p><p><b>  {</b></p><p><b>  if(m==0)</b></p><p><b>  m=100;</b></p><p><b>  m--;</b></p>

120、<p>  write_nyr(2,m);</p><p>  write_com(0x80+2);</p><p>  write_add(7,m);</p><p><b>  }</b></p><p><b>  }</b></p><p><b&

121、gt;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()//主函數(shù)</p><p><b>  {</b></p><p>  init();//首先初始

122、化各數(shù)據(jù)</p><p>  while(1)//進(jìn)入主程序大循環(huán)</p><p><b>  {</b></p><p>  keyscan();//不停的檢測(cè)按鍵是否被按下</p><p>  keyscan1();</p><p><b>  }</b></p&g

123、t;<p><b>  }</b></p><p>  void timer0() interrupt 1//定時(shí)器0中斷服務(wù)程序</p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;//再次裝定時(shí)器初值</p><p>  TL0=

124、(65536-50000)%256;</p><p>  count++;//中斷次數(shù)累加</p><p>  if(count==18) //20次50毫秒為1秒</p><p><b>  {</b></p><p><b>  count=0;</b></p><p&g

125、t;<b>  miao++;</b></p><p>  if(miao==60)//秒加到60則進(jìn)位分鐘</p><p><b>  {</b></p><p>  miao=0;//同時(shí)秒數(shù)清零</p><p><b>  fen++;</b></p>&l

126、t;p>  if(fen==60)//分鐘加到60則進(jìn)位小時(shí)</p><p><b>  {</b></p><p>  fen=0;//同時(shí)分鐘數(shù)清零</p><p><b>  shi++;</b></p><p>  if(shi==24)//小時(shí)加到24則小時(shí)清零</p>

127、<p><b>  {</b></p><p><b>  shi=0;</b></p><p><b>  d++;</b></p><p>  t=m_tian(moon);</p><p><b>  if(d>t)</b><

128、/p><p><b>  {</b></p><p><b>  d=1;</b></p><p><b>  moon++;</b></p><p>  if(moon==13)</p><p><b>  {</b></p&g

129、t;<p><b>  moon=1;</b></p><p><b>  n++;</b></p><p>  if(n==100)</p><p><b>  {</b></p><p><b>  n=0;</b></p>

130、<p><b>  m++;</b></p><p>  if(m==100)</p><p><b>  m=0;</b></p><p>  write_nyr(2,m);//bainian若變化則重新寫入</p><p>  write_add(7,m);//數(shù)據(jù)改變立即存入24C

131、02</p><p><b>  }</b></p><p>  write_nyr(4,n);//nian若變化則重新寫入</p><p>  write_add(6,n);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  writ

132、e_nyr(7,moon);//yue若變化則重新寫入</p><p>  write_add(5,moon);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  write_nyr(10,d);//tian若變化則重新寫入</p><p>  write_add(4,d);//數(shù)

133、據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  write_sfm(4,shi);//小時(shí)若變化則重新寫入</p><p>  write_add(3,shi);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><

134、;p>  write_sfm(7,fen);//分鐘若變化則重新寫入</p><p>  write_add(2,fen);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p>  write_sfm(10,miao);//秒若變化則重新寫入</p><p>  write_ad

135、d(1,miao);//數(shù)據(jù)改變立即存入24C02</p><p><b>  }</b></p><p><b>  }</b></p><p>  智能儀器設(shè)計(jì)實(shí)習(xí)心得</p><p>  此次設(shè)計(jì)主要能夠完成實(shí)時(shí)日歷時(shí)鐘顯示,實(shí)現(xiàn)在單片機(jī)系統(tǒng)中設(shè)置、獲取、記錄實(shí)時(shí)的日歷時(shí)鐘信息并通過(guò)LED顯

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論