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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

23、<p>  考慮到保持電路的簡(jiǎn)潔,系統(tǒng)采用了外接電源的方法,通過電源線和插針接入5V電壓。</p><p><b>  2.3設(shè)計(jì)分析</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. 計(jì)時(shí)模塊:使用89C52單片機(jī),其最小系統(tǒng)電路圖見系統(tǒng)圖。</p><p>  b. 鬧鐘和報(bào)時(shí)模塊:蜂鳴器和LED引腳與單片機(jī)的I/O口相連,另外LED的引腳上各接一個(gè)10k的上拉電阻,蜂鳴器和電源引腳接一個(gè)0.1uF的去耦電容。</p><p>  c. 液晶顯示電路:把液晶

25、的各個(gè)引腳接到單片機(jī)的P0口的對(duì)應(yīng)位置,在液晶顯示的的引腳上接上10k的排阻作為上拉電阻。</p><p>  d. 按鍵的設(shè)置:本系統(tǒng)總共需要四個(gè)按鍵,三個(gè)按鍵用于調(diào)時(shí),一個(gè)按鍵用于控制鬧鐘的開與關(guān)。</p><p>  2.4 系統(tǒng)的硬件實(shí)現(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顯示器有自帶的存儲(chǔ)器和指令系統(tǒng),應(yīng)用時(shí)只需把要顯示的內(nèi)容和顯示的方式指令寫入其內(nèi)部的存儲(chǔ)器即可,不需要復(fù)雜的外部電路系統(tǒng),也不會(huì)用到太多的控制器時(shí)鐘,從而保證了頻率的寬度。</p>

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

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

29、;/p><p><b> ?。?)系統(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ù)位電路是單片機(jī)系統(tǒng)必須的,用來為單片機(jī)提供正確的復(fù)位信號(hào);振蕩電路就為單片機(jī)工作提供了所需要的時(shí)鐘脈沖信號(hào),使單片機(jī)的開始正常工作;18腳和19接時(shí)鐘電路,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個(gè)11.0592Mhz晶振、</p><p><b>  9個(gè)LED、</b></p><p><b>  1個(gè)1602液晶、</b></p><p><b>  1個(gè)蜂鳴管、</b>

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

33、gt;<p><b>  4個(gè)按鍵、</b></p><p>  一排插針、一排插座、</p><p>  1個(gè)40DIP插座、</p><p>  第三章 系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)</p><p>  3.1 軟件實(shí)現(xiàn)功能:</p><p>  用定時(shí)器實(shí)現(xiàn)計(jì)時(shí)功能,用中斷實(shí)現(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)) //整點(diǎn)報(bào)時(shí)</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))//整點(diǎn)報(bào)時(shí)</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等.壓縮文件請(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)論