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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目錄</b></p><p><b>  1.引言2</b></p><p>  1.1設計任務與要求2</p><p>  1.2數字鐘得實用價值和理論意義2</p><p>  1.3設計所用器件簡介3</p><p>  1.3.1

2、 單片機簡介3</p><p>  1.3.2 1602LCD的基本參數及引腳功能3</p><p><b>  2.設計內容7</b></p><p>  3.程序設計及硬件電路8</p><p>  3.1原理圖(protues)8</p><p>  3.2原理圖(protel)

3、8</p><p><b>  4.仿真結果9</b></p><p>  5.收獲、體會和建議11</p><p><b>  6.參考文獻11</b></p><p>  7.附:源程序12</p><p><b>  1.引言</b><

4、;/p><p>  近年來隨著計算機在社會領域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關的系統(tǒng),越來越廣泛地應用于自動控制,智能化儀器,儀表,數據采集,軍工產品以及家用電器等各個領域,單片機往往是作為一個核心部件來使用,在根據具體硬件結構,以及針對具體應用對象特點的軟件結合,以作完善。</p>

5、<p>  單片機模塊中最常見的是數字鐘,數字鐘是一種用數字電路技術實現時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。數字鐘是采用數字電路實現對時,分,秒數字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們日常生活中不可少的必需品,由于數字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數字鐘的精度,遠遠超過老式鐘表, 鐘表的

6、數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烘箱、通斷動力設備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘及擴大其應用,有著非?,F實的意義。</p><p>  1.1設計任務與要求</p><p>  1.利用AT89C51定時器設計一個

7、電子時鐘;2.顯示格式位 “XX XX XX”,從左向右分別是:時、分、秒;3.顯示部分用1602LCD顯示屏;4.具有四個調整鍵K0,K1,K2,K3;5.按下相應的鍵可以調整時,分,秒;6.調整到哪一位哪一位閃爍;7.在1602上方顯示“年,月,日,星期”。</p><p>  1.2數字鐘得實用價值和理論意義</p><p>  數字鐘是采用數字電路實現對時,分,秒數字顯示的計時

8、裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們日常生活中不可少的必需品,由于數字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數字鐘的精度,遠遠超過老式鐘表, 鐘表的數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烘箱、通斷動力設備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘

9、及擴大其應用,有著非?,F實的意義。</p><p>  1.3設計所用器件簡介</p><p>  1.3.1 單片機簡介</p><p>  MCS51是指由美國INTEL公司(對了,就是大名鼎鼎的INTEL)生產的一系列單片機的總稱,這一系列單片機包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產品,該系

10、列其它單片機都是在8051的基礎上進行功能的增、減、改變而來的,所以人們習慣于用8051來稱呼MCS51系列單片機,而8031是前些年在我國最流行的單片機,所以很多場合會看到8031的名稱。INTEL公司將MCS51的核心技術授權給了很多其它公司,所以有很多公司在做以8051為核心的單片機,當然,功能或多或少有些改變,以滿足不同的需求,其中89C51就是這幾年在我國非常流行的單片機,它是由美國ATMEL公司開發(fā)生產的。以后我們將用89C

11、51、89S51來完成一系列的實驗。</p><p>  MCS-51系列單片機</p><p>  MCS-51系列單片機分為兩大系列,即51子系列與52子系列。</p><p>  51子系列:基本型,根據片內ROM的配置,對應的芯片為8031、8051、8751、8951</p><p>  52子系列:增強型,根據片內ROM的配置,對

12、應的芯片為8032、8052、8752、8952</p><p>  這兩大系列單片機的主要硬件特性如下表:</p><p>  上表中可以看到,8031、8031、8032、80C32片內是沒有ROM的,對應著上表看,我們可以發(fā)現,51系列的單片機的RAM大小為128B,52系列的RAM大小為256B,51系列的計數器為兩個16位的,52系列的計數器為三個16位計數器。51系列的中斷源為

13、5個,52系列的中斷源為6個。</p><p>  1.3.2 1602LCD的基本參數及引腳功能</p><p>  1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖10-54所示:</p><p>  圖10-54 1602LCD尺寸圖</p><p

14、>  1602LCD主要技術參數:</p><p>  顯示容量:16×2個字符</p><p>  芯片工作電壓:4.5—5.5V</p><p>  工作電流:2.0mA(5.0V)</p><p>  模塊最佳工作電壓:5.0V</p><p>  字符尺寸:2.95×4.35(W

15、15;H)mm</p><p><b>  引腳功能說明</b></p><p>  1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表10-13所示:</p><p><b>  引腳接口說明表</b></p><p>  第1腳:VSS為地電源。</p>

16、;<p>  第2腳:VDD接5V正電源。</p><p>  第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。</p><p>  第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。</p><p>  第5腳:R/W為讀寫信

17、號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。</p><p>  第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數據線。</p><p>  第

18、15腳:背光源正極。</p><p>  第16腳:背光源負極。</p><p>  1602LCD的指令說明及時序</p><p>  1602液晶模塊內部的控制器共有11條控制指令,如表所示:</p><p><b>  控制命令表</b></p><p>  1602液晶模塊的讀寫操作、屏幕

19、和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平)</p><p>  指令1:清顯示,指令碼01H,光標復位到地址00H位置。</p><p>  指令2:光標復位,光標返回到地址00H。</p><p>  指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無

20、效。</p><p>  指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。</p><p>  指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。</p><p>  指令6:功能設置命令 DL:高電

21、平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。</p><p>  指令7:字符發(fā)生器RAM地址設置。</p><p>  指令8:DDRAM地址設置。</p><p>  指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果

22、為低電平表示不忙。</p><p><b>  指令10:寫數據。</b></p><p><b>  指令11:讀數據。</b></p><p>  與HD44780相兼容的芯片時序表如下:</p><p><b>  2.設計內容</b></p><p&

23、gt;  3.程序設計及硬件電路</p><p><b>  程序流程圖</b></p><p>  3.1原理圖(protues)</p><p>  3.2原理圖(protel)</p><p><b>  4.仿真結果</b></p><p>  上電后按下K0開始運行

24、:</p><p><b>  按下K3秒閃爍</b></p><p>  按下K1 閃爍 減一(05調到04)</p><p>  按下K2 加一(04調到05)</p><p>  根據按下K0的次數可以改變閃爍的位置進行分,時,年,月,日,星期的調整</p><p><b>  調

25、整分</b></p><p><b>  調整時</b></p><p><b>  調整年</b></p><p><b>  調整月</b></p><p><b>  調整日</b></p><p><b&g

26、t;  調整星期</b></p><p>  5.收獲、體會和建議</p><p>  單片機數字鐘可以說是一個較小的系統(tǒng),開始時我們覺得通過C語言較容易實現,確實,只實現一個能夠正常走時并且能夠校時的數字鐘是比較容易的。但我們想錯了,畢竟是第一次從總體角度來考慮地完成一個小系統(tǒng),好多的實際性的問題我們沒有考慮,所以造成我們最終設計的數字鐘精度不高,并且存在好多問題,當然問題多

27、了對我們來說是好事,這樣我們在解決更多問題時學會更多解決問題的方法,對我們也算是長長經驗吧。</p><p>  通過這次對數字鐘的設計,讓我了解了設計電路的程序,也讓我了解了關于數字鐘的原理與設計理念,要設計一個完整的電路總要經過多次的失敗才能成功的,在設計中,遇到了許多匪夷所思的問題,一個人就是想破腦子也做不出來,這時候,就需要去詢問老師、和同學探討,共同解決出現的問題,也許就是因為老師的一句提醒、同學的探討

28、中就會豁然開朗。。</p><p>  從這次設計中我也覺得自己還對單片機的功能了解只是個皮毛,單片機強大的功能還等著我們去開發(fā)。通過這次設計,不僅使我學到了知識,讓我對電路設計有了大概的了解;其次,還體會到了團隊精神。總而言之,這次設計是成功的。</p><p><b>  6.參考文獻</b></p><p>  1 楊文龍.單片機原理及應

29、用.西安:西安電子科技大學出版社,1993</p><p>  2 李朝青.單片機原理及接口技術.北京:北京航空航天大學出版社,2003</p><p>  3 胡漢才.單片機原理及系統(tǒng)設計.北京:清華大學出版社,2003</p><p>  4 楊忠煌,黃博俊,李文昌.單芯片8051實務與應用.北京:中國水利水電出版社,2001</p><p&

30、gt;<b>  7.附:源程序</b></p><p>  #include <reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int </p><p>  uchar code table1[]=

31、{" 2011-00-00-MON"};//星期一 MON 星期二 TUE 星期三 WED 星期四 THU 星期五 FRI 星期六 SAT 星期天 SUN </p><p>  uchar code table2[]={" 00:00:00 "};</p><p>  uchar code table[]={'0','

32、;1','2','3','4','5','6','7','8','9'};</p><p>  uchar num,count,miao,fen,xiao,week,day,month,year,shi,ge,flag,num1;</p><p>  sb

33、it LCD_RW=P3^7;</p><p>  sbit LCD_RS=P3^5;</p><p>  sbit LCD_E=P3^4;</p><p>  sbit k1=P1^0;//選擇</p><p>  sbit k2=P1^1;//增加</p><p>  sbit k3=P1^2;//減少</p

34、><p>  sbit k4=P1^3;//開始</p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p>

35、;<p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  //////////////////////////////////////////////////////////////////////////////////////</p><p><b>  

36、///lcd顯示</b></p><p>  void init(void);//初始化函數</p><p>  void write_com(uchar command);//寫指令函數</p><p>  void write_date(uchar dat);//寫數據函數</p><p>  void LCD_disp_ch

37、ar(uchar x,uchar y,uchar dat);//在某個屏幕位置上顯示一個字符,X(0-16),y(1-2)</p><p>  //void LCD_check_busy(void);//檢查忙函數。我沒用到此函數,因為通過率極低。</p><p>  void delay_n40us(uint n);//延時函數</p><p>  //*****

38、***************************</p><p>  //*******初始化函數***************</p><p>  void init(void)</p><p><b>  {</b></p><p>  write_com(0x38);//設置8位格式,2行,5x7</p

39、><p>  write_com(0x0c);//整體顯示,關光標,不閃爍</p><p>  write_com(0x06);//設定輸入方式,增量不移位</p><p>  write_com(0x01);//清除屏幕顯示</p><p>  delay_n40us(100);//實踐證明,用for循環(huán)200次就能可靠完成清屏指令。</

40、p><p><b>  }</b></p><p>  //********************************</p><p>  //********寫指令函數************</p><p>  void write_com(uchar dat)</p><p><b&

41、gt;  {</b></p><p><b>  P2=dat;</b></p><p>  LCD_RS=0;//指令</p><p>  LCD_RW=0;//寫入</p><p>  LCD_E=1;//允許</p><p><b>  LCD_E=0;</b&g

42、t;</p><p>  delay_n40us(1);//實踐證明,我的LCD1602上,用for循環(huán)1次就能完成普通寫指令。</p><p><b>  }</b></p><p>  //*******************************</p><p>  //********寫數據函數*******

43、******</p><p>  void write_date(uchar dat)</p><p><b>  {</b></p><p><b>  P2=dat;</b></p><p>  LCD_RS=1;//數據</p><p>  LCD_RW=0;//寫入&

44、lt;/p><p>  LCD_E=1;//允許</p><p><b>  LCD_E=0;</b></p><p>  delay_n40us(1);</p><p><b>  }</b></p><p>  //******************************

45、**</p><p>  //********延時函數***************</p><p>  void delay_n40us(uint n)</p><p><b>  { uint i;</b></p><p>  uchar j; </p><p>  fo

46、r(i=n;i>0;i--)</p><p>  for(j=0;j<2;j++); //在這個延時循環(huán)函數中我只做了2次循環(huán),</p><p>  } //實踐證明我的LCD1602上普通的指令只需1次循環(huán)就能可靠完成。</p><p>  ///////

47、/////////////////////////////////////////////////////////////////</p><p>  void main()</p><p><b>  {</b></p><p><b>  init();</b></p><p>  write

48、_com(0x80); ///////初始化</p><p>  for(num=0;num<15;num++) ////////顯示年月日</p><p><b>  {</b></p><p>  write_date(table1[num]);</p><p><b>  delay(5)

49、;</b></p><p><b>  }</b></p><p>  write_com(0x80+0x40);</p><p>  for(num=0;num<15;num++) /////////////顯示時間</p><p><b>  {</b></p>

50、<p>  write_date(table2[num]);</p><p><b>  delay(5);</b></p><p><b>  }</b></p><p><b>  while(1)</b></p><p><b>  {</b&g

51、t;</p><p>  if(count==20)//////////計時的數</p><p><b>  {</b></p><p><b>  count=0;</b></p><p><b>  miao++;</b></p><p>  if(

52、miao==60)</p><p><b>  {</b></p><p><b>  miao=0;</b></p><p><b>  fen++;</b></p><p>  if(fen==60)</p><p><b>  {<

53、/b></p><p><b>  fen=0;</b></p><p><b>  xiao++;</b></p><p>  if(xiao==24)</p><p><b>  {</b></p><p><b>  xiao=0;

54、</b></p><p>  week++;if(week==8)week=0;</p><p>  switch(week)</p><p><b>  {</b></p><p>  case 1:write_com(0x80+0x0c);write_date('M');delay

55、(5);</p><p>  write_date('O');delay(5);</p><p>  write_date('N');break;</p><p>  case 2:write_com(0x80+0x0c);write_date('T');delay(5);</p><p>  

56、write_date('U');delay(5);</p><p>  write_date('E');break;</p><p>  case 3:write_com(0x80+0x0c);write_date('W');delay(5);</p><p>  write_date('E');del

57、ay(5);</p><p>  write_date('D');break;</p><p>  case 4:write_com(0x80+0x0c);write_date('T');delay(5);</p><p>  write_date('H');delay(5);</p><p>

58、  write_date('U');break;</p><p>  case 5:write_com(0x80+0x0c);write_date('F');delay(5);</p><p>  write_date('R');delay(5);</p><p>  write_date('I');b

59、reak;</p><p>  case 6:write_com(0x80+0x0c);write_date('S');delay(5);</p><p>  write_date('T');delay(5);</p><p>  write_date('A');break;</p><p> 

60、 case 7:write_com(0x80+0x0c);write_date('S');delay(5);</p><p>  write_date('U');delay(5);</p><p>  write_date('N');break;</p><p><b>  }</b></p

61、><p><b>  day++;</b></p><p>  if((month%2==0&&day==31)||(month%2==1&&day==32&&month!=2)||(((year%4==0&&year%100!=0)||year%400==0)&&month==2&&

62、amp;day==30)||((!(year%4==0&&year%100!=0)||year%400==0)&&month==2&&day==29))</p><p>  {////////////////////判斷每月有多少天</p><p><b>  day=0;</b></p><p>

63、;<b>  month++;</b></p><p>  if(month==13)</p><p><b>  {</b></p><p><b>  month=1;</b></p><p><b>  year++;</b></p>

64、<p>  shi=year/10;</p><p>  ge=year%10;</p><p>  write_com(0x80+0x04);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x03);</p><p>  write_

65、date(table[shi]);</p><p><b>  }</b></p><p>  shi=month/10;</p><p>  ge=month%10;</p><p>  write_com(0x80+0x07);</p><p>  write_date(table[ge])

66、;</p><p>  write_com(0x80+0x06);</p><p>  write_date(table[shi]);</p><p><b>  }</b></p><p>  shi=day/10;</p><p>  ge=day%10;</p><p

67、>  write_com(0x80+0x0a);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x09);</p><p>  write_date(table[shi]);</p><p><b>  }</b></p>&

68、lt;p>  shi=xiao/10;</p><p>  ge=xiao%10;</p><p>  write_com(0x80+0x45);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x44);</p><p>  write_d

69、ate(table[shi]);</p><p><b>  }</b></p><p>  shi=fen/10;</p><p>  ge=fen%10;</p><p>  write_com(0x80+0x48);</p><p>  write_date(table[ge]);<

70、/p><p>  write_com(0x80+0x47);</p><p>  write_date(table[shi]);</p><p><b>  }</b></p><p>  shi=miao/10;</p><p>  ge=miao%10;</p><p>

71、  write_com(0x80+0x4b);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x4a);</p><p>  write_date(table[shi]);</p><p>  }////////////////////////////////////

72、//////顯示目前的年月日和具體時間</p><p>  if(k1==0) ////////////////按鍵K1按下</p><p><b>  {</b></p><p>  delay(10);</p><p><b>  if(k1==0)</b></p><p&g

73、t;<b>  {</b></p><p><b>  TR0=0;</b></p><p><b>  flag++;</b></p><p><b>  num1=0;</b></p><p>  if(flag==8)flag=1;</p>

74、;<p>  switch(flag)</p><p><b>  {</b></p><p>  case 1:write_com(0x80+0x4b);write_com(0x0f);break;</p><p>  case 2:write_com(0x80+0x48);write_com(0x0f);break;<

75、;/p><p>  case 3:write_com(0x80+0x45);write_com(0x0f);break;</p><p>  case 4:write_com(0x80+0x0a);write_com(0x0f);break;</p><p>  case 5:write_com(0x80+0x07);write_com(0x0f);break;&

76、lt;/p><p>  case 6:write_com(0x80+0x04);write_com(0x0f);break;</p><p>  case 7:write_com(0x80+0x0c);write_com(0x0f);break;</p><p>  }////////////////////////時間停止運行 確定調整時間的位置</p>

77、;<p><b>  }</b></p><p>  while(!k1);///////////消抖</p><p><b>  }</b></p><p>  if(k2==0)//////////////////K2鍵按下</p><p><b>  {</b&g

78、t;</p><p>  delay(10);</p><p><b>  if(k2==0)</b></p><p><b>  {</b></p><p><b>  num1++;</b></p><p>  if(num1==60)num1=0;

79、///////////////////60為周期</p><p>  switch(flag)</p><p><b>  {</b></p><p>  case 1:miao=num1;</p><p>  shi=miao/10;</p><p>  ge=miao%10;</p

80、><p>  write_com(0x80+0x4b);////////////////地址</p><p>  write_date(table[ge]);///////////////數據</p><p>  write_com(0x80+0x4a);</p><p>  write_date(table[shi]);break;<

81、/p><p>  case 2:fen=num1;</p><p>  shi=fen/10;</p><p>  ge=fen%10;</p><p>  write_com(0x80+0x48);</p><p>  write_date(table[ge]);</p><p>  

82、write_com(0x80+0x47);</p><p>  write_date(table[shi]);break;</p><p>  case 3:xiao=num1;</p><p>  shi=xiao/10;</p><p>  ge=xiao%10;</p><p>  write_c

83、om(0x80+0x45);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x44);</p><p>  write_date(table[shi]);break;</p><p>  case 4:day=num1;</p><p>  sh

84、i=day/10;</p><p>  ge=day%10;</p><p>  write_com(0x80+0x0a);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x09);</p><p>  write_date(table[shi]

85、);break;</p><p>  case 5:month=num1;</p><p>  shi=month/10;</p><p>  ge=month%10;</p><p>  write_com(0x80+0x07);</p><p>  write_date(table[ge]);</p>

86、<p>  write_com(0x80+0x06);</p><p>  write_date(table[shi]);break;</p><p>  case 6:year=num1;</p><p>  shi=year/10;</p><p>  ge=year%10;</p><p>  wr

87、ite_com(0x80+0x04);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x03);</p><p>  write_date(table[shi]);break;</p><p>  case 7:week=num1;</p><p&g

88、t;  switch(week)</p><p><b>  {</b></p><p>  case 1:write_com(0x80+0x0c);write_date('M');delay(5);</p><p>  write_date('O');delay(5);</p><p>

89、  write_date('N');break;</p><p>  case 2:write_com(0x80+0x0c);write_date('T');delay(5);</p><p>  write_date('U');delay(5);</p><p>  write_date('E');b

90、reak;</p><p>  case 3:write_com(0x80+0x0c);write_date('W');delay(5);</p><p>  write_date('E');delay(5);</p><p>  write_date('D');break;</p><p> 

91、 case 4:write_com(0x80+0x0c);write_date('T');delay(5);</p><p>  write_date('H');delay(5);</p><p>  write_date('U');break;</p><p>  case 5:write_com(0x80+0x0c

92、);write_date('F');delay(5);</p><p>  write_date('R');delay(5);</p><p>  write_date('I');break;</p><p>  case 6:write_com(0x80+0x0c);write_date('S');d

93、elay(5);</p><p>  write_date('T');delay(5);</p><p>  write_date('A');break;</p><p>  case 7:write_com(0x80+0x0c);write_date('S');delay(5);</p><p&g

94、t;  write_date('U');delay(5);</p><p>  write_date('N');break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  }///////////////

95、//////////////////////////是時間加</p><p><b>  }</b></p><p>  while(!k2);</p><p><b>  }</b></p><p>  if(k3==0)//////////////////////////K3按下</p&g

96、t;<p><b>  {</b></p><p>  delay(10);</p><p><b>  if(k3==0)</b></p><p><b>  {</b></p><p>  if(num1==0)num1=60;</p><

97、p><b>  num1--;</b></p><p>  switch(flag)</p><p><b>  {</b></p><p>  case 1:miao=num1;</p><p>  shi=miao/10;</p><p>  ge=miao%

98、10;</p><p>  write_com(0x80+0x4b);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x4a);</p><p>  write_date(table[shi]);break;</p><p>  case 2:

99、fen=num1;</p><p>  shi=fen/10;</p><p>  ge=fen%10;</p><p>  write_com(0x80+0x48);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x47);</

100、p><p>  write_date(table[shi]);break;</p><p>  case 3:xiao=num1;</p><p>  shi=xiao/10;</p><p>  ge=xiao%10;</p><p>  write_com(0x80+0x45);</p>

101、<p>  write_date(table[ge]);</p><p>  write_com(0x80+0x44);</p><p>  write_date(table[shi]);break;</p><p>  case 4:day=num1;</p><p>  shi=day/10;</p><p

102、>  ge=day%10;</p><p>  write_com(0x80+0x0a);</p><p>  write_date(table[ge]);</p><p>  write_com(0x80+0x09);</p><p>  write_date(table[shi]);break;</p><p&

103、gt;  case 5:month=num1;</p><p>  shi=month/10;</p><p>  ge=month%10;</p><p>  write_com(0x80+0x07);</p><p>  write_date(table[ge]);</p><p>  write_com(0x8

104、0+0x06);</p><p>  write_date(table[shi]);break;</p><p>  case 6:year=num1;</p><p>  shi=year/10;</p><p>  ge=year%10;</p><p>  write_com(0x80+0x04);</p&

105、gt;<p>  write_date(table[ge]);</p><p>  write_com(0x80+0x03);</p><p>  write_date(table[shi]);break;</p><p>  case 7:week=num1;</p><p>  switch(week)</p>

106、<p><b>  {</b></p><p>  case 1:write_com(0x80+0x0c);write_date('M');delay(5);</p><p>  write_date('O');delay(5);</p><p>  write_date('N');

107、break;</p><p>  case 2:write_com(0x80+0x0c);write_date('T');delay(5);</p><p>  write_date('U');delay(5);</p><p>  write_date('E');break;</p><p>

108、  case 3:write_com(0x80+0x0c);write_date('W');delay(5);</p><p>  write_date('E');delay(5);</p><p>  write_date('D');break;</p><p>  case 4:write_com(0x80+0x0

109、c);write_date('T');delay(5);</p><p>  write_date('H');delay(5);</p><p>  write_date('U');break;</p><p>  case 5:write_com(0x80+0x0c);write_date('F');

110、delay(5);</p><p>  write_date('R');delay(5);</p><p>  write_date('I');break;</p><p>  case 6:write_com(0x80+0x0c);write_date('S');delay(5);</p><p&

111、gt;  write_date('T');delay(5);</p><p>  write_date('A');break;</p><p>  case 7:write_com(0x80+0x0c);write_date('S');delay(5);</p><p>  write_date('U'

112、);delay(5);</p><p>  write_date('N');break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  }/////////////////////////////是時間減</p&g

113、t;<p><b>  }</b></p><p>  while(!k3);</p><p><b>  }</b></p><p>  if(k4==0)//////////////////////////////K4按下</p><p><b>  {</b>

114、;</p><p>  delay(10);</p><p><b>  if(k4==0)</b></p><p><b>  {</b></p><p>  TMOD=0x01;//////////設置定時器0模式1及16位計數器</p><p>  TH0=(6553

115、6-50000)/256;</p><p>  TL0=(65536-50000)%256;/////////////定時初始化50MS</p><p>  EA=1;////////////開總中斷</p><p>  TR0=1;///////////啟動T0計數</p><p>  ET0=1;///////////開定時器0中段<

116、;/p><p>  write_com(0x0c);</p><p>  flag=0;//////////////初始化</p><p><b>  }</b></p><p>  while(!k4);</p><p><b>  }</b></p><

117、;p><b>  }</b></p><p>  while(1);</p><p><b>  }</b></p><p>  void t0_time() interrupt 1</p><p><b>  {</b></p><p>  T

溫馨提示

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

評論

0/150

提交評論