下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、湖南人文科技學(xué)院課程設(shè)計報告課程名稱:單片機(jī)原理及應(yīng)用課程設(shè)計設(shè)計題目:電子時鐘的設(shè)計系 別:通信與控制工程系專 業(yè):通信工程班 級:09級通信二班學(xué)生姓名:袁琦 黃文付學(xué) 號:0941623009416227起止日期:2011年12月20日2011年12月30日指導(dǎo)教師:王善偉 姚毅 謝四蓮指導(dǎo)教師評語:指導(dǎo)教師簽名:年月日成績 評 疋項目權(quán)重成績袁琦黃文付1設(shè)計過程中出勤、學(xué)習(xí)態(tài)度等方面0.22、課程設(shè)計質(zhì)量與答辯0.53、設(shè)計報告書寫及圖紙規(guī)范程度0.3總成績教研室審核意見:教研室主任簽字:年月日教學(xué)系審核意見:主任簽字:年月日時鐘是人類日常生活必不可少的工具,本設(shè)計從日常生活中常見的事
2、物入手,通過 對電子時鐘的設(shè)計,讓我們認(rèn)識到單片機(jī)已經(jīng)深入到我們生活的每個領(lǐng)域,該設(shè)計不僅 可以鍛煉我們的動手能力,而且可以加深我們對單片機(jī)的認(rèn)識和激發(fā)我們對未知科學(xué)領(lǐng) 域的探索。本文利用單片機(jī)實現(xiàn)數(shù)字時鐘計時功能的主要內(nèi)容。它體積小,成本低、功能強(qiáng)、使用方便、可靠性高等一系列優(yōu)點,廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動化上。本次設(shè)計采 用獨立式按鍵進(jìn)行時間調(diào)整,其中 STC89C52是核心元件,同時采用數(shù)碼管 LED動態(tài) 顯示“時”,“分”,“秒”的現(xiàn)代計時裝置。與傳統(tǒng)機(jī)械表相比,它具有走時精確,顯示直觀等特點。它的計時周期為 24小時,顯滿刻度為“ 23時59分59秒”,另外利 用DS1302具有校
3、時功能,斷電后有記憶功能,恢復(fù)供電時可實現(xiàn)計時同步等特點。該 系統(tǒng)同時具有硬件設(shè)計簡單、工作穩(wěn)定性高、價格低廉等優(yōu)點。關(guān)鍵詞:STC89C52 ; LED數(shù)碼管;8255芯片;DS1302芯片;目錄設(shè)計要求 11. 方案論證與對比 11.1方案一 11.2方案二 21.3方案對比 22. 系統(tǒng)硬件電路的設(shè)計 32.1單片機(jī)的選擇及引腳功能介紹 32.2 8255A芯片的結(jié)構(gòu)及引腳功能介紹 42.3 DS1302芯片的結(jié)構(gòu)及引腳功能介紹 62.4顯示電路設(shè)計 72.5電源電路設(shè)計 82.6鍵盤動態(tài)掃描電路設(shè)計 83. 控制系統(tǒng)的軟件設(shè)計 103.1 主程序流程圖 103.2顯示子程序 113.3
4、鬧鐘時間設(shè)定功能程序 113.4鍵盤掃描程序 124. 系統(tǒng)功能調(diào)試與整體指標(biāo) 134.1硬件調(diào)試與分析 134.2軟件調(diào)試與分析 134.3性能分析 135. 詳細(xì)儀器清單 146. 總結(jié)與思考及致謝 15參考文獻(xiàn) 16附錄一:程序(方案一) 17附錄二:程序(方案二) 25電子時鐘的設(shè)計設(shè)計要求利用單片機(jī)作為控制核心,完成一個時鐘計時器。具體要求如下:采用6位LED數(shù)碼顯示時、分、秒。(2) 時制式為24小時制。(3) 使用按鍵開關(guān)可實現(xiàn)時、分調(diào)整。(4) 秒表/時鐘功能轉(zhuǎn)換。定時設(shè)定提醒的功能。(6) 整點提醒(蜂鳴)。(7) DS1302設(shè)時,對時,掉電記憶時間的功能。1. 方案論證與
5、對比1.1方案一此方案采用單片機(jī)內(nèi)部定時器 T0進(jìn)行計時,STC89S52實時控制。如圖1所示:蜂鳴器STC89C52單片機(jī)定時器PA/L l6位LED數(shù)碼管顯示|PB18255PC/rJV矩陣鍵盤P0P2圖1方案一系統(tǒng)方框圖1.2方案二此方案采用專用時鐘芯片 DS1302精確計時,單片機(jī)STC89C52實時讀取時鐘顯 示至6位數(shù)碼管。如圖2所示:圖2方案二系統(tǒng)方框圖1.3方案對比以上方案中,方案一設(shè)計簡潔,編程比較簡單,計時精度不高,準(zhǔn)確性不能完全 保證。雖硬件簡潔、成本更低廉、便于實現(xiàn),綠色環(huán)保,編程簡單易寫,不能達(dá)到提 高同學(xué)們編程的能力和對單片機(jī)及其擴(kuò)展芯片的學(xué)習(xí)和深程度的去了解單片機(jī)
6、及其 更廣泛的應(yīng)用,故在此我們選擇挑戰(zhàn),放棄對其選擇。雖然我們對其進(jìn)行了放棄,但 我們也把此方法的程序?qū)懞靡员氵M(jìn)行對比。方案二與方案一相比,編程比較復(fù)雜,計時精度較高,而且可以靈活運(yùn)用,可擴(kuò) 展性好,并能充分的利用單片機(jī)的有效資源。 還可讓我們培養(yǎng)我們的自學(xué)能力,自己 去發(fā)掘單片機(jī)內(nèi)部結(jié)構(gòu)及其擴(kuò)展功能,自己去學(xué)會怎樣對其他芯片控制的學(xué)習(xí)方法, 使得課程設(shè)計具有一定的挑戰(zhàn)性,正因如此,故我們選擇方案二。2. 系統(tǒng)硬件電路的設(shè)計2.1單片機(jī)的選擇及引腳功能介紹STC89C52具有如下特點:40個引腳(引腳圖如圖四所示),4k Bytes Flash片內(nèi) 程序存儲器,128 bytes的隨機(jī)存取數(shù)據(jù)
7、存儲器(RAM),32個外部雙向輸入/輸出(I/O) 口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通 信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。此外,STC89C52RC設(shè)計和配置了振蕩頻率可為 0Hz并可通過軟件設(shè)置省電模 式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù) 工作,掉電模式凍結(jié)振蕩器而保存 RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活 或硬件復(fù)位。同時該芯片還具有 PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不 同產(chǎn)品的需求。VCCPll 2Pl? 3PI3 4PI4 5P15 6PI6 7PI7 8RXDO
8、TXIliP3212P13T3P3414I/O 15P3S16P3717XT加2hPI0 1PJ0*T2VCCPI.1/T2EXPO.O/ADOF1.2PO.KADlPi.3P0.2ZAD2F1.4P0.3/AD3P1.5/M0SIP0.VAD4pi.cmisoP0.5ZAD5PI 7/SCKPO.SADiitSTP0.7ZAD7P10/KXD/EAAfFFP3.1/TXDALE/PR.OGP3.2/INII/PSENP3.3HMT1P2.7/AJ5P3.4froP2.S/AHP3.smP2.5/ABP3.6AVR.P2.A/A.2P3.7/RDP2.3/AI1XTAL2P2 2/A10XTA
9、L1P2.WGNDF2.0/ASSTCS9C5239383C3433323029232726丿252-12322 -2140P24P23P- >27P26D0DI-D2D3D6D7EA圖4 STC89C52芯片引腳圖引腳功能介紹:VCC( 40): + 5V;GND (20):接地;P0口(39- 32): P0口為8位漏極開路雙向I/O 口,每引腳可吸收8個TTL門電流;P1 口( 1 8): P1 口是從內(nèi)部提供上拉電阻器的8位雙向I/O 口,P1 口緩沖器能接 收和輸出4個TTL門電流;P2口(21 28): P2口為內(nèi)部上拉電阻器的8位雙向I/O 口,P2口緩沖器可接收和 輸出4
10、個TTL門電流;卩3口( 1017): P3口是8個帶內(nèi)部上拉電阻器的雙向I/O 口,可接收和輸出4個 TTL門電流,P3口也可作為AT89C51的特殊功能口;RST (9):復(fù)位輸入。當(dāng)振蕩器復(fù)位時,要保持RST引腳2個機(jī)器周期的高電平時間;ALE/PROG (30):當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地 址的低位字節(jié),在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6,它可用作對外部輸出的脈沖或用于定時目的,要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過1個ALE脈沖;PSEN( 29):外部程序存儲器的選
11、通信號。在由外部程序存儲器取指期間,每個 機(jī)器周期2次PSEN有效,但在訪問外部數(shù)據(jù)存儲器時,這2次有效的PSEN信號將不 出現(xiàn);EA/VPP (31):當(dāng)EA保持低電平時,外部程序存儲器地址為(0000H FFFFH) 不管是否有內(nèi)部程序存儲器。FLASH編程期間,此引腳也用于施加12V編程電源(VPP);XTAL1 (19):反向振蕩器放大器的輸入及內(nèi)部時鐘工作電路的輸入;XTAL2 (18):來自反向振蕩器的輸出。2.2 8255A芯片的結(jié)構(gòu)及引腳功能介紹8255A芯片是In tel公司生產(chǎn)的通用可編程并行接口電路,廣泛應(yīng)用于單片機(jī)擴(kuò) 展并行I/O 口。它具有8個位并行口 PA、PB和P
12、C。8255A芯片的內(nèi)部結(jié)構(gòu)及引腳 如圖5所示。(1) . 8255A的內(nèi)部結(jié)構(gòu)8255A的內(nèi)部結(jié)構(gòu)有以下幾部分組成:a并行I/O端口 A、B、C 8255A的內(nèi)部有3個8位并行I/O 口: A 口、B 口、C口。3個I/O 口都可以通過編程選擇為輸入口或輸出口,但在結(jié)構(gòu)和功能上有所不同。A 口:含有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位輸入鎖存器。B 口:含有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位輸入鎖存器(不鎖存)。C 口:含有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位輸入鎖存器(不鎖存)。當(dāng)數(shù)據(jù)傳送不需要聯(lián)絡(luò)信號時,這 3個端口都可以用作輸入口或輸出口。當(dāng)A口 B 口需要有聯(lián)絡(luò)信號時,C 口
13、可以作為A 口和B 口的聯(lián)絡(luò)信號線。b. 工作方式控制電路:8255A的三個端口在使用使可分為 A、B兩組。A組包括A 口 8位和C 口高4位:B組包括B 口 8位和C 口低4位。兩組的控制電路中分別 有控制寄存器,根據(jù)寫入的控制字決定兩組的工作方式,也可對C 口每一位置“ T或清“ 0”。c. 數(shù)據(jù)總線緩沖器:數(shù)據(jù)總線緩沖器是三態(tài)雙向的8位緩沖器,是8255A與單片 機(jī)數(shù)據(jù)總線的接口, 8255A的D0D7可以和AT89C51單片機(jī)的P0.0P0.7直接相 連。數(shù)據(jù)的輸入輸出、控制字和狀態(tài)信息的傳遞,均可通過數(shù)據(jù)總線緩沖器進(jìn)行。d. 讀/寫控制邏輯:8255A讀/寫控制邏輯的作用是從CPU的
14、地址和控制總線上接 受有關(guān)信號,轉(zhuǎn)變成各種控制命令送到數(shù)據(jù)緩沖器及 A組和B組的控制電路,控制 A、B、C3個端口的操作。其引腳圖如圖5所示:PA3 1PA2 2PAI 37o AL JL-啟i 9= PC71DPC611PC413PCD14PC115PC31'7PB01BPB119PB22HPAD s/R./cId%GAAPDI: E E B pppA4QAp0 12 3 D D D D4 5 6 7D D D D5 4I B E B Cl p40 PA439 PA53S PAC37 PA7 亍孑 P坯35 RESET340込 DI32 D231 D330429 D52-12 一 2
15、2S272?圖5 8255引腳圖引腳功能介紹:8255A共有40個引腳,一般為雙列直插 DIP封裝,40個引腳可分為與CPU連接的數(shù)據(jù)線、地址和控制信號以及與外圍設(shè)備連接的三個端口線。DOD7:雙向三態(tài)數(shù)據(jù)總線。RESET:復(fù)位信號,輸入,高電平有效。復(fù)位后,控制寄存器清 0, A 口、B 口、 C 口被置為輸入方式。CS:片選信號,輸入,低電平有效。RD.:讀信號,輸入,低電平有效。有效時,允許 CPU通過8255A D0D7讀取 數(shù)據(jù)或狀態(tài)信息。WR.:寫信號,輸入,低電平有效。有效時,允許A1A0 :端口控制信號,輸入。2位可構(gòu)成四種狀態(tài),分別尋址 A 口、B 口、C 口和控制寄存器PA
16、0PA7: A 口數(shù)據(jù)線,雙向。PBOPB7: B 口數(shù)據(jù)線,雙向。PC0PC7: C 口數(shù)據(jù)/信號線,雙向。當(dāng)8255A工作于方式0時,PC0PC7分 為兩組(每組4位)并行I/O數(shù)據(jù)線;當(dāng)8255A工作于方式1或方式2時,PC0PC7 為A 口、B 口提供聯(lián)絡(luò)信號。2.3 DS1302芯片的結(jié)構(gòu)及引腳功能介紹DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工 作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次 傳送多個字節(jié)的時鐘信號或 RAM數(shù)據(jù)。DS1302內(nèi)
17、部有一個31X8的用于臨時性存 放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了 主電源/后背電源雙電源引腳,同時提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。(1). DS1302的引腳功能及結(jié)構(gòu)DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的 情況下,也能保持時鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng) Vcc2 大于 Vcc1 + 0.2V 時,Vcc2 給 DS1302供電。當(dāng) Vcc2 小于 Vcc1 時,DS1302 由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)
18、位/片選線,通過 把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。 RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或 多字節(jié)數(shù)據(jù)的傳送手段。當(dāng) RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對 DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O 引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時,在 Vcc>2.5V之前,RST必須保持低電平。只有在 SCLK為低電平時,才能將 RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后 面有詳細(xì)說明。SCLK始終是輸入端。DS1302的引腳功能以及單片機(jī)的連接圖如圖6R
19、32K圖6 DS1302引腳及其與單片機(jī)連接的原理圖2.4顯示電路設(shè)計單片機(jī)中通常用七段LED構(gòu)成字型“8,另外,還有一個小數(shù)點發(fā)光二極管以顯 示小數(shù)位!這種顯示器有共陰和共陽兩種!發(fā)光二極管的陽極連在一起的(公共端) 稱為共陽極顯示器,陰極連在一起的稱為共陰極顯示器。一位顯示器由8個發(fā)光二極 管組成,其中,7個發(fā)光二極管構(gòu)成字型“8的各個筆劃(段),a_g另一個小數(shù)點為 dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時,該段筆畫即亮;不 加電壓則暗。為了保護(hù)各段 LED不被損壞,需外加限流電阻。由于共陰極連接需加 驅(qū)動,故在這里我采用的是共陽陽極連接。以共陽極LED為例,各LED公共
20、陽極K0接高電平,若向各控制端a,b, g,dp 順次送入00011110言號,則該顯示器顯示 7”字型。共陰極7段LED顯示數(shù)字0 F、文字、符號及小數(shù)點的編碼(a段為最地位,dp點為最高位),如圖7圖7數(shù)碼管的驅(qū)動顯示電路設(shè)計F -4= PSIR27 : TE : 恵-2.5電源電路設(shè)計在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成部分, 它是電子設(shè)備唯一能 量來源,它的設(shè)計思路是根據(jù)我們以前學(xué)過的模電電子技術(shù),要想得到我們所要的 +6V輸出電壓,就需將交流220V的電壓經(jīng)過變壓器、整流電路、濾波電路和穩(wěn)壓電 路四個部分。2.6鍵盤動態(tài)掃描電路設(shè)計在單片機(jī)系統(tǒng)中按鍵數(shù)量較多時,為了減少I/
21、O 口的占用,常常將按鈕排列成矩 陣式鍵盤中,每條水平線和直線在交叉處不直接連通,而是通過一個按鈕加以連接。 這樣,一個端口(如P1 口)就能組成4*4=16個按鈕,比之直接將端口線用于鍵盤 多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條就能組成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是最合理的矩陣式鍵盤的按鈕識別辦法確定矩陣式鍵盤上何鍵被按下簡紹一種“行掃描 法”行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的,按鈕識別辦法, 如下圖示鍵盤,介紹過程如下。判斷鍵盤中有無鍵盤按下將全部行線置低電平,然后檢測列的電平為低,則
22、表 示鍵盤中有鍵被按下,而且閉合的鍵位位于低電平線與 4根行線相交叉的4個按鈕之 中。若所有列線均為高電平,則鍵盤中無鍵按下。判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即可置某根行線為低電平時,其 他線為高電平。在確定某根位置為低電平后,再逐行檢測各列線的電平狀態(tài)。 若某列 為低,則該列與置為低電平的行線交叉處的按鈕就是閉合的按鈕。將程序通過串口下載到單片機(jī)中,在鍵盤上按任意鍵時,將會在數(shù)碼管上顯示對應(yīng)的字符。為了驅(qū)動鍵盤,同上以8255_PC第四位作為輸入,8255PC高四位作為列掃描 輸出,以此來實現(xiàn)動態(tài)掃描顯示法。如圖 8所示:圖8鍵盤動態(tài)掃描電路設(shè)計3. 控制系統(tǒng)的軟件設(shè)計3.1主程序流
23、程圖本設(shè)計中主程序主要實現(xiàn)顯示的初始化和調(diào)用各子程序工作的功能,讀取時間的子程序主要實現(xiàn)初始化,時間信息的采集和顯示段碼的碼的存取。 分別對各個器件的 功能進(jìn)行編程設(shè)計,根據(jù)主程序流程圖(如下)進(jìn)行全面的分析。設(shè)計中計時主要以 定時器TO中斷完成,定點鬧鈴使用峰鳴器來完成。當(dāng)端口有開關(guān)按下時,轉(zhuǎn)入相應(yīng) 的功能程序。其主程序執(zhí)行流程圖如下圖 9:開始圖9主程序流程圖3.2顯示子程序時間顯示子程序顯示時鐘芯片 3個內(nèi)存單元(小時、分鐘、秒鐘)的 BCD碼數(shù) 據(jù),8255的PA 口送數(shù)碼管的位選編碼。8255的PB 口送段選編碼,位選段選編碼存 放在ROM表中。顯示時,先取出位選編碼數(shù)據(jù),然后送至
24、PA 口輸出,接著取出段選編碼數(shù)據(jù)送 至PB 口輸出,剩下的數(shù)碼管以同樣地方法送數(shù)據(jù)直到將3個內(nèi)存單元的數(shù)據(jù)分成6個位全部送去數(shù)碼管顯示。數(shù)碼管顯示子程序流程圖如圖9所示:開始;. 結(jié)束圖10 數(shù)碼管顯示子程序流程圖3.3鬧鐘時間設(shè)定功能程序在時鐘狀態(tài)下,觸發(fā)外中斷1時,進(jìn)入鬧鐘時間設(shè)定模式,且不影響 T0計時器 的功能狀態(tài),在鍵盤上輸入對應(yīng)的數(shù)字進(jìn)行時間設(shè)定。當(dāng)分別按下調(diào)節(jié)時鐘、分鐘和 秒鐘的個位時,時間自動確定,鬧鐘時間只精確到分鐘。鬧鐘時間設(shè)定流程圖如圖11所示:開始_,3達(dá)到預(yù)設(shè)時間一1<J-丄_ 二?YFN一一一一 鬧鈴C返回丿圖11鬧鐘時間設(shè)定流程圖3.4鍵盤掃描程序本設(shè)計采
25、用動態(tài)掃描法,動態(tài)掃描法不僅掃描鍵陣,也可以實現(xiàn)顯示,是目前應(yīng) 用十分廣泛的一種方法。動態(tài)掃描法是采用輸出“移動”信號,輪流對各行按鍵進(jìn)行 檢測來實現(xiàn)的。設(shè)置行線為輸出,列線為輸入,當(dāng)無按鍵按下時,列輸入全為“1” .設(shè)計時,將某一行輸出為“ 0”,讀取列線值,若其中某一位為“ 0”,則表明行、列交 叉處的按鍵按下,否則,無按鍵按下;繼續(xù)掃描下一行(將下一行輸出為“0”),直至全掃描完為止。鍵盤掃描程序流程圖如 12圖所示:開始返回圖12鍵盤掃描程序流程圖4. 系統(tǒng)功能調(diào)試與整體指標(biāo)4.1硬件調(diào)試與分析(1) 時間準(zhǔn)確性調(diào)試硬件調(diào)試時可先檢查印制版及焊接的質(zhì)量情況,將電子時鐘通電后,顯示00:
26、00: 00。觸發(fā)INTO中斷開始計時,每過一秒時間就顯示變化一次。計時準(zhǔn)確,顯示 穩(wěn)定。(2) 鬧鈴功能調(diào)試將時鐘調(diào)到11點59分58秒,2秒后,時鐘開始定點鬧鈴,鈴聲為“嘀-嘀-嘀- 嘀”聲,持續(xù)1分鐘報時聲自動停止也可以觸發(fā)功能鍵來中止鬧鈴。設(shè)計的電子時鐘計時精確度較高,并可應(yīng)用于日常生活中。能夠通過鍵盤對電子時鐘進(jìn)行調(diào)整,且調(diào)整過程簡單方便,易于操作,有較強(qiáng)的人性化設(shè)計。并且可通過鍵盤實現(xiàn)鬧鈴與時間模式的切換,使電子時鐘的功能更加強(qiáng)大。能夠進(jìn)行定時鬧鈴,計時較準(zhǔn)確,基本能實現(xiàn)測試目標(biāo)。4.2軟件調(diào)試與分析軟件調(diào)時在KEIL C51編譯器下進(jìn)行,源程序編譯及仿真調(diào)試應(yīng)分段或以子程序 為單
27、位逐個進(jìn)行,最后可結(jié)合硬件實時調(diào)試。4.3性能分析按照設(shè)計程序分析,LED顯示器動態(tài)掃描的頻率為167HZ,實際使用觀察時完 全沒有閃爍。由于計時中斷程序中加了中斷延時誤差處理, 所以實際計時精度非常高, 可滿足多種場合的應(yīng)用需要。5. 詳細(xì)儀器清單表格1儀器清單儀器名稱儀器名稱STC89C52STC89C528255A8255A3位數(shù)碼管3位數(shù)碼管2個DS1302DS130211.0592k 晶振11.0592k 晶振32.768k 晶振32.768k 晶振矩陣鍵盤4X4矩陣30PF電容30PF電容100PF電容100PF電容1K電阻1K電阻蜂鳴器蜂鳴器6. 總結(jié)與思考及致謝在老師的指導(dǎo)和同
28、學(xué)的幫助之下,我完成了此次單片機(jī)課程設(shè)計。從開始接到課 題要求到時鐘的實現(xiàn),再到論文的完成,每走一步對我來說都是新的嘗試與挑戰(zhàn)。 在 這次的課程設(shè)計中不僅檢驗了我所學(xué)習(xí)的知識, 也培養(yǎng)了我如何去把握一件事情,如 何去做一件事情,又如何完成一件事情。在設(shè)計過程中,與同學(xué)分工設(shè)計,和同學(xué)們 相互探討,相互學(xué)習(xí),相互監(jiān)督。課程設(shè)計是我們專業(yè)課程知識綜合應(yīng)用的實踐訓(xùn)練, 著是我們邁向社會,從事職業(yè)工作前一個必不少的過程。這次時鐘計時器設(shè)計的經(jīng)歷也會使我終身受益,我感受到做設(shè)計是要用心去做的 一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力, 沒有自己的研究,就不會有所突破。通
29、過設(shè)計,我在老師的精心指導(dǎo)和嚴(yán)格要求下, 獲得了豐富的理論知識,極大地提高了實踐能力。最后,再一次感謝我的老師.,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我學(xué)習(xí)的 榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪;這次時鐘計時器設(shè)計的每個環(huán)節(jié),都離不開老師您的細(xì)心指導(dǎo)。我懂得了學(xué)習(xí)的重要性,了解到理論知 識與實踐相結(jié)合的重要意義,學(xué)會了堅持、耐心和努力,這將為自己今后的學(xué)習(xí)和工 作做出了最好的榜樣。參考文獻(xiàn)1 余錫存單片機(jī)原理及接口技術(shù)M.西安:西安電子科技大學(xué)出版社,20002 賈好來.MCS-51單片機(jī)原理及應(yīng)用M.北京:機(jī)械工業(yè)出版社,20063 樓然苗,李光飛單片機(jī)課程設(shè)計指導(dǎo)M.北
30、京:北京航空航天大學(xué)出版社,20074 夏路易,石宗義電路原理圖與電路板設(shè)計教程北京希望電子工業(yè)出版2002朱定華,戴汝平單片微機(jī)原理與應(yīng)用.(M)北京:清華大學(xué)出版社,2003附錄一:程序(方案一)#in clude<reg52.h>#in clude<absacc.h>#defi ne uint un sig ned int#defi ne uchar un sig ned char#defi ne PAXBYTE0xD1FF#defi ne PBXBYTE0xD2FF#defi ne PCXBYTE0xD5FF#defi ne PCON XBYTE0xD7FF s
31、bit buzzer=P3A3;/ 蜂鳴器端口數(shù)碼管0-9的段選編碼uchar code tabledu=0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28;數(shù)碼管各位選編碼uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/全局變量定義un sig ned long nu ml, nu m2;uchar shi0,shi1,fe n0,fen 1,m0,m1, num,nu m3,aa,bb,cc,co un t,temp,co un t,S,flag,flag1;char hour,m in,
32、sec on d,h0,h1,mi0,mi1,s0,s1;void init();初始化函數(shù)聲明void display(uchar,uchar,uchar,uchar,uchar,uchar );/ 顯示函數(shù)聲明void delay(uint);帶參數(shù)延時函數(shù)聲明1毫秒void keysca n();鍵盤掃描函數(shù)void mai n()PCON=0x80;in it();while(1)主體循環(huán)keysca n();/時鐘分離部分m仁 aa%10;m0=aa/10;fen 1=bb%10;fen 0=bb/10;shi仁 cc%10;shi0=cc/10;/clock分離部分s仁seco n
33、d%10;sO=seco nd/10;mi仁mi n%10;mi0=mi n/10;h1=hour%10;h0=hour/10;/時鐘顯示和clock顯示部分if(nu m3>=1 &&nu m3<=4|cou nt=O) display(shi0,shi1,fe nO,fe n1,m0,m1);elsedisplay(h0,h1,mi0,mi1,s0,s1);/*整點報時*/if(aa=0&&bb=O)TR 1=1;flag=1;/報時10秒開啟定時器1控制整點報時計數(shù) num1+/*鬧鐘報時 *if(aa=sec ond&&bb=
34、min&&cc=hour)/鬧時一分鐘TR1=1;開啟定時器1flag1=1;/控制鬧鐘計數(shù) num2+/*初始化函數(shù)*/void in it() /* 定時器 0, 1 初始化 */TMOD=Ox11;EA=1;ET0=1;ET1=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;TR0=1;void time0() interrupt 1/定時0時鐘函數(shù)(控制數(shù)碼時鐘)TH0=(65536-50000)/256;TL0=(65536-50000)%2
35、56;nu m+;if(n um=20) num=O;aa+;if(aa=60) aa=0;bb+;if(bb=60)bb=0;cc+;if(cc=24)cc=0;void time1() in terrupt 3 定時1時鐘函數(shù)(控制整點報時時間)TH1=(65536-1000)/256;TL1=(65536-1000)%256;if(flag=1)nu m1+;if(flag 仁=1)nu m2+;buzzer=buzzer;if(n um 1=10000| num2=60000) nu m1=0;nu m2=0;buzzer=1;TR1=0;flag=0;flag 仁0; void di
36、splay(uchar shi0,uchar shi1,uchar fen0 ,uchar fen 1,uchar m0,uchar m1) /*數(shù)碼管顯示函數(shù)*/PA=tablewe0;PB=tabledushi0;delay(1);PB=OXFF; PA=tablewe1; PB=tabledushi1; delay(1);PA=0XFF;PB=0XFF; PA=tablewe2; PB=tabledufe nO; delay(1);PA=0XFF;PB=0XFF;PA=tablewe3;PB=tabledufe n1; delay(1);PA=0XFF;PB=0XFF;PA=tablew
37、e4; PB=tabledum0; delay(1);PA=0XFF;PB=0XFF;PA=tablewe5; PB=tabledum1; delay(1);PA=0XFF;PB=0XFF;/*毫秒函數(shù)*/void delay( uint z)uint x,y;for(x=z;x>0;x-)for(y=124;y>0;y-)*鍵盤函數(shù)函數(shù) *void keysca n()PC=0xfe; temp=PC;temp=temp&0xf0; if(temp!=0xf0) delay(5);temp=PC; temp=temp&OxfO; if(temp!=OxfO) te
38、mp=PC;switch(temp)II秒鐘加一按鍵分鐘加一按鍵II時鐘加一按鍵II清零按鍵II松手檢測case 0xee:nu m3=1; break;case 0xde:nu m3=2; break;case 0xbe:nu m3=3; break;case 0x7e:nu m3=4; break;while(temp!=OxfO)temp=PC; temp=temp&OxfO;display(shiO,shi1,fe n0,fe n1,mO,m1); switch( nu m3)case 1:aa+;if(aa>59)aa=0; break;case 2:bb+;if(bb
39、>59)bb=0; break;case 3:cc+;if(cc>23)cc=0; break;case 4:aa=0,bb=0,cc=0; break;乙乙:9 aseo4=03 丄:0=lun(x)(t7=junoo)j!+; unoo:0=0d 丄:g aseoiunu )qo;iMSgs'os' uiuQiu' Moi|)AE|ds!p!O4xodiua;=diua; !Od=diuej(O4xo=idiua;)a|!i|M冷 eaiq'劃蜃獸府四3堯wnu:pzxoesEO冷 eaiq瞻縱府激府'岳'矽陰 和OQ冨視2堯山n
40、u:pqxoesEO 冷 eaiq'岳'伽I和0Q冨視爐£山nu:ppxo aS冷 eaiq和OQ冨視Y率尖'劃嗟器/©堯wnu:poxoosEo(diua;)qo;!MS!Od=diuej xo=jduj印) !O4xodiua;=diua;!Od=diuej !(9)Ae|ep (Ojxomdw 勵!O4xodiua;=diua; 6=diu 鞏AjxOOdcase 7:case 8:if(coun t=1)second+;if(sec on d=60) second=0;elseif(co un t=2)mi n+;if(mi n=60)mi
41、n=0;elseif(co un t=3)hour+;if(hour=24) hour=0;break;if(coun t=1)sec on d-;if(sec on d=-1) second=59;elseif(co un t=2)min-;if(mi n=-1) min=59;elseif(co un t=3)hour-;if(hour=-1) hour=23;break;S+; if(S%2=1) TRO=O;else TR0=1;if(S=2) S=0;break;附錄二:程序(方案二)#in clude<reg52.h>#in clude<absacc.h>
42、#defi ne uchar un sig ned char#defi ne uint un sig ned int#defi ne uchar un sig ned char#defi ne PAXBYTE0xD1FF#defi ne PBXBYTE0xD2FF#defi ne PCXBYTE0xD5FF#defi ne PCON XBYTE0xD7FF uchar nu m,temp,hour,m inu te,sec on d,hour1,hour2 ,minu te1, minu te2,secon d1,sec ond2;uchar aa,aa1,aa2,bb,bb1,bb2,cc,
43、cc1,cc2;sbit buzzer=P3A3;/ 蜂鳴器sbit D0=P1A0;/用來指示鬧鐘開啟關(guān)閉的LEDbit flag;/鬧鐘開啟關(guān)閉的標(biāo)志位uint a0;uchar code tabledu=0xA0,0xBB,0x62,0x2A, 0x39,0x2C,0x24,0xBA,0x20,0x28;/數(shù)碼管0123456789的段選編碼 uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/ 數(shù)碼管的位選編碼 sbit SCLK=P3A2;sbit RST=P2A6;sbit IO=P3A5;/*毫秒延時程序*/void delay(
44、uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-)/*微秒延時程序* void delay_us(uchar n)uchar i;for(i=0;i <n ;i+)/*1302 做好準(zhǔn)備 *void readynit1302()RST=0;SCLK=0;RST=1;/*1302 單字節(jié)數(shù)據(jù)寫入 */void write1302(uchar dat)uchar i;SCLK=0;delay_us(2);for(i=0;i<8;i+)IO=dat&0 x01;delay_us(2);SCLK=1;delay_us(2);
45、SCLK=0;dat>>=1;/*1302雙字節(jié)數(shù)據(jù)寫入(寄存器地址和數(shù)據(jù))*/void write_set1302(uchar cmd,uchar dat)ready_i nit1302();delay_us(2);write1302(cmd);write1302(dat);SCLK=1;RST=0;/*1302單字節(jié)數(shù)據(jù)讀出*/uchar read1302()uchar i,dat;dat=0;delay_us(2);for(i=0;i<8;i+)dat>>=1;if(1=IO)dat=dat|0x80;SCLK=1;delay_us(2);SCLK=0;de
46、lay_us(2);return dat;/*1302單字節(jié)數(shù)據(jù)讀出(讀指定寄存器值)*/uchar read_set1302(uchar cmd)uchar dat;ready_i nit1302();write1302(cmd);dat=read1302();SCLK=1;RST=0;return dat;/*1302初始化(設(shè)置初始時間) */void ini t1302()write_set1302(0x8e,0x00);write_set1302(0x80,(0/10)<<4|(0%10);write_set1302(0x82,(27/10)<<4|(27%1
47、0);write_set1302(0x84,(10/10)<<4|(10%10);write_set1302(0x90,0xa5);以2K電阻方式給備用電源充電 write_set1302(0x8e,0x80);/*1302數(shù)據(jù)讀出(讀已經(jīng)設(shè)置好的時間)*/void readtime()uchar temp;temp=read_set1302(0x81);seco nd=(temp&0x70)»4)*10+(temp&0x0F);temp=read_set1302(0x83);min ute=(temp&0x70)»4)*10+(temp
48、&OxOF);temp=read_set1302(0x85);hour=(temp&0x70)»4)*10+(temp&OxOF);/*數(shù)碼管顯示函數(shù)(入口參數(shù)為每個數(shù)碼管的段選序號)*/void dispaly(uchar duO,uchar du1,uchar du2,uchar du3,uchar du4,uchar du5) PA=tableweO;PB=tableduduO;delay(2);PA=0xff;PB=0xff;delay(2);PA=tablewe1;PB=tabledudu1;delay(2);PA=0xff;PB=0xff;dela
49、y(2);PA=tablewe2;PB=tabledudu2;delay(2);PA=0xff;PB=0xff;delay(2);PA=tablewe3;PB=tabledudu3;delay(2);PA=0xff;PB=0xff;delay(2);PA=tablewe4;PB=tabledudu4;delay(2);PA=0xff;PB=0xff;delay(2);PA=tablewe5;PB=tabledudu5;delay(2);PA=0xff;PB=0xff;delay(2);/*秒鐘加一調(diào)整(供鍵盤設(shè)置秒鐘)*/void sec ond_inc()second+;if(seco nd
50、>=60)sec on d=0;write_set1302(0x8e,0x00);write_set1302(0x80,(seco nd)/10)<<4|(seco nd)%10);write_set1302(0x8e,0x80);/*分鐘加一調(diào)整(供鍵盤設(shè)置分鐘)*/void mi nu te_i nc()minu te+;if(mi nute>=60)minu te=0;write_set1302(0x8e,0x00);write_set1302(0x82,(mi nute)/10)<<4|(mi nute)%10);write_set1302(0x8e
51、,0x80);/*小時加一調(diào)整(供鍵盤設(shè)置小時)*/void hour_i nc()hour+;if(hour>=24)hour=0;write_set1302(0x8e,0x00);write_set1302(0x84,(hour)/10)<<4|(hour)%10);write_set1302(0x8e,0x80);/*矩陣鍵盤檢測*/void keyboard。PCON=0x80;PA=0xff;PB=0xff;PC=0xfe;掃描倒數(shù)第一列temp=PC;temp=temp&0xf0;if(temp!=OxfO)delay(10);temp=PC;temp=temp&0 xf0;if(temp!=OxfO)switch(temp)case 0xe0:num=0;break;case 0xd0:num=1;break;
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目制度、職責(zé)修改稿 20130530
- 2024年砂洲土地租賃標(biāo)準(zhǔn)協(xié)議版B版
- 2024年貨運(yùn)代理合同
- 2024年貨物運(yùn)輸安全保證協(xié)議
- 2024年租賃協(xié)議修正案3篇
- 2024年設(shè)備全國總代理合同3篇
- 2024智能化多場景生產(chǎn)線銷售協(xié)議版B版
- 2024汪穎離婚協(xié)議書:財產(chǎn)分割、子女撫養(yǎng)及共同債務(wù)處理3篇
- 2024幼兒園園長幼兒科技創(chuàng)新教育聘用合同3篇
- 2024校服采購合同-二零二四年度教育裝備行業(yè)專用3篇
- 《XL集團(tuán)破產(chǎn)重整方案設(shè)計》
- 智慧金融合同施工承諾書
- 2024年01月22094法理學(xué)期末試題答案
- 2024年1月國家開放大學(xué)法律事務(wù)??啤睹穹▽W(xué)(1)》期末紙質(zhì)考試試題及答案
- 2024年安全文化建設(shè)實施方案
- 康復(fù)治療技術(shù)歷年真題單選題100道及答案
- 2024年領(lǐng)導(dǎo)干部和公務(wù)員法律法規(guī)應(yīng)知應(yīng)會知識考試題庫
- 《建筑工程施工許可管理辦法》2021年9月28日修訂
- 漢字文化解密學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 【格力電器應(yīng)收賬款管理存在的問題及優(yōu)化建議探析(論文)12000字】
- (完整版)《美國文學(xué)》期末考試試卷(A卷)
評論
0/150
提交評論