基于89C52單片機(jī)的電子時(shí)鐘設(shè)計(jì)_第1頁(yè)
基于89C52單片機(jī)的電子時(shí)鐘設(shè)計(jì)_第2頁(yè)
基于89C52單片機(jī)的電子時(shí)鐘設(shè)計(jì)_第3頁(yè)
基于89C52單片機(jī)的電子時(shí)鐘設(shè)計(jì)_第4頁(yè)
基于89C52單片機(jī)的電子時(shí)鐘設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、東華理工大學(xué)長(zhǎng)江學(xué)院畢業(yè)設(shè)計(jì)題 目 基于89c52單片機(jī)的電子時(shí)鐘設(shè)計(jì) 英文題目 electronic clock design based on 89c52 學(xué)生姓名 陳志仁 學(xué) 號(hào) 09325202 專(zhuān) 業(yè) 電子信息工程 系 別 機(jī)械與電子工程系 指導(dǎo)教師 黃河 職 稱(chēng) 講 師 二零一三年六月摘 要至今,微處理器的發(fā)展已有40多年的歷史,起初由美國(guó)intel公司首推的4為微處理器intel4004,實(shí)現(xiàn)將單片處理器和運(yùn)算器等元件集成在一片電路芯片上。此后微處理器的迅猛發(fā)展,微處理器內(nèi)集成的元件也越來(lái)越多,其中包括增加了存儲(chǔ)器、i/o接口電路、定時(shí)/計(jì)數(shù)器、串行通信口、中斷控制、系統(tǒng)總線以及

2、系統(tǒng)時(shí)鐘等,大大加強(qiáng)了微處理器的性能,并針對(duì)特定的領(lǐng)域制作出最大效率的微處理器。不同功能的微處理器稱(chēng)為微控制器,也被我們簡(jiǎn)稱(chēng)為單片機(jī)。本文主要介紹以單片機(jī)at89c52為核心的電子時(shí)鐘顯示,數(shù)碼管為顯示器件,此電子時(shí)鐘顯示具有年月日等基本時(shí)間顯示,以及秒表計(jì)時(shí)處理、鬧鐘定時(shí)、蜂鳴、溫度的設(shè)計(jì)。單片機(jī)通過(guò)對(duì)時(shí)鐘、溫度等數(shù)據(jù)處理后傳送至lcd顯示輸出,也可通過(guò)按鍵對(duì)時(shí)間進(jìn)行調(diào)節(jié)。通過(guò)單片機(jī)外圍接口的擴(kuò)展實(shí)現(xiàn)溫度采集等功能。關(guān)鍵詞:電子時(shí)鐘;at89c52;計(jì)時(shí);溫度abstractthis project mainly introduces that the electronic clock wh

3、ich based on microcontroller at89c52 display.lcd1602 liquid crystal display devicess electronic clock display has the date and time display.stopwatch timing processing, alarm clock timing and the design of buzzer, temperature.scm through the clock, temperature and other data processing and transmits

4、 signals to the lcd display output, also by adjusting button for time.through the expansion of single-chip peripheral interface to achieve temperature acquisition functions.key words: electronic clock;at89c52;timing ;temperature第一章 緒論1.1 電子時(shí)鐘設(shè)計(jì)的背景 隨著微電子技術(shù)的迅猛發(fā)展,電子產(chǎn)品技術(shù)也得到了很大的提高,單片機(jī)技術(shù)也同樣水漲船高。單片機(jī)是把一個(gè)計(jì)算機(jī)

5、系統(tǒng)集成到一個(gè)芯片上,它的產(chǎn)生是近代計(jì)算機(jī)技術(shù)發(fā)展史上一個(gè)重要的里程碑,它標(biāo)志這計(jì)算機(jī)正式形成了通用計(jì)算機(jī)系統(tǒng)和嵌入式計(jì)算機(jī)系統(tǒng)兩大分支。以單片機(jī)為核心的智能化產(chǎn)品將計(jì)算機(jī)技術(shù)、信息處理技術(shù)和電子測(cè)量與控制技術(shù)結(jié)合在一起,把智能賦予各種機(jī)械裝置,對(duì)傳統(tǒng)的產(chǎn)品結(jié)構(gòu)和應(yīng)用方式產(chǎn)生了本質(zhì)性的變革。由于其微小的體積和低成本的投入已普遍涉及現(xiàn)代人類(lèi)生活中所用的電子和機(jī)械產(chǎn)品中,其中手機(jī)、電話、計(jì)算器、家用電器、電子玩具、電腦以及鼠標(biāo)等電腦配件中都集成有至少1部單片機(jī)。1.2電子時(shí)鐘設(shè)計(jì)的意義從古時(shí)的日晷、沙漏計(jì)時(shí)到近代的機(jī)械計(jì)時(shí),再延續(xù)到現(xiàn)代的通過(guò)數(shù)字電路實(shí)現(xiàn)計(jì)時(shí),其定時(shí)的準(zhǔn)確性和精度都不是非常的理想,

6、隨著單片機(jī)的體積小、易控制、功能強(qiáng)、價(jià)格低廉、穩(wěn)定可靠、集成度高等優(yōu)點(diǎn),注定了它的廣泛普及。在智能家居、工業(yè)控制、通信、航天等領(lǐng)域有著極大的作用。電子時(shí)鐘集成的單片機(jī),極大的提高了電子時(shí)鐘顯示的準(zhǔn)確性和快捷性,最大化的方便了人們。此外由于單片機(jī)的精確性大到工業(yè)過(guò)程中的大型控制系統(tǒng),小到早已遍及全世界的兒童玩具和智能家居控制,無(wú)時(shí)無(wú)刻的影響和方便人類(lèi)的生活。同樣的因?yàn)閱纹瑱C(jī)的功能強(qiáng)、體積小、質(zhì)量輕、靈活好用、性?xún)r(jià)比高等優(yōu)良的性能,使得它可以更好地融入到更多更全面的系統(tǒng)中,可以構(gòu)成許多功能不同的微電子產(chǎn)品。根據(jù)這種實(shí)際情況,設(shè)計(jì)了只采用一個(gè)單片機(jī)制作的多功能電子時(shí)鐘,具備了最基本的時(shí)間日期顯示功能

7、,定時(shí)鬧鈴功能和溫度顯示功能,以及秒表功能,還可以針對(duì)家電等電氣產(chǎn)品的自動(dòng)控制對(duì)其進(jìn)行相應(yīng)的擴(kuò)展,同樣可以避免操作繁瑣的控制器而產(chǎn)生的失誤,準(zhǔn)確實(shí)現(xiàn)“一對(duì)多”的控制;溫度傳感器的添加,使得此電子時(shí)鐘可以準(zhǔn)確,快捷的進(jìn)行溫度顯示,為人們的生活工作提供的極大的便利。對(duì)此設(shè)計(jì)還可以進(jìn)一步的擴(kuò)展利用,也可在此設(shè)計(jì)添加濕度傳感器,進(jìn)而實(shí)時(shí)進(jìn)行濕度的顯示。1.3電子時(shí)鐘設(shè)計(jì)的應(yīng)用 電子鐘已成為人們?nèi)粘I钪胁豢苫蛉钡纳钇?,廣泛是車(chē)站、碼頭、劇場(chǎng)、辦公室等的公共設(shè)施,給人們的生活、學(xué)習(xí)、工作、娛樂(lè)帶來(lái)極大的方便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)的石英技術(shù),使數(shù)字鐘具有走時(shí)準(zhǔn)確、性能穩(wěn)定、攜帶方便、性

8、價(jià)比高等優(yōu)點(diǎn)可以構(gòu)成許多功能不同的微電子產(chǎn)品。它還用于計(jì)時(shí)、自動(dòng)報(bào)時(shí)及自動(dòng)控制等領(lǐng)域。 第二章 電子時(shí)鐘的硬件設(shè)計(jì)2.1 單片機(jī)的選擇 單片微型計(jì)算機(jī)簡(jiǎn)稱(chēng)為單片機(jī),是典型的嵌入式微控制器。通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:存儲(chǔ)器、中央處理器(cpu)和i/o接口電路等。因此,單片機(jī)只需要配合適當(dāng)?shù)能浖巴獠吭O(shè)備,便可成為一個(gè)單片機(jī)控制系統(tǒng)。 單片機(jī)經(jīng)歷scm、mcu、soc三大階段的發(fā)展,使得單片機(jī)具有了多功能、高性能、低電壓、低價(jià)格、低功耗、大存儲(chǔ)容量、強(qiáng)i/o功能及較好的兼容性等優(yōu)點(diǎn)。1、多功能 單片機(jī)中盡可能地把諸多模塊都集成在一塊芯片上,使得單片機(jī)可以

9、實(shí)現(xiàn)的功能更加繁多。其中把a(bǔ)dc、dac以及多路模擬開(kāi)關(guān)和采樣/保持器乃至led等顯示驅(qū)動(dòng)器集成在單片機(jī)芯片中,也就是外圍器件的內(nèi)置化。2、高性能 為了提高執(zhí)行速度和執(zhí)行效率,單片機(jī)開(kāi)始使用risc結(jié)構(gòu)、流水線和dsp的設(shè)計(jì)技術(shù),使單片機(jī)的性能有了顯著的提高。 由于系統(tǒng)資源和系統(tǒng)復(fù)雜程度的增加,開(kāi)始使用高級(jí)語(yǔ)言來(lái)開(kāi)發(fā)單片機(jī)的程序。使用高級(jí)語(yǔ)言明顯降低開(kāi)發(fā)難度以及縮短了開(kāi)發(fā)的周期,軟件的可讀性和可移植性也得到了大大的提升,便于改進(jìn)和擴(kuò)充功能。3、低電壓和低功耗 因單片機(jī)使用的場(chǎng)合空間有限,對(duì)其體積的要求嚴(yán)格,這也決定了單片機(jī)具有低電壓和低功耗的特性非常重要。目前單片機(jī)制造工藝普遍應(yīng)用chmos工

10、藝,其中hmos工藝為互補(bǔ)金屬氧化物具有高速度、高密度的特點(diǎn),再加上cmos工藝具備了低功耗的優(yōu)良特性。由于chmos工藝的大量采用,很多單片機(jī)可以在更低的電壓下工作(1.2v或0.9v),功耗已經(jīng)降低到ua級(jí)。這些特性使得單片機(jī)系統(tǒng)可以在更小電源的支持下工作更長(zhǎng)的時(shí)間。目前,國(guó)內(nèi)生產(chǎn)單片機(jī)的種類(lèi)繁多,在此,我們采用為89c52單片機(jī)為主控制器。89c52內(nèi)置8位中央處理器、256字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器ram、8k片內(nèi)部程序存儲(chǔ)器(rom)32個(gè)雙向輸入/輸出(i/o)口、3個(gè)16位定時(shí)/計(jì)數(shù)器和5個(gè)兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩電路。此外,89c52還可工作于低功耗模式,可通過(guò)

11、兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)cpu而ram定時(shí)器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存ram數(shù)據(jù),時(shí)鐘振蕩停止,同時(shí)停止芯片內(nèi)其它功能。89c52具有pdip(40pin)和plcc(44pin)兩種封裝形式。2.2 單片機(jī)的基本簡(jiǎn)介單片機(jī)有兩種基本結(jié)構(gòu):一種是在通用微型計(jì)算機(jī)中廣泛采用的,數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器共用一個(gè)存儲(chǔ)器空間的結(jié)構(gòu),稱(chēng)為“馮諾依曼”(von neumann)結(jié)構(gòu)。另一種稱(chēng)為“哈佛”(harvard)結(jié)構(gòu)是將數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器完全分開(kāi),采用不同的訪問(wèn)指令進(jìn)行訪問(wèn),目前的單片機(jī)多采用“哈佛”結(jié)構(gòu)。2.2.1 89c52單片機(jī)主要功能特性 標(biāo)準(zhǔn)mcs

12、-51內(nèi)核和指令系統(tǒng) 片內(nèi)8krom(可擴(kuò)充64kb外部存儲(chǔ)器) 32個(gè)雙向i/o口 256x8bit內(nèi)部ram(可擴(kuò)充64kb外部存儲(chǔ)器) 3個(gè)16位可編程定時(shí)/計(jì)數(shù)器 時(shí)鐘頻率3.5-12/24/33mhz 向上或向下定時(shí)計(jì)數(shù)器 改進(jìn)型快速編程脈沖算法 6個(gè)中斷源 5.0v工作電壓 全雙工串行通信口 布爾處理器幀錯(cuò)誤偵測(cè) 4層優(yōu)先級(jí)中斷結(jié)構(gòu)自動(dòng)地址識(shí)別 兼容ttl和cmos邏輯電平 空閑和掉電節(jié)省模式 pdip(40)和plcc(44)封裝形式2.2.2 89c52單片機(jī)各引腳功能1 主電源引腳有vcc、vss。 vcc(40腳):接+5v電源,為程序運(yùn)行和校檢時(shí)提供所需的電能。vss(2

13、0腳):為接地端。2 外界晶體引腳有xtal1、xtal2。xtal1(18腳):片內(nèi)它屬于一個(gè)反向振蕩放大器輸入端,此放大器構(gòu)成了片內(nèi)振蕩器,可以提供單片機(jī)相應(yīng)的時(shí)鐘控制信號(hào)。xtal2(19腳)在單片機(jī)內(nèi)部,接至上述振蕩器的反向輸出端。當(dāng)使用內(nèi)部時(shí)鐘時(shí),兩引線端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時(shí)鐘時(shí),用于接外部時(shí)鐘信號(hào),外部時(shí)鐘由xtal1引入,xtal2處于懸空狀態(tài)。 3 控制類(lèi)引腳包括reset(即為rst/vpd)、ale、psen、ea,可以提供控制信號(hào),有些具有復(fù)用功能。rsr/ vpd(9腳):vpd是單片機(jī)內(nèi)部備用電源,為單片機(jī)的上電復(fù)位和掉電保護(hù)端。振蕩器工作時(shí),在此

14、引腳加上兩個(gè)機(jī)器周期的高電平將使單片機(jī)進(jìn)行復(fù)位(rest)操作。復(fù)位后應(yīng)使此引腳電平保持為不超過(guò)0.5v的低電平,以保證單片機(jī)正常運(yùn)行。當(dāng)電源端出現(xiàn)故障、小于低電平設(shè)定值或者掉電,此引腳可接入備用電源(vpd)以保持內(nèi)部ram中的數(shù)據(jù)不出現(xiàn)異常。ale/prog(30腳):地址鎖存允許信號(hào),以平均每機(jī)器周期兩次有效的信號(hào)輸出。在訪問(wèn)片外存儲(chǔ)器或i/o時(shí),用于鎖存低八位地址,以實(shí)現(xiàn)低八位地址與數(shù)據(jù)的隔離。在不訪問(wèn)外部ram和rom時(shí),ale可以 1/6的振蕩頻率固定速率輸出,可作為對(duì)外輸出的時(shí)鐘或用作外部定時(shí)脈沖。注意:在訪問(wèn)外部ram期間,ale脈沖會(huì)跳過(guò)兩個(gè)機(jī)器周期此信號(hào)有效3次,此種狀態(tài)下

15、便不適合作為時(shí)鐘輸出。psen(29腳):片外程序存儲(chǔ)器讀選通信號(hào),低電平有效。在從片外程序存儲(chǔ)器取指期間,在每個(gè)機(jī)器周期中,當(dāng)有效時(shí),程序存儲(chǔ)器的內(nèi)容被送上 p0口(數(shù)據(jù)總線)。ea /vpp(31腳):片外程序存儲(chǔ)器訪問(wèn)允許控制信號(hào),此控制信號(hào)低電平為有效。ea=1(高電平),選擇片內(nèi)程序存儲(chǔ)器;ea=0(低電平),則程序存儲(chǔ)器全部在片外而不管片內(nèi)是否有程序存儲(chǔ)器4 四個(gè)輸入/輸出引腳包括p0口、p1口、p2口和p3口。p0(39腳-32腳)8位、漏極開(kāi)路的雙向i/o口。當(dāng)使用片外存儲(chǔ)器時(shí),復(fù)用作低八位地址和數(shù)據(jù)總線分時(shí)復(fù)用。p1(1腳-8腳)8位、準(zhǔn)雙向i/o 口。p2(21腳-28腳)

16、8位、準(zhǔn)雙向i/o口。當(dāng)使用片外存儲(chǔ)器時(shí),復(fù) 用作輸出高 8位地址。p3(10腳-17腳)8位、準(zhǔn)雙向i/o口,具有內(nèi)部上拉電路。p3口功能表:p3口各引腳的第二功能p3口的位第二功能說(shuō)明p3.0rxd串行數(shù)據(jù)接收口p3.1txd串行數(shù)據(jù)發(fā)射口p3.2int0外部中斷0輸入p3.3int1外部中斷1輸入p3.4t0計(jì)數(shù)器0計(jì)數(shù)輸入p3.5t1計(jì)數(shù)器1計(jì)數(shù)輸入p3.6wr外部ram寫(xiě)信號(hào)p3.7rd外部ram讀信號(hào)2.2.3 89c52單片機(jī)內(nèi)部結(jié)構(gòu)圖: 第三章 電子時(shí)鐘的軟件設(shè)計(jì)3.1 程序總體設(shè)計(jì)主程序開(kāi)始顯示星期,時(shí),分,秒是否有調(diào) 轉(zhuǎn)?t0中斷時(shí)分秒等進(jìn)位閃爍提示日期顯示及調(diào)節(jié)響鈴提示時(shí)

17、間調(diào)整鬧鈴設(shè)置定時(shí)設(shè)置鈴聲測(cè)試秒表模式回主程序定時(shí)到按0鍵按0鍵鬧鈴到1鍵2鍵3鍵4鍵5鍵6鍵7鍵恢復(fù)按4鍵按8鍵按0鍵按0鍵倒計(jì)時(shí)啟動(dòng)并顯示回主程序秒表暫停秒表清零回主程序按7鍵程序總體流程圖: no yes 綜上電路圖,本設(shè)計(jì)的設(shè)計(jì)思路為下:當(dāng)連接電源后,液晶顯示屏顯示的是分別是時(shí)分秒、星期、年月日、溫度等。并且隨著led燈每隔1秒的閃爍,走時(shí)將自動(dòng)疊加一次,當(dāng)閃爍第60次時(shí)分鐘將自動(dòng)加1。下面講述的便是按鍵的各種功能模式:1 日期模式:按下1鍵后,顯示的是年月日可以進(jìn)行調(diào)節(jié),調(diào)節(jié)狀態(tài)指示燈亮。年份的調(diào)節(jié):按下6鍵時(shí)調(diào)節(jié)年份的千位以及百位,一次可疊加1按下5鍵調(diào)節(jié)的是年份的十位和個(gè)位,同樣

18、的按下一次疊加1月份的調(diào)節(jié):4鍵便是調(diào)整月份的,按下一次便會(huì)疊加1,當(dāng)所顯示的月份到達(dá)12月時(shí),再次疊加將會(huì)顯示1月日的調(diào)整:3鍵就是調(diào)節(jié)月份所屬的日期,每疊加一位便會(huì)加1,其中當(dāng)為1、3、5、7、8、10、12時(shí)日期最高顯示為31日,當(dāng)為4、6、9、11時(shí)顯示的最高日期便為30日,至于2月當(dāng)為所屬的年份為平年或者閏年時(shí),最高顯示將不同分別為28日和29日。平年和閏年的計(jì)算下面將會(huì)繼續(xù)做詳細(xì)的討論。2 調(diào)時(shí)模式:按下2鍵時(shí),顯示的是時(shí)分秒可以進(jìn)行調(diào)節(jié),且此時(shí)的調(diào)節(jié)指示燈亮。時(shí)鐘的調(diào)節(jié):按下6鍵時(shí)此時(shí)可以調(diào)節(jié)的是時(shí)鐘,按下一次該位也將自動(dòng)加1,最高可顯示23,最低顯示0。分鐘的調(diào)節(jié):觸動(dòng)5鍵可以

19、進(jìn)行分鐘的調(diào)節(jié),按一次分鐘就加1,當(dāng)顯示為59時(shí)按5鍵,分鐘的顯示將變?yōu)?,此時(shí)時(shí)鐘也將加1。秒的調(diào)節(jié):按4鍵將會(huì)使鐘清零。3 鬧鈴模式:3鍵為鬧鐘的調(diào)整,此時(shí)顯示的是鬧鐘時(shí)刻的可調(diào)節(jié),指示燈變亮。鬧鈴調(diào)節(jié)相對(duì)應(yīng)的按鍵:5鍵,對(duì)應(yīng)的是進(jìn)行時(shí)鐘的調(diào)整;4鍵對(duì)應(yīng)的是分鐘的調(diào)整。每按一次鍵時(shí)對(duì)應(yīng)的位也將相應(yīng)的加1。4 倒計(jì)時(shí)模式:長(zhǎng)按4鍵進(jìn)入倒計(jì)時(shí)模式,顯示定時(shí)長(zhǎng)度可進(jìn)行相應(yīng)的調(diào)節(jié),同樣的狀態(tài)指示燈變亮。定時(shí)調(diào)整相對(duì)應(yīng)按鍵:6鍵控制分的調(diào)節(jié),5鍵控制秒的調(diào)節(jié),4鍵啟動(dòng)定時(shí)功能,邊顯示倒計(jì)時(shí)。5. 按5鍵鈴聲測(cè)試,揚(yáng)聲器播放音樂(lè)。6. 按下7鍵,進(jìn)入秒表模式,顯示秒表走時(shí)。撥上7鍵,秒表暫停;按下7鍵

20、,秒表又繼續(xù)走時(shí)。按下8鍵,秒表清零。0鍵調(diào)整狀態(tài)指示燈滅,返回主程序,顯示時(shí)間日期模式調(diào)整完畢后,按0鍵返回主程序,此時(shí)指示燈滅,顯示調(diào)節(jié)好的時(shí)間7. 按下8鍵,數(shù)碼管熄滅,時(shí)鐘仍在走時(shí),進(jìn)入節(jié)能模式。撥上8鍵,數(shù)碼管亮,恢復(fù)普通工作模式。8. 9鍵為鬧鈴啟動(dòng)(停止)鍵,按下可以選擇是否要鬧鈴,以及在鬧鈴響起時(shí),按此鍵可以停止鬧鈴。9. 10鍵為鈴聲選擇開(kāi)關(guān),按下與否,可以選擇兩手音樂(lè)。10. 11鍵為鬧鈴重響控制開(kāi)關(guān),重響功能開(kāi)啟時(shí),從鬧鈴隨音樂(lè)結(jié)束而結(jié)束的時(shí)刻開(kāi)始,或從手動(dòng)按9鍵停止鬧鈴的時(shí)刻開(kāi)始定時(shí),一段時(shí)間后鬧鈴重響。11. 12鍵為鬧鈴重響間隔選擇開(kāi)關(guān),可選兩個(gè)定時(shí)長(zhǎng)度,以便在鬧鈴

21、重響功能開(kāi)啟時(shí),鬧鈴初次響后,過(guò)一段時(shí)間鬧鈴繼續(xù)響。3.2 程序主要模塊3.2.1 延時(shí)模塊數(shù)碼管顯示動(dòng)態(tài)掃描時(shí),用到延時(shí)程序,這里使用延遲1ms的程序,此程序需要反復(fù)調(diào)用程序如下:d_1ms:mov r7,#2d_5:mov r2,#250djnz r2,$djnz r7,d_5ret除數(shù)碼管動(dòng)態(tài)掃描外,數(shù)碼管的閃爍提示,以及音樂(lè)模塊也用到了延時(shí),只是延時(shí)的長(zhǎng)短不同罷了。3.2.2中斷服務(wù)程序本實(shí)驗(yàn)中,計(jì)數(shù)器t0,t1中斷都有運(yùn)用,其中t0中斷為時(shí)鐘定時(shí)所用,t1中斷用于音樂(lè)播放。t0的定時(shí)長(zhǎng)度為0.01s,工作于方式1,計(jì)數(shù)1次,時(shí)長(zhǎng)1us,故計(jì)數(shù)器計(jì)數(shù)10000次,進(jìn)入中斷,計(jì)數(shù)初值為6

22、5536-10000=55536=#0d8f0,裝滿定時(shí)器需要0.01s的時(shí)間,從而100次中斷為一秒,一秒之后,判斷是否到60秒,若不到則秒加一,然后返回,若到,則秒賦值為0,分加一,依次類(lèi)推。包括日期顯示的功能也是如此。另外,由于要實(shí)現(xiàn)倒計(jì)時(shí)功能,因此在中斷程序中還要加入減一的寄存器,需要時(shí)將其進(jìn)行顯示?;谝陨峡紤],以r3為倒計(jì)時(shí)中的秒,r4為倒計(jì)時(shí)的分,當(dāng)秒加1時(shí)r3減一,減到0之后,秒賦值為59,分減一,直到分為0。以下為定時(shí)中斷流程圖:進(jìn)入t0定時(shí)中斷修正,重裝計(jì)數(shù)初值按7鍵秒表的百分之一秒位,秒位,分位,時(shí)位的進(jìn)位 dec pnumpnum=0,已到1秒mov pnum,#100

23、重裝中斷計(jì)數(shù)值inc second 秒位加1r3,r4所存定時(shí)長(zhǎng)度減1分,時(shí),日周,月,年的進(jìn)位 reti 中斷返回 no yes yes no計(jì)數(shù)器t1工作于方式1, 當(dāng)調(diào)用響鈴程序時(shí),其計(jì)數(shù)功能開(kāi)啟,為音樂(lè)音調(diào)不同頻率的方波的形成,提供延時(shí)。其中斷服務(wù)程序就是根據(jù)音調(diào)改變音樂(lè)方波輸出口電平的高低,用語(yǔ)句 cpl實(shí)現(xiàn)。 中斷服務(wù)程序中日歷的實(shí)現(xiàn)較為復(fù)雜,要考慮平年,閏年,特殊的2月,每月的天數(shù)的不盡相同。具體的邏輯判斷方法為:首先,要考慮年份是不是閏年,閏年的判斷方法是:將年份除以100,若能整除,則將年份除以400,若還能整除,則為閏年,若不能,則為平年;若不能被100整除,則判斷是否能被

24、4整除,若能,則為閏年,若不能則為平年。只有2月與平、閏年相關(guān),因此在閏年和平年的子程序中,要判斷是不是2月,若是則在相應(yīng)的年中進(jìn)行日期的增加,若不是則轉(zhuǎn)入平時(shí)的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月為每月30天。日歷進(jìn)位判斷流程圖如下:年份能否被100整除ny年份是否能被4整除年份是否能被400整除nn平年閏年yy是不是2月是不是2月y日=28之后返回為1nny日=29之后返回為1若月份為1、3、5、7、8、10、12月則調(diào)用31天的程序若月份為4、6、9、11則調(diào)用30天的程序本實(shí)驗(yàn)用8個(gè)數(shù)碼管,剛好能顯示年,月,日,掃描顯示與時(shí)間的掃描顯示類(lèi)似。年比較

25、特殊,由兩個(gè)寄存器存儲(chǔ),個(gè)位,十位為0時(shí),表明年數(shù)能被100整除,若此時(shí)千位,百位組成兩位數(shù)能被4整除,則年數(shù)被400整除,為閏年。若十位,個(gè)位組成兩位數(shù)能被4整除,則年數(shù)能被4整除,為閏年。3.2.3主程序主程序主要對(duì)按鍵進(jìn)行掃描,以及判斷定時(shí)和鬧鈴時(shí)間是否已到,若到則調(diào)用相關(guān)程序,該段程序如下:main:jnb p3.0,datetz ;按下0鍵,顯示日期并可對(duì)日期進(jìn)行調(diào)整jnb p3.1,zstz1 ;按下1鍵,顯示時(shí)間,并可調(diào)時(shí)jnb p3.2,nltzz ;按下2鍵,進(jìn)行鬧鈴設(shè)置jnb p3.3,dstz ;按下3鍵,進(jìn)行定時(shí)設(shè)置jnb p3.4,ceshi ;鬧鈴測(cè)試jnb p3.

26、6,stopwatchtz ;按下6鍵,進(jìn)入秒表方式acall disp ;調(diào)用時(shí)鐘顯示子程序jnb p0.6,rering ;判斷是否開(kāi)啟鬧鈴重響功能re: jnb p2.7,dspdkq ;判斷是否開(kāi)啟鬧鈴功能,沒(méi)開(kāi)則去判斷定時(shí)fmqpd: ;判斷定時(shí)值r4,r3是否到零、鬧鈴時(shí)刻是否已到mov a,hour;subb a,38h;jz fen ;判斷小時(shí)數(shù)是否到鬧鈴所定時(shí)間,若到,則對(duì)分進(jìn)行判斷;若不到,則對(duì)定時(shí)進(jìn)行判斷ajmp dspdkqfen:mov a,minute;subb a,37h;jz miao ;判斷分是否到鬧鈴所定時(shí)間,若到,則對(duì)秒進(jìn)行判斷;若不到,則對(duì)定時(shí)進(jìn)行判斷a

27、jmp dspdkqmiao:mov a,secondsubb a,#0jz shengyin1 ;判斷秒是否到鬧鈴所定時(shí)間,若到,則時(shí),分,秒都到達(dá)鬧鈴時(shí)刻,進(jìn)入響鈴子程序;若不到則判斷定時(shí)ajmp dspdkqrering: ;鬧鈴重響判斷程序jnb f0, re ;標(biāo)志位f0為0,不進(jìn)行鬧鈴重響設(shè)定cpl f0mov 3ch,#1 ;定時(shí)判斷標(biāo)志位賦1, 定時(shí)判斷功能開(kāi)啟jnb p0.7,m1 ;鬧鈴重響間隔時(shí)間選取mov r4,#0 ;鬧鈴重響間隔30秒mov r3,#30ajmp mainm1: ;鬧鈴重響間隔60秒mov r4,#1mov r3,#0ajmp maindspdkq:

28、 ;判斷是否應(yīng)該進(jìn)行定時(shí)判斷mov a,3ch ;3ch是引入的判斷因子,當(dāng)其為0時(shí),不對(duì)定時(shí)時(shí)間是否到0進(jìn)行判斷jnz dspd2 ;當(dāng)3ch不是0時(shí),跳轉(zhuǎn)到定時(shí)判斷程序ajmp maindspd2:mov a,r4;jz s_pd ;r4所存定時(shí)分?jǐn)?shù)為0,則轉(zhuǎn)而判斷r3所存定時(shí)秒數(shù)ajmp main;s_pd:mov a,r3;jnz main ;r4,r3所存參數(shù)減為0, 定時(shí)長(zhǎng)度已到j(luò)nb p0.6,shengyin2 ;鬧鈴重響功能開(kāi)啟時(shí),跳入響鈴程序ajmp tishi ;不是鬧鈴重響定時(shí),則定時(shí)時(shí)間到時(shí),跳入提示程序ajmp mainceshi:acall ringajmp ma

29、inshengyin1: ;調(diào)用響鈴子程序 lcall ringajmp mainshengyin2:setb f0 ;鬧鈴重響標(biāo)志位設(shè)定lcall ring ;響鈴clr f0 ;標(biāo)志位復(fù)位ajmp mainnltzz: ajmp nltz1 ;跳入鬧鈴調(diào)整程序dstz:ajmp dstz1 ;跳入定時(shí)調(diào)整程序datetz:ajmp datetz1 ;跳入日期調(diào)整程序stopwatchtz: ajmp stopwatchtz1 ;跳入秒表程序3.2.4 顯示子程序8個(gè)數(shù)碼管輪流進(jìn)行顯示,分別顯示1ms,依賴(lài)人的視覺(jué) 暫留效應(yīng),給人以數(shù)碼管持續(xù)高亮的錯(cuò)覺(jué)。該段程序如下:disp: ;時(shí)間顯示子

30、程序jnb p3.7,out1 ;判斷節(jié)能開(kāi)關(guān)7是否按下,按下則數(shù)碼管不顯示,延長(zhǎng)其壽命mov dptr,#ledtabmov a,second ;顯示當(dāng)前時(shí)間秒位mov b,#10div ab ;a存十位,b存?zhèn)€位movc a,a+dptrmov p1,aclr sec_sacall d_1ms ;顯示當(dāng)前時(shí)間秒十位setb sec_smov a,bmovc a,a+dptrmov p1,aclr sec_gacall d_1ms ;顯示當(dāng)前時(shí)間秒個(gè)位setb sec_gmov a,minute ;顯示當(dāng)前時(shí)間分位mov b,#10div abmovc a,a+dptrmov p1,aclr

31、 min_sacall d_1mssetb min_smov a,bmovc a,a+dptrmov p1,aclr min_gacall d_1mssetb min_gmov a,hour ;顯示當(dāng)前時(shí)間時(shí)位mov b,#10div abmov dptr,#ledtabmovc a,a+dptrmov p1,aclr hou_sacall d_1mssetb hou_smov a,bmovc a,a+dptrmov p1,aclr hou_gacall d_1mssetb hou_gmov a,week ;顯示當(dāng)前星期數(shù)movc a,a+dptrmov p1,aclr y_sacall d_

32、1mssetb y_sout1:ret日期的顯示,秒表的顯示,倒計(jì)時(shí)的顯示,調(diào)鬧鈴,調(diào)定時(shí)的顯示,閃爍的顯示程序與以上的的掃描相似,有的以子程序的方式出現(xiàn),通過(guò)子程序調(diào)用語(yǔ)句acall調(diào)用;有點(diǎn)直接嵌套在相應(yīng)的程序里面,順序執(zhí)行,或者用調(diào)轉(zhuǎn)語(yǔ)句ajmp調(diào)用。3.2.5 調(diào)整程序時(shí)鐘包括很多調(diào)整,如時(shí)間,日期,鬧鈴,秒表等,本程序,設(shè)計(jì)了相應(yīng)的調(diào)整程序段,通過(guò)對(duì)應(yīng)的按鍵,程序跳入調(diào)整模式或功能模式。在此著重分析一下鬧鈴重響以及定時(shí)功能的實(shí)現(xiàn)過(guò)程,這兩個(gè)功能都靈活運(yùn)用了標(biāo)志位。1,定時(shí)功能運(yùn)用了一個(gè)內(nèi)存地址3ch為標(biāo)志位,只有3ch中所存值非0時(shí),在主程序中才判斷定時(shí)是否已到。3ch值初始化為0,

33、程序開(kāi)始運(yùn)行時(shí)并不判斷定時(shí)是否已到。當(dāng)通過(guò)按鍵進(jìn)入定時(shí)初值設(shè)置,并開(kāi)始倒計(jì)時(shí),3ch的值被賦為1,當(dāng)?shù)褂?jì)時(shí)顯示到0時(shí),進(jìn)入閃爍提示,提示結(jié)束后3ch又被賦值為0,程序回到主程序后,不必判斷定時(shí)是否已到。但當(dāng)?shù)褂?jì)時(shí)未完,按返回鍵回到主程序時(shí),3ch的值為1,故在主程序判斷未完成的定時(shí)任務(wù),倒計(jì)時(shí)到0時(shí)調(diào)用同一個(gè)提示程序,最后仍可保證在主程序不再定時(shí)開(kāi)啟時(shí)去判斷定時(shí),從而節(jié)約資源。2,重鬧鈴的精髓也是標(biāo)志位的設(shè)計(jì),以f0為標(biāo)志位,其初值為0,正常響鈴時(shí)判斷重響功能鍵,若重響功能關(guān)閉,則跳過(guò)重響設(shè)定程序;若重響功能開(kāi)啟,則判斷標(biāo)志位f0,為了更好的說(shuō)明,將相關(guān)程序截取如下:/鬧鈴重響功能是否判斷/j

34、nb p0.6,rering/重響定時(shí),/rering: ;鬧鈴重響判斷程序jnb f0, re ;標(biāo)志位f0為0,不進(jìn)行鬧鈴重響設(shè)定cpl f0mov 3ch,#1 ;定時(shí)判斷標(biāo)志位賦1, 定時(shí)判斷功能開(kāi)啟jnb p0.7,m1 ;鬧鈴重響間隔時(shí)間選取mov r4,#0 ;鬧鈴重響間隔30秒mov r3,#30ajmp mainm1: ;鬧鈴重響間隔60秒mov r4,#1mov r3,#0ajmp mainjb p2.7,go ;判斷暫停鍵是否按下,未按下則響鈴jnb p0.6,go1 ; 音樂(lè)暫停鍵,再判斷鬧鈴重響功能是否開(kāi)啟ajmp end0 go1: ;鬧鈴重響功能開(kāi)啟處理程序jb

35、f0,go ;重響標(biāo)志位判斷,若f0為1,表明此次響鈴調(diào)用為重鬧鈴導(dǎo)致,進(jìn)入重鬧鈴環(huán)節(jié);若f0為0則表示此次鬧鈴調(diào)用為正常鬧鈴導(dǎo)致,因?yàn)橹佤[鈴功能開(kāi)啟,故將f0置1,以便重鬧鈴的實(shí)現(xiàn)!cpl f0 ajmp end0通過(guò)以上程序可知,鬧鈴初次響時(shí),標(biāo)志位f0總是0,若重響功能開(kāi)啟,則在初次鬧鈴自然結(jié)束或人為按鍵結(jié)束后通過(guò)cpl f0 語(yǔ)句,使f0置1,為重響時(shí)間間隔的設(shè)置提供條件。當(dāng)f0值為1時(shí),才能在鬧鈴功能關(guān)閉的情況下重鬧鈴,重鬧鈴不像正常鬧鈴那樣,即使沒(méi)有人為關(guān)閉,音樂(lè)唱完后,自動(dòng)回到主程序,而是一直再響,若要關(guān)閉重鬧鈴,則撥動(dòng)重鬧鈴開(kāi)啟開(kāi)關(guān)即可。重鬧鈴結(jié)束后回到調(diào)用鬧鈴的位置,用clr f0 使標(biāo)志位復(fù)位,至此一個(gè)重鬧鈴循環(huán)結(jié)束。又

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論