AT89C51單片機(jī)電子時(shí)鐘設(shè)計(jì)_第1頁(yè)
AT89C51單片機(jī)電子時(shí)鐘設(shè)計(jì)_第2頁(yè)
AT89C51單片機(jī)電子時(shí)鐘設(shè)計(jì)_第3頁(yè)
AT89C51單片機(jī)電子時(shí)鐘設(shè)計(jì)_第4頁(yè)
AT89C51單片機(jī)電子時(shí)鐘設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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、AT89C51單片機(jī)電子時(shí)鐘設(shè)計(jì) 學(xué)院: 專業(yè): 學(xué)號(hào): 學(xué)生: 目錄1 電子時(shí)鐘41.1 電子時(shí)鐘簡(jiǎn)介41.2 電子時(shí)鐘的基本特點(diǎn)41.3 電子時(shí)鐘的原理42 單片機(jī)識(shí)的相關(guān)知識(shí)42.1單片機(jī)簡(jiǎn)介42.2 單片機(jī)的特點(diǎn)52.3 AT89C51單片機(jī)介紹53 設(shè)計(jì)方案的選擇73.1計(jì)時(shí)方案73.2 顯示方案73.3 數(shù)碼管顯示工作原理83.4 鍵盤電路設(shè)計(jì)93.5 主控模塊AT89C5194 系統(tǒng)軟件設(shè)計(jì)9附錄12 摘要:?jiǎn)纹瑱C(jī)自20世紀(jì)70年代問世以來,以其極高的性能價(jià)格比,受到人們的重視和關(guān)注。單片機(jī)體積小、重量輕、抗干擾能力強(qiáng)、環(huán)境要求不高、價(jià)格低廉、可靠性高、靈活性好、開發(fā)較為容易。由

2、于具有上述優(yōu)點(diǎn),單片機(jī)已廣泛地應(yīng)用在工業(yè)自動(dòng)化控制、自動(dòng)檢測(cè)、智能儀器儀表、家用電器、電力電子、機(jī)電一體化設(shè)備等各個(gè)方面,而51單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次設(shè)計(jì)通過對(duì)它的學(xué)習(xí)、應(yīng)用,以AT89C51芯片為核心,輔以必要的電路,設(shè)計(jì)了一個(gè)簡(jiǎn)易的電子時(shí)鐘,它由4.5V直流電源供電,通過數(shù)碼管能夠準(zhǔn)確顯示時(shí)間,調(diào)整時(shí)間,從而到達(dá)學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬件的能力。 關(guān)鍵詞:?jiǎn)纹瑱C(jī);電子時(shí)鐘;AT89C511 電子時(shí)鐘1.1 電子時(shí)鐘簡(jiǎn)介本設(shè)計(jì)采用AT89C51單片機(jī),以匯編語(yǔ)言為程序設(shè)計(jì)的基礎(chǔ),設(shè)計(jì)一個(gè)用六位數(shù)碼管顯示時(shí)、分、秒的時(shí)鐘?,F(xiàn)代的電子時(shí)鐘是基于單片機(jī)的一種計(jì)時(shí)工具,采用

3、延時(shí)程序產(chǎn)生一定的時(shí)間中斷,用于一秒的定義,通過計(jì)數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時(shí)進(jìn)一,滿二十四小時(shí)小時(shí)清零,從而達(dá)到計(jì)時(shí)的功能,是人民日常生活不可缺少的工具。1.2 電子時(shí)鐘的基本特點(diǎn)現(xiàn)在高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí)、分、秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。1.3 電子時(shí)鐘的原理 該電子時(shí)鐘由AT89C51,鍵盤,八段數(shù)碼管等構(gòu)成,采

4、用晶振電路作為驅(qū)動(dòng)電路,由延時(shí)程序和循環(huán)程序產(chǎn)生的一秒定時(shí),達(dá)到時(shí)分秒的計(jì)時(shí),六十秒為一分鐘,六十分鐘為一小時(shí),滿二十四小時(shí)為一天。而電路中唯一的一個(gè)控制鍵卻擁有多種不同的功能,按下又松開,可以實(shí)現(xiàn)屏蔽數(shù)碼管顯示的功能,達(dá)到省電的目的;直接按下不松開,則可以通過按鍵實(shí)現(xiàn)分鐘的累加,每按一次分鐘加一;而連續(xù)兩次按下按鍵不放松,則可實(shí)現(xiàn)小時(shí)的調(diào)節(jié),同樣每按一次小時(shí)加一。2 單片機(jī)識(shí)的相關(guān)知識(shí)2.1單片機(jī)簡(jiǎn)介單片機(jī)是指一個(gè)集成在一塊芯片上的完整計(jì)算機(jī)系統(tǒng)。盡管他的大 部分功能集成在一塊小芯片上,但是它具有一個(gè)完整計(jì)算機(jī)所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會(huì)具有外 存。同

5、時(shí)集成諸如通訊接口、定時(shí)器,實(shí)時(shí)時(shí)鐘等外圍設(shè)備。而現(xiàn)在最強(qiáng)大的 單片機(jī)系統(tǒng)甚至可以將聲音、圖像、網(wǎng)絡(luò)、復(fù)雜的輸入輸出系統(tǒng)集成在一塊芯片上。2.2 單片機(jī)的特點(diǎn)1.單片機(jī)的存儲(chǔ)器ROM和RAM時(shí)嚴(yán)格區(qū)分的。ROM稱為程序存儲(chǔ)器,只存放程序,固定常數(shù),及數(shù)據(jù)表格。RAM則為數(shù)據(jù)存儲(chǔ)器,用作工作區(qū)及存放用戶數(shù)據(jù)。 2.采用面向控制的指令系統(tǒng)。為滿足控制需要,單片機(jī)有更強(qiáng)的邏輯控制能力,特別是單片機(jī)具有很強(qiáng)的位處理能力。 3.單片機(jī)的I/O口通常時(shí)多功能的。由于單片機(jī)芯片上引腳數(shù)目有限,為了解決實(shí)際引腳數(shù)和需要的信號(hào)線的矛盾,采用了引腳功能復(fù)用的方法,引腳處于何種功能,可由指令來設(shè)置或由機(jī)器狀態(tài)來區(qū)分

6、。 4.單片機(jī)的外部擴(kuò)展能力很強(qiáng)。在內(nèi)部的各種功能部件不能滿足應(yīng)用的需求時(shí),均可在外部進(jìn)行擴(kuò)展,與許多通用的微機(jī)接口芯片兼容,給應(yīng)用系統(tǒng)設(shè)計(jì)帶來了很大的方便。2.3 AT89C51單片機(jī)介紹 VCC:電源。 GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL

7、門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存 儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄

8、存器 的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時(shí)器0外部輸入) P3.5 T1(記時(shí)器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)

9、 P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器 時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令時(shí)ALE才起作用。

10、另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。圖1 AT89C51單片機(jī)3 設(shè)計(jì)方案的選擇3.1計(jì)時(shí)方案 方案1:采用實(shí)時(shí)時(shí)鐘芯片 現(xiàn)在市場(chǎng)上有很多

11、實(shí)時(shí)時(shí)鐘集成電路,如DS1287、DS12887、DS1302等。這些實(shí)時(shí)時(shí)鐘芯片具備年、月、日、時(shí)、分、秒計(jì)時(shí)功能和多點(diǎn)定時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新每秒自動(dòng)進(jìn)行一次,不需要程序干預(yù)。因此,在工業(yè)實(shí)時(shí)測(cè)控系統(tǒng)中多采用這一類專用芯片來實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能。 方案2:使用單片機(jī)內(nèi)部的可編程定時(shí)器 利用單片機(jī)內(nèi)部的定時(shí)計(jì)數(shù)器進(jìn)行中端定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本,但程序設(shè)計(jì)較為復(fù)雜。3.2 顯示方案 對(duì)于實(shí)時(shí)時(shí)鐘而言,顯示顯然是另一個(gè)重要的環(huán)節(jié)。通常LED顯示有兩種方式:動(dòng)態(tài)顯示和靜態(tài)顯示。 靜態(tài)顯示的優(yōu)點(diǎn)是程序簡(jiǎn)單、顯示亮度有保證、單片機(jī)CPU的開銷小,節(jié)約CPU的工作時(shí)間。但

12、占有I/O口線多,每一個(gè)LED都要占有一個(gè)I/O口,硬件開銷大,電路復(fù)雜。需要幾個(gè)LED就必須占有幾個(gè)并行口,比較適用于LED數(shù)量較少的場(chǎng)合。當(dāng)然當(dāng)LED數(shù)量較多的時(shí)候,可以使用單片機(jī)的串行口通過移位寄存器的方式加以解決,但程序編寫比較麻煩。 LED動(dòng)態(tài)顯示硬件連接簡(jiǎn)單,但動(dòng)態(tài)掃描的顯示方式需要占有CPU較多的時(shí)間,在單片機(jī)沒有太多實(shí)時(shí)測(cè)控任務(wù)的情況下可以采用。本系統(tǒng)需要采用6位LED數(shù)碼管來分別顯示時(shí)、分、秒,因數(shù)碼管個(gè)數(shù)較多,故本系統(tǒng)選擇動(dòng)態(tài)顯示方式。3.3 數(shù)碼管顯示工作原理 數(shù)碼管是一種把多個(gè)LED顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽(yáng)型,一種是共陰型。共陽(yáng)型就是把多個(gè)LE

13、D顯示段的陽(yáng)極接在一起,又稱為公共端。共陰型就是把多個(gè)LED顯示段的陰極接在一起,即為公共商。陽(yáng)極即為二極管的正極,又稱為正極,陰極即為二極管的負(fù)極,又稱為負(fù)極。通常的數(shù)碼管又分為8段,即8個(gè)LED顯示段,這是為工程應(yīng)用方便如設(shè)計(jì)的,分別為A、B、C、D、E、F、G、DP,其中DP 是小數(shù)點(diǎn)位段。而多位數(shù)碼管,除某一位的公共端會(huì)連接在一起,不同位的數(shù)碼管的相同端也會(huì)連接在一起。即,所有的A段都會(huì)連在一起,其它的段也是如此,這是實(shí)際最常用的用法。數(shù)碼管顯示方法可分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一直有效。動(dòng)態(tài)顯示的原理是,各個(gè)數(shù)碼管的相同段連接在一起,共同占用

14、8 位段引管線;每位數(shù)碼管的陽(yáng)極連在一起組成公共端。利用人眼的視覺暫留性,依次給出各個(gè)數(shù)碼管公共端加有效信號(hào),在此同時(shí)給出該數(shù)碼管加有效的數(shù)據(jù)信號(hào),當(dāng)全段掃描速度大于視覺暫留速度時(shí),顯示就會(huì)清晰顯示出來。圖2 數(shù)碼管3.4 鍵盤電路設(shè)計(jì)該設(shè)計(jì)只用了一個(gè)鍵盤,但實(shí)現(xiàn)的功能卻是比較完善,減少了硬件資源的損耗,該鍵盤可以實(shí)現(xiàn)小時(shí)和分鐘的調(diào)節(jié)以及控制是否進(jìn)入省電模式。當(dāng)按鍵按下又松開,可以實(shí)現(xiàn)屏蔽數(shù)碼管顯示的功能,達(dá)到省電的目的;直接按下不松開,則可以通過按鍵實(shí)現(xiàn)分鐘的累加,每按一次分鐘加一;而連續(xù)兩次按下按鍵不放松,則可實(shí)現(xiàn)小時(shí)的調(diào)節(jié),同樣每按一次小時(shí)加一。達(dá)到時(shí)間調(diào)節(jié)的目的。選擇的多功能按鍵如圖3

15、所示。圖3 多功能控制鍵3.5 主控模塊AT89C51AT89C51是一個(gè)8位單片機(jī),片內(nèi)ROM全部采用FLASH ROM技術(shù),晶振時(shí)鐘為12MHz。AT89C51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,有4個(gè)八位的并行雙向I/O端口,分別記作P0、P1、P2、P3。第31引腳需要接高電位使單片機(jī)選用內(nèi)部程序存儲(chǔ)器;第40腳為電源端VCC,接+5V電源,第20引腳為接地端VSS,通常在VCC和VSS引腳之間接0.1F高頻濾波電容。4 系統(tǒng)軟件設(shè)計(jì)在主程序的開始定義了一組固定單元用來存儲(chǔ)計(jì)數(shù)的分、秒、時(shí)的存儲(chǔ)單元。在主程序中,對(duì)不同的按鍵進(jìn)行掃描,實(shí)現(xiàn)秒表,時(shí)間調(diào)整。系統(tǒng)總體流程圖如圖4所示。N

16、YNYT0中斷入口通過查表方式顯示數(shù)據(jù)位選值=8數(shù)碼位選加1位選數(shù)值=0秒計(jì)數(shù)加1秒計(jì)數(shù)=500秒計(jì)數(shù)=0SECOND加1中斷返回開始圖4 總體流程圖系統(tǒng)子程序流程圖如圖5所示。YYNNN子程序入口SECOND=60SECOND=0,并MINUTE加1MINUTE=60MINUTE=0,并HOUR加1顯示數(shù)據(jù)處理中斷返回HOUR=24Y圖5 子程序流程圖附錄 程序清單 源程序ORG 0000H ;程序執(zhí)行開始地址LJMP START ;跳到標(biāo)號(hào)START執(zhí)行ORG 0003H ;外中斷0中斷程序入口RETI ;外中斷0中斷返回ORG 000BH ;定時(shí)器T0中斷程序入口LJMP INTT0 ;

17、跳至INTTO執(zhí)行ORG 0013H ;外中斷1中斷程序入口RETI ;外中斷1中斷返回ORG 001BH ;定時(shí)器T1中斷程序入口LJMP INTT1 ;跳至INTT1執(zhí)行ORG 0023H ;串行中斷程序入口地址RETI ;串行中斷程序返回START: MOV R0,#70H ;清70H-7AH共11個(gè)內(nèi)存單元MOV R7,#0BH CLEARDISP: MOV R0,#00H INC R0 DJNZ R7,CLEARDISP MOV 20H,#00H ;清20H(標(biāo)志用)MOV 7AH,#0AH ;放入"熄滅符"數(shù)據(jù)MOV TMOD,#11H ;設(shè)T0、T1為16位定

18、時(shí)器MOV TL0,#0B0H ;50MS定時(shí)初值(T0計(jì)時(shí)用)MOV TH0,#3CH ;50MS定時(shí)初值MOV TL1,#0B0H ;50MS定時(shí)初值(T1閃爍定時(shí)用)MOV TH1,#3CH ;50MS定時(shí)初值SETB EA ;總中斷開放SETB ET0 ;允許T0中斷SETB TR0 ;開啟T0定時(shí)器MOV R4,#14H ;1秒定時(shí)用初值(50MS×20)START1: LCALL DISPLAY ;調(diào)用顯示子程序JNB P3.7,SETMM1 ;P3.7口為0時(shí)轉(zhuǎn)時(shí)間調(diào)整程序SJMP START1 ;P3.7口為1時(shí)跳回START1SETMM1: LJMP SETMM ;

19、轉(zhuǎn)到時(shí)間調(diào)整程序SETMM1秒計(jì)時(shí)程序 INTT0: PUSH ACC ;累加器入棧保護(hù)PUSH PSW ;狀態(tài)字入棧保護(hù)CLR ET0 ;關(guān)T0中斷允許CLR TR0 ;關(guān)閉定時(shí)器T0MOV A,#0B7H ;中斷響應(yīng)時(shí)間同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重裝初值(低8位修正值) MOV A,#3CH ;高8位初值修正ADDC A,TH0 MOV TH0,A ;重裝初值(高8位修正值) SETB TR0 ;開啟定時(shí)器T0DJNZ R4, OUTT0 ;20次中斷未到中斷退出ADDSS: MOV R4,#14H ;20次中斷到(1秒)重賦初值MOV R0,#71

20、H ;指向秒計(jì)時(shí)單元(71H-72H)ACALL ADD1 ;調(diào)用加1程序(加1秒操作)MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合)CLR C ;清進(jìn)位標(biāo)志CJNE A,#60H,ADDMM ADDMM: JC OUTT0 ;小于60秒時(shí)中斷退出ACALL CLR0 ;大于或等于60秒時(shí)對(duì)秒計(jì)時(shí)單元清0 MOV R0,#77H ;指向分計(jì)時(shí)單元(76H-77H)ACALL ADD1 ;分計(jì)時(shí)單元加1分鐘MOV A,R3 ;分?jǐn)?shù)據(jù)放入ACLR C ;清進(jìn)位標(biāo)志 CJNE A,#60H,ADDHH ADDHH: JC OUTT0 ;小于60分時(shí)中斷退出ACALL CLR0 ;大于或等

21、于60分時(shí)分計(jì)時(shí)單元清0 MOV R0,#79H ;指向小時(shí)計(jì)時(shí)單元(78H-79H)ACALL ADD1 ;小時(shí)計(jì)時(shí)單元加1小時(shí) MOV A,R3 ;時(shí)數(shù)據(jù)放入ACLR C ;清進(jìn)位標(biāo)志CJNE A,#24H,HOUR HOUR: JC OUTT0 ;小于24小時(shí)中斷退出ACALL CLR0 ;大于或等于24小時(shí)小時(shí)計(jì)時(shí)單元清0OUTT0: MOV 72H,76H ;中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù)據(jù)移MOV 73H,77H ;入對(duì)應(yīng)顯示單元MOV 74H,78H MOV 75H,79H POP PSW ;恢復(fù)狀態(tài)字(出棧)POP ACC ;恢復(fù)累加器SETB ET0 ;開放T0中斷 RETI

22、;中斷返回閃動(dòng)調(diào)時(shí)程序 ;T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示INTT1: PUSH ACC ;中斷現(xiàn)場(chǎng)保護(hù)PUSH PSW MOV TL1, #0B0H ;裝定時(shí)器T1定時(shí)初值 MOV TH1, #3CH DJNZ R2,INTT1OUT ;0.3秒未到退出中斷(50MS中斷6次) MOV R2,#06H ;重裝0.3秒定時(shí)用初值CPL 02H ;0.3秒定時(shí)到對(duì)閃爍標(biāo)志取反 JB 02H,FLASH1 ;02H位為1時(shí)顯示單元"熄滅" MOV 72H,76H ;02H位為0時(shí)正常顯示MOV 73H,77H MOV 74H,78H MOV 75H,79H IN

23、TT1OUT: POP PSW ;恢復(fù)現(xiàn)場(chǎng)POP ACC RETI ;中斷退出FLASH1: JB 01H,FLASH2 ;01H位為1時(shí),轉(zhuǎn)小時(shí)熄滅控制MOV 72H,7AH ;01H位為0時(shí),"熄滅符"數(shù)據(jù)放入分MOV 73H,7AH ;顯示單元(72H-73H),將不顯示分?jǐn)?shù)據(jù)MOV 74H,78H MOV 75H,79H AJMP INTT1OUT ;轉(zhuǎn)中斷退出 FLASH2: MOV 72H,76H ;01H位為1時(shí),"熄滅符"數(shù)據(jù)放入小時(shí)MOV 73H,77H ;顯示單元(74H-75H),小時(shí)數(shù)據(jù)將不顯示 MOV 74H,7AH MOV 7

24、5H,7AH AJMP INTT1OUT ;轉(zhuǎn)中斷退出加1子程序 ADD1: MOV A,R0 ;取當(dāng)前計(jì)時(shí)單元數(shù)據(jù)到ADEC R0 ;指向前一地址SWAP A ;A中數(shù)據(jù)高四位與低四位交換ORL A,R0 ;前一地址中數(shù)據(jù)放入A中低四位 ADD A,#01H ;A加1操作DA A ;十進(jìn)制調(diào)整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位變0MOV R0,A ;放回前一地址單元MOV A,R3 ;取回R3中暫存數(shù)據(jù)INC R0 ;指向當(dāng)前地址單元SWAP A ;A中數(shù)據(jù)高四位與低四位交換ANL A,#0FH ;高四位變0MOV R0,A ;數(shù)據(jù)放入當(dāng)削地址單元中 RET ;

25、子程序返回清零程序 CLR0: CLR A ;清累加器MOV R0,A ;清當(dāng)前地址單元DEC R0 ;指向前一地址MOV R0,A ;前一地址單元清0RET ;子程序返回時(shí)鐘調(diào)整程序 ;當(dāng)調(diào)時(shí)按鍵按下時(shí)進(jìn)入此程序SETMM: CLR ET0 ;關(guān)定時(shí)器T0中斷CLR TR0 ;關(guān)閉定時(shí)器T0LCALL DL1S ;調(diào)用1秒延時(shí)程序JB P3.7,CLOSEDIS ;鍵按下時(shí)間小于1秒,關(guān)閉顯示(省電) MOV R2,#06H ;進(jìn)入調(diào)時(shí)狀態(tài),賦閃爍定時(shí)初值 SETB ET1 ;允許T1中斷SETB TR1 ;開啟定時(shí)器T1SET2: JNB P3.7,SET1 ;P3.7口為0(鍵未釋放),

26、等待SETB 00H ;鍵釋放,分調(diào)整閃爍標(biāo)志置1SET4: JB P3.7,SET3 ;等待鍵按下LCALL DL05S ;有鍵按下,延時(shí)0.5秒JNB P3.7,SETHH ;按下時(shí)間大于0.5秒轉(zhuǎn)調(diào)小時(shí)狀態(tài)MOV R0,#77H ;按下時(shí)間小于0.5秒加1分鐘操作LCALL ADD1 ;調(diào)用加1子程序MOV A,R3 ;取調(diào)整單元數(shù)據(jù)CLR C ;清進(jìn)位標(biāo)志CJNE A,#60H,HHH ;調(diào)整單元數(shù)據(jù)與60比較HHH: JC SET4 ;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán)LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于60時(shí)清0CLR C ;清進(jìn)位標(biāo)志AJMP SET4 ;跳轉(zhuǎn)到SET4

27、循環(huán)CLOSEDIS:SETB ET0 ;省電(LED不顯示)狀態(tài)。開T0中斷SETB TR0 ;開啟T0定時(shí)器(開時(shí)鐘)CLOSE: JB P3.7,CLOSE ;無按鍵按下,等待。LCALL DISPLAY ;有鍵按下,調(diào)顯示子程序延時(shí)削抖JB P3.7,CLOSE ;是干擾返回CLOSE等待WAITH: JNB P3.7,WAITH ;等待鍵釋放LJMP START1 ;返回主程序(LED數(shù)據(jù)顯示亮)SETHH: CLR 00H ;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時(shí)狀態(tài))SETHH1: JNB P3.7,SET5 ;等待鍵釋放SETB 01H ;小時(shí)調(diào)整標(biāo)志置1SET6: JB P3.7,SET

28、7 ;等待按鍵按下LCALL DL05S ;有鍵按下延時(shí)0.5秒JNB P3.7,SETOUT ;按下時(shí)間大于0.5秒退出時(shí)間調(diào)整MOV R0,#79H ;按下時(shí)間小于0.5秒加1小時(shí)操作LCALL ADD1 ;調(diào)加1子程序MOV A,R3 CLR C CJNE A,#24H,HOUU ;計(jì)時(shí)單元數(shù)據(jù)與24比較HOUU: JC SET6 ;小于24轉(zhuǎn)SET6循環(huán)LCALL CLR0 ;大于或等于24時(shí)清0操作AJMP SET6 ;跳轉(zhuǎn)到SET6循環(huán)SETOUT: JNB P3.7,SETOUT1 ;調(diào)時(shí)退出程序。等待鍵釋放LCALL DISPLAY ;延時(shí)削抖JNB P3.7,SETOUT ;是抖動(dòng),返回SETOUT再等待CLR 01H ;清調(diào)小時(shí)標(biāo)志CLR 00H ;清調(diào)分標(biāo)志CLR 02H ;清閃爍標(biāo)志CLR TR1 ;關(guān)閉定時(shí)器T1CLR ET1 ;關(guān)定時(shí)器T1中斷SETB TR0 ;開啟定時(shí)器T0SETB ET0 ;開定時(shí)器T0中斷(計(jì)時(shí)開始)LJMP START1 ;跳回主程序SET1: LCALL DISPLAY ;鍵釋放等待時(shí)調(diào)用顯示程序(調(diào)分)AJMP SE

溫馨提示

  • 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)論