C51單片機(jī)電子時(shí)鐘_第1頁
C51單片機(jī)電子時(shí)鐘_第2頁
C51單片機(jī)電子時(shí)鐘_第3頁
C51單片機(jī)電子時(shí)鐘_第4頁
C51單片機(jī)電子時(shí)鐘_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電子鐘實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)?zāi)康?.學(xué)習(xí)8051定時(shí)器時(shí)間處理、按鍵掃描和發(fā)光二極管數(shù)碼管顯示的設(shè)計(jì)方法。2.設(shè)計(jì)任務(wù)和要求:在實(shí)驗(yàn)平臺(tái)上使用四個(gè)發(fā)光二極管數(shù)碼管,設(shè)計(jì)一個(gè)具有報(bào)警功能的數(shù)字鐘二、實(shí)驗(yàn)要求A.基本要求:1.在4位數(shù)數(shù)碼管上顯示當(dāng)前時(shí)間。顯示格式“小時(shí)和分鐘”2.指示燈閃爍,進(jìn)行第二次顯示。3.可以通過按鈕設(shè)置時(shí)間和報(bào)警時(shí)間,并顯示報(bào)警時(shí)間。當(dāng)蜂鳴器鳴響時(shí),按停止按鈕停止鳴響。4.實(shí)現(xiàn)秒表功能(百分之一秒顯示)B.分機(jī):1.日歷功能(可顯示年、月、日、周,區(qū)分平均年、閏年和每月天數(shù),并進(jìn)行調(diào)整)2.音樂警報(bào)(可選擇鈴聲。警報(bào)停止后,它將閃爍并顯示當(dāng)前時(shí)間8秒鐘,或按下按鈕跳至正常時(shí)間顯

2、示狀態(tài))3.定時(shí)功能(設(shè)置一段時(shí)間,定時(shí)到達(dá)后,提示閃爍)4.倒計(jì)時(shí)功能(設(shè)置一段時(shí)間實(shí)現(xiàn)倒計(jì)時(shí)顯示,當(dāng)時(shí)間減少到0時(shí),提示閃爍)5.鬧鈴重鈴功能(鬧鈴?fù)V购?,在停止時(shí)間開始,鬧鈴一段時(shí)間后重鈴,重鈴時(shí)間間隔可調(diào)整)三、實(shí)驗(yàn)的基本原則單片機(jī)定時(shí)器完成計(jì)時(shí)功能。定時(shí)器0每0.01秒中斷一次,并將其作為一個(gè)計(jì)數(shù)。一秒鐘的中斷計(jì)數(shù)初始值設(shè)為100,每個(gè)中斷的中斷計(jì)數(shù)初始值減少1。當(dāng)它減少到0時(shí),意味著1已經(jīng)到達(dá),第二個(gè)變量增加1。同樣,判斷1分鐘是否到達(dá),然后判斷1小時(shí)是否到達(dá)。為了在發(fā)光二極管數(shù)碼管上顯示時(shí)間,可以采用靜態(tài)顯示法和動(dòng)態(tài)顯示法。由于靜態(tài)顯示方式需要更多的硬件,如解碼器和數(shù)據(jù)鎖存器,所

3、以發(fā)光二極管顯示可以通過動(dòng)態(tài)顯示方式來實(shí)現(xiàn)。通過依次掃描每個(gè)數(shù)碼管,相應(yīng)的數(shù)碼管亮起,同時(shí),相應(yīng)的代碼被發(fā)送到數(shù)碼管顯示數(shù)字。由于數(shù)碼管的掃描周期短,人眼的暫留效應(yīng),數(shù)碼管總是看起來很亮,從而實(shí)現(xiàn)多種顯示。四、實(shí)驗(yàn)設(shè)計(jì)分析根據(jù)要實(shí)現(xiàn)的功能,設(shè)計(jì)了AT89S51單片機(jī)。AT89S51單片機(jī)是一種低功耗、高性能的CMOS8位單片機(jī)。其芯片包含4KB在線可編程閃存只讀程序存儲(chǔ)器,可重復(fù)擦除1000次。該器件采用高密度非易失性存儲(chǔ)技術(shù),兼容標(biāo)準(zhǔn)MCS- 51指令系統(tǒng)和80C51引腳結(jié)構(gòu)。這樣,既經(jīng)濟(jì)合理,又能達(dá)到預(yù)期的功能。在程序方面,采用了分塊設(shè)計(jì)的方法,不僅降低了編程難度,使程序易于理解,而且便于

4、添加各種功能。程序可分為鬧鐘聲音程序、時(shí)間顯示程序、日期顯示程序、秒表顯示程序、時(shí)間調(diào)整程序、鬧鐘調(diào)整程序、定時(shí)調(diào)整程序、延時(shí)程序等。使用這種方法,關(guān)鍵在于各個(gè)模塊的兼容性和協(xié)作性。如果每個(gè)模塊不匹配,將會(huì)出現(xiàn)意外錯(cuò)誤。首先,在編程之前,您必須知道硬件結(jié)構(gòu),尤其是每個(gè)引腳的用法,以及內(nèi)部寄存器和存儲(chǔ)單元的用法。否則,你不能開始編程和設(shè)計(jì)電路。這是準(zhǔn)備工作。第二部分是硬件部分,根據(jù)所需功能設(shè)計(jì),如輸入開關(guān)電路、顯示驅(qū)動(dòng)電路和輸出數(shù)碼管電路等。第三部分是軟件部分:首先學(xué)習(xí)理解匯編語言的編程方法,然后根據(jù)設(shè)計(jì)的硬件電路進(jìn)行分塊編程和調(diào)試,最后完成程序設(shè)計(jì)。第四部分是軟件繪圖部分:電路設(shè)計(jì)后的繪圖,包

5、括繪制電路圖和仿真圖。第五部分是軟件仿真部分:軟硬件設(shè)計(jì)完成后,將軟件加載到芯片中進(jìn)行仿真;當(dāng)模擬不能完成時(shí),檢查和修改軟件程序和硬件電路,直到模擬成功。第六部分是硬件本設(shè)計(jì)主要采用單片機(jī)設(shè)計(jì)電子鐘,硬件部分分為以下電路模塊:顯示電路由8個(gè)普通陰極數(shù)碼管顯示,周(年)、小時(shí)、分(月)、秒(日)通過動(dòng)態(tài)掃描顯示,避免了解碼器的使用,節(jié)省了I/O口,使電路更加簡單。單片機(jī)采用AT89S51系列,應(yīng)用簡單,適合電子鐘設(shè)計(jì)。該電路的總體設(shè)計(jì)框架如下:單片微型計(jì)算機(jī)輸入部分晶體振蕩器和復(fù)位輸出部分2.區(qū)組設(shè)計(jì)模塊電路主要分為:輸入部分、輸出部分、復(fù)位和晶振電路。2.1輸入部分輸入信號(hào)主要是各種模式選擇和

6、調(diào)整信號(hào),由按鍵開關(guān)提供。以下是輸入部分的示例:在本實(shí)驗(yàn)中,我們主要使用P3端口輸入按鍵信號(hào),也使用特殊的P0端口。對(duì)于P0端口,由于其高阻抗?fàn)顟B(tài),為了實(shí)現(xiàn)開關(guān)功能,增加了一個(gè)上拉電阻,如下圖所示:2.2輸出部分該電路的輸出信號(hào)為7段數(shù)碼管的位選擇和段選擇信號(hào)、報(bào)警脈沖信號(hào)和提示燈信號(hào)。這個(gè)實(shí)驗(yàn)中的電子管都是陰性的。為了防止段選擇信號(hào)驅(qū)動(dòng)數(shù)碼管,在P1端口連接上拉電阻后,發(fā)送段選擇信號(hào)以改善驅(qū)動(dòng)。位選擇信號(hào)從P2端口直接連接,如下圖所示:警報(bào)從P2.6輸出,模塊如下:2.3晶體振蕩器和復(fù)位電路在本實(shí)驗(yàn)中,單片機(jī)時(shí)鐘采用內(nèi)部時(shí)鐘,模塊如下:復(fù)位電路由手動(dòng)復(fù)位組成,模塊如下:模塊拼接組合,整體電路

7、設(shè)計(jì)如下:B.設(shè)計(jì)B.1總體程序設(shè)計(jì)這個(gè)實(shí)驗(yàn)是由匯編程序完成的。主程序開始顯示周、小時(shí)、分鐘和秒有轉(zhuǎn)機(jī)嗎?T0中斷以秒、分和小時(shí)為單位進(jìn)位閃爍提示顯示日期并調(diào)整鈴聲提示時(shí)間調(diào)整警報(bào)設(shè)置定時(shí)設(shè)置鈴聲測試秒表模式回到主程序定期到達(dá)按0鍵按0鍵警報(bào)來了按鍵1按下鍵2按3鍵按下鍵4按下鍵5按7鍵7鍵恢復(fù)按下鍵4按8鍵按0鍵按0鍵倒計(jì)時(shí)開始并顯示回到主程序秒表暫停秒表復(fù)位回到主程序按7鍵該程序的總體流程圖如下:不是結(jié)合電路圖,程序設(shè)計(jì)的總體思路是:打開電源,數(shù)碼管顯示一周中的日、時(shí)、分、秒。行走時(shí)間顯示發(fā)光二極管燈每1秒改變一次亮度,這是正常工作模式。以下是該工作模式下模式選擇的關(guān)鍵模式:1.按1鍵進(jìn)入

8、日期模式。顯示年、月和日,并可進(jìn)行調(diào)整,調(diào)整狀態(tài)指示燈亮起。日期調(diào)整的對(duì)應(yīng)鍵如下:6鍵(千,百),按下此位一次,加15鍵年(10位數(shù)字,1位數(shù)字),按此數(shù)字一次,加14鍵個(gè)月,按此位一次,加13鍵天,按此位一次,加10鍵調(diào)整狀態(tài)指示燈熄滅,返回主程序,并顯示時(shí)間2.按2鍵計(jì)時(shí)模式。顯示屏是可調(diào)節(jié)的,并且調(diào)節(jié)狀態(tài)指示燈亮起。時(shí)間調(diào)整的相應(yīng)鍵如下:6鍵,按下該位一次,加15鍵點(diǎn),按此位一次,加14鍵秒,按下此位一次將其清除。0鍵調(diào)整狀態(tài)指示燈熄滅,返回主程序,并顯示時(shí)間3.按3鍵進(jìn)入報(bào)警調(diào)整模式。報(bào)警時(shí)間可顯示和調(diào)節(jié),調(diào)節(jié)狀態(tài)指示燈亮起。報(bào)警調(diào)節(jié)對(duì)應(yīng)的鍵如下:5鍵,按下該位一次,加14鍵點(diǎn),按此位

9、一次,加10鍵調(diào)整狀態(tài)指示燈熄滅,返回主程序,并顯示時(shí)間4.按住4個(gè)鍵,進(jìn)入計(jì)時(shí)調(diào)整(倒計(jì)時(shí))模式。顯示計(jì)時(shí)長度并可調(diào)節(jié),調(diào)節(jié)狀態(tài)顯示燈亮。定時(shí)調(diào)整的相應(yīng)鍵如下:6鍵點(diǎn),按此位一次,加15鍵秒,按下該位一次并加14鍵打開計(jì)時(shí)功能并顯示倒計(jì)時(shí)0鍵調(diào)整狀態(tài)指示按下8個(gè)鍵,數(shù)碼管就會(huì)亮起,恢復(fù)正常工作模式。8.鍵9是報(bào)警啟動(dòng)(停止)鍵。如果你按下它,你可以選擇是否報(bào)警。當(dāng)鬧鐘響起時(shí),你可以按下這個(gè)鍵來停止鬧鈴。9.按鍵10是鈴聲選擇開關(guān)。不管你按不按,你都可以選擇雙手音樂。10.鑰匙11是報(bào)警振鈴控制開關(guān)。當(dāng)重新振鈴功能打開時(shí),它從警報(bào)以音樂結(jié)束的時(shí)間開始,或者從警報(bào)通過手動(dòng)按下鍵9而停止的時(shí)間開始

10、。一段時(shí)間后,警報(bào)再次響起。11.按鍵12是鬧鈴重鈴間隔選擇開關(guān),可以選擇兩種計(jì)時(shí)長度,這樣當(dāng)鬧鈴重鈴功能開啟時(shí),鬧鈴將在鬧鈴第一次響起后繼續(xù)響起。B.2程序的主要模塊B.2.1延遲模塊當(dāng)數(shù)碼管顯示動(dòng)態(tài)掃描時(shí),使用延遲程序。這里,使用延遲為1毫秒的程序。該程序需要重復(fù)調(diào)用,如下所示:D _ 1MS:MOV R7,#2D_5:MOVR2,250號(hào)新西蘭R2,美元DJNZ R7,D_5浸水使柔軟除了數(shù)碼管的動(dòng)態(tài)掃描外,數(shù)碼管的閃爍提示和音樂模塊也使用延時(shí),但是延時(shí)的長度不同,這里不再重復(fù)。B.2.2中斷服務(wù)程序在這個(gè)實(shí)驗(yàn)中,計(jì)數(shù)器t0和t1都被使用,其中T0中斷被用于時(shí)鐘定時(shí),而T1中斷被用于音樂

11、播放。T0的計(jì)時(shí)長度為0.01秒,它在模式1下工作,計(jì)數(shù)一次,持續(xù)時(shí)間為1微秒,因此計(jì)數(shù)器計(jì)數(shù)10,000次并進(jìn)入中斷。初始計(jì)數(shù)值是65,536-10,000=55,536=# 0d8f0,并且需要0.01秒來填充定時(shí)器,因此100次中斷是一秒鐘。一秒鐘后,判斷其是否達(dá)到60秒。包括日期顯示在內(nèi)的功能也是如此。此外,由于要實(shí)現(xiàn)倒計(jì)時(shí)功能,應(yīng)該在中斷程序中增加一個(gè)用于減1的寄存器,必要時(shí)應(yīng)該顯示出來。基于以上考慮,R3是倒數(shù)第二,R4是倒數(shù)第一分。當(dāng)秒增加1時(shí),R3減少1,當(dāng)它減少到0后,秒被分配59,分鐘減少1,直到它被分成0。以下是定時(shí)中斷的流程圖:進(jìn)入T0計(jì)時(shí)中斷更正并重新加載計(jì)數(shù)的初始值

12、按7鍵秒表的百分之一秒、秒、分和小時(shí)DEC PNUMPNUM=0,已達(dá)到1秒MOV PNUM,#100重載中斷計(jì)數(shù)值第二位加1存儲(chǔ)在R3和R4中的定時(shí)長度減少1攜帶分鐘、小時(shí)、天、周、月和年RETI中斷返回不是是不計(jì)數(shù)器T1在模式1下工作。當(dāng)振鈴程序被調(diào)用時(shí),它的計(jì)數(shù)功能被打開,這為具有不同頻率的音樂音調(diào)的方波的形成提供了時(shí)間延遲。中斷服務(wù)程序是根據(jù)音調(diào)改變音樂方波輸出端口的電平,這是通過語句CPL實(shí)現(xiàn)的。中斷服務(wù)程序中日歷的實(shí)現(xiàn)比較復(fù)雜,因此需要考慮平均年、閏年、特殊二月和每個(gè)月的不同日子。具體的邏輯判斷方法如下:首先,要考慮年份是否是閏年。閏年的判斷方法是:年除以100,如果可以除盡,年除

13、以400,如果可以除盡,就是閏年,如果不能除盡,就是正常年份;如果它不能被100整除,判斷它是否能被4整除。如果可以的話,今年是閏年;如果不能,這是正常的一年。只有二月與平年和閏年有關(guān)。因此,在閏年和平年的子程序中,有必要判斷是否是二月。如果是,日期將在相應(yīng)的年份增加,如果不是,將轉(zhuǎn)移到正常月份。其中,1月、3月、5月、7月、8月、10月和12月為每月31天,4月、6月、9月和11月為每月30天。日歷攜帶判斷流程圖如下:一年能被100整除嗎NY一年能被4整除嗎一年能被400整除嗎NN和平年閏年YY現(xiàn)在是二月嗎現(xiàn)在是二月嗎Y第28天后返回1NNY第29天后返回1如果月份是一月、三月、五月、七月、

14、八月、十月和十二月,將調(diào)用31天程序如果月份是4月、6月、9月和11日,將調(diào)用30天程序?qū)嶒?yàn)中使用了八個(gè)數(shù)碼管,可以顯示年、月、日。掃描顯示類似于時(shí)間的掃描顯示。年份是特殊的,由tw存儲(chǔ)如果兩位數(shù)的組合可被4整除,那么年數(shù)可被400整除,這是閏年。如果十位數(shù)和兩位數(shù)可以被4整除,那么年數(shù)可以被4整除,這就是閏年。B.2.3主要計(jì)劃主程序主要掃描按鍵,判斷計(jì)時(shí)和報(bào)警時(shí)間是否到了。如果是,則調(diào)用相關(guān)程序。該程序如下:MAIN:JNB P3.0,DATETZ按0鍵顯示日期并進(jìn)行調(diào)整JNB P3.1,ZSTZ1按鍵1顯示時(shí)間并調(diào)整時(shí)間JNB P3.2,NLTZZ按下鍵2設(shè)置警報(bào)JNB P3.3,DSTZ按下鍵3設(shè)置時(shí)間JNB P3.4,史策;警報(bào)測試JNB P3.6,STOPWATCHTZ按下鍵6進(jìn)入秒表模式DISP律師協(xié)會(huì)

溫馨提示

  • 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. 人人文庫網(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)論