8位電子時(shí)鐘課程設(shè)計(jì)_第1頁(yè)
8位電子時(shí)鐘課程設(shè)計(jì)_第2頁(yè)
8位電子時(shí)鐘課程設(shè)計(jì)_第3頁(yè)
8位電子時(shí)鐘課程設(shè)計(jì)_第4頁(yè)
8位電子時(shí)鐘課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 檢測(cè)理論及應(yīng)用 課程設(shè)計(jì)題 目 時(shí)鐘計(jì)時(shí)器 學(xué)院(部) 工業(yè)制造學(xué)院 專(zhuān) 業(yè) 測(cè)控技術(shù)與儀器 學(xué)生姓名 劉婭 學(xué) 號(hào) 20121011412* 年級(jí) 2012級(jí)1班 指導(dǎo)教師 職稱(chēng) 碩士 2014 年 12 月 7 日摘 要時(shí)鐘是人類(lèi)日常生活必不可少的工具,本設(shè)計(jì)從日常生活中常見(jiàn)的事物入手,通過(guò)對(duì)電子時(shí)鐘的設(shè)計(jì),讓我們認(rèn)識(shí)到單片機(jī)已經(jīng)深入到我們生活的每個(gè)領(lǐng)域,該設(shè)計(jì)不僅可以鍛煉我們的動(dòng)手能力,而且可以加深我們對(duì)單片機(jī)的認(rèn)識(shí)和激發(fā)我們對(duì)未知科學(xué)領(lǐng)域的探索。本文利用單片機(jī)實(shí)現(xiàn)數(shù)字時(shí)鐘計(jì)時(shí)功能的主要內(nèi)容。它體積小,成本低、功能強(qiáng)、使用方便、可靠性高等一系列優(yōu)點(diǎn),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。本

2、次設(shè)計(jì)采用獨(dú)立式按鍵進(jìn)行時(shí)間調(diào)整,其中STC89C52是核心元件,同時(shí)采用數(shù)碼管LED動(dòng)態(tài)顯示“時(shí)”,“分”,“秒”的現(xiàn)代計(jì)時(shí)裝置。與傳統(tǒng)機(jī)械表相比,它具有走時(shí)精確,顯示直觀等特點(diǎn)。它的計(jì)時(shí)周期為24小時(shí),顯滿(mǎn)刻度為“23時(shí)59分59秒”。該系統(tǒng)同時(shí)具有硬件設(shè)計(jì)簡(jiǎn)單、工作穩(wěn)定性高、價(jià)格低廉等優(yōu)點(diǎn)。關(guān)鍵詞:STC89C52 ; LED數(shù)碼管。目錄設(shè)計(jì)要求11設(shè)計(jì)方案12系統(tǒng)硬件電路的設(shè)計(jì)22.1單片機(jī)的選擇及引腳功能介紹22.2顯示電路設(shè)計(jì)42.3電源電路設(shè)計(jì)43控制系統(tǒng)的軟件設(shè)計(jì)53.1主程序流程圖53.2鬧鐘時(shí)間設(shè)定功能程序54系統(tǒng)功能調(diào)試與整體指標(biāo)64.1軟件調(diào)試與分析64.2性能分析65

3、元器件及元器件介紹76總結(jié)與思考及致謝8參考文獻(xiàn)9附錄 程序10電路27電子時(shí)鐘的設(shè)計(jì)設(shè)計(jì)要求利用單片機(jī)作為控制核心,完成一個(gè)時(shí)鐘計(jì)時(shí)器。具體要求如下:(1)采用8位LED數(shù)碼顯示時(shí)、分、秒,開(kāi)機(jī)流動(dòng)顯示學(xué)號(hào)。(2)時(shí)制式為24小時(shí)制,K1選擇模式。(3)按鍵K1進(jìn)行時(shí)鐘調(diào)時(shí) 、調(diào)分、調(diào)年、調(diào)月、調(diào)日,鬧鐘調(diào)時(shí)、調(diào)分,均以按下K1鍵的次數(shù)進(jìn)行模式改變,調(diào)整的位相應(yīng)閃爍,閃爍時(shí)按K2鍵相應(yīng)加1,K3則減1。(4)正常顯示時(shí)鐘時(shí),按住K2不放顯示年月日,松開(kāi)顯示時(shí)鐘。(5)正常顯示時(shí)鐘時(shí),按下K3切換到秒表模式,此時(shí)K2鍵對(duì)秒表進(jìn)行控制,K3鍵則為復(fù)位鍵,再按K3退出該模式。(6)K0對(duì)鬧鐘起啟停

4、控制。1設(shè)計(jì)方案此方案采用單片機(jī)內(nèi)部定時(shí)器T0、T1進(jìn)行計(jì)時(shí)、計(jì)數(shù),STC89S52實(shí)時(shí)控制。外部用按鍵進(jìn)行模式選擇,時(shí)鐘調(diào)整。2系統(tǒng)硬件電路的設(shè)計(jì)2.1單片機(jī)的選擇及引腳功能介紹STC89C52具有如下特點(diǎn):40個(gè)引腳(引腳圖如圖四所示),4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。此外,STC89C52RC設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工

5、作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。圖 2 STC89C52芯片引腳圖引腳功能介紹:VCC(40):5V; GND(20):接地; P0口(3932):P0口為8位漏極開(kāi)路雙向I/O口,每引腳可吸收8個(gè)TTL門(mén)電流; P1口(18):P1口是從內(nèi)部提供上拉電阻器的8位雙向I/O口,P1口緩沖器能接收和輸出4個(gè)TTL門(mén)電流; P2口(2128):P2口為內(nèi)部上拉電阻器的8位雙向I/O口,P2口緩沖器可接收和輸出4個(gè)TT

6、L門(mén)電流; P3口(1017):P3口是8個(gè)帶內(nèi)部上拉電阻器的雙向I/O口,可接收和輸出4個(gè)TTL門(mén)電流,P3口也可作為AT89C51的特殊功能口; RST(9):復(fù)位輸入。當(dāng)振蕩器復(fù)位時(shí),要保持RST引腳2個(gè)機(jī)器周期的高電平時(shí)間; ALE/PROG(30):當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié),在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6,它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的,要注意的是,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)1個(gè)ALE脈沖; PSEN(29):外部程序存儲(chǔ)器的選通信號(hào)。在由外

7、部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期2次PSEN有效,但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這2次有效的PSEN信號(hào)將不出現(xiàn); EA/VPP(31):當(dāng)EA保持低電平時(shí),外部程序存儲(chǔ)器地址為(0000HFFFFH)不管是否有內(nèi)部程序存儲(chǔ)器。FLASH編程期間,此引腳也用于施加12V編程電源(VPP); XTAL1(19):反向振蕩器放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入;XTAL2(18):來(lái)自反向振蕩器的輸出。2.2顯示電路設(shè)計(jì)單片機(jī)中通常用七段LED構(gòu)成字型“8”,另外,還有一個(gè)小數(shù)點(diǎn)發(fā)光二極管以顯示小數(shù)位!這種顯示器有共陰和共陽(yáng)兩種!發(fā)光二極管的陽(yáng)極連在一起的(公共端)稱(chēng)為共陽(yáng)極顯示器,陰極連在一起的稱(chēng)

8、為共陰極顯示器。一位顯示器由8個(gè)發(fā)光二極管組成,其中,7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃(段),a_g,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時(shí),該段筆畫(huà)即亮;不加電壓則暗。為了保護(hù)各段LED不被損壞,需外加限流電阻。由于共陰極連接需加驅(qū)動(dòng),故在這里我采用的是共陽(yáng)陽(yáng)極連接。以8位共陰極LED為例,各LED公共陰極接低電平,若向各控制端a,b,,g,dp順次送入高平信號(hào),便可進(jìn)行顯示。共陰極7段LED顯示數(shù)字0 F、文字、符號(hào)及小數(shù)點(diǎn)的編碼(a段為最地位,dp點(diǎn)為最高位)。 圖 3 2.3電源電路設(shè)計(jì)在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成部分,它是電子設(shè)

9、備唯一能量來(lái)源,它的設(shè)計(jì)思路是根據(jù)我們以前學(xué)過(guò)的模電電子技術(shù),要想得到我們所要的+6V輸出電壓,就需將交流220V的電壓經(jīng)過(guò)變壓器、整流電路、濾波電路和穩(wěn)壓電路四個(gè)部分。3控制系統(tǒng)的軟件設(shè)計(jì)3.1主程序流程圖本設(shè)計(jì)中主程序主要實(shí)現(xiàn)顯示的初始化和調(diào)用各子程序工作的功能,讀取時(shí)間的子程序主要實(shí)現(xiàn)初始化,時(shí)間信息的采集和顯示段碼的碼的存取。分別對(duì)各個(gè)器件的功能進(jìn)行編程設(shè)計(jì),根據(jù)主程序流程圖(如下)進(jìn)行全面的分析。設(shè)計(jì)中計(jì)時(shí)主要以定時(shí)器T0中斷完成,定點(diǎn)鬧鈴使用峰鳴器來(lái)完成。當(dāng)端口有開(kāi)關(guān)按下時(shí),轉(zhuǎn)入相應(yīng)的功能程序。其主程序執(zhí)行流程圖如下圖9:圖4 主程序流程圖3.2鬧鐘時(shí)間設(shè)定功能程序在時(shí)鐘狀態(tài)下,觸

10、發(fā)外中斷1時(shí),進(jìn)入鬧鐘時(shí)間設(shè)定模式,且不影響T0計(jì)時(shí)器的功能狀態(tài),在鍵盤(pán)上輸入對(duì)應(yīng)的數(shù)字進(jìn)行時(shí)間設(shè)定。當(dāng)分別按下調(diào)節(jié)時(shí)鐘、分鐘和秒鐘的個(gè)位時(shí),時(shí)間自動(dòng)確定,鬧鐘時(shí)間只精確到分鐘。鬧鐘時(shí)間設(shè)定流程圖如圖11所示:圖11 鬧鐘時(shí)間設(shè)定流程圖4系統(tǒng)功能調(diào)試與整體指標(biāo)4.1軟件調(diào)試與分析軟件調(diào)時(shí)在KEIL C51編譯器下進(jìn)行,源程序編譯及仿真調(diào)試應(yīng)分段或以子程序?yàn)閱挝恢饌€(gè)進(jìn)行,最后生成hex文件,并且能夠完美仿真。4.2性能分析按照設(shè)計(jì)程序分析,LED顯示器動(dòng)態(tài)掃描的頻率為167HZ,實(shí)際使用觀察時(shí)完全沒(méi)有閃爍。由于計(jì)時(shí)中斷程序中加了中斷延時(shí)誤差處理,所以實(shí)際計(jì)時(shí)精度非常高,可滿(mǎn)足多種場(chǎng)合的應(yīng)用需要。

11、5元件及元件介紹8位數(shù)碼管:8位數(shù)碼管屬于LED發(fā)光器件的一種。LED發(fā)光器件一般常用的有兩類(lèi):數(shù)碼管和點(diǎn)陣。8位數(shù)碼管又稱(chēng)為8字型數(shù)碼管。分為8段:a、b、c、d、e、f、g、p。其中p為小數(shù)點(diǎn)。數(shù)碼管常用的有10根管腳,每一段有一根管腳,另外兩根管腳位一個(gè)數(shù)碼管的公共端,兩根之間相互連通。用單片機(jī)驅(qū)動(dòng)LED數(shù)碼管有很多方法,按顯示方法分為靜態(tài)顯示和動(dòng)態(tài)顯示。前者:顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將所有要顯示的數(shù)據(jù)送出后就不在控制LED,直到下一次顯示時(shí)再傳送一次新的顯示數(shù)據(jù)。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用的CPU時(shí)間少。靜態(tài)顯示中,每一個(gè)顯示器都要占用單獨(dú)的具有鎖存功能的IO接口,該接口用于

12、筆劃段字型代碼。這樣單片機(jī)只要把要顯示的字型代碼發(fā)送到接口電路。該字段可以顯示發(fā)送的字型。要顯示新的數(shù)據(jù)時(shí),單片機(jī)再發(fā)送新的字形碼。后者:是用其接口電路把所有顯示器的8個(gè)筆劃段a-h同名端連在一起,而妹妹一個(gè)顯示器的公共極COM各自獨(dú)立的受控制。CPU向字段輸出口送出字形碼時(shí),所有顯示器接受到相同的字形碼,但究竟是哪個(gè)顯示器亮,則取決于公共端,而這一段是有IO扣控制的,由單片機(jī)決定何時(shí)顯示哪一位。電容器:通常簡(jiǎn)稱(chēng)其容納電荷的本領(lǐng)為電容,用字母C表示。電容器是電子設(shè)備中大量使用的電子元件之一,廣泛應(yīng)用于電路中的隔直通交,耦合,旁路,濾波,調(diào)諧回路,能量轉(zhuǎn)換,控制等方面。極性電容:有極性電容是指電

13、解電容一類(lèi)的電容。它是由陽(yáng)極的鋁箔和陰極的電解液分別形成兩個(gè)電極,有陽(yáng)極鋁箔上產(chǎn)生的一層氧化鋁膜作為電介質(zhì)的電容,由于這種結(jié)構(gòu),使其具有極性,當(dāng)電容正接的時(shí)候,氧化鋁膜會(huì)由于電化反應(yīng)而保持穩(wěn)定,當(dāng)反接的時(shí)候,氧化鋁層會(huì)表薄,使電容容易被擊穿損壞,所以電解電容在電路中必須注意極性,普通的電容是無(wú)極性的,也可以把兩個(gè)電解電容陽(yáng)極或者陰極相對(duì)串連形成無(wú)極性電解電容。晶振:是指一塊石英晶體上按一定方位切下薄片,石英晶體振蕩器,簡(jiǎn)稱(chēng)為石英晶體或晶體、晶振;而在封裝內(nèi)部添加IC組成振蕩電路的晶體元件成為晶體振蕩器。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。電阻:在物理學(xué)中表示導(dǎo)體對(duì)電流阻礙

14、作用的大小。導(dǎo)體電阻越大,表示導(dǎo)體對(duì)電流的阻礙作用越大。不同的導(dǎo)體,電阻一般不同,電阻是導(dǎo)體本身的一種特性。電阻會(huì)導(dǎo)致電子流通量的變化,電阻越小,電子流通量越大,反之亦然。三極管:全稱(chēng)應(yīng)為半導(dǎo)體三極管,也稱(chēng)雙極型晶體管、晶體三極管,是一種電流控制電流的半導(dǎo)體器件,其作用是把微弱信號(hào)放大成幅值較大的電信號(hào),也用作無(wú)觸點(diǎn)開(kāi)關(guān)晶體三極管,是半導(dǎo)體基本元器件之一,具有電流放大的作業(yè),是電子電路的核心元件。三極管是在一塊半導(dǎo)體基片上制作兩個(gè)相距很近的PN結(jié),兩個(gè)PN結(jié)把整塊半導(dǎo)體分成三部分,中間部分是基區(qū),兩側(cè)部分是發(fā)射區(qū)和集電區(qū),排列方式有PNP和NPN兩種。按鍵:控制作用蜂鳴器:是一種一體化結(jié)構(gòu)的電

15、子訊響器,采用電流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車(chē)電子設(shè)備、電話機(jī)、定時(shí)器等電子廠品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類(lèi)型。6總結(jié)與思考及致謝在老師的指導(dǎo)和同學(xué)的幫助之下,我完成了此次單片機(jī)課程設(shè)計(jì)。從開(kāi)始接到課題要求到時(shí)鐘的實(shí)現(xiàn),再到論文的完成,每走一步對(duì)我來(lái)說(shuō)都是新的嘗試與挑戰(zhàn)。在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過(guò)程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。課程設(shè)計(jì)是我們專(zhuān)業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前

16、一個(gè)必不少的過(guò)程。這次時(shí)鐘計(jì)時(shí)器設(shè)計(jì)的經(jīng)歷也會(huì)使我終身受益,我感受到做設(shè)計(jì)是要用心去做的一件事情,是真正的自己學(xué)習(xí)的過(guò)程和研究的過(guò)程,沒(méi)有學(xué)習(xí)就不可能有研究的能力,沒(méi)有自己的研究,就不會(huì)有所突破。通過(guò)設(shè)計(jì),我在老師的精心指導(dǎo)和嚴(yán)格要求下,獲得了豐富的理論知識(shí),極大地提高了實(shí)踐能力。最后,再一次感謝我的老師.,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我學(xué)習(xí)的榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無(wú)盡的啟迪;這次時(shí)鐘計(jì)時(shí)器設(shè)計(jì)的每個(gè)環(huán)節(jié),都離不開(kāi)老師您的細(xì)心指導(dǎo)。我懂得了學(xué)習(xí)的重要性,了解到理論知識(shí)與實(shí)踐相結(jié)合的重要意義,學(xué)會(huì)了堅(jiān)持、耐心和努力,這將為自己今后的學(xué)習(xí)和工作做出了最好的榜樣。參考文

17、獻(xiàn)1 張毅剛.單片機(jī)原理及接口技術(shù) M.北京:人民郵電出版社, 20112 張毅剛.單片機(jī)原理及應(yīng)用 M.北京:高等教育出版社,20043 張毅剛.單片機(jī)原理及應(yīng)用 M.北京:高等教育出版社,20104 張毅剛.單片機(jī)原理及應(yīng)用設(shè)計(jì) M.北京:電子工業(yè)出版社,2008附錄:程序#include <reg52.h>unsigned char led12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00; /用一維數(shù)組定義-9、橫杠、全滅unsigned char num12=2,0,1,2,1,0,1,1,4,1,

18、2,7 ;unsigned char a8; unsigned char second=0,minute=0,hour=0,year=0,mon=1,day=1,day1,hsec,sec_m,min_m,N,temp1;unsigned char minute1=0,hour1=0;unsigned char b8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/掃描unsigned char k=0;unsigned int temp; / 記錄毫秒為秒的變量unsigned char M,S_flag;/M是模式,更新時(shí)間的種模式加上正常模式S_flag

19、閃爍標(biāo)志sbit K0=P37; /K0是鬧鐘起停標(biāo)志位sbit K1=P30;sbit K2=P31;sbit K3=P32;sbit BEEP=P33;void delay(unsigned n) /0.2毫秒 int x,y; for(x=0;x<n;x+) for(y=0;y<24;y+); void init1() S_flag=0; /閃爍標(biāo)志位 TMOD=0x10; /定時(shí)器以方式定時(shí) TH1=0xfc; TL1=0x18; EA=1; /打開(kāi)總中斷 ET1=1; /允許定時(shí)器中斷 TR1=1; /開(kāi)啟定時(shí)器(開(kāi)始定時(shí)計(jì)數(shù)) void init0() TMOD=0x0

20、1; /定時(shí)器以方式定時(shí) TH0=0xff; TL0=0xff; EA=1; /打開(kāi)總中斷 ET0=1; /允許定時(shí)器中斷 TR0=0; /關(guān)閉定時(shí)器(關(guān)閉定時(shí)計(jì)數(shù)) void display_led() /流動(dòng)顯示學(xué)號(hào)int x;char l,a,m;for(a=0;a<21;a+)x=a-8;for(l=0;l<6;l+)for(m=0;m<8;m+)P2=bm;if(x>=0&&x<12) P1=lednumx;else P1=led11;delay(20);x+;x-=8;void display() /顯示時(shí)鐘及顯示調(diào)節(jié)位 switch(

21、M)case 0: a0=ledhour/10;a1=ledhour%10;a2=led10;a3=ledminute/10;a4=ledminute%10;a5=led10;a6=ledsecond/10;a7=ledsecond%10; break;case 1:if(S_flag=1)a0=ledhour/10;a1=ledhour%10;elsea0=led11;a1=led11;a2=led10;a3=ledminute/10;a4=ledminute%10;a5=led10;a6=ledsecond/10;a7=ledsecond%10;break;case 2:a0=ledhou

22、r/10;a1=ledhour%10;a2=led10;if(S_flag=1)a3=ledminute/10;a4=ledminute%10;elsea3=led11;a4=led11;a5=led10;a6=ledsecond/10;a7=ledsecond%10;break; case 3:if(S_flag=1) a0=ledyear/10; a1=ledyear%10; else a0=led11; a1=led11; a2=led10; a3=ledmon/10; a4=ledmon%10; a5=led10; a6=ledday/10; a7=ledday%10;break; c

23、ase 4:a0=ledyear/10;a1=ledyear%10;a2=led10;if(S_flag=1)a3=ledmon/10;a4=ledmon%10;elsea3=led11;a4=led11;a5=led10;a6=ledday/10;a7=ledday%10;break; case 5:a0=ledyear/10;a1=ledyear%10;a2=led10;a3=ledmon/10; a4=ledmon%10;a5=led10;if(S_flag=1) a6=ledday/10; a7=ledday%10; else a6=led11; a7=led11;break;case

24、 6:if(S_flag=1)a0=ledhour1/10;a1=ledhour1%10;elsea0=led11;a1=led11;a2=led10;a3=ledminute1/10;a4=ledminute1%10;a5=led10;a6=led11;a7=led11;break;case 7:a0=ledhour1/10;a1=ledhour1%10;a2=led10;if(S_flag=1)a3=ledminute1/10;a4=ledminute1%10;elsea3=led11;a4=led11;a5=led10;a6=led11;a7=led11; void key_prc()/

25、時(shí)鐘和鬧鐘調(diào)節(jié) if(K1=0) delay(10);/延時(shí)去抖 if(K1=0) /按K1進(jìn)行模式切換 M+;if(M=8) M=0;while(!K1);/等待按鍵釋放 if(M!=0) switch(M) case 1: /模式-調(diào)時(shí) if(K2=0)delay(10);/延時(shí)去抖 if(K2=0) /加鍵按下 if(hour<23) hour+;else hour=0; while(!K2); /等待按鍵釋放 if(K3=0)delay(10); if(K3=0) if(hour> 0) hour-;else hour=23; while(!K3); break; case

26、 2: /模式-調(diào)分 if(K2=0)delay(10);if(K2=0) if(minute<59) minute+;else minute=0; while(!K2); if(K3=0)delay(10);if(K3=0) if(minute>0) minute-;else minute=59; while(!K3); break; case 3: /模式-調(diào)年 if(K2=0) delay(10); if(K2=0) if(year<99) year+; else year=0; while(!K2); if(K3=0) delay(10); if(K3=0) if(y

27、ear>0) year-; else year=99; while(!K3); break;case 4: /模式-調(diào)月 if(K2=0) delay(10); if(K2=0) if(mon<12) mon+; else mon=0; while(!K2); if(K3=0) delay(10); if(K3=0) if(mon>1) mon-; else mon=12; while(!K3); if(year%4=0&&mon=2)day1=29;/閏年2月為29天 if(year%4!=0&&mon=2)day1=28;/非閏年2月為28

28、天 if(mon=4|mon=6|mon=9|mon=11)day1=30; if(mon=1|mon=3|mon=5|mon=7|mon=8|mon=10|mon=12)day1=31; break; case 5: /模式-調(diào)日 if(K2=0) delay(10); if(K2=0) if(day<day1) day+; else day=1; while(!K2); if(K3=0) delay(10); if(K3=0) if(day>1) day-; else day=day1; while(!K3); break; case 6: /模式-鬧鐘調(diào)時(shí) if(K2=0)d

29、elay(10); if(K2=0) if(hour1<23) hour1+; else hour1=0;while(!K2); if(K3=0)delay(10);if(K3=0) if(hour1>0) hour1-; else hour1=23; while(!K3); break; case 7: /模式-鬧鐘調(diào)分 if(K2=0)delay(10); if(K2=0) if(minute1<59) minute1+; else minute1=0; while(!K2);if(K3=0)delay(10);/延時(shí)去抖 if(K3=0) /減鍵按下 if(minute

30、1>0) minute1-; else minute1=59; while(!K3); break; void display_rq() /年月日顯示 if(K2=0) delay(10); if(K2=0) a0=ledyear/10; a1=ledyear%10; a2=led10; a3=ledmon/10; a4=ledmon%10; a5=led10; a6=ledday/10; a7=ledday%10; while(!K2); /等待按鍵釋放void key_prc2() /秒表模式轉(zhuǎn)換 if(M=0) if(K3=0) delay(10);/延時(shí)去抖 if(K3=0) /按K3進(jìn)行模式切換 N+;if(N=2) N=0;while(!K3);/等待按鍵釋放 void display_sec() /秒表顯示 if(N=1) a0=ledmin_m/10; a1=ledmin_m%10; a2=led10; a3=ledsec_m/10; a4=ledsec_m%10; a5=led10; a6=ledhsec/10; a7=ledhsec%10; if(K2=0)delay(10);/延時(shí)去抖 if(K2=0) /加鍵按下 TR0=!TR0; while(!K2); /等待按鍵釋放 void res_sec()

溫馨提示

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

評(píng)論

0/150

提交評(píng)論