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