基于89C51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第1頁(yè)
基于89C51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第2頁(yè)
基于89C51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第3頁(yè)
基于89C51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第4頁(yè)
基于89C51單片機(jī)數(shù)字鐘設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、. . . . 大學(xué)電子信息學(xué)院電子系統(tǒng)綜合設(shè)計(jì)課程論文基于89C51單片機(jī)的數(shù)字鐘設(shè)計(jì)專 業(yè):年 級(jí):作 者:指導(dǎo)教師:2012 年 6 月 5 日10 / 22目 錄1 作品的背景與意義12 功能指標(biāo)設(shè)計(jì)13 作品方案設(shè)計(jì)13.1總體方案的選擇13.1.1 單片機(jī)的型號(hào)選擇 13.1.2 數(shù)碼管選擇與顯示原理 23.1.3 整體功能實(shí)現(xiàn)23.2主控模塊89C5123.3顯示方案比較24 硬件設(shè)計(jì)34.1設(shè)計(jì)思路3 4.1.1 電源電路部分3 4.1.2 顯示部分3 4.1.3 鍵盤部分34.2 設(shè)計(jì)容44.3 設(shè)計(jì)要求44.4 設(shè)備與工作環(huán)境44.5 硬件結(jié)構(gòu)與原理圖4 4.5.1 功能4

2、 4.5.2 系統(tǒng)板上硬件連線.55 軟件設(shè)計(jì)65.1主程序流程圖65.2顯示模塊流程圖76 系統(tǒng)測(cè)試76.1測(cè)試環(huán)境86.2測(cè)試步驟86.3測(cè)試結(jié)論8 6.2.1 測(cè)試數(shù)字鐘的基本功能8 6.2.2 測(cè)試數(shù)字鐘的鬧鐘功能8 6.2.3 測(cè)試數(shù)字鐘的萬(wàn)年歷功能87 實(shí)驗(yàn)總結(jié)8參考文獻(xiàn)9附錄1 系統(tǒng)電路圖10附錄2 系統(tǒng)軟件代碼10附錄3 系統(tǒng)器件清單101 作品的背景與意義數(shù)字鐘開(kāi)始迅速發(fā)展起來(lái)?,F(xiàn)代的電子時(shí)鐘是基于單片機(jī)的一種計(jì)時(shí)工具,采用延時(shí)程序產(chǎn)生一定的時(shí)間中斷,用于一秒的定義,通過(guò)計(jì)數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時(shí)進(jìn)一,滿二十四小時(shí)小時(shí)清零。從而達(dá)到計(jì)時(shí)的功能,是人民日常生活不

3、可缺少的工具。數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí)、分、秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。在這里我們將已學(xué)過(guò)的比較零散的數(shù)字電路的知識(shí)有機(jī)的、系統(tǒng)的聯(lián)系起來(lái)用于實(shí)際,來(lái)培養(yǎng)我們的綜合分析和設(shè)計(jì)電路,寫程序、調(diào)試電路的能力。應(yīng)用單片機(jī)控制技術(shù),設(shè)計(jì)出以89c51單片機(jī)為核心的電子時(shí)鐘,電子時(shí)鐘能夠顯示時(shí)、分、秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),而且其片選的靈活性強(qiáng)。2 功能指標(biāo)設(shè)計(jì) 應(yīng)用單片機(jī)控制技術(shù),設(shè)計(jì)出以89C51單片機(jī)為核心的電子時(shí)鐘,電子時(shí)鐘能夠顯示時(shí)、分、秒顯示時(shí)間的功能,

4、并通過(guò)控制鍵來(lái)實(shí)現(xiàn)時(shí)間的調(diào)整以與進(jìn)入鬧鈴模式、萬(wàn)年歷模式的轉(zhuǎn)換。3 作品方案設(shè)計(jì)3.1總體方案的選擇3.1.1單片機(jī)的型號(hào)選擇通過(guò)對(duì)多種單片機(jī)性能的分析,最終認(rèn)為89C51是最理想的電子時(shí)鐘開(kāi)發(fā)芯片。89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的89C51是一種高效微控制器,而且它與MCS-51兼容,且具有4K字節(jié)可編程閃爍存儲(chǔ)器和1000寫/擦循環(huán),數(shù)據(jù)保留時(shí)間為10年等特點(diǎn),是最好的選擇

5、。3.1.2數(shù)碼管選擇與顯示原理 數(shù)碼管是一種把多個(gè)LED顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽(yáng)型,一種是共陰型。共陽(yáng)型就是把多個(gè)LED顯示段的陽(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ù)碼管

6、顯示方法可分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入與其公共端電平一直有效。動(dòng)態(tài)顯示的原理是,各個(gè)數(shù)碼管的一樣段連接在一起,共同占用8 位段引管線;每位數(shù)碼管的陽(yáng)極連在一起組成公共端。利用人眼的視覺(jué)暫留性,依次給出各個(gè)數(shù)碼管公共端加有效信號(hào),在此同時(shí)給出該數(shù)碼管加有效的數(shù)據(jù)信號(hào),當(dāng)全段掃描速度大于視覺(jué)暫留速度時(shí),顯示就會(huì)清晰顯示出來(lái)。3.1.3 整體功能實(shí)現(xiàn)在6塊LED數(shù)碼管上能實(shí)現(xiàn)數(shù)字時(shí)鐘的時(shí)、分、秒顯示,按控制鍵實(shí)現(xiàn)時(shí)鐘顯示與調(diào)整功能。按不同的控制鍵可進(jìn)入5個(gè)鬧鐘設(shè)置模式并進(jìn)行開(kāi)啟與關(guān)閉。同時(shí),按不同的控制鍵可進(jìn)入萬(wàn)年歷設(shè)置模式。3.2主控模塊89C5189C51是一個(gè)8位單

7、片機(jī),片ROM全部采用FLASH ROM技術(shù),晶振時(shí)鐘為12MHz。89C51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,有4個(gè)八位的并行雙向I/O端口,分別記作P0、P1、P2、P3。第31引腳需要接高電位使單片機(jī)選用部程序存儲(chǔ)器;第40腳為電源端VCC,接+5V電源,第20引腳為接地端VSS,通常在VCC和VSS引腳之間接0.1F高頻濾波電容。3.3顯示方案比較電子時(shí)鐘是基于單片機(jī)的一種計(jì)時(shí)工具,采用延時(shí)程序產(chǎn)生一定的時(shí)間中斷,用于一秒的定義,通過(guò)計(jì)數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時(shí)進(jìn)一,滿二十四小時(shí)小時(shí)清零,從而達(dá)到計(jì)時(shí)的功能。數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED

8、顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,故選用此種顯示方案。4 硬件設(shè)計(jì)4.1 設(shè)計(jì)思路 電子時(shí)鐘主要由顯示模塊、校時(shí)模塊和時(shí)鐘運(yùn)算模塊三大部分組成。其中校時(shí)模塊和時(shí)鐘運(yùn)算模塊要對(duì)時(shí)、分、秒的數(shù)值進(jìn)行操作,并且秒計(jì)算到60時(shí),要自己清零并向分進(jìn)1;分計(jì)算到60時(shí),要自己清零并向時(shí)進(jìn)1;時(shí)計(jì)算到24時(shí),要清零。這樣,才能循環(huán)記時(shí)。4.1.1 電源電路部分在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成部分,它是電子設(shè)備唯一能量來(lái)源,它的設(shè)計(jì)思路是根據(jù)我們以前學(xué)過(guò)的模電電子技術(shù),要想得到我們所要的+6V輸出電壓,就需將交流220V的電壓經(jīng)過(guò)變壓器、整流電路、濾波電路和穩(wěn)壓電路四個(gè)部分。4.1

9、.2顯示部分顯示部分是整個(gè)電子時(shí)鐘最為重要的部分,它分為時(shí)間的顯示和溫度的顯示兩部分,共需要8位LED顯示器。采用動(dòng)態(tài)顯示方式,所謂動(dòng)態(tài)顯示方式是時(shí)間(或溫度)數(shù)字在LED上一個(gè)一個(gè)逐個(gè)顯示,它是通過(guò)位選端控制在哪個(gè)LED上顯示數(shù)字,由于這些LED數(shù)字顯示之間的時(shí)間非常的短,使的人眼看來(lái)它們是一起顯示時(shí)間數(shù)字的,并且動(dòng)態(tài)顯示方式所用的接口少,節(jié)省了CPU的管腳。由于端口的問(wèn)題以與動(dòng)態(tài)顯示方式的優(yōu)越性,在此設(shè)計(jì)的連接方式上采用共陰級(jí)接法。顯示器LED有段選和位選兩個(gè)端口,首先說(shuō)段選端,它由LED八個(gè)端口構(gòu)成,通過(guò)對(duì)這八個(gè)端口輸入的不同的二進(jìn)制數(shù)據(jù)使得它的時(shí)間顯示也不同,從而可以得到我們所要的時(shí)間

10、顯示。4.1.3 鍵盤部分它是整個(gè)系統(tǒng)中最簡(jiǎn)單的部分,根據(jù)功能要求,本系統(tǒng)共需四個(gè)按鍵:功能移位鍵、功能加鍵、功能減鍵、定鬧鍵。并采用獨(dú)立式按鍵。4.2 設(shè)計(jì)容用89C51單片機(jī)CPU與接口電路設(shè)計(jì)并實(shí)現(xiàn)顯示時(shí)間的實(shí)時(shí)時(shí)鐘。4.3 設(shè)計(jì)要求(1)在KEIL C51上編寫軟件完成設(shè)計(jì)。(2) 程序的首地址應(yīng)使目標(biāo)機(jī)可以直接運(yùn)行,即從0000H開(kāi)始。在主程序的開(kāi)始部分必須設(shè)置一個(gè)合適的棧底。程序放置的地址須連續(xù)且靠前,不要在中間留下大量的空間地址,以使目標(biāo)機(jī)可以使用較少的硬件資源。(3)6位LED數(shù)碼管從左到右分別顯示時(shí). 分. 秒(各占用2位),采用24小時(shí)標(biāo)準(zhǔn)計(jì)時(shí)制。開(kāi)始計(jì)時(shí)時(shí)為000000,

11、到235959后變成000000。(4) 在XD12鍵盤上選定3個(gè)鍵分別作為小時(shí)、分、秒的調(diào)校鍵。每按一次鍵,對(duì)應(yīng)的顯示值便加1。分、秒加到59后變?yōu)?0;小時(shí)加到23后再按鍵即變?yōu)?0。再調(diào)校時(shí)均不向上一單位進(jìn)位(例如分加到59后變?yōu)?0;但小時(shí)不發(fā)生改變)。(5)軟件設(shè)計(jì)必須使用89C51片定時(shí)器,采用定時(shí)中斷結(jié)構(gòu),不得使用軟件延時(shí)法。(6)上機(jī)調(diào)試程序。(7)寫出設(shè)計(jì)報(bào)告。4.4 設(shè)備與工作環(huán)境(1) 硬件:計(jì)算機(jī)一臺(tái)、ZY15MCU12BD型綜合單片機(jī)實(shí)驗(yàn)箱一臺(tái)、通訊電纜一根。(2) 軟件:Windows操作系統(tǒng)、Keil C51軟件。 4.5 硬件結(jié)構(gòu)與原理電路圖4.5.1 功能 1

12、) 開(kāi)機(jī)時(shí),顯示12:00:00的時(shí)間開(kāi)始計(jì)時(shí);2) P0.0/AD0控制“秒”的調(diào)整,每按一次加1秒;3) P0.1/AD1控制“分”的調(diào)整,每按一次加1分;4) P0.2/AD2控制“時(shí)”的調(diào)整,每按一次加1個(gè)小時(shí);4.5.2 系統(tǒng)板上硬件連線 (1)把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0P1.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的AH端口上; (2)把“單片機(jī)系統(tǒng):區(qū)域中的P3.0P3.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的S1S8端口上; (3)把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導(dǎo)線連接到“獨(dú)立式鍵盤”區(qū)域中的SP3、SP2

13、、SP1端口上; 5 軟件設(shè)計(jì) 在主程序的開(kāi)始定義了一組固定單元用來(lái)存儲(chǔ)計(jì)數(shù)的分、秒、時(shí)的存儲(chǔ)單元。在主程序中,對(duì)不同的按鍵進(jìn)行掃描,實(shí)現(xiàn)秒表,時(shí)間調(diào)整。5.1主程序流程圖 如圖1所示。開(kāi)始T0中斷入口通過(guò)查表方式顯示數(shù)據(jù)數(shù)碼位選加1位選值=8NY位選數(shù)值=0秒計(jì)數(shù)加1秒計(jì)數(shù)=500NY秒計(jì)數(shù)=0SECOND加1中斷返回 圖1 總體流程圖5.2顯示模塊流程圖 如圖2所示。YYNNN子程序入口SECOND=60SECOND=0,并MINUTE加1MINUTE=60MINUTE=0,并HOUR加1顯示數(shù)據(jù)處理中斷返回HOUR=24Y圖2 子程序流程圖6 系統(tǒng)測(cè)試6.1測(cè)試環(huán)境(1) 硬件:計(jì)算機(jī)一

14、臺(tái)、單片機(jī)實(shí)驗(yàn)板一塊、通訊電纜一根。(2) 軟件:Windows操作系統(tǒng)、Keil C51軟件。6.2測(cè)試步驟6.2.1 測(cè)試數(shù)字鐘的基本功能K1鍵,設(shè)置現(xiàn)在時(shí)間功能,按一下K1,進(jìn)入時(shí)間設(shè)置,此時(shí)按K2為小時(shí)設(shè)置,按一次數(shù)值加1,K3為分鐘設(shè)置,設(shè)置完成后按K4進(jìn)入正常走時(shí)。6.2.2 測(cè)試數(shù)字鐘的鬧鐘功能 K2鍵設(shè)置鬧鈴1,此時(shí)按K2為小時(shí)設(shè)置,按一次數(shù)值加1,K3為分鐘設(shè)置,(若不開(kāi)啟此鬧鈴則直接按K1,以后五個(gè)同樣)設(shè)置完成后按K4進(jìn)入設(shè)置鬧鈴2;同前一樣設(shè)置,按K4進(jìn)入鬧鈴3,同前一樣設(shè)置,再按K4進(jìn)入鬧鈴4,同前一樣設(shè)置,再按K4進(jìn)入鬧鈴5,同前一樣設(shè)置,最后按K4結(jié)束設(shè)置;正常走

15、時(shí)過(guò)程中,按K4鍵關(guān)閉所有鬧鈴;鬧鈴過(guò)程中按K4鍵關(guān)閉鬧鈴。6.2.3 測(cè)試數(shù)字鐘的萬(wàn)年歷功能 K3鍵進(jìn)入萬(wàn)年歷設(shè)置,矩陣鍵盤的S1進(jìn)行年份加1,S2鍵年份減1,S3鍵月份加1,S4鍵月份減1。6.3測(cè)試結(jié)論經(jīng)過(guò)多次測(cè)試,本設(shè)計(jì)能夠很準(zhǔn)確的走時(shí),并能夠通過(guò)硬件對(duì)時(shí)鐘進(jìn)行時(shí)間調(diào)整,并具有鬧鈴和萬(wàn)年歷功能。7 實(shí)驗(yàn)總結(jié) 通過(guò)這次的設(shè)計(jì)使我們認(rèn)識(shí)到自己對(duì)單片機(jī)方面的知識(shí)知道的太少了,對(duì)于書本上的很多知識(shí)還不能靈活運(yùn)用,有很多我們需要掌握的知識(shí)在等著我們?nèi)W(xué)習(xí),我們會(huì)在以后的學(xué)習(xí)生活中彌補(bǔ)我所缺少的知識(shí)。本次的設(shè)計(jì)使我們從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我們所學(xué)到的知識(shí)運(yùn)

16、用到我以后的工作中去。在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專業(yè)知識(shí),而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,此次的電子時(shí)鐘設(shè)計(jì)給我們奠定了一個(gè)實(shí)踐基礎(chǔ),我們會(huì)在以后的學(xué)習(xí)、生活中磨練自己,使自己適應(yīng)于以后的競(jìng)爭(zhēng),并且在查找資料的過(guò)程中學(xué)到了許多,同時(shí)在協(xié)作過(guò)程中增進(jìn)同學(xué)間的友誼,這次電子綜合實(shí)驗(yàn)讓我們收獲頗豐。參考文獻(xiàn):1 朝青單片機(jī)原理與接口技術(shù)(第三版) M 航空航天大學(xué) 2005-102 欣等電子設(shè)計(jì)從零開(kāi)始M 清華大學(xué)2005-103 夏路易,石宗義電路原理圖與電路設(shè)計(jì)教程Protel 99SEM 希望電子20024 閻石數(shù)字電子技術(shù)基礎(chǔ) M 高等教育2006-55 邱關(guān)源電路M 高等教

17、育2003-26 單片機(jī)開(kāi)發(fā) 人民郵電7 單片機(jī)課程設(shè)計(jì) 實(shí)例指導(dǎo) 光才 樓然笛 航空航天大學(xué) 2004附錄1 系統(tǒng)電路圖附錄2 系統(tǒng)軟件代碼LED1EQU40HLED2EQU41HLED3EQU42HLED4EQU43HLED5EQU44HLED6EQU45HLED7EQU46HLED8EQU47HHOUREQU48HMINEQU49HSECEQU4AHC1_MINEQU4BHC1_HOUREQU4CHC2_MINEQU4DHC2_HOUREQU4EHC3_MINEQU4FHC3_HOUREQU50HC4_MINEQU51HC4_HOUREQU52HC5_MINEQU53HC5_HOUREQ

18、U54HDATEEQU63HMONTHEQU64HYEAREQU65HCENTREQU66HT1_TIMEEQU67HD_CTREQU68HWEEKEQU69HD_LED1EQU70HD_LED2EQU71HD_LED3EQU72HD_LED4EQU73HD_LED5EQU74HD_LED6EQU75HD_LED7EQU76HD_LED8EQU77HT0_COUNTEREQUR7/設(shè)置定時(shí)1秒定時(shí)器需溢出的次數(shù)ORG0000HAJMPMAINORG000BHJMPT0_INTERRUPTORG001BHJMPT1_INTERRUPTORG0030HMAIN:MOVR0,#48HINITIAL:

19、MOVR0,#00HINCR0CJNER0,#68H,INITIALMOVCENTR,#15HMOVYEAR,#0CHMOVMONTH,#03HMOVDATE,#03HMOVHOUR,#06HMOVMIN,#00HMOVC_STATUS,#00HCLRT_SET_SWICLRD_SHOW_SWIMOVTMOD,#11HSETBEASETBET1SETBET0SETBTR1SETBTR0CLRR_B_FCHECK:ACALLM_K_CHECKACALLRING_DEAL/SETBD_SHOW_SWI/ACALLWF_SHOW/ACALLSHOW_WEEK /JMPCHECK/萬(wàn)年歷分隔符顯示W(wǎng)F

20、_SHOW:PUSHACCD_SHOW_SWI,FETAL_SHOWJNBT_SET_SWI,WF_RETMOVA,L_R_BUTTONCJNEA,#08H,DSSDSS:JCWF_RETFETAL_SHOW:/CLRTR1MOVDPTR,#LED_SELMOVA,#0EBHMOVXDPTR,AMOVDPTR,#LED_SEGMOVA,#80HMOVXDPTR,ALCALLDELAY_100USMOVA,#00HMOVXDPTR,A/SETBTR1/*MOVLED3,#10HMOVLED5,#10HMOVD_TUBE_CTR,#0EBHMOVD_STA_POSI,#LED1LCALLD_TUB

21、E_SHOW*/WF_RET:POPACCRET/通過(guò)LED燈顯示星期SHOW_WEEK:MOVHEX,YEARLCALLHEXTOBCDMOVNH,BCDMOVHEX,MONTHLCALLHEXTOBCDMOVYF,BCD/LCALLSUB_WNLMOVA,BJNZSTAMOVA,#07HSTA:MOVP1,#0FFHMOVR1,AMOVA,#0FEHDEAL1:ANLP1,ARLADJNZR1,DEAL1 RET/鬧鐘 R_B_FBIT7CH/蜂鳴器開(kāi)關(guān)標(biāo)志位R_MINDATA55H/記錄當(dāng)前鬧鐘熄滅時(shí)間RING_DEAL:PUSHACCR_B_F,B_DEALMOVA,#01HMOVR1

22、,#C1_MINR_STA:PUSHACCANLA,C_STATUSJZR_CLOSEMOVA,R1CJNEA,MIN,R_CLOSEMOVR_MIN,AINCR1MOVA,R1CJNEA,HOUR,H_NCLRP1.0SETBR_B_FINCR_MINMOVA,R_MININCR1CJNEA,#3CH,NEXT_RINGMOVR_MIN,#00HJMPNEXT_RINGR_CLOSE:INCR1H_N:INCR1NEXT_RING:POPACCRLACJNEA,#20H,R_STAJNBR_B_F,R_RETB_DEAL:P3.2,R_WAITSETBP1.0JMPR_RETR_WAIT:M

23、OVA,R_MINCJNEA,MIN,R_RETSETBP1.0CLRR_B_FCLRP1.7R_RET:POPACCRET/數(shù)碼管顯示函數(shù):D_TUBE_CTRDATA56H/設(shè)置數(shù)碼管哪幾位顯示D_STA_POSIDATA57H/數(shù)碼管最低位顯示數(shù)字所在地址LED_SEGEQU0FAFFHLED_SELEQU0FBFFHD_TUBE_SHOW:/顯示從D_STA_POSI開(kāi)始的8個(gè)地址單元里所存數(shù)據(jù),每一位是否顯示由D_TUBE_CTR所存數(shù)據(jù)控制/保存變量:PUSHDPHPUSHDPLPUSHACCMOVA,R0PUSHACCMOVA,R2PUSHACC/MOVA,#0FEHMOVR0,

24、D_STA_POSIMOVR2,#00HLOOP1:PUSHACCORLA,D_TUBE_CTRMOVDPTR,#LED_SELMOVXDPTR,AMOVA,R0MOVDPTR,#2000HMOVCA,A+DPTRMOVDPTR,#LED_SEGMOVXDPTR,AACALLDELAY_100USMOVA,#00HMOVXDPTR,APOPACCRLAINCR0INCR2CJNER2,#08H,LOOP1/恢復(fù)變量:POPACCMOVR2,APOPACCMOVR0,APOPACCPOPDPLPOPDPHRET/按鍵檢測(cè)函數(shù):有鍵按下,將鍵值存入M_KEY_VALUE;沒(méi)有鍵按下,存入#0FFH

25、M_K_VALUEDATA58H/存放鍵值C_CHOOSEDATA59H/選擇某個(gè)鬧鐘進(jìn)行設(shè)置,存#00H表示未選中任何鬧鐘K_STOREDATA5AHL_R_BUTTONDATA5BH/記錄左/右移動(dòng)按鈕按下次數(shù)C_STATUSDATA5CH/用其中前5位分別記錄5個(gè)鬧鐘開(kāi)/關(guān)的狀態(tài)K_SCANDATA0F8FFH/矩正鍵盤行控制,列讀取/位變量:T_SET_SWIBIT7FH/存放時(shí)間設(shè)置開(kāi)關(guān)的狀態(tài)D_SHOW_SWIBIT7EH/存放萬(wàn)年歷顯示開(kāi)關(guān)的狀態(tài)/M_K_CHECK:MOVDPTR,#K_SCANMOVA,#0FEHMOVR3,#00HSTA_CHECK:PUSHACCMOVXD

26、PTR,AMOVXA,DPTRANLA,#0FHCJNEA,#0FH,K_DOWNAJMPNEXT_COLK_DOWN:LCALLDELAY_20MSMOVK_STORE,AMOVXA,DPTRANLA,#0FHCJNEA,K_STORE,NEXT_COL/抖動(dòng),掃描下一行LCALLK_D_DEALK_J:CJNEA,#0AH,SITU1/判斷時(shí)間設(shè)置開(kāi)關(guān)CPLT_SET_SWIMOVC_CHOOSE,#00HCLRD_SHOW_SWIMOVL_R_BUTTON,#00HJMPWAITSITU1:CJNEA,#0BH,SITU2/判斷鬧鐘選擇開(kāi)關(guān)LCALLS1_DEALJMPWAITSITU2

27、:CJNEA,#0DH,SITU3/判斷萬(wàn)年歷顯示開(kāi)關(guān)SETBD_SHOW_SWICLRT_SET_SWIMOVC_CHOOSE,#00HJMPWAITSITU3:CJNEA,#0EH,SITU4/判斷是否為鬧鐘開(kāi)、關(guān)設(shè)置開(kāi)關(guān)LCALLS3_DEALJMPWAIT SITU4:CJNEA,#0CH,SITU5/左移按鈕LCALLS4_DEALJMPWAITSITU5:CJNEA,#0FH,SITU6 /右移按鈕LCALLS5_DEALJMPWAITSITU6:JNBT_SET_SWI,C_CHECK/數(shù)字鍵LCALLS6_T_DEALJMPWAITC_CHECK:MOVA,C_CHOOSEJZ

28、WAITLCALLS6_C_DEAL/JMPWAITWAIT:MOVXA,DPTRANLA,#0FHCJNEA,K_STORE,NEXT_COLSJMPWAITNEXT_COL:CLRD_SHOW_SWIPOPACCRLAINCR3CJNER3,#04H,STA_CHECKRETURN:RET/計(jì)算按鍵鍵值,存于M_K_VALUEK_D_DEAL:CPLAANLA,#0FHMOVM_K_VALUE,#00HROW:CJNEA,#01H, RRIGHTSJMPCAL_K_VALUERRIGHT:RRAINCM_K_VALUESJMPROWCAL_K_VALUE:MOVA,R3MOVB,#04HM

29、ULABADDA,M_K_VALUEMOVM_K_VALUE,ARET/處理鬧鐘選擇開(kāi)關(guān)按下S1_DEAL:CLRT_SET_SWICLRD_SHOW_SWIINCC_CHOOSEMOVL_R_BUTTON,#00HMOVA,C_CHOOSECJNEA,#06H,S1_RETMOVC_CHOOSE,#00HS1_RET:RET/處理鬧鐘開(kāi)、關(guān)設(shè)置開(kāi)關(guān)按下S3_DEAL:MOVA,C_CHOOSEJZS3_RETMOVR4,AMOVA,#80HGET_S:RLADJNZR4,GET_SXRLC_STATUS,AS3_RET:RET/處理左移按鈕按下S4_DEAL:JNBT_SET_SWI,S4_

30、CINCL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S4_JFINCL_R_BUTTONRETS4_JF:CJNEA,#05H,S4_STINCL_R_BUTTONRET/*S4_JT:CJNEA,#0AH,S4_TTINCL_R_BUTTONRETS4_TT:CJNEA,#0DH,S4_STINCL_R_BUTTONRET*/S4_ST:CJNEA,#10H,S4_RETMOVL_R_BUTTON,#00HRETS4_C:MOVA,C_CHOOSEJZS4_RETINCL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S4_JF1INCL_R

31、_BUTTONRETS4_JF1:CJNEA,#05H,S4_RETMOVL_R_BUTTON,#00HS4_RET:RET/右移按鈕按下處理S5_DEAL:JNBT_SET_SWI,S5_CDECL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S5_JFDECL_R_BUTTONRETS5_JF:CJNEA,#05H,S5_JZDECL_R_BUTTONRET/*S5_JT:CJNEA,#0AH,S5_TTDECL_R_BUTTONRETS5_TT:CJNEA,#0DH,S5_JZDECL_R_BUTTONRET*/S5_JZ:CJNEA,#0FFH,S5_RETMO

32、VL_R_BUTTON,#0FHRETS5_C:MOVA,C_CHOOSEJZS5_RETDECL_R_BUTTONMOVA,L_R_BUTTONCJNEA,#02H,S5_JZ1DECL_R_BUTTONRETS5_JZ1:CJNEA,#0FFH,S5_RETMOVL_R_BUTTON,#04HS5_RET:RET/數(shù)字鍵按下處理/時(shí)間設(shè)置S6_T_DEAL:MOVR0,L_R_BUTTONCJNER0,#08H,SET_DATESET_DATE:CY,SET_TIMEMOVA,#LED1ADDA,L_R_BUTTONCLRCYSUBBA,#08HMOVR0,AMOVR0,M_K_VALUE

33、MOVA,LED2MOVB,#0AHMULABADDA,LED1/*CJNEA,#20H,SET_DAYSET_DAY1:MOVA,#1FHSJMPO_DAYSET_DAY:JNBCY,SET_DAY1O_DAY:*/MOVDATE,AMOVA,LED4MOVB,#0AHMULABADDA,LED3/*CLRCYSUBBA,#0BH*/CJNEA,#0DH,SET_MONSET_MON1:MOVA,#0CHSJMPO_MONSET_MON:JNBCY,SET_MON1O_MON:MOVMONTH,AMOVA,LED6MOVB,#0AHMULABADDA,LED5/*CLRCYSUBBA,#0B

34、H*/MOVYEAR,AMOVA,LED8MOVB,#0AHMULABADDA,LED7INCAMOVCENTR,A/*MOVHEX,YEARLCALLHEXTOBCDMOVNH,BCDMOVHEX,MONTHLCALLHEXTOBCDMOVYF,BCD */LCALLSUB_WNLCJNEA,DATE,S_D_NS_D_N:JNCS_D_RMOVDATE,AS_D_R:RETSET_TIME: MOVA,#LED1ADDA,L_R_BUTTONMOVR0,AMOVR0,M_K_VALUEMOVA,LED2MOVB,#0AHMULABADDA,LED1CJNEA,#3CH,SET_SECSET

35、_SEC1:MOVA,#00HSJMPO_SECSET_SEC:JNBCY,SET_SEC1O_SEC:MOVSEC,AMOVA,LED5MOVB,#0AHMULABADDA,LED4CJNEA,#3CH,SET_MINSET_MIN1:MOVA,#00HSJMPO_MINSET_MIN:JNBCY,SET_MIN1O_MIN:MOVMIN,AMOVA,LED8MOVB,#0AHMULABADDA,LED7CJNEA,#18H,SET_HOURSET_HOUR1:MOVA,#00HSJMPO_HOURSET_HOUR:JNBCY,SET_HOUR1O_HOUR:MOVHOUR,ARET/鬧鐘設(shè)

36、置:S6_C_DEAL:MOVA,#LED1ADDA,L_R_BUTTONMOVR0,AMOVR0,M_K_VALUEMOVA,C_CHOOSEDECAMOVB,#02HMULABADDA,#C1_MINMOVR0,AMOVA,LED2MOVB,#0AHMULABADDA,LED1MOVR0,AMOVA,LED5MOVB,#0AHMULABADDA,LED4CJNEA,#18H,C_H_SC_H_S:JCC_NSMOVA,#00HC_NS:INCR0MOVR0,ARETT0_INTERRUPT:MOVTH0,#3CHMOVTL0,#0B2HCLRTF0PUSHACCMOVA,R0PUSHACC

37、INCR7CJNER7,#14H,RETT0IMOVR7,#00HINCSECMOVA,SECCJNEA,#3CH,RETT0IMOVSEC,#00HINCMINMOVA,MINCJNEA,#3CH,RETT0IMOVMIN,#00HINCHOURMOVA,HOURCJNEA,#18H,RETT0IMOVHOUR,#00HINCDATE/MOVA,DATELCALLSUB_WNLINCACJNEA,DATE,RETT0IMOVDATE,#01HINCMONTHMOVA,MONTHCJNEA,#0DH,RETT0IMOVMONTH,#01HINCYEARMOVA,YEARCJNEA,#64H,R

38、ETT0IMOVYEAR,#00HINCCENTRMOVA,CENTRCJNEA,#64H,RETT0IMOVCENTR,#00HRETT0I:POPACCMOVR0,APOPACCRETILDBIT7DH/閃爍標(biāo)志位T1_INTERRUPT:MOVTH1,#0ECH/#76H/MOVTL1,#79H/#3CH/CLRTF1PUSHBPUSHACCMOVA,R0PUSHACCMOVA,R1PUSHACCORLP1,#0FEHJNBD_SHOW_SWI,T_S_CHECK/判斷萬(wàn)年歷顯示開(kāi)關(guān)是否打開(kāi)LCALLD_S_DEALJMPT1RETIT_S_CHECK:JNBT_SET_SWI,C_S_

39、CHECK/判斷時(shí)間設(shè)置開(kāi)關(guān)是否打開(kāi)LCALLT_S_DEALJMPT1RETIC_S_CHECK:/鬧鐘設(shè)置開(kāi)關(guān)是否打開(kāi)MOVA,C_CHOOSEJZGENERALLCALLC_S_DEALJMPT1RETIGENERAL: /常規(guī)顯示LCALLG_SHOWT1RETI:/MOVD_STA_POSI,#LED1LCALLD_TUBE_SHOW/ACALLWF_SHOWPOPACCMOVR1,APOPACCMOVR0,APOPACCPOPBRETI/萬(wàn)年歷顯示:D_S_DEAL:MOVA,DATEMOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVA,MONTHMOVB,#0

40、AHDIVABMOVLED4,AMOVLED3,B/*MOVA,BADDA,#0CHMOVLED3,A*/MOVA,YEARMOVB,#0AHDIVABMOVLED6,AMOVLED5,B/*MOVA,BADDA,#0CHMOVLED5,A*/MOVA,CENTRDECAMOVB,#0AHDIVABMOVLED7,BMOVLED8,ALCALLLEDTODLEDMOVD_STA_POSI,#D_LED1MOVD_TUBE_CTR,#00HRET/時(shí)間設(shè)置模式下顯示T_S_DEAL:CLRTR0MOVA,L_R_BUTTONCJNEA,#08H,WNL_SHOWWNL_SHOW: /顯示萬(wàn)年歷設(shè)

41、置JCTIME_SHOWMOVA,DATEMOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVA,MONTHMOVB,#0AHDIVABMOVLED4,AMOVLED3,B/*MOVA,BADDA,#0BHMOVLED3,A*/MOVA,YEARMOVB,#0AHDIVABMOVLED6,AMOVLED5,B/*MOVA,BADDA,#0BHMOVLED5,A*/MOVA,CENTRDECAMOVB,#0AHDIVABMOVLED7,BMOVLED8,ALCALLLEDTODLEDMOVD_STA_POSI,#D_LED1JMPT_S_FLASHTIME_SHOW:/顯示時(shí)間設(shè)置MOVA,SECMOVB,#0AHDIVABMOVLED1,BMOVLED2,AMOVLED3,#0AHMOVA,MINMOVB,#0AHDIVABMOVLED4,BMOVLED5,AMOVLED6,#0AHMOVA,HOURMOVB,#0AHDIVABMOVLED7,BMOVLED8,AMOVD_STA_POSI,#LED1T_S_FLASH: /設(shè)置閃爍

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論