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

下載本文檔

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

文檔簡介

1、<p>  專業(yè)綜合課程設(shè)計(jì)報(bào)告</p><p>  題目:智能電子鐘(LCD)</p><p>  題目智能電子鐘(LCD)</p><p><b>  設(shè)計(jì)要求:</b></p><p>  制作一個(gè)LCD顯示的智能電子鐘:</p><p>  (1) 計(jì)時(shí):秒、分、時(shí)、日、月、年、

2、星期。</p><p>  (2) 閏年自動(dòng)判別。</p><p>  (3) 時(shí)間、年、月、日、星期交替顯示。</p><p>  (5) 自定任意時(shí)刻自動(dòng)開/關(guān)屏。</p><p>  (6) 計(jì)時(shí)精度:誤差≤1秒/月(具有微調(diào)設(shè)置)。</p><p><b>  方案論證:</b></

3、p><p>  本實(shí)驗(yàn)可采用并行時(shí)鐘芯片(DS12C887)和串行時(shí)鐘芯片(DS1302),DS1302要用戶自己安裝后備電池和串口通訊,要32.768KHz的晶振,而DS12C887自帶后備電池,并口通訊,無需外圍元件,并且DS12C887多了一個(gè)字節(jié)來記錄世紀(jì)使用的,處在RAM的32H單元,但是其他的寄存器定義都相同。由于本實(shí)驗(yàn)用到了STC12C5A60S2直插40P封裝的單片機(jī)、nokia5110液晶屏、獨(dú)立式

4、按鍵、四路2輸入與門并且都是直插的,而且在實(shí)驗(yàn)室做PCB只能是單層板,為了節(jié)約空間和簡化電路于是就選用了串行時(shí)鐘芯片DS1302。</p><p><b>  理論設(shè)計(jì):</b></p><p>  用CAD軟件繪制的硬件原理圖</p><p>  電源和程序下載端口,此部分的USB可提供電源和下載端口適用于USB下載端口,DOWN端口適用于四

5、角插針式下載、BAT為備用電源端口。</p><p>  CPU主控部分,此部分采用的是高速51系列的STC12C5A60S2的單片機(jī),該芯片不僅運(yùn)行速度快穩(wěn)定驅(qū)動(dòng)能力更大,還為用戶提供了內(nèi)部集成8位/10位可調(diào)分辨率ADC模塊(在此設(shè)計(jì)中有用到),1KB可擦寫EEPROM本設(shè)計(jì)中用其設(shè)計(jì)成可調(diào)鬧鐘功能存放鬧鐘值。</p><p>  此圖為串行數(shù)據(jù)nokia5110的LCD顯示器模塊,采

6、用可控背光和可控電源有很好的節(jié)能效果。該顯示器能顯示漢字,字符,圖片、并且處理顯示數(shù)據(jù)速度快。</p><p>  此模塊為串行數(shù)據(jù)實(shí)時(shí)時(shí)鐘模塊,此模塊采用的是達(dá)拉斯公司生產(chǎn)的DS1302具有閏年補(bǔ)償。</p><p>  此圖為按鍵中斷模塊,在此模塊中每個(gè)獨(dú)立式按鍵都能申請(qǐng)外部中斷及時(shí)處理按鍵按下的值來執(zhí)行用戶的操作。</p><p>  此圖為蜂鳴器模塊此模塊用

7、于鬧鐘鈴聲設(shè)計(jì),和開機(jī)提示。</p><p><b>  此圖為PCB版圖</b></p><p>  此圖為PCB打印預(yù)覽</p><p><b>  軟件流程圖</b></p><p>  yes其他鍵yes</p><p><b>

8、;  按下目錄鍵</b></p><p><b>  NO</b></p><p><b>  功能1(時(shí)間)</b></p><p><b>  功能2(溫度)</b></p><p><b>  功能3(電壓)</b></p>

9、;<p><b>  功能4(鬧鐘)</b></p><p><b>  程序清單</b></p><p><b>  完整C程序源代碼</b></p><p>  /************************************************************

10、**************************</p><p>  * 主程序:頂層程序 * </p><p>  * 顯示默認(rèn)功能:時(shí)間日期顯示; *</p><p>  * 調(diào)用子程序; *&l

11、t;/p><p>  * *</p><p>  ***************************************************************************************/</p><p>  # include <intrins.h></p>&

12、lt;p>  # include "zimo.h" //字模程序;</p><p>  # include "nokia5110.h"//5110驅(qū)動(dòng)程序;</p><p>  # include "ds1302.h" //ds1302驅(qū)動(dòng)程序;</p><p>  # include "

13、key.h" //按鍵掃描程序;</p><p>  # include "printf.h" //顯示函數(shù);</p><p>  # include "power.h" //電源模塊;</p><p>  # include "main.h" //引腳定義;</p>

14、<p>  # include "delay.h" //延時(shí)函數(shù);</p><p>  # include "macroandconst.h"//數(shù)據(jù)類型宏定義;</p><p>  # include "ADC.H" //ADC電壓測(cè)量</p><p>  # include &q

15、uot;ds18b20.h" //溫度模塊;</p><p>  void main()</p><p><b>  {</b></p><p>  system_inint();//系統(tǒng)初始化;</p><p>  //Set_RTC();</p><p><b>

16、  while(1)</b></p><p><b>  {</b></p><p>  checkclock();</p><p>  caidan(); //菜單顯示;</p><p>  if(menue==0)</p><p><b>  {</b>

17、;</p><p><b>  if(ok==1)</b></p><p><b>  { </b></p><p>  LCD_clear(); //清屏幕</p><p>  while(menue==0) //由此進(jìn)入時(shí)鐘功能</p><p><b> 

18、 {</b></p><p><b>  ok=0;</b></p><p><b>  logo();</b></p><p>  Read_RTC();//讀取時(shí)鐘;</p><p>  data_change();//時(shí)鐘數(shù)據(jù)處理</p><p>  t

19、iaozheng_flag();</p><p>  date_time(); //顯示年月日時(shí)分秒;</p><p>  week();//星期處理;</p><p>  set_date_time();//設(shè)置改變時(shí)間和日期;</p><p>  powervcc();</p><p>  checkclock(

20、);</p><p><b>  }</b></p><p>  LCD_clear(); //清屏幕</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(menue==1)//由此進(jìn)入溫

21、度檢測(cè)功能</p><p><b>  {</b></p><p><b>  if(ok==1)</b></p><p><b>  {</b></p><p>  LCD_clear(); //清屏幕</p><p>  while(menue==

22、1)</p><p><b>  {</b></p><p>  temperatuercheck();</p><p>  ok=0;</p><p><b>  }</b></p><p>  LCD_clear(); //清屏幕</p><

23、;p><b>  }</b></p><p><b>  }</b></p><p>  elseif(menue==2) //由此進(jìn)入電壓測(cè)量功能</p><p><b>  {</b></p><p><b>  if(ok==1)</b>&

24、lt;/p><p><b>  { </b></p><p>  LCD_clear(); //清屏幕</p><p>  while(menue==2)</p><p><b>  {</b></p><p>  power();//電量檢測(cè) </p><

25、p>  ok=0;</p><p><b>  }</b></p><p>  LCD_clear(); //清屏幕</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(me

26、nue==3)//由此進(jìn)入鬧鐘功能</p><p><b>  {</b></p><p><b>  if(ok==1)</b></p><p><b>  { </b></p><p>  LCD_clear(); //清屏幕</p><p> 

27、 while(menue==3)</p><p><b>  {</b></p><p><b>  clock();</b></p><p><b>  ok=0;</b></p><p>  checkclock();</p><p>&l

28、t;b>  }</b></p><p>  LCD_clear(); //清屏幕</p><p><b>  }</b></p><p><b>  }</b></p><p>  else {LCD_clear(); caidan();}</p><p>

29、;<b>  }</b></p><p><b>  }</b></p><p>  void extern0() interrupt 0 /*外部中斷0中斷函數(shù)定義;*/</p><p><b>  { </b></p><p>  key(); </p&

30、gt;<p><b>  }</b></p><p>  /**************************************************************************************</p><p>  * 子程序:底層程序 * &

31、lt;/p><p>  * 功能:時(shí)間日期數(shù)據(jù)處理; *</p><p>  * *</p><p>  * *</p><p>  ************************************

32、***************************************************/</p><p>  # include <intrins.h></p><p>  # include "macroandconst.h"</p><p>  # include "stc12c5a60s2.h"

33、;</p><p>  # include "nokia5110.h"</p><p>  sbit SCK = P0^2;//DS1302時(shí)鐘;</p><p>  sbit SDA = P0^1;//DS1302數(shù)據(jù);</p><p>  sbit RST = P0^0;// DS1302復(fù)位;</p&g

34、t;<p>  uchar l_tmpDate[]={0,0,0,1,1,1,13};//秒分時(shí)日月周年08-05-15 12:00:00</p><p>  uchar l_tmpdisplay[13];</p><p>  code uchar Write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分時(shí)

35、日月周年 最低位讀寫位</p><p>  code uchar Read_RTC_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; </p><p>  /******************************************************************/</p><p>  /*

36、 寫一個(gè)字節(jié) */</p><p>  /******************************************************************/</p><p>  void Write_Ds1302_Byte(unsigned char temp) &

37、lt;/p><p><b>  {</b></p><p>  unsigned char i;</p><p>  for (i=0;i<8;i++) //循環(huán)8次 寫入數(shù)據(jù)</p><p><b>  { </b></p><p><b>  SCK

38、=0;</b></p><p>  SDA=temp&0x01; //每次傳輸?shù)妥止?jié) </p><p>  temp>>=1; //右移一位</p><p><b>  SCK=1;</b></p><p><b>  }</b></p>

39、<p><b>  } </b></p><p>  /******************************************************************/</p><p>  /* 寫入DS1302 */</p

40、><p>  /******************************************************************/</p><p>  void Write_Ds1302( unsigned char address,unsigned char dat ) </p><p><b>  {</b><

41、/p><p><b>  RST=0;</b></p><p><b>  _nop_();</b></p><p><b>  SCK=0;</b></p><p><b>  _nop_();</b></p><p><b&g

42、t;  RST=1;</b></p><p>  _nop_(); //啟動(dòng)</p><p>  Write_Ds1302_Byte(address);//發(fā)送地址</p><p>  Write_Ds1302_Byte(dat);//發(fā)送數(shù)據(jù)</p><p>  RST=0;

43、 //恢復(fù)</p><p><b>  }</b></p><p>  /******************************************************************/</p><p>  /* 讀出DS1302數(shù)據(jù)

44、 */</p><p>  /******************************************************************/</p><p>  unsigned char Read_Ds1302 ( uchar address )</p><p><b>  {</b><

45、;/p><p>  unsigned char i,temp=0x00;</p><p><b>  RST=0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b

46、>  SCK=0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  RST=1;</b></p><p><b>  _nop_();</b>

47、</p><p><b>  _nop_();</b></p><p>  Write_Ds1302_Byte(address);</p><p>  for (i=0;i<8;i++) //循環(huán)8次 讀取數(shù)據(jù)</p><p><b>  {</b></p><p&

48、gt;<b>  if(SDA)</b></p><p><b>  {</b></p><p>  temp|=0x80;</p><p>  }//每次傳輸?shù)妥止?jié)</p><p>  temp>>=1;//右移一位</p><p><b>

49、;  SCK=1;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  SCK=0;</b></p><p><b>  } </b></p>

50、;<p><b>  RST=0;</b></p><p>  _nop_(); //以下為DS1302復(fù)位的穩(wěn)定時(shí)間</p><p><b>  _nop_();</b></p><p><b>  RST=0;</b></p><p>&

51、lt;b>  SCK=0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();<

52、/b></p><p><b>  SCK=1;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  SDA=0;</b></p><p&

53、gt;<b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  SDA=1;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();

54、</b></p><p>  return (temp);//返回</p><p><b>  }</b></p><p>  /******************************************************************/</p><p>  /*

55、 讀時(shí)鐘數(shù)據(jù) */</p><p>  /******************************************************************/</p><p>  void Read_RTC(void) //讀取 日歷</p><p

56、><b>  {</b></p><p>  unsigned char i,*p;</p><p>  p=Read_RTC_address; //地址傳遞</p><p>  for(i=0;i<7;i++) //分7次讀取 秒分時(shí)日月周年</p><p><b>  {&l

57、t;/b></p><p>  l_tmpDate[i]=Read_Ds1302(*p);</p><p><b>  p++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /****

58、**************************************************************/</p><p>  /* 設(shè)定時(shí)鐘數(shù)據(jù) */</p><p>  /************************************************

59、******************/</p><p>  void Set_RTC(void) //設(shè)定 日歷</p><p><b>  {</b></p><p>  uchar i,*p,tmp;</p><p>  for(i=0;i<7;i++)</p><p>  {

60、 //BCD處理</p><p>  tmp=l_tmpDate[i]/10;</p><p>  l_tmpDate[i]=l_tmpDate[i]%10;</p><p>  l_tmpDate[i]=l_tmpDate[i]+tmp*16;</p><p><b>  } </b></

61、p><p>  Write_Ds1302(0x8E,0X00); //關(guān)閉寫保護(hù);</p><p>  p=Write_rtc_address;//傳地址</p><p>  for(i=0;i<7;i++)//7次寫入 秒分時(shí)日月周年</p><p><b>  {</b></p><p&

62、gt;  Write_Ds1302(*p,l_tmpDate[i]);</p><p><b>  p++; </b></p><p><b>  }</b></p><p>  Write_Ds1302(0x8E,0x80); //打開寫保護(hù); </p><p><b>  }<

63、/b></p><p>  /**************************************************************************************</p><p>  * 子程序:底層程序 * </p><p>  *

64、 功能:按鍵處理,鍵值顯示; *</p><p>  * *</p><p>  * *</p><p>  ************************************************************

65、***************************/</p><p>  # include "main.h"</p><p>  # include "ds1302.h"</p><p>  # include "nokia5110.h"</p><p>  # include

66、 "delay.h"</p><p>  # include "printf.h"</p><p>  # include "eeprom.h"</p><p>  uchar set=0;//按鍵選擇標(biāo)志位;</p><p>  char key_flag=0;//按鍵加減標(biāo)志位

67、;</p><p>  uchar menue=0;//菜單選擇標(biāo)志位;</p><p>  uchar ok=0;//確認(rèn)標(biāo)志位;</p><p>  char miao,fen,shi,ri,yue,zhou,nian;/*時(shí)間日期數(shù)值標(biāo)志位;*/</p><p>  uchar clocktable[5]; //分,時(shí),星期;&

68、lt;/p><p>  char hour=7;</p><p>  char minute=30;</p><p>  char week2=1;</p><p>  void Delay10ms()//@11.0592MHz</p><p><b>  {</b></p><

69、;p>  unsigned char i, j;</p><p><b>  i = 108;</b></p><p><b>  j = 145;</b></p><p><b>  do</b></p><p><b>  {</b></p

70、><p>  while (--j);</p><p>  } while (--i);</p><p><b>  }</b></p><p>  void key()</p><p><b>  {</b></p><p><b>  EA=

71、0;</b></p><p>  /*判斷選擇按鍵是否按下;如果按下了當(dāng)松開的時(shí)候讓背光打開;set++;*/</p><p>  if(keyswitch==0)</p><p><b>  {</b></p><p>  Delay10ms();</p><p>  if(key

72、switch==0) </p><p><b>  { </b></p><p>  Delay10ms();</p><p>  while(keyswitch==0);</p><p>  LCD_BLA=1;</p><p>  if(set>8)set=0;</p

73、><p><b>  set++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*up和down按鍵的檢測(cè);加減標(biāo)志位*/</p><p>  if(keyup==0)</p>

74、<p>  {Delay10ms();</p><p>  if(keyup==0)</p><p><b>  { </b></p><p>  LCD_BLA=1;</p><p>  Delay10ms();</p><p>  while(keyup==0);

75、</p><p>  key_flag++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(keydown==0)</p><p>  {Delay10ms();</p><p>  if(

76、keydown==0)</p><p><b>  { </b></p><p>  LCD_BLA=1;</p><p>  Delay10ms();</p><p>  while(keydown==0);</p><p>  key_flag--;</p><p&g

77、t;<b>  }</b></p><p><b>  }</b></p><p>  if(keymenue==0)</p><p><b>  {</b></p><p>  Delay10ms();</p><p>  if(keymenue==0

78、) //菜單選擇標(biāo)志位;</p><p>  { </p><p>  Delay10ms();</p><p>  while(keymenue==0);</p><p>  LCD_BLA=1;</p><p><b>  menue++;</b></p&g

79、t;<p>  if(menue>3)menue=0;</p><p><b>  }</b></p><p>  } if(keyok==0)</p><p><b>  {</b></p><p>  Delay10ms();</p><p>  if

80、(keyok==0) //確認(rèn)標(biāo)志位;</p><p>  {Delay10ms(); </p><p>  while(keyok==0);</p><p><b>  ok++;</b></p><p>  if(ok>1)ok=0;</p><p>  set=0;L

81、CD_BLA=0;TR0 = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(set>=2)TR0 = 0;</p><p><b>  EA=1;</b></p><p><b

82、>  }</b></p><p>  void set_date_time()</p><p><b>  {</b></p><p>  if(set==2)</p><p><b>  {</b></p><p>  //while(keyup==0

83、|keydown==0);</p><p><b>  {</b></p><p>  miao=l_tmpdisplay[10]*10+l_tmpdisplay[11];</p><p>  miao=miao+key_flag;</p><p>  if((key_flag<0)&(miao==0))

84、miao=59;</p><p>  if(miao>59)miao=0;</p><p>  miao=miao%10+(miao/10)*16;</p><p>  Write_Ds1302(0x8E,0x00);</p><p>  Write_Ds1302(0x80,miao);</p><p>  W

85、rite_Ds1302(0x8E,0x80);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(set==3)</p><p><b>  { </b></p><p>  // whil

86、e(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  fen=l_tmpdisplay[8]*10+l_tmpdisplay[9];</p><p>  fen=fen+key_flag;</p><p>  if(fen>59)</p><

87、;p><b>  {</b></p><p><b>  fen=0;</b></p><p><b>  }</b></p><p>  if((key_flag<0)&&(fen<0))</p><p><b>  {</b

88、></p><p><b>  fen=59;</b></p><p><b>  }</b></p><p>  fen=fen%10+(fen/10)*16;</p><p>  Write_Ds1302(0x8E,0x00);</p><p>  Write_Ds

89、1302(0x82,fen);</p><p>  Write_Ds1302(0x8E,0x80);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(set==4)</p><p><b>  {</

90、b></p><p>  // while(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  shi=l_tmpdisplay[6]*10+l_tmpdisplay[7];</p><p>  shi=shi+key_flag;</p><

91、p>  if(shi>23)shi=0;</p><p>  if((key_flag<0)&&(shi<0))shi=23;</p><p>  shi=shi%10+(shi/10)*16;</p><p>  Write_Ds1302(0x8E,0x00);</p><p>  Write_Ds1

92、302(0x84,shi);</p><p>  Write_Ds1302(0x8E,0x80);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(set==5)</p><p><b>  { <

93、;/b></p><p>  // while(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  ri=l_tmpdisplay[4]*10+l_tmpdisplay[5];</p><p>  ri=ri+key_flag;</p><

94、;p>  if(ri>31)ri=1;</p><p>  if((key_flag<0)&&(ri<1))ri=31;</p><p>  ri=ri%10+(ri/10)*16;</p><p>  Write_Ds1302(0x8E,0x00);</p><p>  Write_Ds1302(0x

95、86,ri);</p><p>  Write_Ds1302(0x8E,0x80);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(set==6)</p><p><b>  {</b>&l

96、t;/p><p>  //while(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  yue=l_tmpdisplay[2]*10+l_tmpdisplay[3];</p><p>  yue=yue+key_flag;</p><p>  i

97、f(yue>12)yue=1;</p><p>  if((key_flag<0)&&(yue<1))yue=12;</p><p>  yue=yue%10+(yue/10)*16;</p><p>  Write_Ds1302(0x8E,0x00);</p><p>  Write_Ds1302(0x88

98、,yue);</p><p>  Write_Ds1302(0x8E,0x80);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(set==7)</p><p><b>  {</b><

99、;/p><p>  //while(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  zhou=l_tmpdisplay[12];</p><p>  zhou=zhou+key_flag;</p><p>  if(zhou>7)zhou

100、=1;</p><p>  if((key_flag<0)&&(zhou<1))zhou=7;</p><p>  zhou=zhou%10+(zhou/10)*16;</p><p>  Write_Ds1302(0x8E,0x00);</p><p>  Write_Ds1302(0x8A,zhou);<

101、/p><p>  Write_Ds1302(0x8E,0x80);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(set==8)</p><p><b>  {</b></p>&

102、lt;p>  //while(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  nian=l_tmpdisplay[0]*10+l_tmpdisplay[1]+key_flag;;</p><p>  if(nian>79)nian=0;</p><p&g

103、t;  if((key_flag<0)&&(nian<0))nian=79;</p><p>  nian=nian%10+(nian/10)*16;</p><p>  Write_Ds1302(0x8E,0x00);</p><p>  Write_Ds1302(0x8C,nian);</p><p>  Wr

104、ite_Ds1302(0x8E,0x80);</p><p><b>  }</b></p><p><b>  }</b></p><p>  key_flag=0;</p><p><b>  }</b></p><p>  void caidan

105、()</p><p><b>  {</b></p><p>  uchar counter;</p><p>  uchar function;</p><p>  /*光標(biāo)顯示位置控制*/</p><p>  if(menue==0)</p><p><b>

106、  {</b></p><p>  LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanzi(0,0,3);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,10);</p><p><b>  }</b></p><p&

107、gt;  else if(menue==1)</p><p><b>  {</b></p><p>  LCD_write_hanzi(0,0,10);Delay1ms(120);LCD_write_hanzi(0,2,3);Delay1ms(120);LCD_write_hanzi(0,4,10);LCD_write_hanzi(4,0,10);</p>

108、;<p><b>  }</b></p><p>  else if(menue==2)</p><p><b>  {</b></p><p>  LCD_write_hanzi(0,2,10);Delay1ms(120);LCD_write_hanzi(0,4,3);Delay1ms(120);LCD_w

109、rite_hanzi(0,0,10);LCD_write_hanzi(4,0,10);</p><p><b>  }</b></p><p>  else if(menue==3) </p><p>  {LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanzi(0,0,10);Delay1m

110、s(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,28);}</p><p><b>  else</b></p><p><b>  {</b></p><p>  LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanz

111、i(0,0,3);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,10);</p><p><b>  }</b></p><p>  for(function=0;function<2;function++)</p><p><b>  {</b>

112、</p><p>  LCD_write_hanzi(function+1,0,function+4);</p><p>  LCD_write_hanzi(function+1,2,function+6);</p><p>  LCD_write_hanzi(function+1,4,function+8);</p><p><b&g

113、t;  }</b></p><p><b>  if(set<2)</b></p><p><b>  { </b></p><p><b>  TR0 = 1;</b></p><p>  if(TF0==1)</p><p>&l

114、t;b>  {</b></p><p>  counter++;</p><p><b>  TF0=0;</b></p><p><b>  }</b></p><p>  if(counter==100)</p><p><b>  {<

115、/b></p><p>  counter=0;LCD_BLA=0;TR0 = 0;</p><p>  if(menue==0)ok=1;</p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }&l

116、t;/b></p><p><b>  /*鬧鐘程序*/</b></p><p>  void clock()</p><p><b>  {</b></p><p>  Read_RTC();//讀取時(shí)鐘;</p><p>  data_change();//時(shí)鐘數(shù)

117、據(jù)處理</p><p>  if(set==2)</p><p><b>  {</b></p><p>  //while(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  minute+=key_flag;&

118、lt;/p><p>  if((key_flag<0)&(minute==0))minute=59;</p><p>  if(minute>59)minute=0;</p><p>  EA=0;//使用iap功能時(shí)關(guān)閉中斷;</p><p>  hour=R_EROM(1,2);//讀鬧鐘小時(shí)數(shù)據(jù);</p>

119、<p>  week2=R_EROM(1,3);//讀鬧鐘分?jǐn)?shù)據(jù);</p><p>  C_EROM(1);</p><p>  W_EROM(1,1,minute);//寫鬧鐘分?jǐn)?shù)據(jù);</p><p>  W_EROM(1,2,hour); //寫鬧鐘小時(shí)數(shù)據(jù);</p><p>  W_EROM(1,3,week2);//寫鬧鐘

120、星期數(shù)據(jù);</p><p>  EA=1;//不使用iap功能時(shí)打開中斷;</p><p><b>  }</b></p><p>  key_flag=0;</p><p><b>  }</b></p><p>  if(set==3)</p><p&

121、gt;<b>  { </b></p><p>  // while(keyup==0||keydown==0);</p><p><b>  {</b></p><p>  hour=hour+key_flag;</p><p>  if(hour>23)hour=0;</p

122、><p>  if((key_flag<0)&&(hour<0))hour=23;</p><p><b>  }</b></p><p>  EA=0;//使用iap功能時(shí)關(guān)閉中斷 </p><p>  minute=R_EROM(1,1);</p><p>  week

123、2=R_EROM(1,3);</p><p>  C_EROM(1);</p><p>  W_EROM(1,1,minute);</p><p>  W_EROM(1,2,hour);</p><p>  W_EROM(1,3,week2);</p><p>  EA=1;//不使用iap功能時(shí)打開中斷;</p

124、><p>  key_flag=0;</p><p><b>  }</b></p><p>  if(set==4)</p><p><b>  {</b></p><p>  // while(keyup==0||keydown==0);</p><p

125、><b>  {</b></p><p>  week2=week2+key_flag;</p><p>  if(week2>7)week2=1;</p><p>  if((key_flag<0)&&(week2<1))week2=7;</p><p><b>  }

126、</b></p><p>  EA=0;//使用iap功能時(shí)關(guān)閉中斷</p><p>  minute=R_EROM(1,1);</p><p>  hour=R_EROM(1,2);</p><p>  C_EROM(1);</p><p>  W_EROM(1,1,minute);</p>

127、<p>  W_EROM(1,2,hour);</p><p>  W_EROM(1,3,week2);</p><p>  EA=1;//不使用iap功能時(shí)打開中斷;</p><p>  key_flag=0;</p><p><b>  }</b></p><p>  EA=0

128、;//使用iap功能時(shí)關(guān)閉中斷</p><p>  minute=R_EROM(1,1);</p><p>  hour=R_EROM(1,2);</p><p>  week2=R_EROM(1,3);</p><p>  EA=1;//不使用iap功能時(shí)打開中斷;</p><p>  clocktable[0]=m

129、inute/10;//分十位;</p><p>  clocktable[1]=minute%10;//分個(gè)位</p><p>  clocktable[2]=hour/10; //時(shí)十位</p><p>  clocktable[3]=hour%10; //時(shí)個(gè)位</p><p>  clocktable[4]=week2; //星

130、期;</p><p>  LCD_write_hanzi(2,0,28);</p><p>  LCD_write_shu(1,2,clocktable[2]);</p><p>  LCD_write_shu(2,2,clocktable[3]);//時(shí)</p><p>  LCD_write_shu(3,2,64);</p>

131、<p>  LCD_write_shu(4,2,clocktable[0]);</p><p>  LCD_write_shu(5,2,clocktable[1]);//分;</p><p>  if(clocktable[4]==1)</p><p><b>  {</b></p><p>  LCD_wr

132、ite_6x8shu(10,3,23);</p><p>  LCD_write_6x8shu(11,3,25);</p><p>  LCD_write_6x8shu(12,3,24);</p><p><b>  }</b></p><p>  if(clocktable[4]==2)</p><

133、;p><b>  {</b></p><p>  LCD_write_6x8shu(10,3,30);</p><p>  LCD_write_6x8shu(11,3,31);</p><p>  LCD_write_6x8shu(12,3,15);</p><p><b>  }</b>&

134、lt;/p><p>  if(clocktable[4]==3)</p><p><b>  {</b></p><p>  LCD_write_6x8shu(10,3,33);</p><p>  LCD_write_6x8shu(11,3,15);</p><p>  LCD_write_6x8s

135、hu(12,3,14);</p><p><b>  }</b></p><p>  if(clocktable[4]==4)</p><p><b>  {</b></p><p>  LCD_write_6x8shu(10,3,30);</p><p>  LCD_wr

136、ite_6x8shu(11,3,18);</p><p>  LCD_write_6x8shu(12,3,31);</p><p><b>  }</b></p><p>  if(clocktable[4]==5)</p><p><b>  {</b></p><p>

137、  LCD_write_6x8shu(10,3,16);</p><p>  LCD_write_6x8shu(11,3,28);</p><p>  LCD_write_6x8shu(12,3,19);</p><p><b>  }</b></p><p>  if(clocktable[4]==6)</p

138、><p><b>  {</b></p><p>  LCD_write_6x8shu(10,3,29);</p><p>  LCD_write_6x8shu(11,3,11);</p><p>  LCD_write_6x8shu(12,3,30);</p><p><b>  }<

139、;/b></p><p>  if(week2==7)</p><p><b>  {</b></p><p>  LCD_write_6x8shu(10,3,29);</p><p>  LCD_write_6x8shu(11,3,31);</p><p>  LCD_write_6x8s

140、hu(12,3,24);</p><p><b>  }</b></p><p>  switch(set)</p><p><b>  {</b></p><p>  case 0: LCD_write_6x8shu(10,4,96);LCD_write_6x8shu(11,4,96);LCD_

141、write_6x8shu(12,4,96);LCD_write_6x8shu(13,4,96);break;</p><p>  case 1: LCD_write_6x8shu(10,4,96);LCD_write_6x8shu(11,4,96);LCD_write_6x8shu(12,4,96);LCD_write_6x8shu(13,4,96);break;</p><p>  ca

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論