![電子時(shí)鐘計(jì)時(shí)器的設(shè)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/9a2a636f-975f-496e-b152-c649bee7ac08/9a2a636f-975f-496e-b152-c649bee7ac081.gif)
![電子時(shí)鐘計(jì)時(shí)器的設(shè)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/9a2a636f-975f-496e-b152-c649bee7ac08/9a2a636f-975f-496e-b152-c649bee7ac082.gif)
![電子時(shí)鐘計(jì)時(shí)器的設(shè)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/9a2a636f-975f-496e-b152-c649bee7ac08/9a2a636f-975f-496e-b152-c649bee7ac083.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南人文科技學(xué)院課程設(shè)計(jì)報(bào)告課程名稱:?jiǎn)纹瑱C(jī)原理及應(yīng)用課程設(shè)計(jì)設(shè)計(jì)題目:電子時(shí)鐘的設(shè)計(jì)系 別:通信與控制工程系專 業(yè):通信工程班 級(jí):09級(jí)通信二班學(xué)生姓名:袁琦 黃文付學(xué) 號(hào):0941623009416227起止日期:2011年12月20日2011年12月30日指導(dǎo)教師:王善偉 姚毅 謝四蓮指導(dǎo)教師評(píng)語:指導(dǎo)教師簽名:年月日成績 評(píng) 疋項(xiàng)目權(quán)重成績?cè)S文付1設(shè)計(jì)過程中出勤、學(xué)習(xí)態(tài)度等方面0.22、課程設(shè)計(jì)質(zhì)量與答辯0.53、設(shè)計(jì)報(bào)告書寫及圖紙規(guī)范程度0.3總成績教研室審核意見:教研室主任簽字:年月日教學(xué)系審核意見:主任簽字:年月日時(shí)鐘是人類日常生活必不可少的工具,本設(shè)計(jì)從日常生活中常見的事
2、物入手,通過 對(duì)電子時(shí)鐘的設(shè)計(jì),讓我們認(rèn)識(shí)到單片機(jī)已經(jīng)深入到我們生活的每個(gè)領(lǐng)域,該設(shè)計(jì)不僅 可以鍛煉我們的動(dòng)手能力,而且可以加深我們對(duì)單片機(jī)的認(rèn)識(shí)和激發(fā)我們對(duì)未知科學(xué)領(lǐng) 域的探索。本文利用單片機(jī)實(shí)現(xiàn)數(shù)字時(shí)鐘計(jì)時(shí)功能的主要內(nèi)容。它體積小,成本低、功能強(qiáng)、使用方便、可靠性高等一系列優(yōu)點(diǎn),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。本次設(shè)計(jì)采 用獨(dú)立式按鍵進(jìn)行時(shí)間調(diào)整,其中 STC89C52是核心元件,同時(shí)采用數(shù)碼管 LED動(dòng)態(tài) 顯示“時(shí)”,“分”,“秒”的現(xiàn)代計(jì)時(shí)裝置。與傳統(tǒng)機(jī)械表相比,它具有走時(shí)精確,顯示直觀等特點(diǎn)。它的計(jì)時(shí)周期為 24小時(shí),顯滿刻度為“ 23時(shí)59分59秒”,另外利 用DS1302具有校
3、時(shí)功能,斷電后有記憶功能,恢復(fù)供電時(shí)可實(shí)現(xiàn)計(jì)時(shí)同步等特點(diǎn)。該 系統(tǒng)同時(shí)具有硬件設(shè)計(jì)簡(jiǎn)單、工作穩(wěn)定性高、價(jià)格低廉等優(yōu)點(diǎn)。關(guān)鍵詞:STC89C52 ; LED數(shù)碼管;8255芯片;DS1302芯片;目錄設(shè)計(jì)要求 11. 方案論證與對(duì)比 11.1方案一 11.2方案二 21.3方案對(duì)比 22. 系統(tǒng)硬件電路的設(shè)計(jì) 32.1單片機(jī)的選擇及引腳功能介紹 32.2 8255A芯片的結(jié)構(gòu)及引腳功能介紹 42.3 DS1302芯片的結(jié)構(gòu)及引腳功能介紹 62.4顯示電路設(shè)計(jì) 72.5電源電路設(shè)計(jì) 82.6鍵盤動(dòng)態(tài)掃描電路設(shè)計(jì) 83. 控制系統(tǒng)的軟件設(shè)計(jì) 103.1 主程序流程圖 103.2顯示子程序 113.3
4、鬧鐘時(shí)間設(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ì)設(shè)計(jì)要求利用單片機(jī)作為控制核心,完成一個(gè)時(shí)鐘計(jì)時(shí)器。具體要求如下:采用6位LED數(shù)碼顯示時(shí)、分、秒。(2) 時(shí)制式為24小時(shí)制。(3) 使用按鍵開關(guān)可實(shí)現(xiàn)時(shí)、分調(diào)整。(4) 秒表/時(shí)鐘功能轉(zhuǎn)換。定時(shí)設(shè)定提醒的功能。(6) 整點(diǎn)提醒(蜂鳴)。(7) DS1302設(shè)時(shí),對(duì)時(shí),掉電記憶時(shí)間的功能。1. 方案論證與
5、對(duì)比1.1方案一此方案采用單片機(jī)內(nèi)部定時(shí)器 T0進(jìn)行計(jì)時(shí),STC89S52實(shí)時(shí)控制。如圖1所示:蜂鳴器STC89C52單片機(jī)定時(shí)器PA/L l6位LED數(shù)碼管顯示|PB18255PC/rJV矩陣鍵盤P0P2圖1方案一系統(tǒng)方框圖1.2方案二此方案采用專用時(shí)鐘芯片 DS1302精確計(jì)時(shí),單片機(jī)STC89C52實(shí)時(shí)讀取時(shí)鐘顯 示至6位數(shù)碼管。如圖2所示:圖2方案二系統(tǒng)方框圖1.3方案對(duì)比以上方案中,方案一設(shè)計(jì)簡(jiǎn)潔,編程比較簡(jiǎn)單,計(jì)時(shí)精度不高,準(zhǔn)確性不能完全 保證。雖硬件簡(jiǎn)潔、成本更低廉、便于實(shí)現(xiàn),綠色環(huán)保,編程簡(jiǎn)單易寫,不能達(dá)到提 高同學(xué)們編程的能力和對(duì)單片機(jī)及其擴(kuò)展芯片的學(xué)習(xí)和深程度的去了解單片機(jī)
6、及其 更廣泛的應(yīng)用,故在此我們選擇挑戰(zhàn),放棄對(duì)其選擇。雖然我們對(duì)其進(jìn)行了放棄,但 我們也把此方法的程序?qū)懞靡员氵M(jìn)行對(duì)比。方案二與方案一相比,編程比較復(fù)雜,計(jì)時(shí)精度較高,而且可以靈活運(yùn)用,可擴(kuò) 展性好,并能充分的利用單片機(jī)的有效資源。 還可讓我們培養(yǎng)我們的自學(xué)能力,自己 去發(fā)掘單片機(jī)內(nèi)部結(jié)構(gòu)及其擴(kuò)展功能,自己去學(xué)會(huì)怎樣對(duì)其他芯片控制的學(xué)習(xí)方法, 使得課程設(shè)計(jì)具有一定的挑戰(zhàn)性,正因如此,故我們選擇方案二。2. 系統(tǒng)硬件電路的設(shè)計(jì)2.1單片機(jī)的選擇及引腳功能介紹STC89C52具有如下特點(diǎn):40個(gè)引腳(引腳圖如圖四所示),4k Bytes Flash片內(nèi) 程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)
7、存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O) 口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通 信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。此外,STC89C52RC設(shè)計(jì)和配置了振蕩頻率可為 0Hz并可通過軟件設(shè)置省電模 式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù) 工作,掉電模式凍結(jié)振蕩器而保存 RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活 或硬件復(fù)位。同時(shí)該芯片還具有 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個(gè)TTL門電流;P1 口( 1 8): P1 口是從內(nèi)部提供上拉電阻器的8位雙向I/O 口,P1 口緩沖器能接 收和輸出4個(gè)TTL門電流;P2口(21 28): P2口為內(nèi)部上拉電阻器的8位雙向I/O 口,P2口緩沖器可接收和 輸出4
10、個(gè)TTL門電流;卩3口( 1017): P3口是8個(gè)帶內(nèi)部上拉電阻器的雙向I/O 口,可接收和輸出4個(gè) TTL門電流,P3口也可作為AT89C51的特殊功能口;RST (9):復(fù)位輸入。當(dāng)振蕩器復(fù)位時(shí),要保持RST引腳2個(gè)機(jī)器周期的高電平時(shí)間;ALE/PROG (30):當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地 址的低位字節(jié),在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6,它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的,要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過1個(gè)ALE脈沖;PSEN( 29):外部程序存儲(chǔ)器的選
11、通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè) 機(jī)器周期2次PSEN有效,但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這2次有效的PSEN信號(hào)將不 出現(xiàn);EA/VPP (31):當(dāng)EA保持低電平時(shí),外部程序存儲(chǔ)器地址為(0000H FFFFH) 不管是否有內(nèi)部程序存儲(chǔ)器。FLASH編程期間,此引腳也用于施加12V編程電源(VPP);XTAL1 (19):反向振蕩器放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入;XTAL2 (18):來自反向振蕩器的輸出。2.2 8255A芯片的結(jié)構(gòu)及引腳功能介紹8255A芯片是In tel公司生產(chǎn)的通用可編程并行接口電路,廣泛應(yīng)用于單片機(jī)擴(kuò) 展并行I/O 口。它具有8個(gè)位并行口 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個(gè)8位并行I/O 口: A 口、B 口、C口。3個(gè)I/O 口都可以通過編程選擇為輸入口或輸出口,但在結(jié)構(gòu)和功能上有所不同。A 口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器。B 口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器(不鎖存)。C 口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器(不鎖存)。當(dāng)數(shù)據(jù)傳送不需要聯(lián)絡(luò)信號(hào)時(shí),這 3個(gè)端口都可以用作輸入口或輸出口。當(dāng)A口 B 口需要有聯(lián)絡(luò)信號(hào)時(shí),C 口
13、可以作為A 口和B 口的聯(lián)絡(luò)信號(hào)線。b. 工作方式控制電路:8255A的三個(gè)端口在使用使可分為 A、B兩組。A組包括A 口 8位和C 口高4位:B組包括B 口 8位和C 口低4位。兩組的控制電路中分別 有控制寄存器,根據(jù)寫入的控制字決定兩組的工作方式,也可對(duì)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)信號(hào),轉(zhuǎn)變成各種控制命令送到數(shù)據(jù)緩沖器及 A組和B組的控制電路,控制 A、B、C3個(gè)端口的操作。其引腳圖如圖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個(gè)引腳,一般為雙列直插 DIP封裝,40個(gè)引腳可分為與CPU連接的數(shù)據(jù)線、地址和控制信號(hào)以及與外圍設(shè)備連接的三個(gè)端口線。DOD7:雙向三態(tài)數(shù)據(jù)總線。RESET:復(fù)位信號(hào),輸入,高電平有效。復(fù)位后,控制寄存器清 0, A 口、B 口、 C 口被置為輸入方式。CS:片選信號(hào),輸入,低電平有效。RD.:讀信號(hào),輸入,低電平有效。有效時(shí),允許 CPU通過8255A D0D7讀取 數(shù)據(jù)或狀態(tài)信息。WR.:寫信號(hào),輸入,低電平有效。有效時(shí),允許A1A0 :端口控制信號(hào),輸入。2位可構(gòu)成四種狀態(tài),分別尋址 A 口、B 口、C 口和控制寄存器PA
16、0PA7: A 口數(shù)據(jù)線,雙向。PBOPB7: B 口數(shù)據(jù)線,雙向。PC0PC7: C 口數(shù)據(jù)/信號(hào)線,雙向。當(dāng)8255A工作于方式0時(shí),PC0PC7分 為兩組(每組4位)并行I/O數(shù)據(jù)線;當(dāng)8255A工作于方式1或方式2時(shí),PC0PC7 為A 口、B 口提供聯(lián)絡(luò)信號(hào)。2.3 DS1302芯片的結(jié)構(gòu)及引腳功能介紹DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工 作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次 傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或 RAM數(shù)據(jù)。DS1302內(nèi)
17、部有一個(gè)31X8的用于臨時(shí)性存 放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了 主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。(1). DS1302的引腳功能及結(jié)構(gòu)DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的 情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng) Vcc2 大于 Vcc1 + 0.2V 時(shí),Vcc2 給 DS1302供電。當(dāng) Vcc2 小于 Vcc1 時(shí),DS1302 由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)
18、位/片選線,通過 把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。 RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或 多字節(jié)數(shù)據(jù)的傳送手段。當(dāng) RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì) DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O 引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在 Vcc>2.5V之前,RST必須保持低電平。只有在 SCLK為低電平時(shí),才能將 RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后 面有詳細(xì)說明。SCLK始終是輸入端。DS1302的引腳功能以及單片機(jī)的連接圖如圖6R
19、32K圖6 DS1302引腳及其與單片機(jī)連接的原理圖2.4顯示電路設(shè)計(jì)單片機(jī)中通常用七段LED構(gòu)成字型“8,另外,還有一個(gè)小數(shù)點(diǎn)發(fā)光二極管以顯 示小數(shù)位!這種顯示器有共陰和共陽兩種!發(fā)光二極管的陽極連在一起的(公共端) 稱為共陽極顯示器,陰極連在一起的稱為共陰極顯示器。一位顯示器由8個(gè)發(fā)光二極 管組成,其中,7個(gè)發(fā)光二極管構(gòu)成字型“8的各個(gè)筆劃(段),a_g另一個(gè)小數(shù)點(diǎn)為 dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時(shí),該段筆畫即亮;不 加電壓則暗。為了保護(hù)各段 LED不被損壞,需外加限流電阻。由于共陰極連接需加 驅(qū)動(dòng),故在這里我采用的是共陽陽極連接。以共陽極LED為例,各LED公共
20、陽極K0接高電平,若向各控制端a,b, g,dp 順次送入00011110言號(hào),則該顯示器顯示 7”字型。共陰極7段LED顯示數(shù)字0 F、文字、符號(hào)及小數(shù)點(diǎn)的編碼(a段為最地位,dp點(diǎn)為最高位),如圖7圖7數(shù)碼管的驅(qū)動(dòng)顯示電路設(shè)計(jì)F -4= PSIR27 : TE : 恵-2.5電源電路設(shè)計(jì)在各種電子設(shè)備中,直流穩(wěn)壓電源是必不可少的組成部分, 它是電子設(shè)備唯一能 量來源,它的設(shè)計(jì)思路是根據(jù)我們以前學(xué)過的模電電子技術(shù),要想得到我們所要的 +6V輸出電壓,就需將交流220V的電壓經(jīng)過變壓器、整流電路、濾波電路和穩(wěn)壓電 路四個(gè)部分。2.6鍵盤動(dòng)態(tài)掃描電路設(shè)計(jì)在單片機(jī)系統(tǒng)中按鍵數(shù)量較多時(shí),為了減少I/
21、O 口的占用,常常將按鈕排列成矩 陣式鍵盤中,每條水平線和直線在交叉處不直接連通,而是通過一個(gè)按鈕加以連接。 這樣,一個(gè)端口(如P1 口)就能組成4*4=16個(gè)按鈕,比之直接將端口線用于鍵盤 多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條就能組成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是最合理的矩陣式鍵盤的按鈕識(shí)別辦法確定矩陣式鍵盤上何鍵被按下簡(jiǎn)紹一種“行掃描 法”行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的,按鈕識(shí)別辦法, 如下圖示鍵盤,介紹過程如下。判斷鍵盤中有無鍵盤按下將全部行線置低電平,然后檢測(cè)列的電平為低,則
22、表 示鍵盤中有鍵被按下,而且閉合的鍵位位于低電平線與 4根行線相交叉的4個(gè)按鈕之 中。若所有列線均為高電平,則鍵盤中無鍵按下。判斷閉合鍵所在的位置:在確認(rèn)有鍵按下后,即可置某根行線為低電平時(shí),其 他線為高電平。在確定某根位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。 若某列 為低,則該列與置為低電平的行線交叉處的按鈕就是閉合的按鈕。將程序通過串口下載到單片機(jī)中,在鍵盤上按任意鍵時(shí),將會(huì)在數(shù)碼管上顯示對(duì)應(yīng)的字符。為了驅(qū)動(dòng)鍵盤,同上以8255_PC第四位作為輸入,8255PC高四位作為列掃描 輸出,以此來實(shí)現(xiàn)動(dòng)態(tài)掃描顯示法。如圖 8所示:圖8鍵盤動(dòng)態(tài)掃描電路設(shè)計(jì)3. 控制系統(tǒng)的軟件設(shè)計(jì)3.1主程序流
23、程圖本設(shè)計(jì)中主程序主要實(shí)現(xiàn)顯示的初始化和調(diào)用各子程序工作的功能,讀取時(shí)間的子程序主要實(shí)現(xiàn)初始化,時(shí)間信息的采集和顯示段碼的碼的存取。 分別對(duì)各個(gè)器件的 功能進(jìn)行編程設(shè)計(jì),根據(jù)主程序流程圖(如下)進(jìn)行全面的分析。設(shè)計(jì)中計(jì)時(shí)主要以 定時(shí)器TO中斷完成,定點(diǎn)鬧鈴使用峰鳴器來完成。當(dāng)端口有開關(guān)按下時(shí),轉(zhuǎn)入相應(yīng) 的功能程序。其主程序執(zhí)行流程圖如下圖 9:開始圖9主程序流程圖3.2顯示子程序時(shí)間顯示子程序顯示時(shí)鐘芯片 3個(gè)內(nèi)存單元(小時(shí)、分鐘、秒鐘)的 BCD碼數(shù) 據(jù),8255的PA 口送數(shù)碼管的位選編碼。8255的PB 口送段選編碼,位選段選編碼存 放在ROM表中。顯示時(shí),先取出位選編碼數(shù)據(jù),然后送至
24、PA 口輸出,接著取出段選編碼數(shù)據(jù)送 至PB 口輸出,剩下的數(shù)碼管以同樣地方法送數(shù)據(jù)直到將3個(gè)內(nèi)存單元的數(shù)據(jù)分成6個(gè)位全部送去數(shù)碼管顯示。數(shù)碼管顯示子程序流程圖如圖9所示:開始;. 結(jié)束圖10 數(shù)碼管顯示子程序流程圖3.3鬧鐘時(shí)間設(shè)定功能程序在時(shí)鐘狀態(tài)下,觸發(fā)外中斷1時(shí),進(jìn)入鬧鐘時(shí)間設(shè)定模式,且不影響 T0計(jì)時(shí)器 的功能狀態(tài),在鍵盤上輸入對(duì)應(yīng)的數(shù)字進(jìn)行時(shí)間設(shè)定。當(dāng)分別按下調(diào)節(jié)時(shí)鐘、分鐘和 秒鐘的個(gè)位時(shí),時(shí)間自動(dòng)確定,鬧鐘時(shí)間只精確到分鐘。鬧鐘時(shí)間設(shè)定流程圖如圖11所示:開始_,3達(dá)到預(yù)設(shè)時(shí)間一1<J-丄_ 二?YFN一一一一 鬧鈴C返回丿圖11鬧鐘時(shí)間設(shè)定流程圖3.4鍵盤掃描程序本設(shè)計(jì)采
25、用動(dòng)態(tài)掃描法,動(dòng)態(tài)掃描法不僅掃描鍵陣,也可以實(shí)現(xiàn)顯示,是目前應(yīng) 用十分廣泛的一種方法。動(dòng)態(tài)掃描法是采用輸出“移動(dòng)”信號(hào),輪流對(duì)各行按鍵進(jìn)行 檢測(cè)來實(shí)現(xiàn)的。設(shè)置行線為輸出,列線為輸入,當(dāng)無按鍵按下時(shí),列輸入全為“1” .設(shè)計(jì)時(shí),將某一行輸出為“ 0”,讀取列線值,若其中某一位為“ 0”,則表明行、列交 叉處的按鍵按下,否則,無按鍵按下;繼續(xù)掃描下一行(將下一行輸出為“0”),直至全掃描完為止。鍵盤掃描程序流程圖如 12圖所示:開始返回圖12鍵盤掃描程序流程圖4. 系統(tǒng)功能調(diào)試與整體指標(biāo)4.1硬件調(diào)試與分析(1) 時(shí)間準(zhǔn)確性調(diào)試硬件調(diào)試時(shí)可先檢查印制版及焊接的質(zhì)量情況,將電子時(shí)鐘通電后,顯示00:
26、00: 00。觸發(fā)INTO中斷開始計(jì)時(shí),每過一秒時(shí)間就顯示變化一次。計(jì)時(shí)準(zhǔn)確,顯示 穩(wěn)定。(2) 鬧鈴功能調(diào)試將時(shí)鐘調(diào)到11點(diǎn)59分58秒,2秒后,時(shí)鐘開始定點(diǎn)鬧鈴,鈴聲為“嘀-嘀-嘀- 嘀”聲,持續(xù)1分鐘報(bào)時(shí)聲自動(dòng)停止也可以觸發(fā)功能鍵來中止鬧鈴。設(shè)計(jì)的電子時(shí)鐘計(jì)時(shí)精確度較高,并可應(yīng)用于日常生活中。能夠通過鍵盤對(duì)電子時(shí)鐘進(jìn)行調(diào)整,且調(diào)整過程簡(jiǎn)單方便,易于操作,有較強(qiáng)的人性化設(shè)計(jì)。并且可通過鍵盤實(shí)現(xiàn)鬧鈴與時(shí)間模式的切換,使電子時(shí)鐘的功能更加強(qiáng)大。能夠進(jìn)行定時(shí)鬧鈴,計(jì)時(shí)較準(zhǔn)確,基本能實(shí)現(xiàn)測(cè)試目標(biāo)。4.2軟件調(diào)試與分析軟件調(diào)時(shí)在KEIL C51編譯器下進(jìn)行,源程序編譯及仿真調(diào)試應(yīng)分段或以子程序 為單
27、位逐個(gè)進(jìn)行,最后可結(jié)合硬件實(shí)時(shí)調(diào)試。4.3性能分析按照設(shè)計(jì)程序分析,LED顯示器動(dòng)態(tài)掃描的頻率為167HZ,實(shí)際使用觀察時(shí)完 全沒有閃爍。由于計(jì)時(shí)中斷程序中加了中斷延時(shí)誤差處理, 所以實(shí)際計(jì)時(shí)精度非常高, 可滿足多種場(chǎng)合的應(yīng)用需要。5. 詳細(xì)儀器清單表格1儀器清單儀器名稱儀器名稱STC89C52STC89C528255A8255A3位數(shù)碼管3位數(shù)碼管2個(gè)DS1302DS130211.0592k 晶振11.0592k 晶振32.768k 晶振32.768k 晶振矩陣鍵盤4X4矩陣30PF電容30PF電容100PF電容100PF電容1K電阻1K電阻蜂鳴器蜂鳴器6. 總結(jié)與思考及致謝在老師的指導(dǎo)和同
28、學(xué)的幫助之下,我完成了此次單片機(jī)課程設(shè)計(jì)。從開始接到課 題要求到時(shí)鐘的實(shí)現(xiàn),再到論文的完成,每走一步對(duì)我來說都是新的嘗試與挑戰(zhàn)。 在 這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí), 也培養(yǎng)了我如何去把握一件事情,如 何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們 相互探討,相互學(xué)習(xí),相互監(jiān)督。課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練, 著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過程。這次時(shí)鐘計(jì)時(shí)器設(shè)計(jì)的經(jīng)歷也會(huì)使我終身受益,我感受到做設(shè)計(jì)是要用心去做的 一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力, 沒有自己的研究,就不會(huì)有所突破。通
29、過設(shè)計(jì),我在老師的精心指導(dǎo)和嚴(yán)格要求下, 獲得了豐富的理論知識(shí),極大地提高了實(shí)踐能力。最后,再一次感謝我的老師.,老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我學(xué)習(xí)的 榜樣;老師循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪;這次時(shí)鐘計(jì)時(shí)器設(shè)計(jì)的每個(gè)環(huán)節(jié),都離不開老師您的細(xì)心指導(dǎo)。我懂得了學(xué)習(xí)的重要性,了解到理論知 識(shí)與實(shí)踐相結(jié)合的重要意義,學(xué)會(huì)了堅(jiān)持、耐心和努力,這將為自己今后的學(xué)習(xí)和工 作做出了最好的榜樣。參考文獻(xiàn)1 余錫存單片機(jī)原理及接口技術(shù)M.西安:西安電子科技大學(xué)出版社,20002 賈好來.MCS-51單片機(jī)原理及應(yīng)用M.北京:機(jī)械工業(yè)出版社,20063 樓然苗,李光飛單片機(jī)課程設(shè)計(jì)指導(dǎo)M.北
30、京:北京航空航天大學(xué)出版社,20074 夏路易,石宗義電路原理圖與電路板設(shè)計(jì)教程北京希望電子工業(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í)函數(shù)聲明1毫秒void keysca n();鍵盤掃描函數(shù)void mai n()PCON=0x80;in it();while(1)主體循環(huán)keysca n();/時(shí)鐘分離部分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;/時(shí)鐘顯示和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);/*整點(diǎn)報(bào)時(shí)*/if(aa=0&&bb=O)TR 1=1;flag=1;/報(bào)時(shí)10秒開啟定時(shí)器1控制整點(diǎn)報(bào)時(shí)計(jì)數(shù) num1+/*鬧鐘報(bào)時(shí) *if(aa=sec ond&&bb=
34、min&&cc=hour)/鬧時(shí)一分鐘TR1=1;開啟定時(shí)器1flag1=1;/控制鬧鐘計(jì)數(shù) num2+/*初始化函數(shù)*/void in it() /* 定時(shí)器 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/定時(shí)0時(shí)鐘函數(shù)(控制數(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 定時(shí)1時(shí)鐘函數(shù)(控制整點(diǎn)報(bào)時(shí)時(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時(shí)鐘加一按鍵II清零按鍵II松手檢測(cè)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 勵(lì)!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;/*毫秒延時(shí)程序*/void delay(
44、uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-)/*微秒延時(shí)程序* 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è)置初始時(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è)置好的時(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ù)為每個(gè)數(shù)碼管的段選序號(hào))*/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);/*小時(shí)加一調(diào)整(供鍵盤設(shè)置小時(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);/*矩陣鍵盤檢測(cè)*/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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 朔州師范高等??茖W(xué)?!夺t(yī)學(xué)微生物學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南科技職業(yè)學(xué)院《現(xiàn)代機(jī)械控制工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 長春金融高等??茖W(xué)校《小學(xué)課堂組織與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 西南民族大學(xué)《創(chuàng)新設(shè)計(jì)思維》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年度木材砍伐與林業(yè)碳匯交易合同
- 展覽館衛(wèi)生間裝修合同樣本
- 二零二五年度商鋪買賣及配套設(shè)備移交合同
- 二零二五年度金融業(yè)風(fēng)險(xiǎn)管理軟件購銷合同范本
- 《情景洋房專項(xiàng)研究》課件
- 秋瑾《滿江紅》課件
- 酒店春節(jié)營銷方案
- 營銷管理方案中的定價(jià)策略與盈利模式
- 2024年西寧城市職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 2024年臨沂市高三一模(學(xué)業(yè)水平等級(jí)考試模擬試題)物理試卷
- 廣州獵德大橋三維曲面塔清水混凝土施工技術(shù)
- 我國糖尿病視網(wǎng)膜病變臨床診療指南2022解讀
- 高級(jí)茶藝師技能鑒定(協(xié)會(huì)版)備考題庫-下(多選、判斷題匯總)
- 特種設(shè)備作業(yè)人員體檢表(叉車)
- c30混凝土路面施工方案
- 加強(qiáng)師德師風(fēng)建設(shè)學(xué)校師德師風(fēng)警示教育講座培訓(xùn)課件
- 豬飼料購銷合同書
評(píng)論
0/150
提交評(píng)論