單片機(jī)數(shù)字時(shí)鐘報(bào)告_第1頁(yè)
單片機(jī)數(shù)字時(shí)鐘報(bào)告_第2頁(yè)
單片機(jī)數(shù)字時(shí)鐘報(bào)告_第3頁(yè)
單片機(jī)數(shù)字時(shí)鐘報(bào)告_第4頁(yè)
單片機(jī)數(shù)字時(shí)鐘報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、學(xué) 號(hào): 201430110134單片機(jī)原理及接口技術(shù)課 程 設(shè) 計(jì)題 目基于單片機(jī)數(shù)字式時(shí)鐘設(shè)計(jì)教 學(xué) 院機(jī)電工程學(xué)院專 業(yè)班 級(jí)姓 名指導(dǎo)教師 2016 年03月11日基于單片機(jī)電子數(shù)字鐘的設(shè)計(jì)摘要近幾年,單片機(jī)在各個(gè)領(lǐng)域得到廣泛的應(yīng)用。從工業(yè)到人們的日常生活,大部分的科技產(chǎn)品都是通過單片機(jī)來控制。在它問世之前,自動(dòng)控制設(shè)備不能被廣泛的應(yīng)用,這是因?yàn)榭刂圃O(shè)備的體積龐大,耗電量大,價(jià)格昂貴。在第一臺(tái)微處理器成功研制不久,第一個(gè)單片機(jī)就問世了。因?yàn)槠湫∏傻捏w積,低功耗,以及高效的性能,單片機(jī)受到了大家的歡迎。 今天,單片機(jī)成為了解決低復(fù)雜度,中等復(fù)雜度控制問題的傳統(tǒng)選擇。文章介紹了單片機(jī)在定時(shí)

2、方面的基本功能。生活中,我們發(fā)現(xiàn),有時(shí)病人要在注射藥物之前作皮試試驗(yàn),防止過敏。護(hù)士們有必要在一定時(shí)間后記錄結(jié)果。這時(shí),時(shí)間的準(zhǔn)確顯得很重要的。但是,有些時(shí)候,由于病人的人數(shù)眾多,忘了記錄時(shí)間。根據(jù)這種情況,我們?cè)O(shè)計(jì)了一個(gè)設(shè)備解決此問題。 我們選擇的方法是單片機(jī)開發(fā)設(shè)計(jì)使用的傳統(tǒng)方法,通過本次設(shè)計(jì),可以了解整個(gè)單片機(jī)開發(fā)的流程。文章首先介紹了單片機(jī)的基本知識(shí)。下來比較了一些可行的方法。同時(shí)給出了框圖,流程圖等。論文涵蓋了從需求分析,系統(tǒng)設(shè)計(jì),編程,原理圖,PCB圖等設(shè)計(jì)的基本過程。目 錄摘要.1目錄.2第1章 緒論.41.1課題背景.41.2 課題來源.4第2章 MCS-51單片機(jī)的知識(shí)介紹.

3、42.1單片機(jī)介紹.42.2 單片機(jī)的應(yīng)用領(lǐng)域.52.3 單片機(jī)的中斷與定時(shí)系統(tǒng).52.3.1 MCS51單片機(jī)中斷系統(tǒng).52.3.2 MCS-51 單片機(jī)的定時(shí)器/計(jì)數(shù)器.72.3.3 MCS-51定時(shí)器/計(jì)數(shù)器的四種工作方式.72.3.4 MCS-52的引腳說明.8第3章 數(shù)字鐘原理圖元件清單及設(shè)計(jì)方案.93.1 時(shí)鐘電路原理圖.93.2 單片機(jī)最小系統(tǒng).93.3 顯示器工作原理.103.4 元件清單. .103.5設(shè)計(jì)方案與實(shí)現(xiàn). 113.6 AT89C51介紹.113.6.1 存儲(chǔ)器的結(jié)構(gòu).11第4章 電路的硬件設(shè)計(jì).124.1 數(shù)字鐘硬件框圖.124.2 程序整體設(shè)計(jì).134.3數(shù)字

4、中的操作. .14第5章 數(shù)字中的工作原理介紹. .145.1 實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)的基本方法. .155.2 數(shù)字鐘的時(shí)間顯示. .155.3 計(jì)時(shí). .155.4 鍵盤/顯示. .15第6章 軟件設(shè)計(jì)與源程序代碼. .156.1軟件選擇與介紹. .156.1.1 軟件介紹. .15.6.1.2 該軟件的特點(diǎn). .166.2 源程序代碼. .17第7章 結(jié)論與總結(jié). .29參考文獻(xiàn). .30第1章 緒論1.1課題背景單片機(jī)(Microcontrollers)誕生于1971年,經(jīng)歷了SCM、MCU、SOC三大階段,早期的SCM單片機(jī)都是8位或4位的。由于單片機(jī)集成度高、功能強(qiáng)、可靠性高、體積小、功耗地

5、、使用方便、價(jià)格低廉等一系列優(yōu)點(diǎn),目前已經(jīng)滲入到人們工作和生活的方方面面,幾乎“無處不在,無所不為”。 本文討論的單片機(jī)AT89C51可調(diào)數(shù)字鐘系統(tǒng)設(shè)計(jì)的核心是目前應(yīng)用極為廣泛的51系列單片機(jī),可調(diào)數(shù)字鐘配置了外圍設(shè)備,構(gòu)成了一個(gè)可編程的計(jì)時(shí)定時(shí)系統(tǒng),具有體積小,可靠性高,功能強(qiáng)等特點(diǎn)。不僅能滿足所需要求而且還有很多功能可供開發(fā),有著廣泛的應(yīng)用領(lǐng)域。 20世紀(jì)80年代中期以后,Intel公司以專利轉(zhuǎn)讓的形式把8051內(nèi)核技術(shù)轉(zhuǎn)讓給許多半導(dǎo)體芯片生產(chǎn)廠家,如ATMEL、PHILIPS、ANALOG、DEVICES、DALLAS等。這些廠家生產(chǎn)的芯片是MCS-51系列的兼容產(chǎn)品,準(zhǔn)確地說是與MCS

6、-51指令系統(tǒng)兼容的單片機(jī)。這些兼容機(jī)與8051的系統(tǒng)結(jié)構(gòu)(主要是指令系統(tǒng))相同,采用CMOS工藝,因而,常用80C51系列來稱呼所有具有8051指令系統(tǒng)的單片機(jī),它們對(duì)8051單片機(jī)一般都作了一些擴(kuò)充,更有特點(diǎn)。1.2 課題來源在日常生活和工作中,我們常常用到定時(shí)控制,如擴(kuò)印過程中的曝光定時(shí)等。早期常用的一些時(shí)間控制單元都使用模擬電路設(shè)計(jì)制作的,其定時(shí)準(zhǔn)確性和重復(fù)精度都不是很理想,現(xiàn)在基本上都是基于數(shù)字技術(shù)的新一代產(chǎn)品,隨著單片機(jī)性能價(jià)格比的不斷提高,新一代產(chǎn)品的應(yīng)用也越來越廣泛,它功能強(qiáng)大,體積小,質(zhì)量輕,靈活好用,配以適當(dāng)?shù)慕涌谛酒?,可以?gòu)造各種各樣、功能各異的微電子產(chǎn)品。 隨著電子技術(shù)

7、的飛速發(fā)展,家用電器和辦公電子設(shè)備逐漸增多,不同的設(shè)備都有自己的控制器,使用起來很不方便。根據(jù)這種實(shí)際情況,設(shè)計(jì)了一個(gè)單片機(jī)多功能時(shí)間系統(tǒng),它可以避免多種控制器的混淆,利用一個(gè)控制器對(duì)多路電器進(jìn)行控制,同時(shí)又可以進(jìn)行時(shí)鐘校準(zhǔn),可以任意設(shè)置時(shí)間。第2章 MCS-51單片機(jī)的知識(shí)介紹2.1 單片機(jī)介紹51單片機(jī)是對(duì)所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8004單片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8004單片機(jī)取得了長(zhǎng)足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。51單片機(jī)是基

8、礎(chǔ)入門的一個(gè)單片機(jī),還是應(yīng)用最廣泛的一種。需要注意的是51系列的單片機(jī)一般不具備自編程能力.8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線。 圖2.18051內(nèi)部結(jié)構(gòu)2.2 單片機(jī)的應(yīng)用特點(diǎn)隨著集成電路技術(shù)的發(fā)展,單片機(jī)的功能越變?cè)綇?qiáng),涉及到各個(gè)電子應(yīng)用領(lǐng)域。目前單片機(jī)的系列也十分多,各有各的特點(diǎn),如目前的MCS-51系列、PIC系列等等,通過這幾年的應(yīng)用,普通感覺到特別需要單片機(jī)具有如下幾個(gè)應(yīng)用特點(diǎn): (一)低功耗、寬電壓工作范圍,內(nèi)部看門狗。(二)高速指令系統(tǒng),單字節(jié)指令

9、,精簡(jiǎn)指令集易學(xué)易用。(三)內(nèi)部ROM結(jié)構(gòu),且具有廉價(jià)OTP(一次性寫入程式)ROM,以便小批量生產(chǎn), 減少M(fèi)ASK風(fēng)險(xiǎn)。(四)程序保密功能,防止拷貝,保護(hù)成果。(五)方便的開發(fā)工具(仿真器與燒入器)。2.3 單片機(jī)的中斷與定時(shí)系統(tǒng)2.3.1 MCS-51單片機(jī)中斷系統(tǒng)中斷是一項(xiàng)重要的計(jì)算機(jī)技術(shù),采用中斷技術(shù)可以使多項(xiàng)任務(wù)共享一個(gè)資源,所以中斷技術(shù)實(shí)質(zhì)上就是一種資源共享技術(shù)。MCS-51是一個(gè)多中斷源的單片機(jī),以80C51為例,有三類共五個(gè)中斷源,分別是外部中斷兩個(gè),定時(shí)中斷兩個(gè)和串行中斷一個(gè)。1. 外中斷外中斷是由外部原因引起的,共有兩個(gè)中斷源,即外部中斷0和外部中斷1。它們的中斷請(qǐng)求信號(hào)分

10、別由引腳INT0(P3.2)和INT1(P3.3)引入。2. 定時(shí)中斷:定時(shí)中斷是為滿足定時(shí)或計(jì)數(shù)的需要而設(shè)置的。3. 串行中斷:串行中斷是為串行數(shù)據(jù)傳送的需要而設(shè)置的。中斷控制:這里所說的中斷控制是指提供給用戶使用的中斷控制手段,實(shí)際上就是一些專用寄存器。在MCS-51單片機(jī)中,用于此目的的控制寄存器共有四個(gè),即定時(shí)器控制寄存器、中斷允許控制寄存器、中斷優(yōu)先控制寄存器以及串行口控制寄存器。1. 定時(shí)器控制寄存器(TCON)位地址8F8E8D8C8B8A8988位符號(hào)TF1TR1TF0TR0IE1IT1IE0IT0該寄存器用于保存外部中斷請(qǐng)求和以及定時(shí)器的計(jì)數(shù)溢出。寄存器地址88H,位地址8F

11、H88H。這個(gè)寄存器既有定時(shí)器/計(jì)數(shù)器的控制功能又有中斷控制功能,其中與中斷有關(guān)的控制位共六位:IE0和IE1 、IT0和IT1 以及TF0和TF1 。2. 中斷允許控制寄存器(IE) 寄存器地址A8H,位地址AFHA8H。位地址AFAEADACABAAA9A8位符號(hào)EAESET1EX1ET0EX0其中與中斷有關(guān)的控制位共六位:EA、EX0和EX1 、ET0和ET1 、ES。3. 中斷優(yōu)先級(jí)控制寄存器(IP)位地址BFBEBDBCBBBAB9B8位符號(hào)PSPT1PX1PT0PX0MCS-51的中斷優(yōu)先級(jí)控制只定義了高、低兩個(gè)優(yōu)先級(jí)。IP寄存器地址B8H,位地址為BFHB8H。寄存器的內(nèi)容及位地

12、址表示如下:PX0 外部中斷0優(yōu)先級(jí)設(shè)定位PT0 定時(shí)中斷0優(yōu)先級(jí)設(shè)定位PX1 外部中斷1優(yōu)先級(jí)設(shè)定位PT1 定時(shí)中斷1優(yōu)先級(jí)設(shè)定位PS 串行中斷優(yōu)先級(jí)設(shè)定位為0的位優(yōu)先級(jí)為低;為1的位優(yōu)先級(jí)為高。中斷響應(yīng):中斷響應(yīng)就是對(duì)中斷源提出的中斷請(qǐng)求的接受,是在中斷查詢之后進(jìn)行的,當(dāng)查詢到有效的中斷請(qǐng)求時(shí),緊接著就進(jìn)行中斷響應(yīng)。中斷響應(yīng)的主要內(nèi)容是由硬件自動(dòng)生成一條長(zhǎng)調(diào)用指令LCALL。在MCS-51單片機(jī)中,這些入口地址已由系統(tǒng)設(shè)定。服務(wù)程序。因此通??偸窃诟髦袛鄥^(qū)入口地址處放置一條無條件轉(zhuǎn)移指令,使程序執(zhí)行轉(zhuǎn)向在其它地址存放的中斷服務(wù)程序。中斷返回:中斷響應(yīng)后就轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,完成所需要的操

13、作。中斷服務(wù)程序的最后一條指令必須是中斷返回指令RETI,CPU執(zhí)行這條指令時(shí),把響應(yīng)中斷時(shí)置位的優(yōu)先級(jí)觸發(fā)器復(fù)位,再?gòu)亩褩V袕棾鰯帱c(diǎn)地址送入程序計(jì)數(shù)器PC,以便從斷點(diǎn)處重新執(zhí)行被中斷的主程序。2.3.2 MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器MCS-51單片機(jī)共有兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器,分別稱定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1。它們都是十六位加法計(jì)數(shù)結(jié)構(gòu),分別由TH0(地址8CH)和TL0(地址8AH)及TH1(地址8DH)和TL1(地址8BH)兩個(gè)8位計(jì)數(shù)器組成。這四個(gè)計(jì)數(shù)器均屬專用寄存器之列。MCS-51的每個(gè)定時(shí)器/計(jì)數(shù)器都具有定時(shí)和計(jì)數(shù)兩種功能。1. 計(jì)數(shù)功能:所謂計(jì)數(shù)是指對(duì)外部事件

14、進(jìn)行計(jì)數(shù)。外部事件的發(fā)生以輸入脈沖表示,因此計(jì)數(shù)功能的實(shí)質(zhì)就是對(duì)外來脈沖進(jìn)行計(jì)數(shù)。2. 定時(shí)功能:定時(shí)功能也是通過計(jì)數(shù)器的計(jì)數(shù)來實(shí)現(xiàn)的。不過此時(shí)的計(jì)數(shù)脈沖來自單片機(jī)的內(nèi)部,即每個(gè)機(jī)器周期產(chǎn)生一個(gè)計(jì)數(shù)脈沖。也就是每個(gè)機(jī)器周期計(jì)數(shù)器加1。由于一個(gè)機(jī)器周期等于12個(gè)振蕩脈沖周期,因此計(jì)數(shù)頻率為振蕩頻率的1/12。定時(shí)器/計(jì)數(shù)器提供給用戶使用的有:八位計(jì)數(shù)器TH和TL,以及有關(guān)的控制位。這些內(nèi)容只能以軟件方法使用。2.3.3MCS-51定時(shí)器/計(jì)數(shù)器的四種工作方式1. 定時(shí)工作方式0方式0是13位計(jì)數(shù)結(jié)構(gòu)的工作方式,其計(jì)數(shù)器由TH0全部8位和TL0的低5位構(gòu)成。當(dāng)TL0的低5位計(jì)數(shù)溢出時(shí),向TH0進(jìn)位

15、,而全部13位計(jì)數(shù)溢出時(shí),則向計(jì)數(shù)溢出標(biāo)志位TF0進(jìn)位。2. 定時(shí)工作方式1方式1是16位計(jì)數(shù)結(jié)構(gòu)的工作方式,計(jì)數(shù)器由TH0全部8位和TL0全部8位構(gòu)成。3. 定時(shí)工作方式2工作方式2是自動(dòng)重新加載工作方式。在這種工作方式下,把16位計(jì)數(shù)器分為兩部分,即以TL作計(jì)數(shù)器,以TH作預(yù)置寄存器,初始化時(shí)把計(jì)數(shù)初值分別裝入TL和TH中。當(dāng)計(jì)數(shù)溢出后,不是像前兩種工作方式那樣通過軟件方法,而是由預(yù)置寄存器TH以硬件方法自動(dòng)給計(jì)數(shù)器TL重新加載。變軟件加載為硬件加載。初始化時(shí),8位計(jì)數(shù)初值同時(shí)裝入TL0和TH0中。當(dāng)TL0計(jì)數(shù)溢出時(shí),置位TF0,同時(shí)把保存在預(yù)置寄存器TH0中的計(jì)數(shù)初值自動(dòng)加載TL0,然后

16、TL0重新計(jì)數(shù)。如此重復(fù)不止。這不但省去了用戶程序中的重裝指令,而且也有利于提高定時(shí)精度。但這種工作方式下是8位計(jì)數(shù)結(jié)構(gòu),計(jì)數(shù)值有限,最大只能到255。這種自動(dòng)重新加載工作方式非常適用于循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用,例如用于產(chǎn)生固定脈寬的脈沖,此外還可以作串行數(shù)據(jù)通信的波特率發(fā)送器使用。2.3.4 MCS-51的引腳說明1.電源引腳:(1)Vcc(40腳):+5V電源;(2)Vss(20腳):接地。2.時(shí)鐘引腳(1)XTAL1(19腳):如果采用外接晶體振蕩器時(shí),此引腳應(yīng)接地。(2)XTAL2(18腳):接外部晶體的另一端。2.2.2 控制引腳(1) RST/VPD(9腳):復(fù)位與備用電源。(2)

17、ALE/PROG*(30腳):第一功能ALE為地址鎖存允許,可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。PROG*為本引腳的第二功能。為編程脈沖輸入端。(3) PSEN* (29腳):讀外部程序存儲(chǔ)器的選通信號(hào)??梢则?qū)動(dòng)8個(gè)LS型TTL負(fù)載。(4) EA*/VPP (Enable Address/Voltage Pulse of Programing,31腳) EA*為內(nèi)外程序存儲(chǔ)器選擇控制端。 EA*=1,訪問片內(nèi)程序存儲(chǔ)器,但在PC(程序計(jì)數(shù)器)值超過0FFFH(對(duì)于8051、8751)時(shí),即超出片內(nèi)程序存儲(chǔ)器的4K字節(jié)地址范圍時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行外部程序存儲(chǔ)器內(nèi)的程序。EA*=0,單片機(jī)則只訪問外部程序存

18、儲(chǔ)器。VPP為本引腳的第二功能。用于施加編程電壓(例如+21V或+12V)。對(duì)89C51,加在VPP腳的編程電壓為+12V或+5V。2.2.3 I/O口引腳(1) P0口:雙向8位三態(tài)I/O口,此口為地址總線(低8位)及數(shù)據(jù)總線分時(shí)復(fù)用口,可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。(2) P1口:8位準(zhǔn)雙向I/O口,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。(3) P2口:8位準(zhǔn)雙向I/O口,與地址總線(高8位)復(fù)用,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。(4) P3口:8位準(zhǔn)雙向I/O口,雙功能復(fù)用口,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。要特別注意準(zhǔn)雙向口與雙向三態(tài)口的差別。當(dāng)3個(gè)準(zhǔn)雙向I/O口作輸入口使用時(shí),要向該口先寫“1”,另外準(zhǔn)

19、雙向I/O口無高阻的“浮空”狀態(tài)。第3章 數(shù)字鐘原理圖元件清單及設(shè)計(jì)方案3.1 時(shí)鐘電路原理圖圖3-1 時(shí)鐘電路原理圖3.2 單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:?jiǎn)纹瑱C(jī)、晶振電路、復(fù)位電路。下面給出一個(gè)51單片機(jī)的最小系統(tǒng)電路圖。圖3-2 最小系統(tǒng)電路圖復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合"電容電壓不能突變"的性質(zhì)可以知道,當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來決定。典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)

20、位,所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位。晶振電路:典型的晶振取11.0592MHz(因?yàn)榭梢詼?zhǔn)確地得到9600波特率和19200波特率,用于有串口通訊的場(chǎng)合)/12MHz(產(chǎn)生精確的uS級(jí)時(shí)歇,方便定時(shí)操作)特別注意:對(duì)于31腳(EA/Vpp),當(dāng)接高電平時(shí),單片機(jī)在復(fù)位后從內(nèi)部ROM的0000H開始執(zhí)行;當(dāng)接低電平時(shí),復(fù)位后直接從外部ROM的0000H開始執(zhí)行。3.3 顯示器工作原理系統(tǒng)采用動(dòng)態(tài)顯示方式,用P0口來控制LED數(shù)碼管的段控線,而用P2口來控制其位控線。動(dòng)態(tài)顯示通常都是采用動(dòng)態(tài)掃描的方法進(jìn)行顯示,即循環(huán)點(diǎn)亮每一個(gè)數(shù)碼管,這樣雖然在任何時(shí)刻都只有一位數(shù)碼管被點(diǎn)亮,但由于人

21、眼存在視覺殘留效應(yīng),只要每位數(shù)碼管間隔時(shí)間足夠短,就可以給人以同時(shí)顯示的感覺。3.4 元件清單元件名稱規(guī)格型號(hào)數(shù)量(個(gè))單片機(jī)AT89c511晶振11.0592MHz1電容30pF2電容22F1按鍵BUTTON4排阻RESPACK-8/10K1鎖存器 74ls2452液晶顯示7SEG-MPX6-CC1表3.4 電子鐘元器件清單3.5設(shè)計(jì)方案與實(shí)現(xiàn)本課題采用軟件程序設(shè)計(jì)的方案,利用MCS51內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),LED數(shù)碼顯示器和按鍵,配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。運(yùn)用串行通信方式且計(jì)時(shí)不占用CPU時(shí)間,能夠充分利用好CPU。二、 軟件流程及儲(chǔ)器地址分配: 主程序: 初始

22、化與按鍵監(jiān)控。 計(jì)時(shí)子程序: 為定時(shí)器1中斷服務(wù)子程序,完成刷新計(jì)時(shí)緩沖區(qū)的功能。 時(shí)間設(shè)置: 由按鍵輸入設(shè)置當(dāng)前時(shí)間。 顯示: 完成6位動(dòng)態(tài)顯示。 按鍵掃描: 判斷是否有鍵按下,并取鍵號(hào)。(6)其它輔助子程序,如按鍵設(shè)置、顯示、延時(shí)等。三、 完成功能: 時(shí)間顯示: 上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)鐘顯示從00:00:00開始計(jì)時(shí),此時(shí)可以設(shè)定當(dāng)前時(shí)間。 時(shí)間調(diào)整:按下k1鍵,系統(tǒng)停止計(jì)時(shí),進(jìn)入設(shè)定狀態(tài),系統(tǒng)保持原有顯示,等待鍵入當(dāng)前時(shí)間,按下k2,k3鍵可以順序設(shè)置時(shí)、分,并在相應(yīng)數(shù)碼管上顯示設(shè)置值,直至6位設(shè)置完畢,放開k4開始計(jì)時(shí)顯示。3.6 AT89C51介紹3.6.1 存儲(chǔ)器的結(jié)構(gòu)AT89C51

23、是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51有PDIP,PLCC,TQFP三種封裝方式,其中最常見的就是采用40P

24、IN封裝的雙列直接PDIP封裝。 芯片共有40個(gè)引腳,引腳的排列順序?yàn)閺目啃酒娜笨谧筮吥橇心鏁r(shí)針數(shù)起,依次為1,2,3,4。40,其中芯片的1腳頂上有一個(gè)凹點(diǎn)。在單片機(jī)的40 個(gè)引腳中,電源引腳2根,外接晶體振蕩器引腳2根,控制引腳4根以及4組8為可編程I/O引腳32根。數(shù)據(jù)存儲(chǔ)器:AT89C51有256 字節(jié)片內(nèi)數(shù)據(jù)存儲(chǔ)器。高128 字節(jié)與特殊功能寄存器重疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。當(dāng)一條指令訪問高于7FH 的地址時(shí),尋址方式?jīng)Q定CPU 訪問高128 字節(jié)RAM 還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。第4章 電路的硬件

25、設(shè)計(jì)4.1 數(shù)字鐘硬件框圖1、數(shù)字鐘的構(gòu)成:振蕩器、分頻器、計(jì)數(shù)器、譯碼器、顯示器等幾部分2、數(shù)字鐘的時(shí)、分、秒實(shí)際上就是由一個(gè)24進(jìn)制計(jì)數(shù)器(00-23),兩個(gè)60進(jìn)制計(jì)數(shù)器(00-59)級(jí)聯(lián)構(gòu)成。設(shè)計(jì)數(shù)字鐘實(shí)際上就是計(jì)數(shù)器的級(jí)聯(lián)。3、60進(jìn)制計(jì)數(shù)器的設(shè)計(jì)4、24進(jìn)制計(jì)數(shù)器的設(shè)計(jì)5、計(jì)數(shù)器的級(jí)聯(lián)設(shè)計(jì)。 圖4.1(二)數(shù)字鐘設(shè)計(jì)要點(diǎn):EWB軟件本身提供任意頻率的時(shí)鐘,因此振蕩器、分頻器不需設(shè)計(jì);  另外EWB軟件也帶有內(nèi)置譯碼驅(qū)動(dòng)的數(shù)碼管,故此譯碼器和顯示器也不需設(shè)計(jì)。  這樣,數(shù)字鐘的設(shè)計(jì)實(shí)際上就是設(shè)計(jì)如下圖的計(jì)數(shù)器 EWB軟件本身提供任意頻率的時(shí)鐘,

26、因此振蕩器、分頻器不需設(shè)計(jì);4.2 程序整體設(shè)計(jì)定時(shí)模塊,顯示模塊,數(shù)據(jù)調(diào)整模塊,狀態(tài)調(diào)整模塊。 (1)總體介紹:此部分主要介紹定時(shí)模塊,和顯示模塊。定時(shí)部分采用經(jīng)典的定時(shí)器定時(shí)。它實(shí)現(xiàn)了數(shù)字鐘的主要部分,和秒表的主要部分,以及產(chǎn)生報(bào)時(shí)信號(hào),定時(shí)設(shè)置。顯示模塊是實(shí)現(xiàn)數(shù)字鐘的又一重要部分,其模塊的的獨(dú)立程度直接影響到數(shù)字鐘的可視化程度。在此部分的設(shè)計(jì)中,設(shè)置專用顯示數(shù)據(jù)緩沖區(qū)40h-45h,與分,時(shí)及其他數(shù)據(jù)緩沖區(qū)數(shù)據(jù)區(qū)別,在其中存放的是顯示段碼,而其他緩沖區(qū)存放的是時(shí)間數(shù)據(jù)。在顯示時(shí),首先將時(shí)間十進(jìn)制數(shù)據(jù)轉(zhuǎn)化為顯示段碼,然后送往數(shù)碼管顯示。顯示段碼采用動(dòng)態(tài)掃描的方式。在要求改變顯示數(shù)據(jù)的類別時(shí)

27、,只須改變R0(指向數(shù)據(jù)緩沖區(qū)的指針)指向的十進(jìn)制數(shù)據(jù)緩沖區(qū)即可。(2)數(shù)據(jù)調(diào)整:數(shù)據(jù)調(diào)整有多種方式。一,可以直接進(jìn)入相關(guān)狀態(tài)進(jìn)行有關(guān)操作,二,將調(diào)整分兩步,先進(jìn)入狀態(tài),然后執(zhí)行操作,這兩步分別由兩個(gè)鍵控制。方式一,比較直接,設(shè)計(jì)思想也比較簡(jiǎn)單,但是,這種方式存在操作時(shí)間和控制鍵數(shù)目的矛盾。如果用比較少的鍵,那么可能會(huì)在進(jìn)入狀態(tài)后處于數(shù)據(jù)調(diào)整等待狀態(tài),這樣會(huì)影響到顯示的掃描速度。 當(dāng)然在這種方式下,還可以使用多個(gè)狀態(tài)鍵,每個(gè)狀態(tài)鍵,完成一個(gè)對(duì)應(yīng)數(shù)據(jù)的調(diào)整。如果采用二的方式,就不會(huì)出現(xiàn)這種情況。因?yàn)闋顟B(tài)的調(diào)整,與狀態(tài)的操作可以分別由兩個(gè)鍵控制,其狀態(tài)的調(diào)整數(shù)可以多達(dá)256個(gè),操作的完成是這樣的,

28、一鍵控制狀態(tài)的調(diào)整,一鍵控制數(shù)據(jù)的調(diào)整。以上兩種方式的實(shí)現(xiàn)都可以采用查詢和中斷的方式。兩種方式必須注意的問題是兩者進(jìn)行相關(guān)操作的過程不能太長(zhǎng)否則會(huì)影響顯示的掃描。利用查詢的方式,方法傳統(tǒng),對(duì)此就不作過多的討論,以下是采用中斷的方式實(shí)現(xiàn)的數(shù)字鐘的一些討論和有關(guān)問題作的一些處理?;谝陨系挠懻摽梢栽O(shè)計(jì)如下:將調(diào)整分為狀態(tài)調(diào)整和數(shù)據(jù)調(diào)整兩部分,每次進(jìn)入中斷只執(zhí)行一次操作,然后返回,這樣,就不必讓中斷處于調(diào)整等待狀態(tài),這樣,可以使中斷的耗時(shí)很小。將定時(shí)器中斷的優(yōu)先級(jí)設(shè)置為最高級(jí),那么中斷的方式和查詢的方式一樣不會(huì)影響到時(shí)鐘的記數(shù)。關(guān)于程序數(shù)據(jù)的穩(wěn)定性應(yīng)注意兩個(gè)問題:一,在低優(yōu)先級(jí)中斷響應(yīng)時(shí),應(yīng)在入棧保

29、護(hù)數(shù)據(jù)時(shí)禁止高優(yōu)先級(jí)的中斷響應(yīng)。二,在入棧保護(hù)有關(guān)數(shù)據(jù)后,對(duì)中斷程序執(zhí)行有影響的狀態(tài)位,寄存器,必須恢復(fù)為復(fù)位狀態(tài)的值。例如,在以下程序中,由于用到了十進(jìn)制調(diào)整,所以在中斷進(jìn)入時(shí),將PSW中的AC,CY位清零,否則,十進(jìn)制調(diào)整出錯(cuò)。(4)定時(shí)準(zhǔn)確性的討論:程序中定時(shí)器,一直處于運(yùn)行狀態(tài),也就是說定時(shí)器是理想運(yùn)作的,其中斷程序每隔0.1秒執(zhí)行一次,在理想狀態(tài)下,定時(shí)器定時(shí)是沒有系統(tǒng)誤差的,但由于定時(shí)器中斷溢出后,定時(shí)器從0開始計(jì)數(shù),直到被重新置數(shù),才開始正確定時(shí),這樣中斷溢出到中斷響應(yīng)到定時(shí)器被重新置數(shù),其間消耗的時(shí)間就造成了定時(shí)器定時(shí)的誤差。如果在前述定時(shí)器不關(guān)的情況下,在中斷程序的一開始就給

30、定時(shí)器置數(shù),此時(shí)誤差最小,誤差大約為:每0.1秒,誤差712個(gè)機(jī)器周期。(5)軟件消抖:消抖可以采用硬件的方式,也可以采用軟件的方式。在此只討論軟件方式。軟件消抖有定時(shí)器定時(shí),和利用延時(shí)子程序兩種方式。一,定時(shí)器定時(shí)消抖可以不影響顯示模塊掃描速度,其實(shí)現(xiàn)方法是:設(shè)置標(biāo)志位,在定時(shí)器中斷中將其置位,然后在程序中查詢。將其中斷優(yōu)先級(jí)設(shè)置為低于時(shí)鐘定時(shí)中斷,那么它就可以完全不影響時(shí)鐘定時(shí)。二,在采用延時(shí)子程序時(shí),如果顯示模塊的掃描速度本來就不是很快,此時(shí)可能會(huì)影響到顯示的效果,一般情況下,每秒的掃描次數(shù)不應(yīng)小于50次,否則,數(shù)碼的顯示會(huì)出現(xiàn)閃爍的情況。因此,延時(shí)子程序的延時(shí)時(shí)間應(yīng)該小于20毫秒,如果

31、采用定時(shí)器定時(shí)的方式,延時(shí)時(shí)間不影響時(shí)鐘。4.3數(shù)字鐘的操作按鍵KEY0狀態(tài)1: KEY0=k-0,調(diào)整數(shù)字鐘的秒數(shù)據(jù),每按一次加1秒。狀態(tài)2: KEY0=k-1, 調(diào)整數(shù)字鐘的分?jǐn)?shù)據(jù),每按一次加1分。狀態(tài)3: KEY0=k-2,調(diào)整數(shù)字鐘的時(shí)數(shù)據(jù),每按一次加1時(shí)。狀態(tài)4: KEY0=k-3,設(shè)置按鍵,按一次時(shí)間為停止?fàn)顟B(tài),時(shí)間設(shè)好后再按一次時(shí)間即按設(shè)好的時(shí)間開始。說明:狀態(tài)N表示KEY0鍵按下N次。在進(jìn)行調(diào)整或設(shè)置狀態(tài)時(shí),顯示對(duì)應(yīng)狀態(tài)的數(shù)據(jù)并且對(duì)應(yīng)的各調(diào)整位數(shù)碼管的DP點(diǎn)亮。這樣可以使調(diào)整更加可視化。第5章 數(shù)字鐘的工作原理介紹5.1 實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)的基本方法利用MCS-51系列單片機(jī)的可編程

32、定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)來實(shí)現(xiàn)時(shí)鐘計(jì)數(shù)。(1) 計(jì)數(shù)初值計(jì)算:把定時(shí)器設(shè)為工作方式1,定時(shí)時(shí)間為50ms,則計(jì)數(shù)溢出20次即得時(shí)鐘計(jì)時(shí)最小單位秒,而100次計(jì)數(shù)可用軟件方法實(shí)現(xiàn)。(2) 采用中斷方式進(jìn)行溢出次數(shù)累計(jì),計(jì)滿20次為秒計(jì)時(shí)(1秒);(3) 從秒到分和從分到時(shí)的計(jì)時(shí)是通過累加和數(shù)值比較實(shí)現(xiàn)。5.2 數(shù)字鐘的時(shí)間顯示電子鐘的時(shí)鐘時(shí)間在六位數(shù)碼管上進(jìn)行顯示,因此,在內(nèi)部RAM中設(shè)置顯示緩沖區(qū)共8個(gè)單元。LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED137H 36H 35H 34H 33H 32H 31H 30H時(shí)十位 時(shí)個(gè)位 分隔 分十位 分個(gè)位 分隔 秒十位

33、 秒個(gè)位5.3 計(jì)時(shí)利用AT89C51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本,且能使讀者在定時(shí)/計(jì)數(shù)器的使用、中斷及程序設(shè)計(jì)方面得到鍛煉與提高,對(duì)單片機(jī)的指令系統(tǒng)能有更深入的了解,從而對(duì)學(xué)好單片機(jī)技術(shù)這門課程起到一定的作用。5.4 鍵盤/顯示AT89C51的P0口和P2口外接由八個(gè)LED數(shù)碼管(LED8LED1)構(gòu)成的顯示器,用P0口作LED的段碼輸出口,P2口作八個(gè)LED數(shù)碼管的位控輸出線,P1口外接四個(gè)按鍵A、B構(gòu)成鍵盤電路。 AT89C51 是一種低功耗,高性能的CMOS 8位微型計(jì)算機(jī)。它帶有8K Flash 可編程和擦除的只讀存儲(chǔ)器(

34、EPROM),該器件采用ATMEL的高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)上標(biāo)準(zhǔn)的80C51和80C52的指令系統(tǒng)及引腳兼容,片內(nèi)Flash 集成在一個(gè)芯片上,可用與解決復(fù)雜的問題,且成本較低。簡(jiǎn)易數(shù)字鐘的功能不復(fù)雜,采用其現(xiàn)有的I/O便可完成,所以本書中采用此的設(shè)計(jì)方案。第6章軟件設(shè)計(jì)與源程序代碼6.1軟件選擇與介紹6.1.1 軟件介紹Proteus6.9的ISIS是一款Labcenter出品的電路分析實(shí)物仿真系統(tǒng),可仿真各種電路和IC,并支持單片機(jī),元件庫(kù)齊全,使用方便,是不可多得的專業(yè)的單片機(jī)軟件仿真系統(tǒng)。 單片機(jī)仿真軟件proteus功能和使用場(chǎng)合Proteus軟件是來自英國(guó)Labcen

35、ter electronics公司的EDA工具軟件,Proteus軟件有十多年的歷史,在全球廣泛使用,除了其具有和其它EDA工具一樣的原理布圖、PCB自動(dòng)或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動(dòng)的,針對(duì)微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)軟件源碼級(jí)的實(shí)時(shí)調(diào)試,如有顯示及輸出,還能看到運(yùn)行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等,您不需要?jiǎng)e的,Proteus為您建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境!Proteus組合了高級(jí)原理布圖、混合模式SPICE仿真,PCB設(shè)計(jì)以及自動(dòng)布線來實(shí)現(xiàn)一個(gè)完整的電子設(shè)計(jì)系統(tǒng)。Proteus 產(chǎn)品系列

36、也包含了我們革命性的VSM技術(shù),用戶可以對(duì)基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真。用戶甚至可以實(shí)時(shí)采用諸如LED/LCD、鍵盤、RS232終端等動(dòng)態(tài)外設(shè)模型來對(duì)設(shè)計(jì)進(jìn)行交互仿真。6.1.2 該軟件的特點(diǎn): 全部滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的優(yōu)勢(shì)。 具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS一232動(dòng)態(tài)仿真、1 C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。 目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18

37、系列、Z80系列、HC11系列以及各種外圍芯片。 支持大量的存儲(chǔ)器和外圍芯片??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大 ,可仿真51、AVR、PIC。 (1)proteus的工作過程 運(yùn)行 proteus的ISIS程序后,進(jìn)入該仿真軟件的主界面。在工作前,要設(shè)置view菜單下的捕捉對(duì)齊和system下的顏色、圖形界面大小等項(xiàng)目。通過工具欄中的p(從庫(kù)中選擇元件命令)命令,在pick devices窗口中選擇電路所需的元件,放置元件并調(diào)整其相對(duì)位置,元件參數(shù)設(shè)置,元器件間連線,編寫程序;在source菜單的Define code generation tools菜單

38、命令下,選擇程序編譯的工具、路徑、擴(kuò)展名等項(xiàng)目;在source菜單的Add/remove source files命令下,加入單片機(jī)硬件電路的對(duì)應(yīng)程序;通過debug菜單的相應(yīng)命令仿真程序和電路的運(yùn)行情況。 (2)Proteus軟件所提供的元件資源 Proteus 軟件所提供了30多個(gè)元件庫(kù),數(shù)千種元件。元件涉及到數(shù)字和模擬、交流和直流等。6.2源程序代碼#include<reg51.h> /頭文件 定義單片機(jī)內(nèi)部寄存器#define uchar unsigned char/宏定義 縮寫成uchar#define uint unsigned int/宏定義 縮寫成uint/數(shù)碼管位

39、端口定義sbit w1=P22;sbit w2=P23;sbit w3=P24;sbit w4=P25;sbit w5=P26;sbit w6=P27;/按鍵/sbit key1=P34;/設(shè)置時(shí)間sbit key2=P35;/加sbit key3=P36;/減sbit key4=P37;/鬧鐘sbit beep=P10;/蜂鳴器/共陰數(shù)碼管段信號(hào)編碼/uchar code table10=/0-90xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6;/uchar num,miao,fen,shi;/計(jì)時(shí) 時(shí)分秒變量uchar fen1,shi1;

40、/鬧鐘變量uchar d1,d2,d3,d4,d5,d6;/顯示拆分?jǐn)?shù)據(jù)void delay(uint ms)/1ms 延時(shí)函數(shù)數(shù)據(jù)保持用的括號(hào)里面是幾大概就延時(shí)多少msuchar x;for(ms;ms>0;ms-)for(x=110;x>0;x-);void display()/顯示函數(shù)d1=shi/10;/小時(shí)d2=shi%10;/d3=fen/10;/d4=fen%10;/分鐘d5=miao/10;/d6=miao%10;/秒w1=0;P0=tabled1;delay(10);/第1位顯示數(shù)據(jù)P0=0x00;w1=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w2=0;P0=tabled2

41、|0x01;delay(10);/第2位顯示數(shù)據(jù)P0=0x00;w2=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w3=0;P0=tabled3;delay(10);/第3位顯示數(shù)據(jù)P0=0x00;w3=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w4=0;P0=tabled4|0x01;delay(10);/第4位顯示數(shù)據(jù)P0=0x00;w4=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w5=0;P0=tabled5;delay(10);/第5位顯示數(shù)據(jù)P0=0x00;w5=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w6=0;P0=tabled6;delay(10);/第6位顯示數(shù)據(jù)P0=0x00;w6=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影void

42、disp_set()/顯示函數(shù)d1=shi1/10;/小時(shí)d2=shi1%10;/d3=fen1/10;/d4=fen1%10;/分鐘w1=0;P0=tabled1;delay(10);/第1位顯示數(shù)據(jù)P0=0x00;w1=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w2=0;P0=tabled2|0x01;delay(10);/第2位顯示數(shù)據(jù)P0=0x00;w2=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w3=0;P0=tabled3;delay(10);/第3位顯示數(shù)據(jù)P0=0x00;w3=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w4=0;P0=tabled4|0x01;delay(10);/第4位顯示數(shù)據(jù)P0=0x00;w

43、4=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w5=0;P0=table0;delay(10);/第5位顯示數(shù)據(jù)P0=0x00;w5=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影w6=0;P0=table0;delay(10);/第6位顯示數(shù)據(jù)P0=0x00;w6=1;/關(guān)閉顯示消除動(dòng)態(tài)掃描陰影void didi()/滴滴聲 設(shè)置時(shí)間時(shí)調(diào)用uchar i;beep=0;for(i=0;i<5;i+)display(); /開啟蜂鳴器 保持響聲beep=1;for(i=0;i<5;i+)display(); /關(guān)閉蜂鳴器 保持關(guān)閉void didi1()/滴滴聲 設(shè)置鬧鐘時(shí)調(diào)用uchar i;/在括號(hào)里調(diào)用顯

44、示函數(shù)也是起到延時(shí)作用 為了防止下響聲音的時(shí)候數(shù)碼管抖動(dòng)beep=0;for(i=0;i<5;i+)disp_set();/開啟蜂鳴器 保持響聲beep=1;for(i=0;i<5;i+)disp_set();/關(guān)閉蜂鳴器 保持關(guān)閉void keyscan()/調(diào)時(shí)按鍵掃描函數(shù)uchar k_flag,set_flag;if(key1=0)/按鍵按下 一下所有按鍵執(zhí)行的模式都是一樣的delay(10);/延時(shí)消除按鍵抖動(dòng)if(key1=0)/確定按鍵按下k_flag=1;didi();/滴滴聲while(key1=0)display();/等待按鍵松手while(k_flag=1)

45、/開始調(diào)整小時(shí)數(shù)據(jù)display();if(key1=0)delay(10);/延時(shí)消抖if(key1=0)k_flag=2;didi();/滴滴聲while(key1=0)display();if(key2=0)delay(10);if(key2=0)shi+;didi();/滴滴聲if(shi=24)shi=0;while(key2=0)display();if(key3=0)delay(10);if(key3=0)if(shi=0)shi=24; shi-;didi();/滴滴聲while(key3=0)display();while(k_flag=2)/開始調(diào)整分鐘數(shù)據(jù)display(

46、);if(key1=0)delay(10);/延時(shí)消抖if(key1=0)k_flag=3;didi();/滴滴聲while(key1=0)display();if(key2=0)delay(10);if(key2=0)fen+;didi();/滴滴聲if(fen=60)fen=0;while(key2=0)display();if(key3=0)delay(10);if(key3=0)if(fen=0)fen=60; fen-;didi();/滴滴聲while(key3=0)display();while(k_flag=3)/開始調(diào)整秒數(shù)據(jù)display();if(key1=0)delay(

47、10);/延時(shí)消抖if(key1=0)didi();/滴滴聲didi();/滴滴聲k_flag=0;while(key1=0)display();if(key2=0)delay(10);if(key2=0)didi();/滴滴聲miao+;if(miao=60)miao=0;while(key2=0)display();if(key3=0)delay(10);if(key3=0)didi();/滴滴聲if(miao=0)miao=60; miao-;while(key3=0)display();/設(shè)置定時(shí)時(shí)間/if(key4=0)delay(10);if(key4=0)didi1();/滴滴聲

48、set_flag=1;while(key4=0)disp_set();while(set_flag=1)disp_set();if(key2=0)delay(10);if(key2=0)didi1();/滴滴聲shi1+;if(shi1=24)shi1=0;while(key2=0)disp_set();if(key3=0)delay(10);if(key3=0)didi1();/滴滴聲if(shi1=0)shi1=24;shi1-;while(key3=0)disp_set();if(key4=0)delay(10);if(key4=0)didi1();/滴滴聲set_flag=2;while(key4=0)disp_set();while(set_flag=2)disp_set();if(key2=0)delay(10);if(key2=0)didi1();/滴滴聲fen1+;if(fen1=60)fen1=0;while(key2=0)disp_set();if(key3=0)delay(10);if(key3=0)didi1();/滴滴聲if(fen1=0)fen1=60;fen1-;while(key3=0)disp_set

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論