版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)技術(shù)的數(shù)字時(shí)鐘的實(shí)現(xiàn)畢業(yè)論文
- 基于單片機(jī)的數(shù)字電子時(shí)鐘設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文-基于51單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì).doc
- 畢業(yè)論文-基于51單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì).doc
- 單片機(jī)數(shù)字時(shí)鐘
- 畢業(yè)論文基于單片機(jī)的時(shí)鐘設(shè)計(jì)
- 基于單片機(jī)設(shè)計(jì)的數(shù)字時(shí)鐘畢業(yè)論文
- 單片機(jī)數(shù)字時(shí)鐘畢業(yè)設(shè)計(jì)
- 單片機(jī)數(shù)字時(shí)鐘畢業(yè)設(shè)計(jì)
- 單片機(jī)數(shù)字時(shí)鐘資料
- 基于at89s52單片機(jī)數(shù)字時(shí)鐘的實(shí)現(xiàn)畢業(yè)論文
- 基于51單片機(jī)的多功能數(shù)字時(shí)鐘設(shè)計(jì)-畢業(yè)論文設(shè)計(jì)
- 單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)論文
- 單片機(jī)簡(jiǎn)易數(shù)字時(shí)鐘畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---單片機(jī)數(shù)字時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
- 基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文---基于單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)數(shù)字時(shí)鐘資料.doc
評(píng)論
0/150
提交評(píng)論