版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 本系統(tǒng)利用單片機(jī)實現(xiàn)具有計時、校時、鬧鐘、語音播報等功能的數(shù)字時鐘,是以單片機(jī)AT89S51為核心元件同時采用數(shù)碼管顯示器動態(tài)逐次顯示“年”,“月日”,“時分”,“秒”的現(xiàn)代計時裝置。與傳統(tǒng)機(jī)械時鐘相比,它具有走時精確,顯示直觀等特點。在日常生活和自動控制系統(tǒng)中,經(jīng)常遇到對時間實時監(jiān)控的需求,本系統(tǒng)在對時間監(jiān)控的同時,若
2、達(dá)到預(yù)先設(shè)定的時間后,能使LED不停閃爍提示時間已到。另外本程序還具有校時功能,能夠隨時調(diào)整時間,而且能夠隨時方便的擴(kuò)充擴(kuò)展其他多功能,因此利用單片機(jī)實現(xiàn)的本數(shù)字時鐘具有編程靈活,便于功能的擴(kuò)充等優(yōu)點。</p><p> 關(guān)鍵字:AT89S51;單片機(jī);數(shù)字鐘;LED數(shù)碼管</p><p><b> Abstract </b></p><p&g
3、t; This system using the single chip microcomputer timer, the school has, alarm clock, the function such as speech broadcast digital clock, is AT89S51 single-chip microcomputer as the core components as well as using di
4、gital tube display dynamic successive shows "year", "may," "time", "seconds" modern timing device. Compared with the traditional mechanical clock, it is accurate, when direct displ
5、ay characteristics. In the daily life and the automatic control system, it is time to meet the needs of </p><p> Key word:AT89S51;single-chip microcomputer;A digital clock;LED digital tube </p><p
6、><b> 目 錄</b></p><p><b> 引 言1</b></p><p><b> 一 緒論2</b></p><p> 1.1 課題意義2</p><p> 1.2 數(shù)字鐘的應(yīng)用2</p><p> 二
7、 整體設(shè)計方案3</p><p> 2.1 設(shè)計任務(wù)5</p><p> 2.2 設(shè)計思路3</p><p> 2.3 設(shè)計方案3</p><p> 三 數(shù)字鐘的硬件設(shè)計4</p><p> 3.1 總電路圖4</p><p> 3.2 AT89S51概述及其特點5
8、</p><p> 3.3 T0定時器/計數(shù)器7</p><p> 3.4 數(shù)碼管動態(tài)掃描9</p><p> 3.5鍵盤掃描電路13</p><p> 3.6 復(fù)位電路15</p><p> 3.7電源電路13</p><p> 3.8 語音錄放電路17</p&g
9、t;<p> 四 數(shù)字鐘的軟件設(shè)計19</p><p> 4.1 系統(tǒng)軟件設(shè)計內(nèi)容19</p><p> 4.1.1 數(shù)據(jù)與代碼轉(zhuǎn)換19</p><p> 4.1.2 計時功能的實現(xiàn)與中斷服務(wù)程序19</p><p> 4.2 數(shù)字鐘流程圖20</p><p> 4.3 數(shù)字鐘程序
10、23</p><p><b> 五 總結(jié)37</b></p><p><b> 致謝37</b></p><p><b> 參考文獻(xiàn)39</b></p><p><b> 引 言</b></p><p> 計算機(jī)
11、尤其是以微細(xì)加工技術(shù)支持的微型計算機(jī)技術(shù)飛速發(fā)展,其應(yīng)用滲透到了各行各業(yè)。以單片機(jī)、嵌入式處理器、數(shù)字信號處理器(DSP)為核心的計算機(jī)系統(tǒng),以其軟硬件可裁剪、高度的實時性、高度的可靠性、功能齊全、低功耗、適應(yīng)面廣等諸多優(yōu)點而得到極為廣泛的應(yīng)用。目前計算機(jī)硬件技術(shù)向巨型化、微型化和單片機(jī)化三個方向發(fā)展。自1975年美國德州儀器公司(Texas Instruments)第一塊微型計算機(jī)芯片TMS-1000問世以來,在短短的20年間,單片機(jī)
12、技術(shù)已發(fā)展成為計算機(jī)領(lǐng)域一個非常有前途的分支,它有自己的技術(shù)特征、規(guī)范和應(yīng)用領(lǐng)域。單片機(jī)是自動控制系統(tǒng)的核心部件,主要用于工業(yè)控制、智能化儀器儀表、家用電器中。它具有體積小、性能突出可靠性高(某些方面的性能指標(biāo)大大優(yōu)于通用微機(jī)中央處理器)、價格低廉等一系列優(yōu)點,應(yīng)用領(lǐng)域不斷擴(kuò)大,除了工業(yè)控制、智能化儀表、通信、家用電器外,在智能化高檔電子玩具產(chǎn)品中也大量采用單片機(jī)芯片作為核心控制部件,已經(jīng)滲入到人們工作和生活的各個角落,有力地推動了各行
13、業(yè)的技術(shù)改造和產(chǎn)品的更新?lián)Q代,前景廣闊。數(shù)字鐘具備單片機(jī)最小系統(tǒng)的基本組成,對于我們了解單片機(jī)有很大的幫助。</p><p><b> 一 緒 論</b></p><p> 時間是人類生活必不可少的重要元素,如果沒有時間的概念,社會將不會有所發(fā)展和進(jìn)步。從古代的水漏、十二天干地支,到后來的機(jī)械鐘表以及當(dāng)今的石英鐘,都充分顯現(xiàn)出了時間的重要,同時也代表著科技的進(jìn)步
14、。致力于計時器的研究與充分發(fā)揮時鐘的作用,將有著重要的意義。</p><p><b> 1.1 課題意義</b></p><p> 在日常生活和工作中,我們常常用到定時控制,如擴(kuò)印過程中的曝光定時等,早期常用的一些時間控制單元都是用模擬電路設(shè)計制作的,其定時準(zhǔn)確性和重復(fù)精度都不是很理想,現(xiàn)在基本上都是基于數(shù)字技術(shù)的新一代產(chǎn)品,隨著單片機(jī)性能價格比的不斷提高,新一代
15、產(chǎn)品的應(yīng)用也越來越廣泛,大可構(gòu)成復(fù)雜的工業(yè)過程控制系統(tǒng),完成復(fù)雜的控制功能。小則可以用于家電控制,甚至可以用于兒童電子玩具。它功能強(qiáng)大,體積小,質(zhì)量輕,靈活好用,配以適當(dāng)?shù)慕杩谛酒?,可以?gòu)造各種各樣、功能各異的微電子產(chǎn)品。</p><p> 目前市場上提供的無論機(jī)械鐘還是石英鐘在晚上無照明的情況下都是不可見的。要知道當(dāng)前的時間,必須先開燈,故較為不便?,F(xiàn)在市場上也出現(xiàn)了一些電子鐘,它以LED數(shù)碼管來顯示具體時間
16、,與傳統(tǒng)的以指針顯示時間的方式不同,違背了人們傳統(tǒng)的習(xí)慣與理念,而且這類電子鐘一般是采用大型顯示器件,適用于銀行、車站等公共場所,且外觀設(shè)計欠美觀,很少進(jìn)入百姓家庭。此外,無論是機(jī)械鐘、石英鐘還是電子鐘,都存在著共同的問題:時間誤差。針對以上存在的問題,我們設(shè)計了一款采用LED數(shù)碼管顯示的電子時鐘,有效克服了時鐘存在的誤差。</p><p> 1.2 數(shù)字鐘的應(yīng)用</p><p> 時
17、間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時間。忘記了要做的事情,當(dāng)事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵?,廣泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作和娛樂帶來極大的不便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)的石英技術(shù),使電子鐘具有走時準(zhǔn)確、性能穩(wěn)定、攜帶方便等優(yōu)點,它還用于計時,自動報時
18、和自動控制等各個領(lǐng)域。</p><p><b> 二 整體設(shè)計方案</b></p><p><b> 2.1 設(shè)計任務(wù)</b></p><p> 1 能實現(xiàn)顯示時間的時、分、秒,并具有時間的設(shè)置和調(diào)控功能;</p><p> 2 具有定時、倒計時功能;</p><p&g
19、t; 3 能實現(xiàn)語音正點報時;</p><p><b> 4 具有鬧鈴功能。</b></p><p><b> 2.2 設(shè)計思路</b></p><p> 以AT89S51作為核心控制,配以語音模塊、LED顯示模塊、時鐘模塊、控制模塊作為外圍電路達(dá)到設(shè)計要求。</p><p><b&g
20、t; 2.3 設(shè)計方案</b></p><p> 系統(tǒng)由AT89S51、LED數(shù)碼管、按鍵、發(fā)光二極管等部分構(gòu)成,能實現(xiàn)日期及時間的調(diào)整、定時日期及時間的設(shè)定,輸出等功能。系統(tǒng)的功能選擇由“F1”、“F2”、“F3”、“+”、“-”五個功能鍵來完成。按一下F1:顯示年月日,按二下F1: 調(diào)整年,按三下F1: 調(diào)整月,按四下F1: 調(diào)整日,按一下F2:顯示時分秒 。按下F3一下:調(diào)整時。按下F3二下
21、:調(diào)整分。按下F4一下:設(shè)定時開的時,按下F4二下: 設(shè)定時開的分。 “+”、“-”分別是調(diào)時時數(shù)字加1或者減1的功能,鍵盤上各位數(shù)字鍵則為其設(shè)定值。其中,本設(shè)計的整體思路框圖如下所示:</p><p> 圖1 數(shù)字鐘整體設(shè)計圖</p><p> 三 數(shù)字鐘的硬件設(shè)計</p><p><b> 3.1 總電路圖</b></p&g
22、t;<p> 如圖8所示:P0口控制按鍵電路,P1口控制LED顯示段碼顯示,P2口控制位碼選通,P3口控制語音錄放電路。</p><p> 圖8 總電路圖</p><p> 3.2 AT89S51概述及其特點</p><p> AT89S51是一個低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system pr
23、ogrammable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強(qiáng)大的微型計算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。</p><p> AT89S51具有如下特點:40個引腳,4k Bytes Flash片內(nèi)
24、程序存儲器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。 </p><p> 此外,AT89S51設(shè)計和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器
25、而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。</p><p><b> 主要特性有:</b></p><p> AT89S51 CPU與MCS-51 兼容</p><p> 4K字節(jié)可編程FLASH存儲器(壽命:1000寫/擦循環(huán))<
26、/p><p> 全靜態(tài)工作:0Hz-24KHz</p><p> 三級程序存儲器保密鎖定</p><p> 128*8位內(nèi)部RAM</p><p> 32條可編程I/O線</p><p> 兩個16位定時器/計數(shù)器</p><p><b> 6個中斷源</b><
27、;/p><p><b> 可編程串行通道</b></p><p> 低功耗的閑置和掉電模式</p><p> 片內(nèi)振蕩器和時鐘電路</p><p><b> 管腳說明:</b></p><p> 圖3 AT89S51引腳圖</p><p>
28、VCC:供電電壓。 </p><p><b> GND:接地。</b></p><p> P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出
29、原碼,此時P0外部必須被拉高。</p><p> P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩
30、沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。<
31、/p><p> P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> AT89S51 的新功能有: </p><p> 新增加很多功能,性能有了較大提升,價格基本不變,甚至比89C5
32、1更低!</p><p> ISP在線編程功能,這個功能的優(yōu)勢在于改寫單片機(jī)存儲器內(nèi)的程序不需要把芯片從工作環(huán)境中剝離。是一個強(qiáng)大易用的功能。 </p><p> 最高工作頻率為33MHz,大家都知道89C51的極限工作頻率是24M,就是說S51具有更高工作頻率,從而具有了更快的計算速度。 </p><p> 具有雙工UART串行通道;內(nèi)部集成看門狗計時器,不
33、再需要像89C51那樣外接看門狗計時器單元電路;雙數(shù)據(jù)指示器;電源關(guān)閉標(biāo)識。 </p><p> 全新的加密算法,這使得對于89S51的解密變?yōu)椴豢赡埽绦虻谋C苄源蟠蠹訌?qiáng),這樣就可以有效的保護(hù)知識產(chǎn)權(quán)不被侵犯。 </p><p> 兼容性方面:向下完全兼容51全部字系列產(chǎn)品。比如8051、89C51等等早期MCS-51兼容產(chǎn)品。也就是說所有教科書、網(wǎng)絡(luò)教程上的程序(不論教科書上采用的
34、單片機(jī)是8051還是89C51還是MCS-51等等),在89S51上一樣可以照常運(yùn)行,這就是所謂的向下兼容。</p><p> 3.3 T0定時器/計數(shù)器</p><p> MCS-51內(nèi)有兩個獨立的可編程定時器/計數(shù)器,稱為T0和T1.他們本質(zhì)上是可預(yù)置初值的加1計數(shù)器,既可用于計數(shù),也可用來定時。當(dāng)對從單片機(jī)引腳上輸入的外部脈沖信號計數(shù)時,它是計數(shù)器;當(dāng)對有固定時間間隔的內(nèi)部機(jī)器周
35、期進(jìn)行計數(shù)時,它是定時器。TO定時特性功能寄存器由TL0(低8位)和TH0(高8位)構(gòu)成。特殊功能寄存器TMOD控制定時寄存器的工作方式;TCON則用于控制定時器T0和T1的啟動和停止計數(shù),同時管理定時器TO和T1的溢出標(biāo)志等。程序開始時需對TL0和TH0進(jìn)行預(yù)設(shè)初值,用指令改變TMOD和TCON的內(nèi)容,以定義它們的工作方式和控制T0和T1的計數(shù),這樣定時器/計數(shù)器就會從下一條指令的第一個機(jī)器周期開始按設(shè)定的方式自動進(jìn)行工作。定時器/計
36、數(shù)器T0工作方式1的電路邏輯結(jié)構(gòu)如圖4所示。</p><p> 圖4 定時器/計數(shù)器T0工作方式1的邏輯結(jié)構(gòu)</p><p> 時鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時鐘頻率為基準(zhǔn),有條不紊的一拍一拍地工作。因此,時鐘頻率直接影響單片機(jī)的速度,時鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時鐘電路有兩種方式:一種是內(nèi)部時鐘方式;另一種為外部時鐘方式。本文用的是內(nèi)部時
37、鐘方式。電路設(shè)計如圖5所示。</p><p> 圖5 單片機(jī)時鐘</p><p> AT89S51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個穩(wěn)定的自激振蕩器。在本系統(tǒng)時鐘模塊的設(shè)計中所選用的6 MHz的石英振蕩器,由于6 MHz晶體振蕩的每個定時周期
38、為2 μs,可得到2μs的精度,為讓設(shè)計準(zhǔn)確本設(shè)計中使用1次定時20 ms,經(jīng)過50次T0定時中斷得到1 s,由此設(shè)置就可以使單片機(jī)在運(yùn)行時能夠有條不紊。</p><p> 3.4 數(shù)碼管動態(tài)掃描</p><p> 單片機(jī)應(yīng)用系統(tǒng)中使用較多的是7段LED數(shù)碼管,本系統(tǒng)所用的AT89S51板中的數(shù)碼管是4位七段共陽極數(shù)碼管,其結(jié)構(gòu)和引腳如圖6所示。</p><p>
39、; 圖6 4位七段共陰極數(shù)碼管引腳連接圖</p><p> LED數(shù)碼管的驅(qū)動方式:</p><p> 數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。</p><p> ?。?)靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機(jī)
40、的I/O端口進(jìn)行驅(qū)動,或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動,要知道一個89S51單片機(jī)可用的I/O端口才32個,實際應(yīng)用時必須增加譯碼驅(qū)動器進(jìn)行驅(qū)動,增加了硬件電路的復(fù)雜性。</p><p> (2)動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之
41、一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的
42、的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。本數(shù)字鐘系統(tǒng)將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM
43、接到地線+5V上,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段</p><p> ?。?)共陰極數(shù)碼管 (2)共陽極數(shù)碼管 </p><p> 圖7 共陰極和共陽極數(shù)碼管LED連接圖</p><p> 圖8 8位七段數(shù)碼管字型代碼</p><p> 3.4.2 LED數(shù)碼管的顯示控制</p
44、><p> 在本設(shè)計中采用的是4位數(shù)碼管動態(tài)掃描顯示。它將所有數(shù)碼管的8個段線相應(yīng)地并接在一起,并接到AT89S51的P0口,有P0口控制字段輸出,而各位數(shù)碼管的共陽極由AT89S51的P2口控制Q4-Q7來實現(xiàn)8位數(shù)碼管的位輸出控制。</p><p> 這樣,對于一組數(shù)碼管動態(tài)掃描顯示需要由兩組信號來控制:一組是字段輸出口輸出地字形代碼,用來控制顯示的字形,稱為段碼;另一組是位輸出口輸出
45、地控制信號,用來選擇第幾位數(shù)碼管工作,稱為位碼。</p><p> 由于各位數(shù)碼管的段線并聯(lián),段碼的輸出對各位數(shù)碼管來說是相同的。因此,在同一時刻如果各位數(shù)碼管的位選線都處于選通狀態(tài)的話,4位數(shù)碼管將顯示相同的字符,若要各位數(shù)碼管能夠顯示出與本位相應(yīng)的字符,就必須采用掃描顯示方式,即在某一時刻,只讓某一位的位選線處于導(dǎo)通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài)。同時,段線上輸出相應(yīng)位要顯示字符的字型碼。這樣在同一時
46、刻,只有選通的那一位顯示出字符,而其他各位則是熄滅的,如此循環(huán)下去,就可以使各位數(shù)碼管顯示出將要顯示的字符。</p><p> 雖然這些字符是在不同時刻出現(xiàn)的,而且同一時刻,只有一位顯示,其他各位熄滅,但由于數(shù)碼管具有余輝特性和人眼有視覺暫留現(xiàn)象,只要每位數(shù)碼管顯示間隔足夠短,給人眼的視覺印象就會是連續(xù)穩(wěn)定地顯示。</p><p> 數(shù)碼管不同位顯示的時間間隔可以通過調(diào)整延時程序的延時
47、長短來完成。數(shù)碼管顯示的時間間隔也能夠確定數(shù)碼管顯示時的亮度,若顯示的時間間隔長,顯示時數(shù)碼管的亮度將亮些,若顯示的時間間隔短,顯示時數(shù)碼管的亮度將暗些。若顯示的時間間隔過長的話,數(shù)碼管顯示時將產(chǎn)生閃爍現(xiàn)象。所以,在調(diào)整顯示的時間間隔時,即要考慮到顯示時數(shù)碼管的亮度,又要數(shù)碼管顯示時不產(chǎn)生閃爍現(xiàn)象。</p><p> 數(shù)碼管是由7個條形的LED和下方一個圓形的LED組成,這樣一共有8個段線,恰好適用于8位的并行
48、系統(tǒng)。數(shù)碼管有共陰極和共陽極兩種,共陰極數(shù)碼管的公共陰極接地,當(dāng)各段陽極上的電平為“1”時,該段點亮,電平為“0”時,該段熄滅;共陽極數(shù)碼管則正好與此相反,共陽極數(shù)碼管的公共陽極接+5V,當(dāng)各段陰極上的電平為“0”時,該段點亮,電平為“1”時,該段熄滅。</p><p> 圖9 共陽極4位七段數(shù)碼管公共端連接圖</p><p> 表1 共陽極4位七段數(shù)碼管段代碼</p
49、><p><b> 舉例1:</b></p><p> 如果想讓最右邊的數(shù)碼管顯示“0”的話,首先將段碼“0FCH”送達(dá)P0口,然后將P2.3清為低電平。當(dāng)P2.3為低電平時,三極管Q4導(dǎo)通,其該位數(shù)碼管的公共陽極接至+5V,于是該位數(shù)碼管就顯示“0”。</p><p><b> 程序如下:</b></p>
50、<p> MOV P0,#0FCH ;送段碼到P0口</p><p> MOV P2,#7FH ;清P2.3為低電平</p><p> 3.4.3本設(shè)計LED數(shù)碼顯示過程介紹</p><p> 首先,S51芯片程序運(yùn)行時,按下F1功能鍵,通過對P0及P2口掃描,4位數(shù)碼管即顯示當(dāng)前的日期:年月日( 例如“2009/1204”, 為動態(tài)顯示,先顯示
51、年“2009”,再顯示月日“1204”),日為時到00加1,當(dāng)前日從1到28/29/30/31循環(huán)顯示,月為日到28/29/30/31時加1,當(dāng)前月從1到12循環(huán)顯示,年為月到1加1,當(dāng)前年加1顯示;按下F2功能鍵,通過對P0及P2口掃描,4位數(shù)碼管即顯示當(dāng)前的時間:時:分/秒(例如16:38/50,也是動態(tài)顯示,先顯示十分“16:38”(此處需要多顯示兩點, dg3、dg4都為“0”即可)),然后顯示秒,秒為加1顯示。分為秒到00后加
52、1,當(dāng)前分從00到59循環(huán)顯示,時為分到00后加1,當(dāng)前時從00到23循環(huán)顯示。這些都是從基本的經(jīng)過50次T0定時中斷(一次定時20ms)掃描得到1 s,然后1秒計數(shù)60次即為1分,1分計數(shù)60此即為1時,1時計數(shù)24次即為1日,以此在數(shù)碼管上輸出顯示。</p><p> 當(dāng)按F1或者F2、F3的次數(shù)改變時,即為調(diào)整當(dāng)前數(shù)碼管顯示的日期和時間。當(dāng)消除鍵盤抖動后所掃描到準(zhǔn)確的按鍵脈沖后,數(shù)碼管顯示進(jìn)入調(diào)整日期和時
53、間的狀態(tài)。按兩下F1,此時可以分別調(diào)整年的顯示;按三下F1,調(diào)整月的顯示;按四下F1,調(diào)整日的顯示。按下F2,此時為時間時分秒的顯示。按下F3一下:調(diào)整時;按下F3二下:調(diào)整分。然后按鍵盤上的數(shù)字鍵直接調(diào)整亦可按“+”和“-”分別加1減1來進(jìn)行調(diào)整。而按下F4則是啟動定時功能,和調(diào)整日期和時間的方式一樣,按下F4一下:設(shè)定時開的時,按下F4二下: 設(shè)定時開的分,或按鍵盤上的數(shù)字鍵直接調(diào)整或按“+”和“-”分別加1減1來進(jìn)行調(diào)整鬧鈴時間均
54、可。數(shù)碼管的顯示會隨著功能鍵的掃描而相應(yīng)的變換當(dāng)前顯示。</p><p> 3.5 鍵盤掃描電路</p><p> 3.5.1 鍵盤掃描原理</p><p> 本按鍵電路如圖9所示,按鍵的開關(guān)狀態(tài)通過一定的電路轉(zhuǎn)換為高、低電平狀態(tài)。按鍵閉合過程在相應(yīng)的I/O端口形成一個負(fù)脈沖。閉合和釋放過程都要經(jīng)過一定的過程才能達(dá)到穩(wěn)定,這一過程是處于高、低電平之間的一種不穩(wěn)
55、定狀態(tài),稱為抖動。抖動持續(xù)時間的長短常與開關(guān)的機(jī)械特性有關(guān),一般在5-10ms之間。為了避免CPU多次處理按鍵的一次閉合,應(yīng)采用措施消除抖動。本文采用的是獨立式按鍵,直接用I/O口線構(gòu)成單個按鍵電路,每個按鍵占用一條I/O口線,每個按鍵的工作狀態(tài)不會產(chǎn)生相互影響。對按鍵的判斷與處理模塊是電子鐘程序設(shè)計的核心,主要是接收“按鍵掃描模塊”傳遞過來的值,對不同的按鍵能夠結(jié)合當(dāng)前的狀態(tài)做出不同的處理與反饋,并且對各個狀態(tài)從屬分類。在不同的狀態(tài)下
56、,各種按鍵的意義也都是不同的:</p><p> 圖10 數(shù)字鐘按鍵電路</p><p> 3.5.2 鍵盤工作方式</p><p> 矩陣按鍵部分由16個輕觸按鍵按照4行4列排列,連接到P1口。將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入,這樣,當(dāng)按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵
57、按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。</p><p> 確定矩陣式鍵盤上有無鍵按下:將全部行線置于低電平,然后檢測列線的狀態(tài),只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。</p><p> 判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程,其方法是
58、:依次將行線置為低電平,即在置某根行線為低電平時,其他線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài),若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵,89S51單片機(jī)的P1口用作鍵盤I/O口,鍵盤的列線接到P1的低四位,鍵盤的行線接到P1口的高四位。列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P1.7設(shè)置為輸出線,4根行線和4根列線形成16個相交點。</p><p>
59、 檢測當(dāng)前是否有鍵被按下,檢測的方法是:</p><p> ?。?)P1.4-P1.7輸出全為“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3全為“1”,則無鍵閉合,否則有鍵閉合。</p><p> ?。?)去除抖動。當(dāng)檢測到有鍵按下后延時一段時間,做下一步的檢測判斷。</p><p> ?。?)若有鍵被按下,應(yīng)識別出是哪一個鍵閉合,方法是對鍵盤的行線進(jìn)
60、行掃描,P1.4-P1.7按下述4種組合輸出:</p><p> P1.7:1110 P1.6:1101 P1.5:1011 P1.4:0111</p><p> ?。?)在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”的這一行沒有鍵閉合,否則有鍵閉合,由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。<
61、;/p><p> ?。?)為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時的抖動</p><p><b> 3.5.3按鍵定義</b></p><p> 本數(shù)字鐘的鍵盤為4*4式按鍵矩陣,共有16個按鍵,分別為10個數(shù)字鍵、2個“+”、“-” 按鍵及四個“F1”- “F4”功能按鍵。在本設(shè)計中,按一下F1:顯示年月日,按兩下F1: 調(diào)整
62、年,按三下F1: 調(diào)整月,按四下F1: 調(diào)整日;按一下F2:顯示時分秒 ,按下F3一下:調(diào)整時,按下F3二下:調(diào)整分;按下F4一下:設(shè)定時開的時,按下F4二下: 設(shè)定時開的分(定時關(guān)用;用軟件延時30秒。)。按‘-’按鍵一次是修改數(shù)減1,按‘+’按鍵 一次是修改數(shù)加1。其余的各位數(shù)字鍵則在調(diào)整日期或者時間時為其本身的設(shè)定值。</p><p><b> 3.6 復(fù)位電路</b></p&
63、gt;<p> AT89S51單片機(jī)的復(fù)位是由外部的復(fù)位電路來實現(xiàn)的。復(fù)位引腳RST通過一個斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,在每個機(jī)器周期的S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號。上電復(fù)位:上電復(fù)位電路時一種簡單的復(fù)位電路,只要在RST復(fù)位引腳接一個電容到VCC,接一個電阻到地就可以了。上電復(fù)位是指在給系統(tǒng)上電時,復(fù)位電路通過電容加到RST復(fù)位引腳一
64、個短暫的電平信號,這個復(fù)位信號隨著VCC對電容的充電過程而回落,所以RST引腳復(fù)位的高電平維持時間取決于電容的充電時間。為了保證系統(tǒng)安全可靠的復(fù)位,RST引腳的高電平信號必須維持足夠長的時間。</p><p> 圖11 復(fù)位電路</p><p> 如上圖所示,上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實現(xiàn)的。只要VCC的上升時間不超過1ms,就可以實現(xiàn)自動上電復(fù)位。</
65、p><p><b> 3.7 電源電路</b></p><p> 如圖12所示電路為輸出電壓+5V、輸出電流1.5A的穩(wěn)壓電源。它由電源變壓器B,橋式整流電路D1~D4,濾波電容C1、C3,防止自激電容C2、C3和一只固定式三端穩(wěn)壓器(7805)極為簡捷方便地搭成的。</p><p> 圖12 電源電路</p><p&
66、gt; 220V交流市電通過電源變壓器變換成交流低壓,再經(jīng)過橋式整流電路D1~D4和濾波電容C1的整流和濾波,在固定式三端穩(wěn)壓器LM7805的Vin和GND兩端形成一個并不十分穩(wěn)定的直流電壓(該電壓常常會因為市電電壓的波動或負(fù)載的變化等原因而發(fā)生變化)。此直流電壓經(jīng)過LM7805的穩(wěn)壓和C3的濾波便在穩(wěn)壓電源的輸出端產(chǎn)生了精度高、穩(wěn)定度好的直流輸出電壓。本穩(wěn)壓電源可作為TTL電路或單片機(jī)電路的電源。三端穩(wěn)壓器是一種標(biāo)準(zhǔn)化、系列化的通用
67、線性穩(wěn)壓電源集成電路,以其體積小、成本低、性能好、工作可靠性高、使用簡捷方便等特點,成為目前穩(wěn)壓電源中應(yīng)用最為廣泛的一種單片式集成穩(wěn)壓器件。</p><p><b> 3.8語音錄放電路</b></p><p> 美國ISD公司的2500芯片,按錄放時間60秒、75秒、90秒和120秒分成ISD2560、2575、2590和25120四個品種。 </p>
68、;<p> ISD2500系列和1400系列語音電路一樣,具有抗斷電、音質(zhì)好,使用方便等優(yōu)點。</p><p> 它的最大特點在于片內(nèi)E2PROM容量為480K(1400系列為128K),所以錄放時間長;有10個地址輸入端(1400系列僅為8個),尋址能力可達(dá)1024位;最多能分600段;設(shè)有OVF(溢出)端,便于多個器件級聯(lián)。</p><p> 圖13 ISD250
69、0封裝圖</p><p><b> 表2</b></p><p> 四 數(shù)字鐘的軟件設(shè)計</p><p> 4.1 系統(tǒng)軟件設(shè)計內(nèi)容</p><p> 本系統(tǒng)的主程序主要完成時間顯示和定時輸出判斷功能。而年月日顯示和各時間單元進(jìn)位、時間設(shè)定時、調(diào)定時間設(shè)定時等功能全部在中斷服務(wù)程序中完成。</p>
70、<p> 4.1.1 數(shù)據(jù)與代碼轉(zhuǎn)換</p><p> 由前述可知,從P2 口輸出位選碼,從P0 口輸出段選碼,LED 就會顯示出數(shù)字來。但P0口的輸出的數(shù)據(jù)是要BCD 碼,各存儲單元存儲的是二進(jìn)制數(shù),也就是和要顯示出的字符表達(dá)的含義是不一致的。可見,將要顯示的存儲單元的數(shù)據(jù)直接送到P0 口去驅(qū)動LED 數(shù)碼管顯示是不能正確表達(dá)的,必須在系統(tǒng)內(nèi)部將要顯示的數(shù)據(jù)經(jīng)過BCD 碼行轉(zhuǎn)換后,將各個單元數(shù)據(jù)
71、的段選代碼送入P0 口,去驅(qū)動數(shù)碼管顯示。具體轉(zhuǎn)換過程如下:我們先將要顯示的數(shù)據(jù)裝入累加器A 中,再將A 中的數(shù)據(jù)轉(zhuǎn)換成高低兩位的BCD 碼,再放回A 中,然后將A 中的值輸出。如:有一個單元存儲了45 這樣一位數(shù),則需轉(zhuǎn)換成四位的BCD 碼:(0100)(0101)然后放入A 中。 A 中BCD 碼,高位四位代表¡4¡低四位代表¡5¡同時送給兩個譯碼器中,譯碼后“45 ”字就在兩個LED 中顯示
72、出來。</p><p> 4.1.2 計時功能的實現(xiàn)與中斷服務(wù)程序</p><p> 時間的運(yùn)行依靠定時中斷子程序?qū)r鐘單元數(shù)值進(jìn)位調(diào)整來實現(xiàn)的。計數(shù)器T0 打開后,進(jìn)入計時,滿100 毫秒后,重裝定時。中斷一次,滿一秒后秒進(jìn)位,滿60 秒后即為1 分鐘,分鐘單元進(jìn)位,60 分到了后,時單元進(jìn)位,24 小時滿后,天單元進(jìn)位。這樣然后根據(jù)進(jìn)率,得到年、月、日、時、分、秒存儲單元的值,并經(jīng)
73、譯碼后,通過掃描程序送LED 中顯示出來,實現(xiàn)時鐘計時功能。累加是用指令I(lǐng)NC 來實現(xiàn)的。進(jìn)入中斷服務(wù)程序以后,執(zhí)行PUSH PSW 和PUSH A 將程序狀態(tài)寄存器PSW 的內(nèi)容和累加器A 中的數(shù)據(jù)保存起來,這便是所謂的”保護(hù)現(xiàn)場” .以保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場時存取關(guān)鍵數(shù)據(jù)的存儲區(qū)叫做堆棧。在軟件的控制之下,堆棧可在片內(nèi)RAM 中的任一區(qū)間設(shè)定,而堆棧的數(shù)據(jù)存取與一般的RAM 存取又有區(qū)別,對它的操作,要遵循”后進(jìn)先出”的原則。</
74、p><p> 4.2 數(shù)字鐘流程圖</p><p> 流程圖1:主程序流程圖</p><p> 圖14 數(shù)字鐘主程序流程圖</p><p> 流程圖2:定時中斷程序流程圖</p><p> 圖15 時鐘中斷服務(wù)程序流程圖</p><p> 流程圖3:加1子程序流程圖</p>
75、;<p> 圖16 加1子程序流程圖</p><p><b> 4.3 數(shù)字鐘程序</b></p><p> HOUR EQU 30H ;時</p><p> MIN EQU 31H ;分</p><p> SEC E
76、QU 32H ;秒 即時時間 \偽指令</p><p> YEAR EQU 33H ;年</p><p> MON EQU 34H ;月</p><p> DAY EQU 35H ;日</p><p>
77、 MIN_1 EQU 41H ;分 定時器開存儲單元</p><p> HOUR_1 EQU 42H ;時</p><p> MIN_11 EQU 40H ;分 定時器1 路、關(guān)存儲單元</p><p> HOUR_11 EQU 46H ;時
78、</p><p> DAY_11 EQU 47H ;日</p><p> MON_11 EQU 48H ;月</p><p> YEAR_11 EQU 49H ;年</p><p> FJ1 EQU 70H ;
79、F1</p><p> FJ2 EQU 71H ;F2</p><p> FJ3 EQU 72H ;F3</p><p> FJ4 EQU 73H ;F4</p><p> ;***********************
80、</p><p> ORG 0000H</p><p><b> LJMP MAIN</b></p><p> ORG 000BH ;計數(shù)中斷 T0、方式1</p><p><b> LJMP TIME</b></p><p>
81、ORG 001BH ;計數(shù)中斷 T1、方式1</p><p> LJMP TIME1</p><p> ;------主程序</p><p> ORG 0030H</p><p><b> MAIN:</b></p><p> ;--------初始化
82、賦值</p><p> MOV YEAR , #02</p><p> MOV MON , #05</p><p> MOV DAY , #01</p><p> MOV HOUR ,#00</p><p> MOV MIN , #00</p&
83、gt;<p> MOV SEC , #00</p><p> MOV FJ1 ,#00</p><p> MOV FJ2 ,#00</p><p> MOV FJ3 ,#00</p><p> MOV FJ4 ,#00</p><p
84、> ;-------開中斷</p><p> MOV TMOD , #11H ;計數(shù)、模式1、T0、T1</p><p> MOV TL0, #0B0H ;100MS 計數(shù)定時</p><p> MOV TH0, #3CH </p><p> MOV TL1, #0B0H
85、 ;100MS 計數(shù)定時</p><p> MOV TH1, #3CH ;</p><p> MOV 20H, #0AH ;10 次*100MS</p><p> MOV 21H, #0AH ;10 次*100MS</p><p> SETB PT0 ;T0 為
86、最高級</p><p> SETB TR0 ;允許計數(shù)</p><p> SETB ET0 ;允許T0 中斷</p><p> SETB ET1 ;允許T1 中斷</p><p> SETB PT1 ;T1 為最高級</p&g
87、t;<p> SETB EA ;開總中斷</p><p><b> KEY: </b></p><p> LCALL TIMEP ;</p><p> LCALL SHOW1 </p><p> ;上邊是保證LED的顯示穩(wěn)定 </p><p
88、> MOV A ,#0F0H ;P1.7-P1.4 4條行線送高電平當(dāng)輸入口使用</p><p><b> MOV P1,A</b></p><p><b> MOV A ,P1</b></p><p> CJNE A,#0F0H,IN ;若有鍵按下,去抖動</p>&
89、lt;p><b> AJMP KEY</b></p><p> IN: ACALL DELAY;5MS</p><p> MOV A ,#0F0H </p><p><b> MOV P1,A</b></p><p><b> MOV A ,P1</b&g
90、t;</p><p> CJNE A,#0F0H,KK ;有鍵按下則計算鍵值</p><p><b> AJMP KEY</b></p><p> KK: MOV R4,#0F7H ;掃描字,低位送1,高位送0,回讀低位,若讀回值為0則有鍵按下</p><p> MOV R7
91、,#00H ;首行號;掃描按鍵</p><p> SCAN: MOV A,R4</p><p><b> RL A</b></p><p><b> MOV R4,A</b></p><p><b> MOV P1,A</b></p>
92、<p> JB P1.0 ,L1 ;讀P1.0</p><p> MOV A,#01H</p><p><b> AJMP LK</b></p><p> L1: JB P1.1 ,L2</p><p> MOV A,#05H</p><p>
93、;<b> AJMP LK</b></p><p> L2: JB P1.2, L3</p><p> MOV A,#09H</p><p><b> AJMP LK</b></p><p> L3: JB P1.3,NEXT</p><p>
94、; MOV A,#0DH</p><p> LK: ADD A,R7 </p><p><b> MOV R7,A</b></p><p> AJMP FIND ;按健已確定,處理需顯示按下的鍵</p><p> NEXT: INC R7</p><p
95、> JB P1.7,SCAN</p><p><b> AJMP KEY</b></p><p> FIND: MOV A,#0F0H</p><p><b> MOV P1,A</b></p><p> ACALL DELAY ;延時10MS</p
96、><p> LOOSE: MOV A,P1</p><p> CJNE A,#0F0H,LOOSE </p><p> MOV A,R7 ;松開取鍵號,按單鍵處理.判斷是F鍵還是數(shù)字</p><p> CJNE A,#01H,F2J</p><p> INC FJ1
97、 ;是F1則加1</p><p><b> AJMP KEY</b></p><p> F2J: CJNE A,#05H,F3J ;只要F2按下顯示時分</p><p> MOV FJ1 ,#00</p><p> MOV FJ2 ,#00</p><
98、;p> MOV FJ3 ,#00</p><p> MOV FJ4 ,#00</p><p> LCALL TIMEP </p><p> LCALL SHOW </p><p><b> AJMP KEY</b></p><p> F3J: CJNE A,#
99、09H,F4J</p><p> INC FJ3 </p><p><b> AJMP KEY</b></p><p> F4J: CJNE A,#0DH,NFJ</p><p> INC FJ4 </p><p> AJMP KEY <
100、;/p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; </p><p> NFJ: MOV A,FJ1 ;若不是F鍵是數(shù)字鍵,則查功能</p><p> JZ NFJ2 ;F1=0沒按F1</p><p
101、> CJNE A,#01H,TYEAR ;不為1,則繼續(xù)判斷; 顯示年 ;等于1</p><p> LCALL YEARP</p><p> LCALL SHOW ;顯示月日</p><p> LCALL MONP</p><p> LCALL DAYP</p>&
102、lt;p> LCALL SHOW </p><p><b> AJMP KEY</b></p><p> TYEAR: CJNE A,#02H,TMON ;不為2,則繼續(xù)判斷</p><p> LCALL YEARP ;F2按二下,修改年</p><p> LCAL
103、L SHOW ;顯示年的原值 </p><p> MOV A,R7 ;取當(dāng)前按下鍵號進(jìn)行判斷</p><p> CJNE A,#0DH,JH ;不是加則轉(zhuǎn)減判斷</p><p><b> INC 33H</b></p><p><b>
104、; AJMP OU</b></p><p> JH: CJNE A,#0FH,XGYEAR ;也不是減則按新數(shù)字設(shè)置</p><p><b> DEC 33H</b></p><p><b> AJMP OU</b></p><p> XGYEAR:MOV R1
105、 , #33H ;取年單元33H的十位 </p><p> MOV 60H , @R1</p><p><b> LCALL XG</b></p><p> MOV 33H,60H</p><p> OU: LCALL YEARP</p><p> LCALL SH
106、OW ;顯示修改的年新值</p><p><b> LJMP KEY</b></p><p> TMON: CJNE A,#03H,TDAY ;不為3,則繼續(xù)判斷</p><p> ;按三下F1,修改月</p><p> LCALL MONP</p><p
107、> LCALL DAYP</p><p> LCALL SHOW</p><p> MOV A,R7 ;存放的是按下的第二個鍵號</p><p> CJNE A,#0DH,JH1 ;不是加則轉(zhuǎn)減判斷</p><p><b> INC 34H</b></p>
108、<p><b> AJMP OU1</b></p><p> JH1: CJNE A,#0FH,XGMON ;也不是減則按新數(shù)字設(shè)置</p><p><b> DEC 34H</b></p><p><b> AJMP OU1</b></p><p
109、> XGMON: MOV R1 , #34H ;取月單元34H的十位 </p><p> MOV 60H, @R1</p><p><b> LCALL XG</b></p><p> MOV 34H,60H</p><p> OU1: LCALL MONP</p>
110、<p> LCALL DAYP</p><p> LCALL SHOW ;顯示修改的月新值</p><p><b> LJMP KEY</b></p><p> TDAY: ;修改日</p><p> LCALL MONP</p><p> LCALL
111、DAYP</p><p> LCALL SHOW ;加顯示日的原值 </p><p><b> MOV A,R7</b></p><p> CJNE A,#0DH,JH2 ;不是加則轉(zhuǎn)減判斷</p><p><b> INC 35H</b></p>
112、;<p><b> AJMP OU2</b></p><p> JH2: CJNE A,#0FH,XGDAY ;也不是減則按新數(shù)字設(shè)置</p><p><b> DEC 35H</b></p><p><b> AJMP OU2</b></p><
113、p> XGDAY: MOV R1 , #35H ;取日單元35H的十位 </p><p> MOV 60H, @R1</p><p><b> LCALL XG</b></p><p> MOV 35H,60H</p><p> OU2: LCALL MONP</p>
114、<p> LCALL DAYP</p><p> LCALL SHOW ;加顯示修改的日新值</p><p><b> LJMP KEY</b></p><p><b> ;對F3功能處理 </b></p><p> MOV A,FJ3</p>
115、<p><b> JZ NFJ3</b></p><p> CJNE A,#01H,TZF ;不為1,則繼續(xù)判斷</p><p><b> ;調(diào)整時</b></p><p> LCALL TIMEP </p><p> LCALL SHOW ;顯
116、示時的原值</p><p><b> MOV A,R7</b></p><p> CJNE A,#0DH,JH3 ;不是加則轉(zhuǎn)減判斷</p><p><b> INC 30H</b></p><p><b> AJMP OU3</b></p>&
117、lt;p> JH3: CJNE A,#0FH,XGS ;也不是減則按新數(shù)字設(shè)置</p><p><b> DEC 30H</b></p><p><b> AJMP OU3</b></p><p> XGS: MOV R1 , #30H ;取時單元30H的十位 </p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 優(yōu)秀畢業(yè)論文(設(shè)計)基于at89s51單片機(jī)的電子時鐘設(shè)計
- 畢業(yè)設(shè)計(論文)-基于at89c51單片機(jī)電子時鐘的設(shè)計
- 基于at89s51的多功能電子密碼鎖設(shè)計【畢業(yè)設(shè)計】
- 基于at89s51的計費器設(shè)計畢業(yè)設(shè)計
- 【畢業(yè)設(shè)計】基于at89s51單片機(jī)的數(shù)字電子鐘設(shè)計
- 【畢業(yè)設(shè)計】基于at89s51單片機(jī)的數(shù)字電子鐘設(shè)計
- 基于at89s51的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于at89s51單片機(jī)的電子密碼鎖的設(shè)計
- 畢業(yè)設(shè)計----基于at89s51單片機(jī)實驗開發(fā)系統(tǒng)設(shè)計
- 基于at89c51單片機(jī)的電子時鐘設(shè)計
- 51電子時鐘畢業(yè)設(shè)計說明書
- 畢業(yè)設(shè)計(論文)基于51單片機(jī)的電子時鐘設(shè)計
- 電子時鐘畢業(yè)設(shè)計
- 基于at89s51單片機(jī)的籃球計分器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于at89s51單片機(jī)的數(shù)字溫度測量
- 畢業(yè)設(shè)計----基于at89s51單片機(jī)的溫度檢測系統(tǒng)
- 畢業(yè)設(shè)計---基于stc89c52的數(shù)字電子時鐘設(shè)計
- 基于89c51單片機(jī)電子時鐘課程設(shè)計
- 基于單片機(jī)at89s51控制的數(shù)字時鐘課程設(shè)計報告
- 秒表電子時鐘畢業(yè)設(shè)計
評論
0/150
提交評論