單片機數(shù)字鐘課程設(shè)計報告(共32頁)_第1頁
單片機數(shù)字鐘課程設(shè)計報告(共32頁)_第2頁
單片機數(shù)字鐘課程設(shè)計報告(共32頁)_第3頁
單片機數(shù)字鐘課程設(shè)計報告(共32頁)_第4頁
單片機數(shù)字鐘課程設(shè)計報告(共32頁)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE 湖南工業(yè)(gngy)大學(xué)課 程 設(shè) 計資 料 袋 電氣(dinq)與信息工程 學(xué)院(xuyun) 3 學(xué)年第 1 學(xué)期 課程名稱 單片機課程設(shè)計 指導(dǎo)教師 凌 云 職稱 教 授 學(xué)生姓名 專業(yè)班級 學(xué)號 題 目 數(shù)字鐘 成 績 起止日期 2013 年 12 月 23 日 2014 年 1 月 10 日目 錄 清 單序號材 料 名 稱資料數(shù)量備 注1課程設(shè)計任務(wù)書2課程設(shè)計說明書3課程設(shè)計圖紙張4心得體會56湖南工業(yè)(gngy)大學(xué)課程設(shè)計任務(wù)書2013 2014 學(xué)年(xunin)第1 學(xué)期(xuq)電氣與信息工程 學(xué)院 電氣自動化 專業(yè) 112 班課程名稱: 單片機系統(tǒng)課程設(shè)計 設(shè)

2、計題目: 數(shù)字鐘 完成期限:自 2013 年 12 月 23 日至 2014 年 1 月 10 日共 3 周內(nèi)容及任務(wù)1.1 單片機硬件顯示裝置制作(基本要求)1.1.1 2人一組自行購買元器件,在焊接板上焊接一個單片機硬件顯示裝置,顯示器至少能夠顯示2位數(shù)字。1.1.2 編寫程序,在自己焊接的單片機硬件顯示裝置上,至少顯示自己學(xué)號的最后2位。程序可以用匯編語言或者是C51語言編寫。1.2數(shù)字鐘設(shè)計(發(fā)揮要求) 在自己焊接的單片機硬件顯示裝置上,采用單片機內(nèi)部的定時器設(shè)計24小時制數(shù)字鐘,數(shù)字鐘有6位數(shù)子顯示,要求采用2個按鍵實現(xiàn)對鐘校時。單片機外接晶體振蕩器頻率準確穩(wěn)定時,要求保證數(shù)字鐘沒有

3、計時誤差。程序可以用匯編語言或者是C51語言編寫。 1.3 獨立撰寫完成課程設(shè)計說明書(課程設(shè)計報告)進度安排起止日期工作內(nèi)容2013.12.232013.12.29焊接單片機硬件顯示裝置,編寫程序2013.12.302014.01. 04完成系統(tǒng)調(diào)試,課程設(shè)計軟件、硬件驗收2014.01.052014.01. 10撰寫課程設(shè)計報告主要參考資料1 歐偉明,何靜,凌云.單片機原理與應(yīng)用系統(tǒng)設(shè)計.電子工業(yè)出版社,2009年2 凌云等. 單片機原理與技能訓(xùn)練. 電子工業(yè)出版社,2012年3 劉苗生,潘宗預(yù). 單片機測控系統(tǒng)設(shè)計. 中國物質(zhì)出版社,2006年P(guān)AGE III單片機系統(tǒng)(xtng)課程設(shè)

4、計(shj)說明書數(shù)字鐘起止日期: 2013 年 12 月 23 日 至 2014 年 1 月 10 日學(xué)生姓名 班級學(xué)號成績湖南工業(yè)大學(xué)電氣(dinq)與信息工程學(xué)院2014年1 月10 日摘 要單片機自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。單片機體積小、重量輕、抗干擾能力強、環(huán)境要求不高、價格低廉、可靠性高、靈活性好、開發(fā)較為容易。由于具有上述優(yōu)點,在我國,單片機已廣泛地應(yīng)用在工業(yè)自動化控制、自動檢測、智能儀器儀表、家用電器、電力電子、機電一體化設(shè)備等各個方面,而51單片機是各單片機中最為典型和最有代表性的一種。這次課程設(shè)計通過對它的學(xué)習

5、、應(yīng)用,以AT89S5芯片為核心,輔以必要的電路,設(shè)計了一個簡易的電子時鐘,它由5V直流電源供電,通過數(shù)碼管能夠準確顯示時間(shjin),調(diào)整時間,從而到達學(xué)習、設(shè)計、開發(fā)軟、硬件的能力。為實現(xiàn)定時控制以及對外界事件進行計數(shù),在單片機應(yīng)用系統(tǒng)中,常需要用到實時時鐘和計數(shù)器。51系列的單片機內(nèi)部都具有兩種功能,有的型號還具有捕獲和監(jiān)視定時的功能。51系列的單片機內(nèi)部都設(shè)有兩個16位的可編程定時/計數(shù)器,可簡稱為定時器0(T0)和定時器1(T1)??删幊淌侵钙涔δ苋绻ぷ鞣绞?、定時時間、量程、啟動(qdng)方式等均可由指令來確定和改變。該電子(dinz)時鐘由89C51、按鍵、七段數(shù)碼管等構(gòu)成,

6、采用晶振電路作為驅(qū)動電路,由定時器產(chǎn)生的一秒定時,達到時分秒的計時,六十秒為一分鐘,六十分鐘為一小時。對于8051單片機的I/O口僅有32個,本實驗采用若使單片機直接控制數(shù)碼管,僅能實現(xiàn)4位顯示。為了充分利用單片機的I/O口,我們可以使用動態(tài)顯示6位數(shù)碼管,通過較高頻率的動態(tài)掃描使數(shù)碼管依次點亮,利用人類的視覺暫留效應(yīng)實現(xiàn)6位顯示。關(guān)鍵詞:單片機、定時器、數(shù)字鐘、動態(tài)顯示、靜態(tài)顯示目 錄 TOC o 1-3 h z u HYPERLINK l _Toc376545319 摘 要 PAGEREF _Toc376545319 h II HYPERLINK l _Toc376545320 第1章 單

7、片機與數(shù)字鐘概述(i sh) PAGEREF _Toc376545320 h 1 HYPERLINK l _Toc376545321 1.1單片機 PAGEREF _Toc376545321 h 1 HYPERLINK l _Toc376545322 1.1.1 單片機的組成(z chn)及分類 PAGEREF _Toc376545322 h 1 HYPERLINK l _Toc376545323 1.1.2 AT89S51單片機 PAGEREF _Toc376545323 h 2 HYPERLINK l _Toc376545324 1.2 數(shù)字鐘 PAGEREF _Toc376545324

8、h 3 HYPERLINK l _Toc376545325 第2章 系統(tǒng)(xtng)硬件設(shè)計 PAGEREF _Toc376545325 h 4 HYPERLINK l _Toc376545326 2.1 總體方案設(shè)計原則 PAGEREF _Toc376545326 h 4 HYPERLINK l _Toc376545327 2.2 數(shù)碼管 PAGEREF _Toc376545327 h 4 HYPERLINK l _Toc376545328 2.3 顯示電路 PAGEREF _Toc376545328 h 5 HYPERLINK l _Toc376545329 2.3 按鍵電路 PAGERE

9、F _Toc376545329 h 5 HYPERLINK l _Toc376545330 2.4 聲音電路 PAGEREF _Toc376545330 h 6 HYPERLINK l _Toc376545331 2.5 晶振電路 PAGEREF _Toc376545331 h 7 HYPERLINK l _Toc376545332 2.6 復(fù)位電路 PAGEREF _Toc376545332 h 7 HYPERLINK l _Toc376545333 第3章 系統(tǒng)軟件設(shè)計 PAGEREF _Toc376545333 h 8 HYPERLINK l _Toc376545334 3.1 軟件程序

10、內(nèi)容 PAGEREF _Toc376545334 h 8 HYPERLINK l _Toc376545335 3.2 軟件流程圖 PAGEREF _Toc376545335 h 8 HYPERLINK l _Toc376545336 3.2.1 系統(tǒng)軟件設(shè)計流程圖 PAGEREF _Toc376545336 h 8 HYPERLINK l _Toc376545337 3.2.2 系統(tǒng)按鍵檢測流程圖 PAGEREF _Toc376545337 h 9 HYPERLINK l _Toc376545338 3.2.3 系統(tǒng)定時中斷流程圖 PAGEREF _Toc376545338 h 10 HYPE

11、RLINK l _Toc376545339 3.3 定時程序設(shè)計 PAGEREF _Toc376545339 h 11 HYPERLINK l _Toc376545340 3.3.1 實時時鐘實現(xiàn)的基本方法 PAGEREF _Toc376545340 h 11 HYPERLINK l _Toc376545341 3.3.2 實時時鐘設(shè)計步驟 PAGEREF _Toc376545341 h 11 HYPERLINK l _Toc376545342 3.4 源程序 PAGEREF _Toc376545342 h 12 HYPERLINK l _Toc376545343 結(jié) 論 PAGEREF _T

12、oc376545343 h 20 HYPERLINK l _Toc376545344 參考文獻 PAGEREF _Toc376545344 h 21 HYPERLINK l _Toc376545345 致 謝 PAGEREF _Toc376545345 h 22 HYPERLINK l _Toc376545346 附錄1 硬件電路原理圖 PAGEREF _Toc376545346 h 23PAGE 27第1章 單片機與數(shù)字鐘概述(i sh)1.1單片機單片機發(fā)展史已經(jīng)(y jing)有幾十年了。1976年,Intel公司研制出MCS-48系列單片機。該系列單片機具有以下特點:CPU為4位或8位

13、,ROM有1KB或2KB,RAM有64B或128B,具有并行接口,無串行接口,有1個8位的定時(dn sh)/計數(shù)器,有2個中斷源,這是單片機問世的標志。1.1.1 單片機的組成及分類單片機的核心部分是中央處理器CPU,它是單片機的大腦,由它統(tǒng)一指揮和協(xié)調(diào)各部分的工作。時鐘電路用于給單片機提供工作時所需要的時鐘信號。程序存儲器和數(shù)據(jù)存儲器分別用于存放單片機工作的用戶軟件和臨時數(shù)據(jù)。中斷系統(tǒng)用于處理系統(tǒng)工作時出現(xiàn)的突發(fā)事件。定時/計數(shù)器用于對時間定時或?qū)ν獠渴录嫈?shù)。它通過內(nèi)部總線把計算機的各主要部件連接為一體,其內(nèi)部總線包括地址總線、數(shù)據(jù)總線和控制總線。其中,地址總線的作用是為數(shù)據(jù)交換時提供地

14、址,CPU通過它們將地址輸出到存儲器或I/O接口;數(shù)據(jù)總線用于在CPU與存儲器或I/O接口之間,或I/O接口與外設(shè)之間交換數(shù)據(jù);控制總線包括CPU發(fā)出的控制信號線和外部送入CPU的應(yīng)答信號線等。輸入輸出接口(I/O接口)是計算機與輸入輸出設(shè)備之間的接口。輸入輸出設(shè)備(I/O設(shè)備)是計算機與人或其他設(shè)備交換信息的裝置,如顯示器、鍵盤和打印機等。單片機大致可以分為通用型/專用型、總線型/非總線型及工控型/家電型。(1)通用型/專用型 這是按單片機適用范圍來區(qū)分的。例如,80C51是通用型單片機,它不是為某種專用途設(shè)計的;專用型單片機是針對一類產(chǎn)品甚至某一個產(chǎn)品設(shè)計生產(chǎn)的,例如為了滿足電子體溫計的要

15、求,在片內(nèi)集成ADC接口等功能的溫度測量控制電路。(2)總線型/非總線型這是按 HYPERLINK /doc/30473.html t _blank 單片機是否提供并行總線來區(qū)分的。總線型單片機普遍設(shè)置有并行地址總線、 數(shù)據(jù)總線、控制總線,這些引腳用以擴展并行外圍器件都可通過串行口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設(shè)接口集成一片內(nèi),因此在許多情況下可以不要并行擴展總線,大大減省封裝成本和芯片體積,這類單片機稱為非總線型單片機。(3)工控型/家電(ji din)型這是按照(nzho)單片機大致應(yīng)用的領(lǐng)域進行區(qū)分的。一般而言,工控型尋址范圍大,運算能力強;用于家電的單片機多為專

16、用型,通常是小封裝、低價格,外圍器件和外設(shè)接口集成度高。 顯然,上述分類并不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是總線(zn xin)型,還可以作工控用。1.1.2 AT89S51單片機(1)AT89S51的主要特點 與MCS-51產(chǎn)品指令系統(tǒng)完全兼容; 4KB可編程Flash存儲器; 壽命:1000寫/擦循環(huán); 全靜態(tài)工作:0至33MHz; 數(shù)據(jù)保留時間:10年; 三級程序存儲器鎖定; 256B片內(nèi)RAM(128B用戶RAM,128BSFR); 32個可編程I/O口; 兩個16位定時/計數(shù)器; 5個中斷源; 全雙工可編程串行通道; 低功耗的空閑模式和掉電模式; 片內(nèi)震蕩器和

17、時鐘電路; ISP在線編程功能; 一個內(nèi)部看門狗。(2)AT89S51的引腳說明P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0不具有內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1 口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動4個TTL邏輯電平。此外,P1.0和P1.1分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和

18、定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX)。在flash編程和校驗時,P1口接收低8位地址字節(jié)。P2 口:P2口是一個具有內(nèi)部(nib)上拉電阻的8位雙向I/O口,P2輸出(shch)緩沖器能驅(qū)動AT89S52引腳圖 PLCC封裝4個TTL邏輯(lu j)電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI

19、)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3 口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動4個TTL邏輯電平。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。在flash編程和校驗時,P3口也接收一些控制信號。ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。

20、對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),

21、EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。XTAL1:振蕩器反相放大器和內(nèi)部(nib)時鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出(shch)端。1.2 數(shù)字鐘 數(shù)字鐘是一種用數(shù)字電路技術(shù)(jsh)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,已得到廣泛的使用。 第2章 系統(tǒng)(xtng)硬件設(shè)計(shj

22、)2.1 總體方案設(shè)計(shj)原則 在性價比滿足應(yīng)用系統(tǒng)要求的情況下,選擇更可靠,更熟悉的單片機縮短研制周期。 盡可能選擇自己較為熟悉的應(yīng)用電路,以提高系統(tǒng)的可靠性。 單片機內(nèi)部的資源與外部的擴展資源應(yīng)在滿足系統(tǒng)設(shè)計的基礎(chǔ)上留有余地,為進一步的升級和擴展提供方便。 應(yīng)充分的結(jié)合軟件方案考慮硬件的結(jié)構(gòu),通常硬件功能較完善,其相應(yīng)的軟件程序就簡單,但硬件的成本較高,而功能較低,其相應(yīng)的軟件就復(fù)雜,其實際常用軟件代替硬件來降低成本。 整個系統(tǒng)相關(guān)的器件盡可能的做到性能相匹配。 充分的考慮系統(tǒng)的抗干擾性,如具有抗干擾的單片機并充分的帥選芯片與器件,在電路中采取隔離或屏蔽的措施等。2.2 數(shù)碼管數(shù)碼管

23、由多個發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個筆劃,公共電極。數(shù)碼管實際上是由七個發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點就是8個。這些段分別由字母a,b,c,d,e,f,g,dp來表示。按發(fā)光二極管單元連接方式可分為共陽極數(shù)碼管和共陰極數(shù)碼管。本設(shè)計采用3個2位共陽極數(shù)碼管顯示時、分、秒。(1)共陽極數(shù)碼管 共陽極數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管,共陽極數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮,當某一字段的陰極為高電平時,相應(yīng)字段就不亮。(2)共陰極數(shù)碼管 共陰極數(shù)

24、碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰極數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮,當某一字段的陽極為低電平時,相應(yīng)字段就不亮。2.3 顯示(xinsh)電路用3個2位共陽極數(shù)碼管顯示時、分、秒,4個發(fā)光二極管代表(dibio)時與分、分與秒之間的兩點,和6個9012型三極管控制數(shù)碼管的位選。將數(shù)碼管的段選端接到單片機的P0口,數(shù)碼管的位選端通過(tnggu)三極管接到單片機的P2口。2.3 按鍵(n jin)電路這里(zhl)使用三個按鍵調(diào)整數(shù)字鐘的時間(shjin),按鍵每按一下蜂鳴器就叫一下。2

25、.4 聲音電路用9012型三極管來驅(qū)動蜂鳴器。2.5 晶振電路(dinl)利用單片機芯片內(nèi)部的振蕩器,并在單片機外部引腳XTAL1、XTAL2兩端跨接晶體振蕩器和電容,就構(gòu)成了穩(wěn)定的自激振蕩器,產(chǎn)生的脈沖信號直接送入內(nèi)部時鐘(shzhng)電路。外接晶振時,C1和C2的值選擇為22pF左右(zuyu),C1和C2對時鐘頻率有微調(diào)作用,晶振的頻率選擇12MHz。為了減小寄生電容,更好地保證震蕩器穩(wěn)定、可靠地工作,晶振和電容應(yīng)盡可能地安裝得與單片機引腳XTAL1和XTAL2靠近。2.6 復(fù)位電路89S51的復(fù)位輸入引腳RST提供了初始化的手段,在時鐘電路工作之后,只要在RST引腳上出現(xiàn)2個機器周期

26、以上的高電平,就能確保單片機可靠復(fù)位。當89S51的RST引腳變?yōu)榈碗娖胶?,退出?fù)位狀態(tài),單片機從初始狀態(tài)開始工作。第3章 系統(tǒng)(xtng)軟件(run jin)設(shè)計(shj)3.1 軟件程序內(nèi)容 本設(shè)計的軟件程序包括主程序、中斷子程序、打鈴子程序、時鐘顯示子程序、按鍵程序和延時子程序等等。另外由于電路中有三個個按鍵,還另外設(shè)計了防抖動程序來防止干擾。3.2 軟件流程圖 3.2.1 系統(tǒng)軟件設(shè)計流程圖主程序是先開始,然后啟動定時器,定時器啟動后在進行按鍵檢測,檢測完后,就可以顯示時間。3.2.2 系統(tǒng)(xtng)按鍵檢測流程圖按鍵處理是先檢測功能鍵是否(sh fu)按下,如果按下,就判斷(pn

27、dun)是按了幾次,如果是按了一次,秒就加一;如果是按了兩次,分就加一;如果是按了三次,時就加一;如果沒有按下,就把時間顯示出來。3.2.3 系統(tǒng)定時(dn sh)中斷流程圖定時器中斷時是先檢測1秒是否到,1秒如果到,秒單元就加1;如果沒到,就檢測1分鐘是否到,1分鐘如果到,分單元就加1;如果沒到,就檢測1小時(xiosh)是否到,1小時如果到,時單元就加1,如果沒到,就顯示時間。3.3 定時(dn sh)程序設(shè)計 單片機的定時功能也是通過計數(shù)器的計數(shù)來實現(xiàn)的,此時的計數(shù)脈沖來自單片機的內(nèi)部,即每個機器周期產(chǎn)生一個計數(shù)脈沖,也就是每經(jīng)過1個機器周期的時間,計數(shù)器加1。如果MCS-52采用的12

28、MHz晶體,則計數(shù)頻率為1MHz,即每過1us的時間計數(shù)器加1。這樣可以根據(jù)計數(shù)值計算出定時時間,也可以根據(jù)定時時間的要求計算出計數(shù)器的初值。MCS-51單片機的定時器/計數(shù)器具有4種工作方式,其控制字均在相應(yīng)的特殊(tsh)功能寄存器中,通過對特殊功能寄存器的編程,可以方便的選擇定時器/計數(shù)器兩種工作模式和4種工作方式。定時器/計數(shù)(j sh)器工作在方式0時,為13位的計數(shù)器,由TLX(X=0、1)的低5位和THX的高8位所構(gòu)成。TLX低5位溢出則向THX進位,THX計數(shù)溢出則置位TCON中的溢出標志位TFX.當定時器/計數(shù)器工作于方式1,為16位的計數(shù)器。本設(shè)計師單片機多功能定時器,所以

29、MCS-51內(nèi)部的定時器/計數(shù)器被選定為定時器工作模式,計數(shù)輸入信號是內(nèi)部時鐘脈沖,每個機器周期產(chǎn)生一個脈沖使計數(shù)器增1。3.3.1 實時時鐘實現(xiàn)的基本方法時鐘的最小計時單位是秒,但使用定時器的方式1,最大的定時時間也只能達到131ms。我們可把定時器的定時時間定為50ms。這樣,計數(shù)溢出20次即可得到時鐘的最小計時單位:秒。而計數(shù)20次可以用軟件實現(xiàn)。秒計時是采用中斷方式進行溢出次數(shù)的累積,計滿20次,即得到秒計時。從秒到分,從分到時是通過軟件累加并進行比較的方法來實現(xiàn)的。要求每滿1秒,則“秒”單元中的內(nèi)容加1;“秒”單元滿60,則“分”單元中的內(nèi)容加1;“分”單元滿60,則“時”單元中的內(nèi)

30、容加1;“時”單元滿24,則將時、分、秒的內(nèi)容全部清零。3.3.2 實時時鐘設(shè)計步驟(1)選擇工作方式,計算初值;(2)采用中斷方式進行溢出次數(shù)累計;(3)從秒分時的計時是通過累加和數(shù)值比較實現(xiàn)的;(4)時鐘顯示緩沖區(qū):時鐘時間在方位數(shù)碼管上進行顯示,為此在內(nèi)部RAM中要設(shè)置顯示緩沖區(qū),共6個地址單元。顯示緩沖區(qū)從左到右依次存放時、分、秒數(shù)值;(5)主程序:主要進行定時器/計數(shù)器的初始化編程,然后反復(fù)調(diào)用(dioyng)顯示子程序的方法(fngf)等待中斷的到來。(6)中斷(zhngdun)服務(wù)程序:進行計時操作(7)加1子程序:用于完成對時、分、秒的加操作,中斷服務(wù)程序在秒、的最小計時單位是

31、秒,但使用定時器的方式1,最大的定時時間也只能達到131ms。我們可把定時器的定時時間定為50ms。這樣,計數(shù)溢出20次即可分、時加1。 3.4 源程序 #include /51系列單片機頭文件#define uchar unsigned char#define uint unsigned intsbit SMG1=P27; /定義時的十位sbit SMG2=P26; /定義時的個位sbit LED1=P25;sbit SMG3=P24; /定義分的十位sbit SMG4=P23; /定義分的個位sbit LED2=P22;sbit SMG5=P21; /定義秒的十位sbit SMG6=P20

32、; /定義秒的個位sbit key1=P10; /定義調(diào)整按鍵sbit key2=P11; /定義加按鍵sbit key3=P12; /定義確認按鍵sbit feng=P37; /定義蜂鳴器char table10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;uint number,num;uchar temp;uchar t_hr=16,t_min=15,t_sec=12; uchar t_hr1,t_hr2;uchar t_min1,t_min2;uchar t_sec1,t_sec2;void delay(uin

33、t k) /延時子程序while(k-);void speak (uchar timer) /蜂鳴器發(fā)聲(f shn)程序uint i=0;uchar j=0;for (i=400; i0; i-)feng=feng;for (j=timer; j0; j-);feng=1;void interrutp_init() /中斷定時(dn sh)初始化程序EA=1;ET0=1;TMOD=0 x01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;TR0=1;void display() /數(shù)碼管顯示(xinsh)程序t_hr1=t_hr/10;t_hr2=t_h

34、r%10;t_min1=t_min/10;t_min2=t_min%10;t_sec1=t_sec/10;t_sec2=t_sec%10;SMG1=0;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=tablet_hr1;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);SMG1=1;SMG2=0;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=tablet_hr2;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;

35、SMG6=1;P0=0 xff;delay(100);SMG1=1;SMG2=1;SMG3=0;SMG4=1;SMG5=1;SMG6=1;P0=tablet_min1;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=0;SMG5=1;SMG6=1;P0=tablet_min2;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);SMG1=1;SMG2=1

36、;SMG3=1;SMG4=1;SMG5=0;SMG6=1;P0=tablet_sec1;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=0;P0=tablet_sec2;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);void main() /主程序interrutp_init();while(1)if(key1=0)if

37、 (key1=0)speak (80);temp+;if(temp3)temp=1;switch(temp)case 0:display(); break;case 1: TR0=0;if(key2=0)if (key2=0)speak (80);t_sec+;if(t_sec=60)t_sec=0;t_sec1=t_sec/10;t_sec2=t_sec%10;SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=0;SMG6=1;P0=tablet_sec1;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xf

38、f;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=0;P0=tablet_sec2;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100); break; case 2: TR0=0; if(key2=0) if (key2=0)speak (80); t_min+;if(t_min=60)t_min=0; t_min1=t_min/10; t_min2=t_min%10;SMG1=1;SMG2=1;SMG3=0;SMG4=1;SMG5=1;SMG6

39、=1;P0=tablet_min1;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=0;SMG5=1;SMG6=1;P0=tablet_min2;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);break;case 3:TR0=0;if(key2=0)if (key2=0)speak (80);t_hr+;if(t_hr=24)t_hr=0;t_hr

40、1=t_hr/10;t_hr2=t_hr%10;SMG1=0;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=tablet_hr1;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);SMG1=1;SMG2=0;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=tablet_hr2;delay(100);SMG1=1;SMG2=1;SMG3=1;SMG4=1;SMG5=1;SMG6=1;P0=0 xff;delay(100);break;default : br

41、eak;if(key3=0)TR0=1;temp=0;speak (80); void server_time() interrupt 1 /中斷定時(dn sh)程序TH0=(65536-1000)/256;TL0=(65536-1000)%256;num+;if(num=1000)num=0;LED1=LED1;LED2=LED2;t_sec+;if(t_sec=60)t_sec=0;t_min+;if(t_min=60)t_min=0;t_hr+;if(t_hr=24)t_hr=0;結(jié) 論通過(tnggu)本次的數(shù)字鬧鐘的最初設(shè)計到最后做出成品,遇到了很多困難,最后在老師的啟發(fā)下,自己有

42、做了很多努力,又經(jīng)過了許多的調(diào)時過程,最終克服了困難。首先(shuxin)拿到一個題目之后認真分析問題,提出解決方案并設(shè)計思路很重要,在這次的設(shè)計過程中,因為原來一些不成熟的設(shè)計思想,導(dǎo)致實際效果相差很大。幸好后來及時更正了設(shè)計思路,優(yōu)化了控制過程。其次設(shè)計程序是必須要從整體考慮,而不能緊抓住一個點不放,出了問題就修修補補,這樣到最后很有可能出現(xiàn)莫名奇妙的問題而解決時無從下手,思路也非常混亂。最后是,做類似的工作一定要有耐心,對于非設(shè)計思路出現(xiàn)的問就必須仔細排查,不可以眼高手低。在單片機課程設(shè)計中,我不僅加深了對單片機理論的理解,將理論很好地應(yīng)用到實際當中去,而且我還學(xué)會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論