單片機畢業(yè)論文--數(shù)字時鐘_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  第一章 引言</b></p><p>  1.1單片機的發(fā)展史</p><p>  單片機是在一塊硅片上集成了各種部件的微型計算機。隨著大規(guī)模集成電路技術(shù)的發(fā)展,可以將中央處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM)定時器\計數(shù)器以及輸入/輸出(I/O)接口電路等主要計算機部件,集成在一塊電路芯片上。雖然單片機只是一個芯片

2、,但從組成和功能上,都已具有了微機系統(tǒng)的含義。由于單片機能獨立執(zhí)行內(nèi)部程序,所以又稱它為微型控制器(Microcontroller)。</p><p>  單片機自從問世以來,性能在不斷的提高和完善,它不僅能夠滿足很多應(yīng)用場合的需要,而且具有集成度高、功能強、速度快、體積小使用方便、性能可靠、價格低廉等特點。因此,在工業(yè)控制、智能儀器儀表、數(shù)據(jù)采集和處理、通信、智能接口、商業(yè)營銷等領(lǐng)域得到廣泛的應(yīng)用,并且正在逐步

3、取代現(xiàn)有的多片微機應(yīng)用系統(tǒng)。單片機的潛力越來越被人們所重視,所以更擴大了單片機的應(yīng)用范圍,也進一步促進了單片機技術(shù)的發(fā)展,單片機的發(fā)展史大致可分為三個階段。</p><p>  第一階段(1976-1978):初級單片機微處理階段。該時期的單片機具有8位CPU,并行I/O端口、8位時序同步計數(shù)器,尋址范圍4KB,但是沒有串行口。</p><p>  第二階段(1978-1982):高性能單

4、片機微機處理階段,該時期的單片機具有I/O串行端口,有多級中斷處理系統(tǒng),15位時序同步技術(shù)器,RAM、ROM容量加大,尋址范圍可達64KB。</p><p>  第三階段(1982-至今):8位單片機微處理改良型及16位單片機微處理階段。</p><p>  1.2 單片機的應(yīng)用</p><p>  由于單片機具有顯著的優(yōu)點,它已成為科技領(lǐng)域的有力工具,人類生活的得

5、力助手。它的應(yīng)用遍及各個領(lǐng)域,主要表現(xiàn)在以下幾個方面:</p><p>  (1) 單片機在智能儀表中的應(yīng)用</p><p>  單片機廣泛地用于各種儀器儀表,使儀器儀表智能化,并可以提高測量的自動化程度和精度,簡化儀器儀表的硬件結(jié)構(gòu),提高其性能價格比。</p><p>  (2) 單片機在機電一體化中的應(yīng)用</p><p>  機電一體化是

6、機械工業(yè)發(fā)展的方向。機電一體化產(chǎn)品是指集成機械技術(shù)、微電子技術(shù)、計算機技術(shù)于一體,具有智能化特征的機電產(chǎn)品,例如微機控制</p><p>  床、鉆床等。單片機作為產(chǎn)品中的控制器,能充分發(fā)揮它的體積小、可靠性高、功能強等優(yōu)點,可大大提高機器的自動化、智能化程度。</p><p>  (3) 單片機在實時控制中的應(yīng)用</p><p>  單片機廣泛地用于各種實時控制系

7、統(tǒng)中。例如,在工業(yè)測控、航空航天、尖端武器、機器人等各種實時控制系統(tǒng)中,都可以用單片機作為控制器。單片機的實時數(shù)據(jù)處理能力和控制功能,可使系統(tǒng)保持在最佳工作狀態(tài),提高系統(tǒng)的工作效率和產(chǎn)品質(zhì)量。</p><p>  (4) 單片機在分布式多機系統(tǒng)中的應(yīng)用</p><p>  在比較復(fù)雜的系統(tǒng)中,常采用分布式多機系統(tǒng)。多機系統(tǒng)一般由若干臺功能各異的單片機組成,各自完成特定的任務(wù),它們通過串行通

8、信相互聯(lián)系、協(xié)調(diào)工作。單片機在這種系統(tǒng)中往往作為一個終端機,安裝在系統(tǒng)的某些節(jié)點上,對現(xiàn)場信息進行實時的測量和控制。單片機的高可靠性和強抗干擾能力,使它可以置于惡劣環(huán)境的前端工作。</p><p>  (5) 單片機在人類生活中的應(yīng)用自從單片機誕生以后,它就步入了人類生活,如洗衣機、電冰箱、電子玩具、</p><p>  收錄機等家用電器配上單片機后,提高了智能化程度,增加了功能,倍受人

9、們喜</p><p>  愛。單片機將使人類生活更加方便、舒適、豐富多彩。</p><p>  1.3 單片機發(fā)展趨勢</p><p>  目前,單片機正朝著高性能和多品種方向發(fā)展,其發(fā)展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。下面是單片機的主要發(fā)展趨勢:</p><p><b

10、>  (1) CMOS化</b></p><p>  近年,由于CHMOS技術(shù)的進小,大大地促進了單片機的CMOS化。CMOS芯片除了低功耗特性之外,還具有功耗的可控性,使單片機可以工作在功耗精細管理狀態(tài)。這也是今后以80C51取代8051為標(biāo)準(zhǔn)MCU芯片的原因。因為單片機芯片多數(shù)是采用CMOS(金屬柵氧化物)半導(dǎo)體工藝生產(chǎn)。CMOS電路的特點是低功耗、高密度、低速度、低價格。采用雙極型半導(dǎo)體工

11、藝的TTL電路速度快,但功耗和芯片面積較大。隨著技術(shù)和工藝水平的提高,又出現(xiàn)了HMOS(高密度、高速度MOS)、CHMOS工藝以及CHMOS和HMOS工藝的結(jié)合。目前生產(chǎn)的CHMOS電路已達到LSTTL的速度,傳輸延遲時間小于2ns,它的綜合優(yōu)勢已大于TTL電路。因而,在單片機領(lǐng)域,CMOS電路正在逐漸取代TTL電路。</p><p><b>  (2) 低功耗化</b></p>

12、<p>  單片機的功耗已從mA級,甚至1uA以下;使用電壓在3~6V之間,完全適應(yīng)電池工作。低功耗化的效應(yīng)不僅是功耗低,而且?guī)砹水a(chǎn)品的高可靠性、高抗</p><p>  干擾能力以及產(chǎn)品的便攜化。</p><p><b>  (3) 低電壓化</b></p><p>  幾乎所有的單片機都有WAIT、STOP等省電運行方式。允

13、許使用的電壓范圍越來越寬,一般在3~6V范圍內(nèi)工作。低電壓供電的單片機電源下限已可達1~2V。目前0.8V供電的單片機已經(jīng)問世。</p><p>  (4) 低噪聲與高可靠性</p><p>  為提高單片機的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作環(huán)境,滿足電磁兼容性方面更高標(biāo)準(zhǔn)的要求,各單片廠家在單片機內(nèi)部電路中都采用了新的技術(shù)措施。 <

14、/p><p>  1.4 數(shù)字時鐘方案論證比較</p><p>  1.4.1 數(shù)字電路與單片機性能比較</p><p>  數(shù)字時鐘系統(tǒng)可采用數(shù)字電路實現(xiàn),也可以采用單片機來完成。若用數(shù)字電路完成,所設(shè)計的電路相當(dāng)復(fù)雜,大概需要十幾片數(shù)字集成塊,其功能也主要依賴于數(shù)字電路的各功能模塊的組合來實現(xiàn),焊接的過程比較復(fù)雜,成本也非常高。若用單片機來設(shè)計制作完成,由于其功能的

15、實現(xiàn)主要通過軟件編程來完成,那么就降低了硬件電路的復(fù)雜性,而且其成本也有所降低,所以在該設(shè)計與制作中采用AT89S52單片機,它是低功耗、高性能的CMOS型8位單片機,內(nèi)帶有8KB的Flash程序存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外,AT89S52的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有256B的RAM、32條I/O口線、2個16位定時計數(shù)器、5個中斷源、一個全雙工串行口等,具有在線編程可擦除技術(shù),當(dāng)在對電路進行調(diào)試時,由于

16、程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞,由此可見使用單片機作為數(shù)字時鐘的核心器件將更加具有快捷、高效的性能。</p><p>  1.4.2數(shù)碼管與LCD液晶顯示性能比較</p><p>  單片機應(yīng)用系統(tǒng)最常用的顯示器LED(發(fā)光二極管顯示器)和LCD(液晶顯示屏),這兩種顯示器器件都可顯示數(shù)字、字符及系統(tǒng)的狀態(tài),他們的驅(qū)動電路簡單、

17、易于實現(xiàn)且價格低廉,因此得到廣泛應(yīng)用。同時由于數(shù)碼管只能顯示數(shù)字數(shù)碼管顯示內(nèi)容單一,液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點,沒有電磁輻射、壽命長等優(yōu)點,在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來越廣泛的應(yīng)用,而這個畢業(yè)設(shè)計中,要求功能較多,為了使電路顯示的更清晰明了,在該設(shè)計當(dāng)中我們決定采用LCD1602液晶作為我們單片機數(shù)字時鐘的顯示設(shè)備。</p><p>  1.4.3單片機編程時鐘與時鐘

18、芯片性能比較</p><p>  在單片機系統(tǒng)的應(yīng)用過程中,經(jīng)常需要一個時鐘電路定時、測控之用;數(shù)字時鐘的實現(xiàn)方法有很多種,最簡單的就是利用單片機中都集成的定時器,通過軟件編程來構(gòu)成一個時鐘來使用,雖然功耗大,但是它的定時器功能可以很好的實現(xiàn)本設(shè)計的計時模塊,能夠更好簡化電路。</p><p>  第二章 系統(tǒng)的硬件設(shè)計與實現(xiàn)</p><p>  2.1 設(shè)計任務(wù)與

19、要求</p><p>  1、設(shè)計一個有“時”、“分”、“秒”顯示的電子鐘</p><p>  2、鬧鐘與整點報時系統(tǒng) </p><p><b>  3、日歷系統(tǒng)</b></p><p>  2.2各模塊方案選擇和論證</p><p>  2.2.1 計時模塊</p><p&g

20、t;  方案一:采用555數(shù)字電路來作為計時器。用數(shù)字電路可以實現(xiàn)計時功能,功耗小,穩(wěn)定性較高。但是電路復(fù)雜。</p><p>  方案二:采用單片機作為計時器。51單片機功能比較廣,雖然功耗大,但是它的定時器功能可以很好的實現(xiàn)本設(shè)計的計時模塊,能夠更好簡化電路。經(jīng)比較在功耗無要求前提下,選擇方案二。</p><p>  2.2.2 鬧鐘和整點報時模塊</p><p&g

21、t;  方案一:采用數(shù)字電路實現(xiàn)鬧鐘和整點報時的功能。使用74HC30芯片,穩(wěn)定性高,但是電路設(shè)計規(guī)模較大,不便于操作。</p><p>  方案二:采用單片機作為鬧鐘和整點報時的部分。51單片機的定時器和中斷功能可以實現(xiàn)鬧鐘和報時的功能。操作方便,控制簡單?;谏弦徊竭x擇單片機的基礎(chǔ)上,方案二是最佳選擇。</p><p>  2.2.3 顯示模塊</p><p>

22、  方案一:采用LED顯示。LED數(shù)碼管顯示速度快,亮度高,顯示清晰,控制也較為簡單。但是是功耗較大,顯示的位數(shù)有限。</p><p>  方案二:采用低功耗LED顯示。液晶有較低功耗,且能夠較清晰的較多位數(shù)的數(shù)字和所有的字母。其美觀的用戶界面是一個很大的優(yōu)勢。為了較好地顯示功能,選擇方案二。</p><p><b>  2.2.4電源模塊</b></p>

23、<p>  考慮到保持電路的簡潔,系統(tǒng)采用了外接電源的方法,通過電源線和插針接入5V電壓。</p><p><b>  2.3設(shè)計分析</b></p><p><b>  2.3.1系統(tǒng)框圖</b></p><p><b>  圖 2-1</b></p><p>

24、<b>  2.3.2電路說明</b></p><p>  a. 計時模塊:使用89C52單片機,其最小系統(tǒng)電路圖見系統(tǒng)圖。</p><p>  b. 鬧鐘和報時模塊:蜂鳴器和LED引腳與單片機的I/O口相連,另外LED的引腳上各接一個10k的上拉電阻,蜂鳴器和電源引腳接一個0.1uF的去耦電容。</p><p>  c. 液晶顯示電路:把液晶

25、的各個引腳接到單片機的P0口的對應(yīng)位置,在液晶顯示的的引腳上接上10k的排阻作為上拉電阻。</p><p>  d. 按鍵的設(shè)置:本系統(tǒng)總共需要四個按鍵,三個按鍵用于調(diào)時,一個按鍵用于控制鬧鐘的開與關(guān)。</p><p>  2.4 系統(tǒng)的硬件實現(xiàn)</p><p><b>  圖 2-2</b></p><p>  2.4

26、.1 顯示單元</p><p><b>  1602液晶顯示器</b></p><p>  1.1602液晶顯示器的優(yōu)越性</p><p> ?、?602顯示器有自帶的存儲器和指令系統(tǒng),應(yīng)用時只需把要顯示的內(nèi)容和顯示的方式指令寫入其內(nèi)部的存儲器即可,不需要復(fù)雜的外部電路系統(tǒng),也不會用到太多的控制器時鐘,從而保證了頻率的寬度。</p>

27、<p> ?、谝壕э@示優(yōu)于數(shù)碼管的另外一點就是可以方便的顯示字母和各種字符,因為1602自帶了大量的字符內(nèi)容。這是數(shù)碼管所辦不到的。</p><p> ?、垡壕э@示器不需要復(fù)雜的外部電路,因為不用外部電路來實現(xiàn)其動態(tài)顯示,這是應(yīng)用1602液晶屏的重要原因之一。</p><p>  2.1602基本信息</p><p> ?。?) 讀操作時序:</

28、p><p><b>  圖 2-3</b></p><p> ?。?) 寫操作時序:</p><p><b>  圖2-4</b></p><p><b>  (3)外部電路:</b></p><p><b>  圖2-5</b><

29、;/p><p><b>  (4)系統(tǒng)PCB圖</b></p><p><b>  圖2-6</b></p><p>  表2-1 LCD1602引腳功能表</p><p>  圖2.7液晶LCD1602最小系統(tǒng)圖 </p><p>  2.4.2 復(fù)位電路與晶振電路<

30、;/p><p>  復(fù)位電路是單片機系統(tǒng)必須的,用來為單片機提供正確的復(fù)位信號;振蕩電路就為單片機工作提供了所需要的時鐘脈沖信號,使單片機的開始正常工作;18腳和19接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出;第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后能夠形成上電復(fù)位電路。</p><

31、;p><b>  2.4.3原件清單</b></p><p>  1個11.0592Mhz晶振、</p><p><b>  9個LED、</b></p><p><b>  1個1602液晶、</b></p><p><b>  1個蜂鳴管、</b>

32、;</p><p><b>  1個2k電位器、</b></p><p><b>  2個電阻</b></p><p>  一片AT89C52芯片、</p><p>  1個4.7uF/10V電解電容、</p><p>  2個30pF和1個0.1uF瓷片電容、</p&

33、gt;<p><b>  4個按鍵、</b></p><p>  一排插針、一排插座、</p><p>  1個40DIP插座、</p><p>  第三章 系統(tǒng)軟件設(shè)計與實現(xiàn)</p><p>  3.1 軟件實現(xiàn)功能:</p><p>  用定時器實現(xiàn)計時功能,用中斷實現(xiàn)鬧鐘,并輸

34、出到LCD顯示。</p><p><b>  3.2 軟件流程圖</b></p><p><b>  圖3-1</b></p><p><b>  3.3 系統(tǒng)程序</b></p><p>  #include<reg52.h></p><p&g

35、t;  #include<intrins.h></p><p>  #define uint unsigned int </p><p>  #define uchar unsigned char</p><p>  sbit en=P2^4;</p><p>  sbit rs=P2^3;</p><p>

36、;  sbit rw=P2^2;</p><p>  sbit alarm=P2^6;</p><p>  sbit key1=P3^4;</p><p>  sbit key2=P3^5;</p><p>  sbit key3=P3^6;</p><p>  sbit key4=P3^7;</p>&

37、lt;p>  uchar code table0[]=" 0000-00-00 ";</p><p>  uchar code table1[]=" 00:00:00";</p><p>  uchar code table5[7][10]={"MON","TUE","WED&quo

38、t;,"THU","FRI","SAT","SUN"};</p><p>  uchar code table4[]="alarm";</p><p>  uchar a,b,c,flag1,flag2,flag3,flag4,temp,numkey,numxq,num1=6,num2=5,

39、numxq,numalarm,num3;</p><p>  int year1,year2,yue,ri,shi,fen,miao;</p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p

40、><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void write_com(uchar com)</p><p><b>  {</b></

41、p><p><b>  rw=0;</b></p><p><b>  rs=0;</b></p><p><b>  en=0;</b></p><p><b>  P0=com;</b></p><p><b>  del

42、ay(5);</b></p><p><b>  en=1;</b></p><p><b>  delay(5);</b></p><p><b>  en=0;</b></p><p><b>  }</b></p><

43、p>  void write_dat(uchar dat)</p><p><b>  {</b></p><p><b>  rw=0;</b></p><p><b>  rs=1;</b></p><p><b>  en=0;</b><

44、;/p><p><b>  P0=dat;</b></p><p><b>  delay(5);</b></p><p><b>  en=1;</b></p><p><b>  delay(5);</b></p><p><

45、b>  en=0;</b></p><p><b>  }</b></p><p>  void YJinit()</p><p><b>  {</b></p><p>  uchar num,num1;</p><p><b>  en=0;&

46、lt;/b></p><p>  write_com(0x38);</p><p>  write_com(0x0c);</p><p>  write_com(0x06);</p><p>  write_com(0x01);//清零</p><p>  write_com(0x80);</p>

47、<p>  for(num=0;num<12;num++)</p><p><b>  {</b></p><p>  write_dat(table0[num]);</p><p>  delay(50);</p><p><b>  }</b></p><p&

48、gt;  write_com(0x80+12);</p><p>  for(num=0;num<1;num++)</p><p><b>  {</b></p><p>  for(num1=0;num1<3;num1++)</p><p>  write_dat(table5[num][num1]);&l

49、t;/p><p><b>  }</b></p><p>  write_com(0x80+40);</p><p>  for(num=0;num<15;num++)</p><p><b>  {</b></p><p>  write_dat(table1[num])

50、;</p><p>  delay(50);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void display0(uchar add,int tim)//顯示</p><p><b>  {</b&g

51、t;</p><p>  int sw,gw;</p><p>  sw=tim/10;</p><p>  gw=tim%10;</p><p>  write_com(0x80+0x40+add);</p><p>  write_dat(0x30+sw);</p><p>  write_

52、dat(0x30+gw);</p><p><b>  }</b></p><p>  void display1(uchar add,int tim)</p><p><b>  {</b></p><p>  int sw,gw;</p><p>  sw=tim/10;

53、</p><p>  gw=tim%10;</p><p>  write_com(0x80+add);</p><p>  write_dat(0x30+sw);</p><p>  write_dat(0x30+gw);</p><p><b>  }</b></p><p

54、>  void displayxq(uchar num,uchar numxq)</p><p><b>  {</b></p><p>  uchar num1;</p><p>  write_com(0x80+12);</p><p>  for(num=numxq;num<numxq+1;num++)

55、</p><p><b>  {</b></p><p>  for(num1=0;num1<3;num1++)</p><p>  write_dat(table5[num][num1]);</p><p><b>  }</b></p><p><b> 

56、 }</b></p><p>  void timer_init()</p><p><b>  {</b></p><p>  TMOD=0X11;</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;&l

57、t;/p><p>  TH1=(65536-50000)/256;</p><p>  TL1=(65536-50000)%256;</p><p><b>  EA=1;</b></p><p><b>  ET1=1;</b></p><p><b>  ET0=1

58、;</b></p><p><b>  TR1=0;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void keyscan()</p><p><b>  {

59、</b></p><p>  if(key1==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(key1==0)</p><p><b>  { </b>

60、;</p><p><b>  TR0=0;</b></p><p><b>  numkey++;</b></p><p>  while(!key1);</p><p>  if(numkey==1)</p><p><b>  {</b></

61、p><p>  write_com(0x80+0x40+14);</p><p>  write_com(0x0f);</p><p><b>  }</b></p><p>  if(numkey==2)</p><p>  write_com(0x80+0x40+11); </p&

62、gt;<p>  if(numkey==3)</p><p>  write_com(0x80+0x40+8); </p><p>  if(numkey==4)</p><p>  write_com(0x80+1); </p><p>  if(numkey==5)</p><p>

63、  write_com(0x80+3); </p><p>  if(numkey==6)</p><p>  write_com(0x80+6); </p><p>  if(numkey==7)</p><p>  write_com(0x80+9); </p><p>  if(numk

64、ey==8)</p><p>  write_com(0x80+12); </p><p>  if(numkey==9) </p><p>  write_com(0x80+13); </p><p>  if(numkey==10) </p><p>  write_com(0x80+14

65、); </p><p>  if(numkey==11)</p><p><b>  {</b></p><p><b>  numkey=0;</b></p><p>  write_com(0x80+0x40+14);</p><p>  write_com(0x0c

66、); </p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  } </p><p>  if(key4==0)//第四功能</p>

67、<p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(key4==0)</p><p><b>  {</b></p><p>  uchar num;numalarm++;</p>&l

68、t;p><b>  flag3=1;</b></p><p>  flag1=1; </p><p><b>  b=0;</b></p><p>  if(numalarm==2)</p><p><b>  {</b></p><p>  w

69、rite_com(0x80+0x40);</p><p>  for(num=0;num<5;num++)</p><p><b>  {</b></p><p>  write_dat(table4[num]);</p><p><b>  }</b></p><p>

70、;<b>  } </b></p><p>  if(numalarm==2)</p><p><b>  {</b></p><p>  numalarm=0;</p><p>  b=0;TR1=0; </p><p><b>  flag1

71、=0;</b></p><p><b>  flag3=0;</b></p><p>  write_com(0x80+0x40);</p><p>  for(num=0;num<7;num++)</p><p><b>  {</b></p><p> 

72、 write_dat(table1[num]);</p><p><b>  } </b></p><p><b>  } </b></p><p>  while(!key4);</p><p><b>  }</b></p><p><

73、b>  }</b></p><p>  if(numkey!=0) //第二功能鍵</p><p><b>  {</b></p><p>  if(key2==0)</p><p><b>  {</b></p><p><b>  delay(

74、5);</b></p><p>  if(key2==0)</p><p><b>  {</b></p><p>  while(!key2);</p><p>  if(numkey==1)</p><p><b>  {</b></p><

75、;p><b>  miao++;</b></p><p>  if(miao==60)</p><p><b>  miao=0;</b></p><p>  display0(13,miao);</p><p>  write_com(0x80+0x40+13);</p>&l

76、t;p><b>  }</b></p><p>  if(numkey==2)</p><p><b>  {</b></p><p><b>  fen++;</b></p><p>  if(fen==60)</p><p><b>

77、  fen=0;</b></p><p>  display0(10,fen);</p><p>  write_com(0x80+0x40+10);</p><p><b>  }</b></p><p>  if(numkey==3)</p><p><b>  {<

78、;/b></p><p><b>  shi++;</b></p><p>  if(shi==24)</p><p><b>  shi=0;</b></p><p>  display0(7,shi);</p><p>  write_com(0x80+0x40+7

79、);</p><p><b>  }</b></p><p>  if(numkey==4)</p><p><b>  {</b></p><p><b>  year1++;</b></p><p>  if(year1==100)</p>

80、;<p><b>  year1=0;</b></p><p>  display1(1,year1);</p><p>  write_com(0x80+1);</p><p><b>  }</b></p><p>  if(numkey==5)</p><p&

81、gt;<b>  {</b></p><p><b>  year2++;</b></p><p>  if(year2==100)</p><p><b>  year2=0;</b></p><p>  display1(3,year2);</p><p

82、>  write_com(0x80+3);</p><p><b>  }</b></p><p>  if(numkey==6)</p><p><b>  {</b></p><p><b>  yue++;</b></p><p>  if(

83、yue==13)</p><p><b>  yue=1;</b></p><p>  display1(6,yue);</p><p>  write_com(0x80+6);</p><p>  while(!key2); </p><p><b>  }</b><

84、;/p><p>  if(numkey==7)</p><p><b>  {</b></p><p><b>  ri++;</b></p><p>  if(ri==32)</p><p><b>  ri=1;</b></p><p

85、>  display1(9,ri);</p><p>  write_com(0x80+9);</p><p><b>  }</b></p><p>  if(numkey==8)</p><p><b>  {</b></p><p>  write_dat(0x4

86、0+num1);</p><p>  write_com(0x80+12);</p><p><b>  num1++;</b></p><p>  if(num1==24)</p><p><b>  num1=6;</b></p><p><b>  }<

87、/b></p><p>  if(numkey==9)</p><p><b>  {</b></p><p>  uchar num;</p><p>  write_dat(0x41+num);</p><p>  write_com(0x80+13);</p><p

88、><b>  num++;</b></p><p>  if(num==22)</p><p><b>  num=0;</b></p><p><b>  }</b></p><p>  if(numkey==10)</p><p><b&

89、gt;  {</b></p><p>  write_dat(0x40+num2);</p><p>  write_com(0x80+14);</p><p><b>  num2++;</b></p><p>  if(num2==24)</p><p><b>  nu

90、m2=4;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  if(key3==0) //第三功能鍵</p><p><b>  {

91、</b></p><p><b>  delay(5);</b></p><p>  if(key3==0)</p><p><b>  {</b></p><p>  while(!key3);</p><p>  if(numkey==1)</p>

92、<p><b>  {</b></p><p>  while(!key3);</p><p><b>  miao--;</b></p><p>  if(miao<0)</p><p><b>  miao=59;</b></p><

93、p>  display0(13,miao);</p><p>  write_com(0x80+0x40+13); </p><p><b>  }</b></p><p>  if(numkey==2)</p><p><b>  {</b></p><p><

94、;b>  fen--;</b></p><p><b>  if(fen<0)</b></p><p><b>  fen=59;</b></p><p>  display0(10,fen); </p><p>  write_com(0x80+0x40+10); <

95、/p><p><b>  }</b></p><p>  if(numkey==3)</p><p><b>  {</b></p><p><b>  shi--;</b></p><p><b>  if(shi<0)</b>

96、</p><p><b>  shi=23;</b></p><p>  display0(7,shi);</p><p>  write_com(0x80+0x40+7); </p><p><b>  }</b></p><p>  if(numkey==4)<

97、;/p><p><b>  {</b></p><p><b>  year1--;</b></p><p>  if(year1<0)</p><p><b>  year1=99;</b></p><p>  display1(1,year1);&

98、lt;/p><p>  write_com(0x80+1);</p><p><b>  }</b></p><p>  if(numkey==5)</p><p><b>  {</b></p><p><b>  year2--;</b></p&g

99、t;<p>  if(year2<0)</p><p><b>  year2=99;</b></p><p>  display1(3,year2);</p><p>  write_com(0x80+3);</p><p><b>  }</b></p><

100、;p>  if(numkey==6)</p><p><b>  {</b></p><p><b>  yue--;</b></p><p><b>  if(yue<1)</b></p><p><b>  yue=12;</b></

101、p><p>  display1(6,yue);</p><p>  write_com(0x80+6); </p><p><b>  }</b></p><p>  if(numkey==7)</p><p><b>  {</b></p><p>&

102、lt;b>  ri--;</b></p><p><b>  if(ri<1)</b></p><p><b>  ri=31;</b></p><p>  display1(9,ri);</p><p>  write_com(0x80+9);</p><

103、;p><b>  }</b></p><p>  if(numkey==8)</p><p><b>  {</b></p><p>  write_dat(0x40+num1);</p><p>  write_com(0x80+12);</p><p><b&

104、gt;  num1--;</b></p><p>  if(num1==5)</p><p><b>  num1=24;</b></p><p><b>  }</b></p><p>  if(numkey==9)</p><p><b>  {&l

105、t;/b></p><p><b>  int num;</b></p><p>  write_dat(0x41+num);</p><p>  write_com(0x80+13);</p><p><b>  num--;</b></p><p><b>

106、;  if(num<0)</b></p><p><b>  num=22;</b></p><p><b>  }</b></p><p>  if(numkey==10)</p><p><b>  {</b></p><p>  

107、write_dat(0x40+num2);</p><p>  write_com(0x80+14);</p><p><b>  num2--;</b></p><p>  if(num2==4)</p><p><b>  num2=24;</b></p><p><

108、;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  voi

109、d main()</p><p><b>  {</b></p><p><b>  YJinit();</b></p><p>  timer_init(); </p><p><b>  while(1)</b></p><p><b>

110、  { </b></p><p>  P1=0xff; </p><p>  if((shi==22)&&(fen==6)&&(flag1==1))//鬧鐘</p><p><b>  { </b></p><p>  alarm=~alarm;&

111、lt;/p><p><b>  delay(5);</b></p><p><b>  TR1=1; </b></p><p><b>  }</b></p><p>  if((fen==0)&&(flag2==0)) //整點報時</p><

112、p>  { </p><p>  flag4=1; </p><p>  TR1=1; </p><p><b>  }</b></p><p>  keyscan();</p><p><b>  if(a==18)</

113、b></p><p><b>  { </b></p><p><b>  a=0;</b></p><p><b>  miao++;</b></p><p>  if(miao==60)</p><p><b>  {&l

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

115、/p><p><b>  flag1=0;</b></p><p>  flag2=0; </p><p><b>  shi++;</b></p><p>  if(shi==24)</p><p><b>  {</b></p>

116、<p><b>  shi=0;</b></p><p><b>  ri++;</b></p><p><b>  numxq+=1;</b></p><p>  if(numxq==8)</p><p><b>  numxq=0;</b>&

117、lt;/p><p>  if((year1*100+year2)%4==0&&(year1*100+year2)%100!=0||(year1*100+year2)%400==0)//閏年月份</p><p><b>  {</b></p><p>  switch(yue)</p><p><b>

118、;  {</b></p><p>  case 1: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }break; </p><p>  case 2: if(ri==30)</p><p><b>

119、;  { ri=1;</b></p><p>  yue++; }break; </p><p>  case 3: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }break; </p><p&

120、gt;  case 4: if(ri==31)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 5: if(ri==32)</p><p><b>  { ri=1;</b></p><p>

121、  yue++; }break;</p><p>  case 6: if(ri==31)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 7: if(ri==32)</p><p><b>  { ri

122、=1;</b></p><p>  yue++; }break;</p><p>  case 8: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 9: if(ri==31)&l

123、t;/p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 10: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p&g

124、t;<p>  case 11: if(ri==31)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 12: if(ri==32)</p><p><b>  { ri=1;</b></p>

125、;<p>  yue++; }break;</p><p>  } </p><p>  if(yue==13)</p><p><b>  {</b></p><p><b>  yue=1;</b></p><p><b>  y

126、ear2++;</b></p><p>  if(year2==100)</p><p><b>  {</b></p><p>  year2=0; year1++;</p><p>  if(year1==100)</p><p><b>  {</b><

127、;/p><p><b>  year1=0;</b></p><p><b>  }</b></p><p>  display1(1,year1);</p><p><b>  }</b></p><p>  display1(3,year2);</

128、p><p><b>  } </b></p><p>  display1(6,yue);</p><p><b>  }</b></p><p>  else //平年月份</p><p><b>  { </b></p><p>

129、;  switch(yue)</p><p><b>  {</b></p><p>  case 1: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 2: if(ri

130、==29)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 3: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;

131、</p><p>  case 4: if(ri==31)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 5: if(ri==32)</p><p><b>  { ri=1;</b>&l

132、t;/p><p>  yue++; }break;</p><p>  case 6: if(ri==31)</p><p>  { ri=1; </p><p>  yue++; }break; </p><p>  case 7: if(ri==32)</p><p><

133、b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 8: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 9:

134、 if(ri==31)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 10: if(ri==32)</p><p><b>  { ri=1;</b></p><p>  yue++; }

135、break;</p><p>  case 11: if(ri==31)</p><p><b>  { ri=1;</b></p><p>  yue++; }break;</p><p>  case 12: if(ri==32)</p><p><b>  { ri=1;</

136、b></p><p>  yue++; }break;</p><p>  } </p><p>  if(yue==13)</p><p><b>  {</b></p><p><b>  yue=1;</b></p><p&g

137、t;<b>  year2++;</b></p><p>  if(year2==100)</p><p><b>  {</b></p><p><b>  year2=0;</b></p><p><b>  year1++;</b></p>

138、;<p>  if(year1==100) </p><p>  year1=0; </p><p>  display1(1,year1);</p><p><b>  }</b></p><p>  display1(3,year2);</p><p>&

139、lt;b>  } </b></p><p>  display1(6,yue);</p><p><b>  }</b></p><p>  display1(9,ri);</p><p>  displayxq(num3,numxq);</p><p><b>  }

140、</b></p><p>  display0(7,shi);</p><p><b>  }</b></p><p>  display0(10,fen);</p><p><b>  }</b></p><p>  display0(13,miao); <

141、;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void timer0() interrupt 1</p><p><b>  {</b><

142、;/p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  a++;</b></p><p><b>  }</b></p><p>  void timer1() interru

143、pt 3</p><p><b>  {</b></p><p>  TH1=(65536-25000)/256;</p><p>  TL1=(65536-25000)%256; </p><p>  b++;c++; </p><p>  if((c%20==0)

144、&&(flag4==1))//整點報時</p><p><b>  { </b></p><p>  uchar num;temp=0xfe; </p><p>  for(num=0;num<8;num++) </p><p>  {

145、 temp=_crol_(temp,1);</p><p><b>  P1=temp;</b></p><p>  delay(10);</p><p><b>  }</b></p><p>  } </p><p>

146、  if((c==240)&&(flag4==1))</p><p><b>  {</b></p><p><b>  c=0;</b></p><p><b>  TR1=0;</b></p><p><b>  flag2=1;</b>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論