單片機(jī)時(shí)鐘課程設(shè)計(jì).doc_第1頁(yè)
單片機(jī)時(shí)鐘課程設(shè)計(jì).doc_第2頁(yè)
單片機(jī)時(shí)鐘課程設(shè)計(jì).doc_第3頁(yè)
單片機(jī)時(shí)鐘課程設(shè)計(jì).doc_第4頁(yè)
單片機(jī)時(shí)鐘課程設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課 程 設(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è)定提醒(蜂鳴器)等功能。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ì)包括流程圖、用匯編語(yǔ)言或C語(yǔ)言對(duì)軟件進(jìn)行編譯,并能通過調(diào)試。 課 程 設(shè) 計(jì) 任 務(wù) 書4主要參考文獻(xiàn):1.孫涵芳.MCS-51/96系列 單片機(jī)原理及應(yīng)用(修訂版).北京航空航天大學(xué)出版社.1994 2.李朝青.單片機(jī)原理及接口技術(shù)(第3版).北京航空航天大學(xué)出版社.20055設(shè)計(jì)成果形式及要求:1. 硬件電路圖2. 軟件流程圖和程序清單3. 編寫課程設(shè)計(jì)報(bào)告。6工作計(jì)劃及進(jìn)度:2014 6月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é)果與分析93.1 仿真調(diào)試93.2 硬件調(diào)試94 結(jié)論10附錄A:?jiǎn)纹瑱C(jī)時(shí)鐘實(shí)物圖11附錄B:?jiǎn)纹瑱C(jī)程序源碼12附錄C:PCB圖36參考文獻(xiàn)37中北大學(xué)單片機(jī)課程設(shè)計(jì)說明書1 引言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à)值與理論意義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捴胁豢扇鄙俚谋匦杵贰?.2.2 理論意義通過本課程設(shè)計(jì),可以掌握單片機(jī)控制系統(tǒng)設(shè)計(jì)的基本理論以及單片機(jī)的編程方法。熟悉掌握有關(guān)單片機(jī)控制的設(shè)計(jì)思想和設(shè)計(jì)方法。2 設(shè)計(jì)思路與過程2.1 總體設(shè)計(jì)思路單片機(jī)時(shí)鐘運(yùn)行流程如圖2-1所示,根據(jù)該流程圖,把機(jī)器人劃分成幾部分分別進(jìn)行設(shè)計(jì)。圖2-1單片機(jī)時(shí)鐘運(yùn)行流程圖2.2 硬件設(shè)計(jì)2.2.1 單片機(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)提供高靈活、超有效的解決方案。 具有以下標(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 可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。STC89C52RC單片機(jī)最小系統(tǒng)如圖2-2所示,包括電源、晶振、單片機(jī)、復(fù)位電路和上拉電阻。圖2-2單片機(jī)最小系統(tǒng)2.2.2 按鍵電路設(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真值表INPUTOUTPUTYA B C D H H H HL L X X X L X L X XL X X L XL X X X LL,圖2-3按鍵電路2.2.3 數(shù)碼管電路設(shè)計(jì)LED數(shù)碼管(LED Segment Displays)是由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃,公共電極。數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母a,b,c,d,e,f,g,dp來表示。如圖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ā)光二極管的陽(yáng)極連接到一起連接到電源正極的稱為共陽(yáng)數(shù)碼管,發(fā)光二極管的陰極連接到一起連接到電源負(fù)極的稱為共陰數(shù)碼管。常用LED數(shù)碼管顯示的數(shù)字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。本系統(tǒng)采用了一塊四位八段和一塊二位八段共陰數(shù)碼管,采用74HC573分時(shí)輸出位碼和段碼,驅(qū)動(dòng)能力最大35mA,可以勝任驅(qū)動(dòng)數(shù)碼管。74HC573真值表如圖2-5所示。數(shù)碼管電路如圖2-6所示。圖2-4 數(shù)碼管 圖2-5 74HC573真值表 圖2-6 數(shù)碼管電路2.2.4 蜂鳴器電路設(shè)計(jì)由于蜂鳴器的工作電流一般比較大,以至于單片機(jī)的I/O口是無法直接驅(qū)動(dòng)的,所以要利用放大電路來驅(qū)動(dòng),一般使用三極管來放大電流就可以了。蜂鳴器電路如圖2-7所示。圖2-7 蜂鳴器電路2.2.5 電源設(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ì)2.3.1 單片機(jī)編程軟件Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括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語(yǔ)言編程,那么Keil幾乎就是你的不二之選,即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。2009年2月發(fā)布Keil uVision4,Keil uVision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺(tái)監(jiān)視器,并提供了視覺上的表面對(duì)窗口位置的完全控制的任何地方。新的用戶界面可以更好地利用屏幕空間和更有效地組織多個(gè)窗口,提供一個(gè)整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。新版本支持更多最新的ARM芯片,還添加了一些其他新功能。界面如圖2-8所示。圖2-8 Keil uVision4界面2.3.2 單片機(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)用的科技工作者的青睞。2.3.3 單片機(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ù)流程圖如圖2-9所示。圖2-9 時(shí)間算法流程圖3 調(diào)試結(jié)果與分析3.1 仿真調(diào)試在Proteus中連接如圖3-1所示電路,把編譯正確的程序進(jìn)行仿真運(yùn)行,經(jīng)過仿真分析,系統(tǒng)實(shí)現(xiàn)了全部的設(shè)計(jì)要求。圖3-1 仿真調(diào)試圖3.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/秒表復(fù)位3秒表/實(shí)時(shí)切換7分加14開啟/關(guān)閉節(jié)能模式8分減1 4 結(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:?jiǎn)纹瑱C(jī)時(shí)鐘實(shí)物圖附錄B:?jiǎn)纹瑱C(jī)程序源碼/*File name :main.cAuthor :GuojianxinDate :05/06/2014Description :數(shù)字鐘主程序,首先初始化變量、I/O口、外設(shè), 然后單片機(jī)進(jìn)入無條件循環(huán),若中斷觸發(fā),則進(jìn)行實(shí)時(shí)處理。History : 1. Author :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :05/06/2014 Description :*/ Start/*包含頭文件*/#include #include #include #include #include /*主程序入口參數(shù):無;返回值:無*/void main(void)Timer_Init( );/定時(shí)器初始化Keyboard_Init( );/按鍵初始化Display_Init( );/數(shù)碼管顯示初始化EN_Bell = 1;/關(guān)閉蜂鳴器while(1)/無條件循環(huán)Display_Updata( );/數(shù)碼管顯示更新/*File name :delay.hAuthor :GuojianxinDate :05/06/2014Description :數(shù)字鐘頭文件,申明delay.c中的全局函數(shù)、全局變量History : 1. Author :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :05/06/2014 Description :*/ Start#ifndef _DELAY_H_ /作用:防止delay.h被重復(fù)引用#define _DELAY_H_/*uS延時(shí)函數(shù)*/extern void DelayUs(unsigned char t); /全局函數(shù)申明/*mS延時(shí)函數(shù)*/extern void DelayMs(unsigned char t); /全局函數(shù)申明#endif/ 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 #include #include #include #include /*大致延時(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ù)、全局變量History : 1. Author :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :05/06/2014 Description :*/ Start#ifndef _DISPLAY_H_ /作用:防止display.h被重復(fù)引用#define _DISPLAY_H_sbit LATCH1 = P07;/數(shù)碼管段鎖存sbit LATCH2 = P06;/數(shù)碼管位鎖存extern bit EN_Dis,Open_Alarm;/全局變量申明extern unsigned char EN_Play;/*數(shù)碼管顯示初始化程序*/extern void Display_Init(void);/全局函數(shù)申明/*數(shù)碼管顯示更新程序*/extern void Display_Updata(void);/全局函數(shù)申明#endif/ No more/*File name :display.cAuthor :GuojianxinDate :05/06/2014Description :數(shù)字鐘數(shù)碼管顯示程序,通過兩個(gè)74HC573和兩個(gè)片選信號(hào), 分時(shí)輸出段碼和位碼。History : 1. Author :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :05/06/2014 Description :*/ Start/*包含頭文件*/#include #include #include #include #include /*定義常量*/unsigned char code Table_Duan10 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/顯示段碼值09unsigned char code Table_Wei6 = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼/*定義變量*/unsigned char Table_Dis6 = 0x00,0x00,0x00,0x00,0x00,0x00;unsigned char j,EN_Play;/數(shù)碼管位計(jì)數(shù)、顯示模式標(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;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) /秒表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 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; /取段碼else P2 = 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 :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :05/06/2014 Description :*/ Start#ifndef _KEYBOARD_H_ /作用:防止keyboard.h被重復(fù)引用#define _KEYBOARD_H_/*按鍵初始化程序*/extern void Keyboard_Init(void);/全局函數(shù)申明#endif/ No more/*File name :keyboard.cAuthor :GuojianxinDate :05/06/2014Description :數(shù)字鐘按鍵處理函數(shù) History : 1. Author :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :05/06/2014 Description :*/ Start/*包含頭文件*/#include #include #include #include #include /*按鍵初始化程序入口參數(shù):無;返回值:無*/void Keyboard_Init(void)EA = 1;IE0 = 0;/外部中斷0清零IT0 = 1;/下降沿觸發(fā)EX0 = 1;/外部中斷0允許IE1 = 0;/外部中斷1清零IT1 = 1;/下降沿觸發(fā)EX1 = 1;/外部中斷1允許void Open_Stopwatch(void) /秒表開始或暫停工作 ET1 = ET1;/開定時(shí)器1中斷TR1 = TR1;/允許定時(shí)器1工作TF1 = 0;/定時(shí)器1溢出標(biāo)志清零void Res_Stopwatch(void) /秒表復(fù)位ET1 = 0;/關(guān)定時(shí)器1中斷TR1 = 0;/禁止定時(shí)器1工作TF1 = 0;/定時(shí)器1溢出標(biāo)志清零s_1 = 0;m_1 = 0;h_1 = 0;/*外部中斷0中斷服務(wù)程序*/void Int_0(void) interrupt 0DelayMs(15);/延時(shí)去抖if(EN_Play = 0x00) /實(shí)時(shí)switch(P1&0xf0)case 0xe0:if(h 0)h-;break;/時(shí)減1case 0xb0:if(m 0)m-;break;/分減1default:;break;if(EN_Play = 0x01) /秒表switch(P1&0xf0)case 0xe0:Open_Stopwatch( );break;/秒表開始或暫停工作case 0xd0:Res_Stopwatch( );break;/秒表復(fù)位default:;break;if(EN_Play = 0x02)/鬧鐘設(shè)定switch(P1&0xf0)case 0xe0:if(h_2 0)h_2-;break;/時(shí)減1case 0xb0:if(m_2 0)m_2-;break;/分減1default:;break;IE0 = 0;/中斷清零void EN_Stopwatch(void)/秒表/實(shí)時(shí)切換if(EN_Play = 0x01)EN_Play = 0x00;elseEN_Play = 0x01;void EN_Alarm(void) /鬧鐘/實(shí)時(shí)切換if(EN_Play = 0x02)EN_Play = 0x00;elseEN_Play = 0x02;void Sel_Alarm(void) /鬧鐘/實(shí)時(shí)切換Open_Alarm = Open_Alarm;if(Open_Alarm)s_2 = 0x01;elses_2 = 0x00;EN_Bell = 1;/關(guān)閉蜂鳴器void Int_1(void) interrupt 2DelayMs(15);/延時(shí)去抖switch(P1&0x0f)case 0x0e:EN_Dis = EN_Dis;break;/打開或關(guān)閉節(jié)能模式case 0x0d:EN_Stopwatch( );break;/秒表/實(shí)時(shí)切換case 0x0b:EN_Alarm( );break;/鬧鐘/實(shí)時(shí)切換case 0x07:Sel_Alarm( );break;/打開或關(guān)閉鬧鐘default:;break;IE1 = 0;/中斷清零/*File name :timer.hAuthor :GuojianxinDate :05/06/2014Description :數(shù)字鐘頭文件,申明timer.c中的全局函數(shù)、全局變量History : 1. Author :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :05/06/2014 Description :*/ Start#ifndef _TIMER_H_ /作用:防止timer.h被重復(fù)引用#define _TIMER_H_sbit EN_Bell = P35;/蜂鳴器控制端口/*定時(shí)器初始化程序*/extern void Timer_Init(void);/全局函數(shù)申明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 :Guojianxin Date :05/06/2014 Description : 2. Author :Guojianxin Date :0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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)論