單片機(jī)時(shí)鐘課程方案_第1頁
單片機(jī)時(shí)鐘課程方案_第2頁
單片機(jī)時(shí)鐘課程方案_第3頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)任務(wù)書1. 設(shè)計(jì)目的:本設(shè)計(jì)包括確定控制任務(wù)、系統(tǒng)總體方案設(shè)計(jì)、硬件系統(tǒng)設(shè)計(jì)、軟件程序的設(shè)計(jì)等, 以便使學(xué)生掌握有關(guān)單片機(jī)控制的設(shè)計(jì)思想和設(shè)計(jì)方法。為學(xué)生今后從事單片機(jī)控制系 統(tǒng)開發(fā)工作打下基礎(chǔ)。學(xué)習(xí)proteus仿真軟件實(shí)現(xiàn)電路的仿真。2. 設(shè)計(jì)內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、條件、設(shè)計(jì)要求等):本課程設(shè)計(jì)的基本要求是使學(xué)生全面掌握單片機(jī)控制系統(tǒng)設(shè)計(jì)的基本理論,熟悉掌握單片機(jī)的編程方法,用89C52系列單片機(jī)及六位數(shù)碼管顯示時(shí)、分、秒,以 24 小時(shí)計(jì)時(shí)方式運(yùn)行,能整點(diǎn)提醒(短蜂鳴,次數(shù)代表整點(diǎn)時(shí)間),使用按鍵開關(guān)可以 實(shí)現(xiàn)時(shí)分調(diào)整、秒表/時(shí)鐘功能轉(zhuǎn)換、省電(關(guān)閉顯示)、定時(shí)設(shè)定

2、提醒(蜂鳴器)等功3. 設(shè)計(jì)工作任務(wù)及工作量的要求包括課程設(shè)計(jì)計(jì)算說明書(論文)、圖紙、實(shí)物樣品等:1. 根據(jù)題目要求的指標(biāo),通過查閱有關(guān)資料,確定系統(tǒng)設(shè)計(jì)方案,并設(shè)計(jì)其硬件電 路圖。2. 畫出電路原理圖,分析主要模塊的功能及他們之間的數(shù)據(jù)傳輸和控制關(guān)系。3. 用Proteus軟件繪制硬件電路圖并仿真。4. 軟件設(shè)計(jì)包括流程圖、用匯編語言或 C語言對(duì)軟件進(jìn)行編譯,并能通過調(diào)試。課程設(shè)計(jì)任務(wù)書4. 主要參考文獻(xiàn):1孫涵芳.MCS-51/96系列 單片機(jī)原理及應(yīng)用(修訂版).北京航空航天大學(xué)出版 社.19942. 李朝青.單片機(jī)原理及接口技術(shù)(第3版)北京航空航天大學(xué)出版社.20055. 設(shè)計(jì)成果

3、形式及要求:1. 硬件電路圖2. 軟件流程圖和程序清單3. 編寫課程設(shè)計(jì)報(bào)告。6. 工作計(jì)劃及進(jìn)度:20146月2日6月5日查找資料,確定方案6月6日6月8日設(shè)計(jì)硬件電路,繪制電路原理圖6月9日 6月11日 軟件設(shè)計(jì),并調(diào)試通過6月12日6月13日 編寫課程設(shè)計(jì)報(bào)告,答辯或成績(jī)考核負(fù)責(zé)人審查意見:簽字:年 月 日目錄1 引言 11.1 設(shè)計(jì)任務(wù)與要求 . 11.2 實(shí)用價(jià)值與理論意義 12 設(shè)計(jì)思路與過程 22.1 總體設(shè)計(jì)思路 . 22.2 硬件設(shè)計(jì) . 22.3 軟件設(shè)計(jì) . 63 調(diào)試結(jié)果與分析 83.1 仿真調(diào)試 . 83.2 硬件調(diào)試 . 94 結(jié)論 9附錄A:單片機(jī)時(shí)鐘實(shí)物圖 11

4、附錄B:單片機(jī)程序源碼 12附錄C: PCB圖 35參考文獻(xiàn) 361 引言1.1 設(shè)計(jì)任務(wù)與要求設(shè)計(jì)一個(gè)基于 89C52 系列單片機(jī)控制的時(shí)鐘,實(shí)現(xiàn)以下功能:1.1.1 顯示實(shí)時(shí) 單片機(jī)控制六位數(shù)碼管顯示時(shí)、分、秒,以 24 小時(shí)計(jì)時(shí)方式運(yùn)行。1.1.2 整點(diǎn)報(bào)時(shí) 單片機(jī)控制蜂鳴器在整點(diǎn)短蜂鳴,次數(shù)代表整點(diǎn)時(shí)間。1.1.3 時(shí)間調(diào)整使用按鍵開關(guān)可以實(shí)現(xiàn)時(shí)分調(diào)整。1.1.4 秒表功能 使用按鍵開關(guān)可以實(shí)現(xiàn)秒表 /時(shí)鐘功能轉(zhuǎn)換。1.1.5 節(jié)能模式 使用按鍵開關(guān)可以實(shí)現(xiàn)正常工作 /節(jié)能模式(關(guān)閉顯示)轉(zhuǎn)換。1.1.6 鬧鐘功能使用按鍵開關(guān)可以設(shè)定鬧鐘時(shí)間已經(jīng)鬧鐘開關(guān)模式。1.2 實(shí)用價(jià)值與理論意義

5、1.2.1 實(shí)用價(jià)值 數(shù)字鐘能長(zhǎng)期、連續(xù)、可靠、穩(wěn)定地下作;同時(shí)還具有體積小, 功耗低等特點(diǎn), 便于攜帶,使用方便。同時(shí)由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng) 用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過老式鐘表 .鐘表的數(shù)字化給人們生產(chǎn)生活帶來了 極大的方便, 而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能, 數(shù)字鐘是采用數(shù)字電路實(shí) 現(xiàn)對(duì)“時(shí)、分、秒”數(shù)字顯示的計(jì)時(shí)裝置。使得電子時(shí)鐘廣泛應(yīng)用于個(gè)人家庭、 車站、碼頭、 辦公室等場(chǎng)所的各個(gè)角落, 已成為人們?nèi)粘I捴胁豢扇鄙俚谋匦?品。1.2.2 理論意義通過本課程設(shè)計(jì), 可以掌握單片機(jī)控制系統(tǒng)設(shè)計(jì)的基本理論以及單片機(jī)的編 程方法。熟悉掌握有關(guān)單片機(jī)控制的設(shè)計(jì)思想

6、和設(shè)計(jì)方法。2設(shè)計(jì)思路與過程2.1總體設(shè)計(jì)思路單片機(jī)時(shí)鐘運(yùn)行流程如圖2-1所示,根據(jù)該流程圖,把機(jī)器人劃分成幾部分 分別進(jìn)行設(shè)計(jì)。按鍵蜂鳴器驅(qū)動(dòng)蜂鳴器圖2-1單片機(jī)時(shí)鐘運(yùn)行流程圖2.2硬件設(shè)計(jì)單片機(jī)最小系統(tǒng)根據(jù)設(shè)計(jì)要求,選用 STC89C52RC單片機(jī)。STC89C52是STC公司生產(chǎn)的 一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。 STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng) 51 單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash, 使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解

7、決方案。具 有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash, 512字節(jié)RAM,32位I/O 口線,看門狗定時(shí) 器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個(gè)16位定時(shí)器/計(jì)數(shù)器,4個(gè)夕卜 部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙 工串行口。另外STC89C52可降至OHz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié) 電模式??臻e模式下,CPU停止工作,允許 RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切 工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可STC89C52RC單片機(jī)最小系統(tǒng)如

8、圖2-2所示,包括電源、晶振、單片機(jī)、復(fù)位電路和上拉電阻。FI51S956P2P?肥P2肥P2肥P2H1丁P1234P143Pl 5«P16Pl 739P5010PSI11Pi212PJ313Pij14P3515FW怙P3717Pl 3Fl DP1.1P1.2F1.3H4F1.5P1.6P1.7RSTP3.&RXDP3.1TXD F弭貳而P14J10P3.j T1 F,壓Pl'BjOXTAL2XTAL1 GMCO12 34567-4*£N52遼50亙二26號(hào)24LEDODVCC5V ZfA® 10KFOT POT 面曠斗P03 5PW $PM 7P

9、0<5 S PG7 9P2; 空 P25 雨F23RTP21圖2-2單片機(jī)最小系統(tǒng)按鍵電路設(shè)計(jì)STC89C52RC單片機(jī)擁有兩個(gè)外部中斷輸入端口,外部中斷0和外部中斷1分別對(duì)應(yīng)單片機(jī)的P3.2 口和P3.3 口。本系統(tǒng)的設(shè)計(jì)思路是按鍵按下時(shí)觸發(fā)單片 機(jī)中斷,進(jìn)行實(shí)時(shí)處理,由于用到了八個(gè)按鍵,單片機(jī)只擁有兩個(gè)外部中斷輸入 端口,電路中使用了一片74LS21芯片,74LS21是四輸入雙與門芯片,真值表如 表2-1所示,按鍵電路如圖2-3所示,當(dāng)有按鍵按下時(shí),觸發(fā)單片機(jī)中斷,然后 單片機(jī)掃描I/O 口,判斷是哪個(gè)按鍵按下,進(jìn)行相應(yīng)的處理。表2-1 74LS21真值表INPUTOUTPUTYAB

10、CDHHHHLLXXXLXLXXLXXLXLXXXLLISPnp1110p9pgpVCC2D2CNC盤zro 1 5 .- 3 3J KTXL4iP3247?1GKTX4VLJ*L.1U*JTI,7HR? tJ1«K |1R10 fJ1(K槪J1CEELPIOP12jo4.圖2-3按鍵電路數(shù)碼管電路設(shè)計(jì)LED數(shù)碼管(LED Segment Displays)是由多個(gè)發(fā)光二極管圭寸裝在一起組成 “ 8”字型的器件,弓I線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃,公共電 極。數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成 8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這 些段分別由字母a,b,c,d,e,f,g,d

11、p來表示。如圖2-4所示。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會(huì)發(fā)亮,以形成我們眼睛看 到的字樣。如:顯示一個(gè)“ 2”字,那么應(yīng)當(dāng)是a亮b亮g亮e亮d亮f不亮c 不亮dp不亮。LED數(shù)碼管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸數(shù)碼管的顯示筆畫常用一個(gè)發(fā)光二極管組成,而大尺寸的數(shù)碼管由二個(gè)或多個(gè)發(fā)光二極管組成,一般情況下,單個(gè)發(fā)光二極管的管壓降為1.8V 左右,電流不超過30mA。發(fā)光二極管的陽極連接到一起連接到電源正極的稱為 共陽數(shù)碼管,發(fā)光二極管的陰極連接到一起連接到電源負(fù)極的稱為共陰數(shù)碼管。常用LED數(shù)碼管顯示的數(shù)字和字符是0、1、2、3、4、5、6、7、8

12、、9、A、B、C、 D、 E、 Fo本系統(tǒng)采用了一塊四位八段和一塊二位八段共陰數(shù)碼管,采用 74HC573分 時(shí)輸出位碼和段碼,驅(qū)動(dòng)能力最大 35mA,可以勝任驅(qū)動(dòng)數(shù)碼管。74HC573真值 表如圖2-5所示。數(shù)碼管電路如圖2-6所示。*«« 甲 f f卜"申COM圖2-4數(shù)碼管IllpUtSOutputOutputEuabkLaich EnableDQLHHHLHLLLLXno changeHXXZ(-)圖2-574HC573真值表GNDljL4TTI'T74昨4K45PZJ6K21KIKOD>GKDL?27涪垃郞甲畧vsV3V2V3V4VI二斗

13、口6 IL11 IJu圖2-6數(shù)碼管電路蜂鳴器電路設(shè)計(jì)由于蜂鳴器的工作電流一般比較大,以至于單片機(jī)的I/O 口是無法直接驅(qū)動(dòng)的,所以要利用放大電路來驅(qū)動(dòng),一般使用三極管來放大電流就可以了。蜂鳴器電路如圖2-7所示圖2-7蜂鳴器電路225電源設(shè)計(jì)系統(tǒng)采用3節(jié)額定電壓是1.5V的干電池供電,3節(jié)電池串聯(lián)后,實(shí)測(cè)電壓4.9V,由于本系統(tǒng)的額定電壓是 5V,所以可以勝任為本系統(tǒng)供電。2.3軟件設(shè)計(jì)單片機(jī)編程軟件Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開 發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的 優(yōu)勢(shì),因而易學(xué)易用。Keil提供

14、了包括C編譯器、宏匯編、連接器、庫(kù)管理和 一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要 WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選, 即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件 仿真調(diào)試工具也會(huì)令你事半功倍。2009年2月發(fā)布Keil uVision4 , Keil uVision4引入靈活的窗口管理系統(tǒng),使 開發(fā)人員能夠使用多臺(tái)監(jiān)視器,并提供了視覺上的表面對(duì)窗口位置的完全控制的 任何地方。新的用戶界面可以更好地利用屏幕

15、空間和更有效地組織多個(gè)窗口,提供一個(gè)整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。新版本支持更多最新的ARM芯片,還添加了一些其他新功能。界面如圖2-8所示翟I Tin1 町-pUtfiorl對(duì)供! I 曰已溫啖Otap 1 a宙出殲£ 曰固占叩3i«g(2hP kybMnih 1 dHpliph 1 teTHr.h 4 因 阪掃口mdjc*3 refiH h A3kviiouindLI'iJ diiplr-i l>TWT.h M團(tuán)亂drw 自QWmfr* rvgSlh d day JiM計(jì)沖 iinwhRHXjU *口1對(duì)豁 M 闿 J*CS £MMw 9tij

16、> JhLabAAJhXJteJUMfcJJJ.JjBliiM | /j MHH i JJJfij 訂 h RHfcMijFile name - thmer-cAuLhor : ijihOjLjixin Date a 05/2014Deacriptian e敦字艸世時(shí)器腔序口sry ;1 牛 Author = cuiinxinBate i >O5/Ci/20L4 Description :2u Author = GoDjianxin &at日 i 05/0/2014 Description -/ 5t3I:t/*&<頭文件"tiRcluda <

17、reg52 /h>include <delayrh> include < keyboard. «h> ti iL匚 1. 口日亡 <diaplh> include <timer rh>八定義變unsigned char 3rsirhJCount_0en.r iT kf char 弐_1.兀1* h_U ehar s 2rm Zjh A"秒*分.時(shí).峰鳴試歎、定時(shí)春溢岀汰敷"秒衰秒、時(shí)"閩神秋、»,時(shí)-hUM- z F .7a百宵呵"L吋吭、-亦圖 2-8 Keil uVision4

18、 界面232單片機(jī)仿真軟件Proteus軟件是英國(guó)Lab Center Electronics公司出版的EDA工具軟件(該軟 件中國(guó)總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的 仿真功能,還能仿真單片機(jī)及外圍器件。它是目前比較好的仿真單片機(jī)及外圍器 件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué) 的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。233單片機(jī)程序流程圖STC89C52RC單片機(jī)擁有兩個(gè)16位定時(shí)/計(jì)數(shù)器,本系統(tǒng)用定時(shí)器0產(chǎn)生秒 信號(hào),裝入初值15536,則定時(shí)器溢出時(shí)為50ms,每溢出20次,產(chǎn)生一個(gè)秒信 號(hào),定時(shí)器中斷服務(wù)函數(shù)流程圖

19、如圖 2-9所示。圖2-9時(shí)間算法流程圖3調(diào)試結(jié)果與分析3.1仿真調(diào)試經(jīng)過在Proteus中連接如圖3-1所示電路,把編譯正確的程序進(jìn)行仿真運(yùn)行,仿真分析,系統(tǒng)實(shí)現(xiàn)了全部的設(shè)計(jì)要求;片 E = * ilnd 護(hù)'ztfzJD 解ABI*圖3-1仿真調(diào)試圖u 認(rèn) rjt. 12i ij k«d i3.2硬件調(diào)試按照如圖3-1所示電路設(shè)計(jì)并制作PCB,焊接元器件,然后把程序燒寫進(jìn)單 片機(jī)里,進(jìn)行調(diào)試,經(jīng)過調(diào)試,系統(tǒng)實(shí)現(xiàn)了全部的設(shè)計(jì)要求。系統(tǒng)使用指南如表 3-1所示。表3-1使用指南按鍵編號(hào)功能按鍵編號(hào)功能1打開/關(guān)閉鬧鐘5時(shí)加1/秒表開始/秒表暫停2鬧鐘時(shí)間/實(shí)時(shí)切換6時(shí)減1/秒

20、表復(fù)位3秒表/實(shí)時(shí)切換7分加14開啟/關(guān)閉節(jié)能模式8分減14結(jié)論經(jīng)過兩周的單片機(jī)課程設(shè)計(jì),在自己的努力和老師的幫助下,成功完成了設(shè) 計(jì)任務(wù)一一單片機(jī)時(shí)鐘。老師為我們提供了課程設(shè)計(jì)所需的儀器、工具和元器件, 然后自己一步一步進(jìn)行設(shè)計(jì):首先,弄清楚了設(shè)計(jì)任務(wù),設(shè)計(jì)一個(gè)單片機(jī)時(shí)鐘, 實(shí)現(xiàn) 6 個(gè)功能;然后,經(jīng)過分析研究,提出了總體設(shè)計(jì)思路,分模塊進(jìn)行設(shè)計(jì), 繪制原理圖,畫出程序流程圖,編寫單片機(jī)程序,在仿真軟件里進(jìn)行仿真。仿真 正確后,制作PCB,焊接元器件,燒寫程序,再次進(jìn)行調(diào)試。最后,系統(tǒng)調(diào)試 成功。附錄A:單片機(jī)時(shí)鐘實(shí)物圖附錄B:單片機(jī)程序源碼/*File name : main.cAutho

21、r : GuojianxinDate : 05/06/2014Description :數(shù)字鐘主程序,首先初始化變量、 I/O 口、外設(shè),然后單片機(jī)進(jìn)入無條件循環(huán),若中斷觸發(fā),則進(jìn)行實(shí)時(shí)處理。History : 1. Author : GuojianxinDate : 05/06/2014Description :2. Author : GuojianxinDate : 05/06/2014 Description :*/ Start/* 包含頭文件 */#include <reg52.h>#include <delay.h>#include <keyboard.

22、h>#include <display.h>#include <timer.h>/*主程序入口參數(shù):無;返回值:無*/ void main(void)Timer_Init( );Keyboard_Init( );Display_Init( );EN_Bell = 1;while(1)Display_Updata( );/定時(shí)器初始化/按鍵初始化 /數(shù)碼管顯示初始化/關(guān)閉蜂鳴器/無條件循環(huán)/數(shù)碼管顯示更新*File name : delay.hAuthor : GuojianxinDate : 05/06/2014Description :數(shù)字鐘頭文件,申明 del

23、ay.c 中的全局函數(shù)、全局變量History : 1. Author : GuojianxinDate : 05/06/2014Description :2. Author : GuojianxinDate : 05/06/2014Description :*/ Start#ifndef _DELAY_H_ 引用#define _DELAY_H_/ 作用:防止 delay.h 被重復(fù)/*uS 延時(shí)函數(shù) */extern void DelayUs(unsigned char t);/全局函數(shù)申明/*mS 延時(shí)函數(shù) */extern void DelayMs(unsigned char t);#

24、endif/全局函數(shù)申明/ No more/*File name : delay.cAuthor : GuojianxinDate : 05/06/2014Description :數(shù)字鐘簡(jiǎn)單延時(shí)函數(shù)History :1. Author : Guojianxin Date : 05/06/2014 Description :2. Author : Guojianxin Date : 05/06/2014 Description :*/ Start/* 包含頭文件 */#include <reg52.h>#include <delay.h>#include <key

25、board.h>#include <display.h>#include <timer.h>/* 大致延時(shí) 2uS*/void DelayUs(unsigned char t) while(-t);/* 大致延時(shí) 1mS*/ void DelayMs(unsigned char t)while(t-)DelayUs(245);DelayUs(245);/*File name : display.hAuthor : GuojianxinDate : 05/06/2014Description :數(shù)字鐘頭文件,申明 display.c 中的全局函數(shù)、全局變量Histo

26、ry :1. Author : GuojianxinDate :05/06/2014Description :2. Author : GuojianxinDate :05/06/2014Description*/ Start#ifndef _DISPLAY_H_ 用#define _DISPLAY_H/作用:防止 display.h 被重復(fù)引sbit LATCH1 = P0A7;sbit LATCH2 =卩0人6;extern bit EN_Dis,Open_Alarm; extern unsigned char EN_Play;/* 數(shù)碼管顯示初始化程序 */ extern void Dis

27、play_Init(void);/* 數(shù)碼管顯示更新程序 */ extern void Display_Updata(void);/數(shù)碼管段鎖存/數(shù)碼管位鎖存/全局變量申明/全局函數(shù)申明/全局函數(shù)申明#endif/ No more/*File name : display.cAuthor : GuojianxinDate : 05/06/2014Description :數(shù)字鐘數(shù)碼管顯示程序,通過兩個(gè) 74HC573 和兩個(gè)片選信號(hào)分時(shí)輸出段碼和位碼。History1. Author : GuojianxinDate : 05/06/2014 Description :2. Author :

28、Guojianxin Date : 05/06/2014 Description :*/ Start/* 包含頭文件 */#include <reg52.h>#include <delay.h>#include <keyboard.h>#include <display.h>#include <timer.h>/* 定義常量 */unsigned char code Table_Duan10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/分 別對(duì)應(yīng) 相應(yīng)的 數(shù)顯示段碼值 09

29、unsigned char code Table_Wei6 = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf;碼管點(diǎn)亮 ,即位碼/* 定義變量 */unsigned char Table_Dis6 = 0x00,0x00,0x00,0x00,0x00,0x00;/數(shù)碼管位計(jì)數(shù)、顯示模式unsigned char j,EN_Play; 標(biāo)志bit EN_Dis;/節(jié)能模式標(biāo)志bit Open_Alarm;/鬧鐘打開標(biāo)志囁*數(shù)碼管顯示初始化程序 入口參數(shù):無;返回值:無 */ void Display_Init(void)j = 0;s = 0;m = 0;h = 0;s_1 = 0

30、; m_1 = 0; h_1 = 0;s_2 = 0; m_2 = 0; h_2 = 0;Open_Alarm = 0;EN_Dis = 1;EN_Play = 0x00;Count_Bell = 0;/* 數(shù)碼管段碼計(jì)算程序 入口參數(shù):無;返回值:無*/void Display_Actual(void) / 實(shí)時(shí) Table_Dis5 = s%10;Table_Dis4 = s/10;Table_Dis3 = m%10;Table_Dis2 = m/10;Table_Dis1 = h%10;Table_Dis0 = h/10; void Display_Stopwatch(void) / 秒

31、表 Table_Dis5 = s_1%10;Table_Dis4 = s_1/10;Table_Dis3 = m_1%10;Table_Dis2 = m_1/10;Table_Dis1 = h_1%10;Table_Dis0 = h_1/10; void Display_Alarm(void) / 鬧鐘 Table_Dis5 = s_2%10;Table_Dis4 = s_2/10;Table_Dis3 = m_2%10;Table_Dis2 = m_2/10;Table_Dis1 = h_2%10;Table_Dis0 = h_2/10;*數(shù)碼管顯示更新程序入口參數(shù):無;返回值:無*void

32、 Display_Updata(void) if(EN_Dis)switch(EN_Play)/顯示模式選擇case 0x00:Display_Actual( ); break;/ 實(shí)時(shí)case 0x01:Display_Stopwatch( );break;/秒表case 0x02:Display_Alarm( );break;/鬧鐘default: ; break;for(j = 0;j < 6;j+)P2 = Table_Weij;/取位碼LATCH2=1;/位鎖存LATCH2=0;if(j = 1)|(j = 3)P2 = Table_DuanTable_Disj|0x80;/取

33、段碼elseP2 = Table_DuanTable_Disj;/取段碼LATCH1=1;/段鎖存LATCH1=0;DelayMs(2);elseP2 = 0xff;LATCH1 = 1;LATCH2 = 1;/*File name : keyboard.hAuthor : GuojianxinDate : 05/06/2014Description :數(shù)字鐘頭文件,申明 keyboard.c 中的全局函數(shù)、全局變量History : 1. Author : GuojianxinDate : 05/06/2014Description :2. Author : GuojianxinDate :

34、 05/06/2014Description*/ Start#ifndef _KEYBOARD_H_ 重復(fù)引用#define _KEYBOARD_H_/作用:防止 keyboard.h 被/全局函數(shù)申明/* 按鍵初始化程序 */extern void Keyboard_Init(void);#endif/ No more囁*File name :keyboard.cAuthor : GuojianxinDate : 05/06/2014Description:數(shù)字鐘按鍵處理函數(shù)History :1. Author : Guojianxin Date : 05/06/2014 Descripti

35、on :2. Author : GuojianxinDate : 05/06/2014Description*/ Start/* 包含頭文件 */#include <reg52.h>#include <delay.h>#include <keyboard.h>#include <display.h>#include <timer.h>/*按鍵初始化程序 入口參數(shù):無;返回值:無 */ void Keyboard_Init(void) EA = 1;IE0 = 0;IT0 = 1;EX0 = 1;IE1 = 0;IT1 = 1;EX1

36、= 1;/ 外部中斷 0 清零/下降沿觸發(fā)/ 外部中斷 0 允許/ 外部中斷 1 清零/下降沿觸發(fā)/ 外部中斷 1 允許void Open_Stopwatch(void)/秒表開始或暫停工作ET1 = ET1;/開定時(shí)器 1 中斷TR1 = TR1;TF1 = 0;/允許定時(shí)器 1 工作/ 定時(shí)器 1 溢出標(biāo)志清零void Res_Stopwatch(void)ET1 = 0;TR1 = 0;TF1 = 0;s_1 = 0;m_1 = 0;h_1 = 0;/秒表復(fù)位/關(guān)定時(shí)器 1 中斷/禁止定時(shí)器 1 工作/ 定時(shí)器 1 溢出標(biāo)志清零/*外部中斷 0 中斷服務(wù)程序 */ void Int_0(

37、void) interrupt 0 DelayMs(15); if(EN_Play = 0x00)switch(P1&0xf0)/ 延時(shí)去抖/實(shí)時(shí)case 0x70:if(m > 0)h+;break;/ 時(shí)加 1h-; break;/時(shí)減 1m+;break;/ 分加 1m-;break;/ 分減 1case 0xe0:if(h < 23) case 0xd0:if(h > 0) case 0xb0:if(m < 60)default: ; break;if(EN_Play = 0x01)/秒表switch(P1&0xf0)case 0xe0:Open

38、_Stopwatch( );break;case 0xd0:Res_Stopwatch( );break;/秒表開始或暫停工作/秒表復(fù)位default: break;if(EN_Play = 0x02)switch(P1&0xf0)case 0xe0:if(h_2 < 23) h_2+; break;case 0xd0:if(h_2 > 0) h_2-; break;case 0xb0:if(m_2 < 60) m_2+; break;case 0x70:if(m_2 > 0) m_2-; break; default: ; break;/鬧鐘設(shè)定/ 時(shí)加 1/

39、 時(shí)減 1/ 分加 1/ 分減 1IE0 = 0;void EN_Stopwatch(void)if(EN_Play = 0x01)EN_Play = 0x00;else/中斷清零/秒表 /實(shí)時(shí)切換EN_Play = 0x01;void EN_Alarm(void)if(EN_Play = 0x02)EN_Play = 0x00; elseEN_Play = 0x02; /鬧鐘 /實(shí)時(shí)切換void Sel_Alarm(void)Open_Alarm = Open_Alarm; if(Open_Alarm) s_2 = 0x01;elses_2 = 0x00;EN_Bell = 1;/鬧鐘/實(shí)時(shí)

40、切換/關(guān)閉蜂鳴器void Int_1(void) interrupt 2 DelayMs(15);switch(P1&0x0f)case 0x0e:EN_Dis = EN_Dis; break;case 0x0d:EN_Stopwatch( );break;case 0x0b:EN_Alarm( );break;/ 延時(shí)去抖/打開或關(guān)閉節(jié)能模式/秒表/實(shí)時(shí)切換/鬧鐘/實(shí)時(shí)切換case 0x07:Sel_Alarm( );break;/打開或關(guān)閉鬧鐘default: ; break;/中斷清零IE1 = 0;/*File name : timer.hAuthor : Guojianxin

41、Date : 05/06/2014Description :數(shù)字鐘頭文件,申明 timer.c 中的全局函數(shù)、全局變量History : 1. Author : GuojianxinDate : 05/06/2014Description :2. Author : GuojianxinDate : 05/06/2014Description :*/作用:防止 timer.h 被重復(fù)引用/ Start#ifndef _TIMER_H_#define _TIMER_H/蜂鳴器控制端口/全局函數(shù)申明/全局變量申明sbit EN_Bell = P3A5;/* 定時(shí)器初始化程序 */extern void Timer_Init(void);extern unsigned char s,m,h,Count_Bell;extern unsigned char s_1,m_1,h_1;extern unsigned char s_2,m_2,h_2; #endif/ No more /* File name : timer.cAuthor : GuojianxinDate : 05/06/2014Description :數(shù)字鐘定時(shí)器程序,History :1. Author : GuojianxinD

溫馨提示

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