基于單片機(jī)的電子鐘設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的電子鐘設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的電子鐘設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的電子鐘設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的電子鐘設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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、設(shè)計(jì)題目:電子時(shí)鐘設(shè)計(jì)專(zhuān) 業(yè):電子信息工程技術(shù)班 級(jí):姓 名:學(xué) 號(hào):指導(dǎo)教師:摘要20 世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社 會(huì)的各個(gè)領(lǐng)域, 有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高, 同時(shí)也使現(xiàn)代 電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快. 現(xiàn)代生活的人們?cè)絹?lái)越重視起了時(shí)間觀念, 可以說(shuō)是時(shí)間和金錢(qián)劃上了等號(hào). 對(duì)于那 些對(duì)時(shí)間把握非常嚴(yán)格和準(zhǔn)確的人或事來(lái)說(shuō), 時(shí)間的不準(zhǔn)確會(huì)帶來(lái)非常大的麻煩, 所以以 數(shù)碼管為顯示器的時(shí)鐘比指針式的時(shí)鐘表現(xiàn)出了很大的優(yōu)勢(shì). 數(shù)碼管顯示的時(shí)間簡(jiǎn)單明了 而且讀數(shù)快,時(shí)間準(zhǔn)確顯示到秒.而機(jī)械式的依賴(lài)于晶體震

2、蕩器,可能會(huì)導(dǎo)致誤差. 數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí)分秒數(shù)字顯示的計(jì)時(shí)裝置.數(shù)字鐘的精度,穩(wěn)定度遠(yuǎn)遠(yuǎn)超過(guò)老式機(jī)械鐘.在這次設(shè)計(jì)中,我們采用 LED 數(shù)碼管顯示時(shí),分,秒, 以 24 小時(shí)計(jì)時(shí)方式,根據(jù)數(shù)碼管動(dòng)態(tài)顯示原理來(lái)進(jìn)行顯示,用 12MHz 的晶振產(chǎn)生振蕩脈 沖,定時(shí)器計(jì)數(shù).在此次設(shè)計(jì)中,電路具有顯示時(shí)間的其本功能,還可以實(shí)現(xiàn)對(duì)時(shí)間的調(diào) 整.數(shù)字鐘是其小巧,價(jià)格低廉,走時(shí)精度高,使用方便,功能多,便于集成化而受廣大 消費(fèi)的喜愛(ài),因此得到了廣泛的使用. 隨著現(xiàn)代生活的推進(jìn),電子時(shí)鐘在人們的生活中已經(jīng)普及,本課題的主要內(nèi)容就是結(jié)合單片機(jī)的強(qiáng)大功能,在一塊普通的電子時(shí)鐘集成多種功能,方便人們的日

3、常生活,該功能是通過(guò)單片機(jī)、8段數(shù)碼管以及一些簡(jiǎn)單輔助電路實(shí)現(xiàn)的。隨著生活中電子表使用的普遍,該設(shè)計(jì)的可行性已變的可能,所以本設(shè)計(jì)是在結(jié)合生活實(shí)際運(yùn)用的基礎(chǔ)上而做出的,而單片機(jī)更是電子電路中運(yùn)用最普遍的芯片,所以該畢業(yè)設(shè)計(jì)在這兩大主題的基礎(chǔ)上結(jié)合keil與protues等軟件的功能。該設(shè)計(jì)硬件結(jié)構(gòu)簡(jiǎn)單,軟件設(shè)計(jì)條理清晰,是一個(gè)很實(shí)用及很常見(jiàn)的多功能時(shí)鐘。由于之前沒(méi)有獨(dú)立做過(guò)單片機(jī)實(shí)現(xiàn)多功能電子時(shí)鐘方面的內(nèi)容,所以在做設(shè)計(jì)時(shí)總會(huì)遇見(jiàn)很多問(wèn)題,本次設(shè)計(jì)是在結(jié)合老師的指導(dǎo)及同學(xué)的幫助下完成的,并通過(guò)本人在網(wǎng)上所查的大量資料及單片機(jī)設(shè)計(jì)中常見(jiàn)的電路而構(gòu)思出來(lái)的。關(guān)鍵字: 數(shù)字電子鐘 單片機(jī)前言單片機(jī)也

4、被稱(chēng)為微控制器(Microcontroller Unit),常用英文字母的縮寫(xiě)MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專(zhuān)用處理器發(fā)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專(zhuān)用處理器的發(fā)展便分道揚(yáng)鑣。單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。RAM ,ROM,CPU構(gòu)成,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性

5、的一種。這次任務(wù)設(shè)計(jì)通過(guò)對(duì)它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開(kāi)發(fā)軟、硬的能力。本設(shè)計(jì)采取單片機(jī)STC89C52、按鍵開(kāi)關(guān)與8段數(shù)碼顯示管顯示模塊相結(jié)合實(shí)現(xiàn)不同多種功能,此外還有一些簡(jiǎn)單的輔助電路,例如屏燈電路及上電復(fù)位及手動(dòng)復(fù)位電路,這些簡(jiǎn)單的輔助電路加上單片機(jī)及按鍵開(kāi)關(guān),顯示系統(tǒng)共同構(gòu)成了整個(gè)硬件設(shè)計(jì),8段數(shù)碼管是通過(guò)單片機(jī)的控制來(lái)實(shí)現(xiàn)顯示信息的,通過(guò)網(wǎng)上固定的顯示編碼,隨時(shí)間的變化,要顯示的時(shí)間變量隨之變化,通過(guò)顯示程序?qū)崟r(shí)調(diào)用顯示數(shù)組中與之對(duì)應(yīng)的編碼實(shí)現(xiàn)實(shí)時(shí)顯示,最后與程序一同燒進(jìn)單片機(jī),在上電復(fù)位等相關(guān)的輔助電路下,從而完成整個(gè)設(shè)計(jì)。這個(gè)構(gòu)思是結(jié)合單片機(jī)的原理及應(yīng)用等書(shū)籍上常見(jiàn)的輔助

6、電路加上數(shù)碼管的接口電路及接口技術(shù)而設(shè)計(jì)出來(lái)的,硬件電路比較簡(jiǎn)單。軟件方面采用結(jié)構(gòu)化的C51作為編程語(yǔ)言,通過(guò)按鍵檢測(cè)調(diào)用不同的功能函數(shù)實(shí)現(xiàn)電子時(shí)鐘的不同功能,結(jié)構(gòu)化,模塊化較高,流程比較清晰。單片機(jī)電子時(shí)鐘,是利用單片機(jī)技術(shù)實(shí)現(xiàn)計(jì)時(shí)、時(shí)間顯示、時(shí)間調(diào)整、定時(shí)調(diào)整、鬧鈴等功能。完成該項(xiàng)目能夠有效的訓(xùn)練大家的單片機(jī)應(yīng)用能力,電子時(shí)鐘的設(shè)計(jì)過(guò)程中,除了應(yīng)用單片機(jī)前六課題的基礎(chǔ)知識(shí)外,還使用了外部中斷技術(shù)、定時(shí)器中斷技術(shù)、鍵盤(pán)查詢(xún)及動(dòng)態(tài)顯示技術(shù),希望大家通過(guò)該項(xiàng)目的設(shè)計(jì),對(duì)單片機(jī)應(yīng)用技術(shù)有一個(gè)較深的認(rèn)識(shí)。目錄 一、任務(wù)目的:1二、設(shè)計(jì)要求:11)設(shè)計(jì)并制作出具有如下功能的數(shù)字鐘:12)電路應(yīng)有功能:

7、13)電子時(shí)鐘工作原理:1三、系統(tǒng)方案選擇:21)單片機(jī)選型:22)元件清單列表:23) 計(jì)時(shí)方案:34)定時(shí)方案:35)顯示方案:36)系統(tǒng)方案確定:37)系統(tǒng)設(shè)計(jì)構(gòu)思:3四、系統(tǒng)硬件設(shè)計(jì):41)硬件電路設(shè)計(jì)方案:42)系統(tǒng)硬件描述:43)系統(tǒng)硬件模塊說(shuō)明:44)電子鐘設(shè)計(jì)電路圖:5五、系統(tǒng)軟件設(shè)計(jì):7六、系統(tǒng)調(diào)試與運(yùn)行:14七、任務(wù)小結(jié):14八、參考文獻(xiàn):14一、任務(wù)目的:?jiǎn)纹瑱C(jī)電子時(shí)鐘,是利用單片機(jī)技術(shù)實(shí)現(xiàn)計(jì)時(shí)、時(shí)間顯示、時(shí)間調(diào)整、定時(shí)調(diào)整、鬧鈴等功能。完成該項(xiàng)目能夠有效的訓(xùn)練大家的單片機(jī)應(yīng)用能力,電子時(shí)鐘的設(shè)計(jì)過(guò)程中,除了應(yīng)用單片機(jī)前面的基礎(chǔ)知識(shí)外,還使用了外部中斷技術(shù)、定時(shí)器中斷技術(shù)

8、、鍵盤(pán)查詢(xún)及動(dòng)態(tài)顯示技術(shù),鍛煉獨(dú)立設(shè)計(jì)、制作和調(diào)試應(yīng)用系統(tǒng)的能力,深入領(lǐng)會(huì)單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)、模塊化程序設(shè)計(jì)及軟硬件調(diào)試方法等。二、設(shè)計(jì)要求: 1)設(shè)計(jì)并制作出具有如下功能的數(shù)字鐘:1、 自動(dòng)計(jì)時(shí),由6個(gè)數(shù)碼管顯示時(shí)、分、秒。2、 具備校準(zhǔn)功能,可以設(shè)置當(dāng)前時(shí)間。3、 具備定時(shí)啟動(dòng)鬧鐘功能,可以設(shè)置啟動(dòng)鬧鐘時(shí)間。2)電路應(yīng)有功能: 單片機(jī)電子時(shí)鐘計(jì) 時(shí) 功 能計(jì) 時(shí) 調(diào) 整定 時(shí) 顯 示定 時(shí) 調(diào) 整定 時(shí) 鬧 鈴計(jì) 時(shí) 顯 示 3)電子時(shí)鐘工作原理: 一般電子鐘是一個(gè)將“ 時(shí)”,“分”,“秒”顯示于人的視覺(jué)器官的計(jì)時(shí)裝置。它的計(jì)時(shí)周期為24小時(shí),顯示滿(mǎn)刻度為23時(shí)59分59秒,另外應(yīng)有

9、校時(shí)功能和報(bào)時(shí)功能。因此,一個(gè)基本的數(shù)字鐘電路主要由譯碼顯示器、“時(shí)”,“分”,“秒”計(jì)數(shù)器、校時(shí)電路、報(bào)時(shí)電路和振蕩器組成。主電路系統(tǒng)由秒信號(hào)發(fā)生器、“時(shí)、分、秒”計(jì)數(shù)器、譯碼器及顯示器、校時(shí)電路、整點(diǎn)報(bào)時(shí)電路組成。秒信號(hào)產(chǎn)生器是整個(gè)系統(tǒng)的時(shí)基信號(hào),它直接決定計(jì)時(shí)系統(tǒng)的精度,一般用石英晶體振蕩器加分頻器來(lái)實(shí)現(xiàn)。將標(biāo)準(zhǔn)秒信號(hào)送入“秒計(jì)數(shù)器”,“秒計(jì)數(shù)器”采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60秒發(fā)出一個(gè)“分脈沖”信號(hào),該信號(hào)將作為“分計(jì)數(shù)器”的時(shí)鐘脈沖?!胺钟?jì)數(shù)器”也采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60分鐘,發(fā)出一個(gè)“時(shí)脈沖”信號(hào),該信號(hào)將被送到“時(shí)計(jì)數(shù)器”?!皶r(shí)計(jì)數(shù)器”采用24進(jìn)制計(jì)時(shí)器,可實(shí)現(xiàn)對(duì)一天24小

10、時(shí)的累計(jì)。譯碼顯示電路將“時(shí)”、“分”、“秒”計(jì)數(shù)器的輸出狀態(tài)用七段顯示譯碼器譯碼,通過(guò)七段顯示器顯示出來(lái)。整點(diǎn)報(bào)時(shí)電路時(shí)根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號(hào),然后去觸發(fā)一音頻發(fā)生器實(shí)現(xiàn)報(bào)時(shí)。校時(shí)電路時(shí)用來(lái)對(duì)“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對(duì)調(diào)整。而該電子時(shí)鐘由89C52,BUTTON,七段數(shù)碼管等構(gòu)成,采用晶振電路作為驅(qū)動(dòng)電路,由延時(shí)程序和循環(huán)程序產(chǎn)生的一秒定時(shí),達(dá)到時(shí)分秒的計(jì)時(shí),六十秒為一分鐘,六十分鐘為一小時(shí),滿(mǎn)二十四小時(shí)為一天。三、系統(tǒng)方案選擇:1)單片機(jī)選型:選用MCS-51系列AT89C52RC2)元件清單列表:序號(hào)名稱(chēng)數(shù)量序號(hào)名稱(chēng)數(shù)量1單片機(jī)AT89S511片92.7K電阻7

11、只212M晶振1個(gè)10104瓷片電容4只3共陽(yáng)數(shù)碼管6只1130P瓷片電容2只4PNP管85507只12200電阻1只574LS2441片13560電阻8只6蜂鳴器1個(gè)1410K電阻12只7微動(dòng)按鍵5個(gè)15100電阻4只810UF電容1只3) 計(jì)時(shí)方案:利用AT89C52內(nèi)部定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本,且能夠使讀者對(duì)當(dāng)前所學(xué)知識(shí)進(jìn)行綜合應(yīng)用,應(yīng)此采用此方案。4)定時(shí)方案:利用AT89C52外部中斷進(jìn)行控制設(shè)定時(shí)間。利用外部中斷0來(lái)完成調(diào)整選擇功能。利用外部中斷1完成定時(shí)顯示,當(dāng)前時(shí)間顯示的切換。5)顯示方案:有兩種:1、利用串行口擴(kuò)展LED,

12、實(shí)現(xiàn)LED靜態(tài)顯示。此方案占用單片機(jī)資源少,且靜態(tài)顯示顯示亮度高,但硬件復(fù)雜。2、利用單片機(jī)并行I/O端口,實(shí)現(xiàn)LED動(dòng)態(tài)顯示。此方案無(wú)須外擴(kuò)接口芯片,但占用資源較多,且需占用CPU時(shí)間。 經(jīng)過(guò)對(duì)該項(xiàng)目的分析,這里采用動(dòng)態(tài)顯示方案。6)系統(tǒng)方案確定: 綜合上述方案分析,本系統(tǒng)選用AT89C52RC單片機(jī)作為主控制器,采用單片機(jī)內(nèi)部定時(shí)器實(shí)現(xiàn)計(jì)時(shí)、動(dòng)態(tài)LED顯示和外部中斷控制顯示鬧鈴。7)系統(tǒng)設(shè)計(jì)構(gòu)思:1主流程是取時(shí)間參數(shù),顯示時(shí)間參數(shù)。2利用T0中斷來(lái)完成計(jì)時(shí)、比較定時(shí)時(shí)間、驅(qū)動(dòng)鬧鈴。3利用T1中斷完成動(dòng)態(tài)顯示中,調(diào)整時(shí)間閃爍效果的定時(shí)。4利用外部中斷0來(lái)完成調(diào)整選擇功能。5利用外部中斷1完成

13、定時(shí)顯示,當(dāng)前時(shí)間顯示的切換6K3、K4鍵完成時(shí)間參數(shù)的循環(huán)加1操作。四、系統(tǒng)硬件設(shè)計(jì):AT89C52RC 1)硬件電路設(shè)計(jì)方案:LED顯示模塊按鍵控制模塊 2)系統(tǒng)硬件描述:1 控制器用AT89C52 , 12M晶振2 數(shù)碼管動(dòng)態(tài)掃描驅(qū)動(dòng)P2口3 數(shù)碼管段碼驅(qū)動(dòng)P1口4 鬧鈴驅(qū)動(dòng)P1.05 調(diào)整鍵K1P3.2(外部中斷0, 正常、調(diào)時(shí)、調(diào)分、調(diào)秒)6 定時(shí)/正常切換鍵K2P3.37 時(shí)間參數(shù)低位加1鍵K3P3.48 時(shí)間參數(shù)高位加1鍵K4P3.5 3)系統(tǒng)硬件模塊說(shuō)明:1. 按鍵模塊在該模塊中,采用四個(gè)按鍵作為電子時(shí)鐘的控制輸入,通過(guò)按鍵來(lái)實(shí)現(xiàn)時(shí)鐘的時(shí)間設(shè)置、定時(shí)、秒表功能。電路中將四個(gè)按鍵

14、的一端接公共地,而單片機(jī)的P2口默認(rèn)為高電平,一旦按鍵被按下,則該按鍵對(duì)應(yīng)的額管腳被拉低,通過(guò)軟件掃描按鍵即可知道用戶(hù)所要實(shí)現(xiàn)的功能,調(diào)用相應(yīng)的按鍵子程序來(lái)完成該操作。按鍵的去抖動(dòng)由軟件來(lái)實(shí)現(xiàn)。2. 單片機(jī)復(fù)位電路模塊當(dāng)MCS-5l系列單片機(jī)的復(fù)位引腳RST(全稱(chēng)RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位和上電或開(kāi)關(guān)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。上電后,保持RST一段高電平時(shí)間。3. 單片機(jī)晶振電路模塊 石英晶體也連接在晶振引腳的輸入和輸出之間,等效為

15、一個(gè)并聯(lián)諧振回路,振蕩頻率應(yīng)該是石英晶體的并聯(lián)諧振頻率。晶體旁邊的兩個(gè)電容接地,實(shí)際上就是電容三點(diǎn)式電路的分壓電容, 接地點(diǎn)就是分壓點(diǎn)。以接地點(diǎn)即分壓點(diǎn)為參考點(diǎn),振蕩引腳的輸入和輸出是反相的,但從并聯(lián)諧振回路即石英晶體兩端來(lái)看, 形成一個(gè)正反饋以保證電路持續(xù)振蕩。4. 鬧鈴電路模塊 發(fā)聲部分由電源,10K歐、2.7K歐電阻,PNP三極管,蜂鳴器五部分組成。蜂鳴器由PNP三極管驅(qū)動(dòng),當(dāng)BZ管腳(P1.0)為高時(shí),三極管be級(jí)沒(méi)電壓差,三極管截止;反之,三極管導(dǎo)通,有電流流經(jīng)蜂鳴器,蜂鳴器發(fā)聲。5. 時(shí)間顯示模塊 時(shí)間顯示部分的電路也很簡(jiǎn)單,由六個(gè)共陽(yáng)七段數(shù)碼管加上一個(gè)74LS244譯碼驅(qū)動(dòng)電路組

16、成。在顯示過(guò)程中,單片機(jī)將要顯示的數(shù)字傳遞給74LS244芯片,同時(shí)通過(guò)位選選通要顯示的數(shù)碼管。74LS244芯片實(shí)現(xiàn)將BCD碼數(shù)字轉(zhuǎn)換為七段數(shù)碼管段選碼通過(guò)其輸出端輸出,同時(shí)提供約500mA的電流驅(qū)動(dòng)數(shù)碼管點(diǎn)亮。 4)電子鐘設(shè)計(jì)電路圖:電子鐘硬件設(shè)計(jì)電路五、系統(tǒng)軟件設(shè)計(jì):明確任務(wù)要求,完成方案設(shè)計(jì)和硬件電路制作后,進(jìn)入系統(tǒng)軟件設(shè)計(jì)階段。我們采用自頂向下、逐步細(xì)化的模塊化設(shè)計(jì)方法。系統(tǒng)源程序如下:/單片機(jī)電子時(shí)鐘/實(shí)現(xiàn)計(jì)時(shí)、時(shí)間顯示、時(shí)間調(diào)整、定時(shí)調(diào)整、鬧鈴等功能/文件名:DZSZ.c#include #include #define uchar unsigned char #define u

17、int unsigned int #define seg7_data P0 /七段數(shù)碼管顯示數(shù)據(jù) #define wx P2 /6 個(gè)數(shù)碼管位選 P2.0-P2.5-低電平#define N1 2 #define N2 10 /*-數(shù)字鐘端口定義-*/sbit ks=P32; /時(shí)、分、秒選擇鍵-外部中斷 0 sbit kd=P33; /定時(shí)/時(shí)間切換鍵-外部中斷 1 sbit kl=P34; /時(shí)間低位加 1 鍵-軟件掃描 sbit kh=P35; /時(shí)間高位加 1鍵-軟件掃描 sbit spk=P10; /響鈴控制-低電平 /*-全局變量定義-*/uchar H=0,M=0,S=0,T_C

18、ount=0; uchar H_Set=11,M_Set=11,S_Set=11; uchar *Sp=&S,*Mp=&M,*Hp=&H; /時(shí)間指針 uchar Select2Seg=0; /調(diào)時(shí)閃爍位號(hào) uchar Select2Seg_=0; /定時(shí)閃爍位號(hào) uchar *Select2SegP; /閃爍位號(hào)指針 uchar H_h=0,H_l=0,M_h=0,M_l=0,S_h=0,S_l=0; /時(shí)分秒的各位的數(shù)值-用于顯示 uchar SaveH_h=0,SaveH_l=0,SaveM_h=0,SaveM_l=0,SaveS_h=0,SaveS_l=0; /時(shí)分秒的各位的數(shù)值-用于

19、調(diào)時(shí)間時(shí)的數(shù)據(jù)保護(hù) uchar light=0; bit Key3Down=1; /允許 KEY3 按鍵值增加1 的標(biāo)志(個(gè)位加一) bit Key4Down=1; /允許 KEY4 按鍵值增加1 的標(biāo)志(十位加一) bit SetTime=0; /定時(shí)標(biāo)志 1 為定時(shí) /*-蜂鳴器報(bào)警函數(shù)-*/ void SPK(void) if(SetTime=0) spk=0; /定時(shí)到,響鈴響 void TunOffSPK(void) /關(guān)閉響鈴 spk=1; /*-外部中斷 0 初始化函數(shù)-*/ void init_INT0(void) EA=1; /開(kāi)放中斷總允許控制 EX0=1; /開(kāi)放外部中斷

20、0允許位 PX0=0; /外部中斷0為低優(yōu)先級(jí)中斷 IT0=1; /設(shè)置外部中斷為下降沿觸發(fā)方式 /*-T0初始化為 50mS 定時(shí),并啟動(dòng)-*/ void init_t0() TMOD=(TMOD&0xF0)|0x01; /定時(shí)器T0,方式 1:16位定時(shí) TH0=0x3C; /定時(shí)50ms初值 TL0=0xB0; EA=1; /開(kāi)放中斷總允許控制 ET0=1; /允許T0中斷 PT0=1; /設(shè)定定時(shí)器T0為高優(yōu)先級(jí)中斷 TR0=1; /啟動(dòng)定時(shí)器T0 /*-外部中斷 1 初始化函數(shù)-*/ void init_INT1(void) EA=1; /開(kāi)放中斷總允許控制EX1=1; /開(kāi)放外部中

21、斷1允許位PX1=0; /外部中斷1為低優(yōu)先級(jí)中斷IT1=1; /設(shè)置外部中斷為下降沿觸發(fā)方式 /*-T1初始化為 50mS 定時(shí),并啟動(dòng)-*/void init_t1(void) TMOD=(TMOD&0x0F)|0x10;/定時(shí)器 1,方式 1:16位定時(shí) TH1=0x3C; /定時(shí)50ms初值 TL1=0xB0; EA=1; /開(kāi)放中斷總允許控制 ET1=1; /允許T1中斷 PT1=0; /設(shè)定定時(shí)器T1為高優(yōu)先級(jí)中斷 TR1=1; /啟動(dòng)定時(shí)器T1 /*-外部中斷 0 子函數(shù)-*/void Int0(void) interrupt 0 using 2 /位號(hào)閃爍控制函數(shù) if(Set

22、Time) Select2SegP=&Select2Seg_; /定時(shí),對(duì)應(yīng)位號(hào)閃爍 else Select2SegP=&Select2Seg; if(+(*Select2SegP)=4) *Select2SegP=0; /位號(hào)為4時(shí)返回到位號(hào)1狀態(tài) TunOffSPK(); /*-T0 定時(shí) 1S 中斷子程序 1函數(shù)-*/ void Timer0() interrupt 1 using 1 /時(shí)間顯示控制函數(shù) TH0=0x3C; TL0=0xB0; if(T_Count+)=20) /循環(huán)20次得到1秒 S+; T_Count=0; if(S=60) /秒計(jì)時(shí)重復(fù)60次為1分鐘 M+; S=

23、0; if(M=60) /分鐘計(jì)時(shí)重復(fù)60次為1小時(shí) H+; M=0; if(H=24) /小時(shí)計(jì)時(shí)重復(fù)24次則重新計(jì)時(shí) H=0; if(H=H_Set)&(M=M_Set)&(S=S_Set) /到達(dá)已定時(shí)時(shí)間,響鈴響 SPK(); /*-外部中斷 1 子函數(shù)-*/ void Int1(void) interrupt 2 SetTime=SetTime; /關(guān)定時(shí) *Select2SegP=0; /位閃爍 TunOffSPK(); /*-T1 定時(shí) 50mS 中斷子程序 1函數(shù)-*/ void Timer1() interrupt 3 using 3 TH1=0x3C; TL1=0xB0;

24、if(light+8) light=0; /*-數(shù)碼管數(shù)據(jù)定義-*/ uchar code DIY_data=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xFF; /0-9,-,不亮 uchar code WX_data=0xfe,0xFd,0xfb,0xf7,0xef,0xdf; /自左到右分別是面板(自右到左 1-6個(gè)數(shù)碼管) /*-數(shù)碼管循環(huán)顯示,N 為位序號(hào),D為數(shù)據(jù)序號(hào)-*/ void DSP_Data(uchar N,uchar D) uchar i=N,j=D; seg7_data=DIY_dataN; /數(shù)碼管

25、顯示 wx=WX_dataD; /數(shù)碼管顯示選通 /*-軟件延時(shí) N mS函數(shù)-*/void DLYmS(uchar N) uchar k=125; for(;N0;N-) for(;k0;k-); void testKey2(void) if(SetTime) Sp=&S_Set;Mp=&M_Set;Hp=&H_Set; /鬧鈴定時(shí)時(shí),顯示并閃爍 Select2SegP=&Select2Seg_; else Sp=&S; Mp=&M; Hp=&H; Select2SegP=&Select2Seg; /*-檢測(cè) KEY3(調(diào)整時(shí)間個(gè)位鍵)子函數(shù)-*/ void Scan_kl(void) if

26、(kl=0)&( Key3Down=1) Key3Down=0; testKey2(); TunOffSPK(); switch(*Select2SegP) case 0:break; case 1:SaveS_h=*Sp/10; /保護(hù) 秒 十位 *Sp+=1; *Sp=SaveS_h*10+*Sp%10; break; case 2:SaveM_h=*Mp/10; /保護(hù) 分 十位 *Mp+=1; *Mp=SaveM_h*10+*Mp%10; break; case 3:SaveH_h=*Hp/10; /保護(hù) 時(shí) 十位 *Hp+=1; if(SaveH_h3) *Hp=SaveH_h*10

27、; break; default:break; if(kl=1) Key3Down=1; /*-檢測(cè) KEY4(調(diào)整時(shí)間十位鍵)子函數(shù)-*/ void Scan_kh(void) if(kh=0)&( Key4Down=1) Key4Down=0; testKey2(); TunOffSPK();switch(*Select2SegP) case 0:break; case 1:SaveS_l=*Sp%10; /保護(hù) 秒 個(gè)位 *Sp+=10; if(*Sp=60)*Sp=SaveS_l; break; case 2:SaveM_l=*Mp%10; /保護(hù) 分 個(gè)位 *Mp+=10; if(*

28、Mp=60)*Mp=SaveM_l; break; case 3:SaveH_l=*Hp%10; /保護(hù) 時(shí) 個(gè)位 *Hp+=10; if(SaveH_l3) if(*Hp/101) *Hp=SaveH_l; else if(*Hp/102)*Hp=SaveH_l; break; default:break; if(kh=1)Key4Down=1; /*-6位LED顯示函數(shù)-*/ void Display(void) testKey2(); if(*Select2SegP!=1|light4) /秒顯示 DSP_Data(*Sp%10,0); /數(shù)碼管循環(huán)顯示 DLYmS(N1); DSP_D

29、ata(*Sp/10,1); /數(shù)碼管循環(huán)顯示 DLYmS(N1); if(*Select2SegP!=2|light4) /分鐘顯示 DSP_Data(*Mp%10,2); /數(shù)碼管循環(huán)顯示 DLYmS(N1); DSP_Data(*Mp/10,3); /數(shù)碼管循環(huán)顯示 DLYmS(N1); if(*Select2SegP!=3|light4) /小時(shí)顯示 DSP_Data(*Hp%10,4); /數(shù)碼管循環(huán)顯示 DLYmS(N1); DSP_Data(*Hp/10,5); /數(shù)碼管循環(huán)顯示 DLYmS(N1); Scan_kl(); /調(diào)整時(shí)間個(gè)位鍵 Scan_kh(); /調(diào)整時(shí)間十位鍵

30、 /*-主函數(shù)-*/void main() uchar i; init_t0(); /中斷的初始化和啟動(dòng) init_t1(); init_INT0(); init_INT1(); while(1) Display(); /6位LED顯示 六、系統(tǒng)調(diào)試與運(yùn)行: 系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試兩部分,硬件調(diào)試一般需要利用調(diào)試軟件來(lái)進(jìn)行,軟件調(diào)試也需要通過(guò)對(duì)硬件的測(cè)試和控制來(lái)進(jìn)行,因此軟、硬件調(diào)試是不可能絕對(duì)分開(kāi)的。 軟件調(diào)試的任務(wù)是利用開(kāi)發(fā)工具在線(xiàn)仿真調(diào)試,發(fā)現(xiàn)并糾正錯(cuò)誤。這里可利用軟件Keil C51和PROTEUS來(lái)完成軟件的調(diào)試。硬件調(diào)試的主要任務(wù)是排除硬件故障,其中包括設(shè)計(jì)錯(cuò)誤和連接錯(cuò)誤。

31、這里主要用到的工具是萬(wàn)用表,因?yàn)樵O(shè)計(jì)錯(cuò)誤可以基本排除,所以,檢查連接錯(cuò)誤是關(guān)鍵。 最后,將生成的可執(zhí)行文件“電子時(shí)鐘.hex”下載到單片機(jī)中,然后再電路上運(yùn)行,不斷修改直到正確運(yùn)行。七、任務(wù)小結(jié): (1)通過(guò)完成電子鐘的設(shè)計(jì)和制作調(diào)試,掌握單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)過(guò)程。(2)學(xué)習(xí)自頂向下的模塊化程序設(shè)計(jì)方法,構(gòu)建出程序設(shè)計(jì)的整體框架,在細(xì)化設(shè)計(jì)流程的基礎(chǔ)上,合理分配系統(tǒng)變量資源。(3)在調(diào)試運(yùn)行之前,一定要將源程序分析透徹,這樣將會(huì)有助于以后的故障分析,快速地找到故障并改正。八、參考文獻(xiàn):【1】王靜霞 單片機(jī)應(yīng)用技術(shù)(C語(yǔ)言版) 北京:電子工業(yè)出版社【2】馬忠梅 單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(修訂版) 北京:北京航空航天大學(xué)出版tgKQcWA3PtGZ7

溫馨提示

  • 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)論