51單片機課程設(shè)計電子時鐘_第1頁
51單片機課程設(shè)計電子時鐘_第2頁
51單片機課程設(shè)計電子時鐘_第3頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計課程名稱:單片機課程設(shè)計 題目名稱: 單片機電子時鐘學(xué)院:電信學(xué)院專業(yè):電子工程姓名:曾代科學(xué) 號:_1_指導(dǎo)教師:力口國2010年11月7日一、課程設(shè)計名稱: 51 單片機電子時鐘二、設(shè)計方案:1、通過單片機部的計數(shù) / 定時器,采用軟件編程來實現(xiàn) 時鐘計數(shù),一般稱為軟時鐘,這種方法的硬件線路簡單,系 統(tǒng)的功能一般與軟件設(shè)計相關(guān),通常用在對時間精度要求不 高的場合。2、采用時鐘芯片,它的功能強大,功能部件集成在芯 片部,具有自動產(chǎn)生時鐘等相關(guān)功能,硬件成本相對較高; 軟件編程簡單,通常用在對時鐘精度要求較高的場合。三、設(shè)計容:這里采用應(yīng)用廣泛的 AT89C52作為時鐘控制芯片,利用

2、單片機部的定時 / 計數(shù)器 T0 實現(xiàn)軟時鐘的目的。首先將 T0 設(shè)定工作于定時方式, 對機器周期計數(shù)形成基準(zhǔn)時間(50ms),然后用另一個定時/計數(shù)器T1對基準(zhǔn)時間計數(shù)形 成秒,妙計 60 次形成分,分計 60 形成小時,小時計到 12。 最后通過數(shù)碼管把它們的容在相應(yīng)的位置顯示出來,達(dá)到 時、分、秒計時的功能。此外還要實現(xiàn)對時間的調(diào)整功能,89C52的P1.0、P1.1、P1.2 外接三個獨立按鍵,當(dāng)按下 P1.0 按鍵時,系統(tǒng)進入調(diào)時間的狀態(tài)或啟動時間顯示的功能;當(dāng)按下 P1.1 按鍵時,對顯 示的數(shù)碼管進行加一的功能;當(dāng)按下 P1.2 按鍵時,對顯 示的數(shù)碼管進行減一的功能,達(dá)到調(diào)整時

3、間的目的。四、系統(tǒng)軟件程序設(shè)計1. 主程序先對顯示單元和定時器 / 計數(shù)器初始化,然后重復(fù)調(diào) 用數(shù)碼管顯示模塊和按鍵處理模塊,當(dāng)有按鍵按下時,則轉(zhuǎn) 入相應(yīng)的功能程序。2、數(shù)碼管顯示模塊本實驗有 8 個數(shù)碼管,從右到左為妙、橫線、分、 橫線、時。在本系統(tǒng)中數(shù)碼管顯示采用軟件譯碼動態(tài)顯示。 在存儲器中首先建立一顯示信息的字段碼表,顯示時,先從 顯示緩沖區(qū) 中取出顯示的信息, 然后通過查表程序在字 段表中查出所顯示的信息的斷碼,從 P0 端口輸出,同 時在 P2 端口進行數(shù)碼管顯示。3 、定時器 / 計數(shù)器 T0 中斷服務(wù)程序T0 用于計時,選中方式一,重復(fù)定時,定時時間設(shè)為 50ms,定時時間到則

4、中斷,在中斷服務(wù)程序中用一個計數(shù)器 對50ms計數(shù),計20次則對秒單元加一。秒單元加到60則對分單元加一, 同時秒單元清 0;分單元加到 60 則對時單元加一,同時分單元清 0;時單元加到24則對時單元清0,標(biāo)志一天時間計滿。在對各單元計數(shù)的同時,把他們的值放到存儲器單元的指定位置。流程圖如下:開始現(xiàn)場保護,重置初值,啟動下一個50ms50ms計數(shù)器加一NO50ms計數(shù)器=20 ?秒單元加一,50ms計數(shù)器清0NONONO秒單元=60?分單元=60 ?分單元加一,秒單元清0時單元加一,分單元清0時單元=24 ?時單元清0中斷返回主程序流程圖T0中斷服務(wù)程序4、按鍵處理模塊按鍵設(shè)置為:如果沒有按

5、鍵嗎,則時鐘正常走時。 當(dāng)按下 K0 鍵時,進入調(diào)分狀態(tài),時鐘停止走動;按 K1 和 K2 按鍵可以進行加一和減一操作;繼續(xù)按 K0 鍵可以分別進行分和小時的調(diào)整;最后按KO鍵啟動計時。5、匯編語言程序ORG 0000HLJMP STARTSTART:INIT:ORG OOOBH LJMP INITOMOV RO,#7OHMOV R7,#OCHMOV RO,#OOH INC RODJN Z R7,INITMOVMOVMOV; 主程序開始; 對連字符進行裝值START1:DL1MS:DL1:DL2:DL20MS:MOVMOVSETB EASETB ETO SETB TRO72H,#1O75H,#

6、1OTMOD,#01H;選擇定時器/計數(shù)器TO的方式1TLO,#OBOHTHO,#O3CH; 對低位賦初值; 高位賦初值LCALL SCANLCALL KEYSCANSJMP START1 MOV R6,#14H MOV R7,#19H DJNZ R7,DL2 DJNZ R6,DL1 RET ACALL ACALL; 延時 1 子程序SCAN ;延時20ms子程序SCANACALLRETSCAN; 數(shù)碼管顯示程序開始SCAN:MOV A,78HMOV B,#OAHDIV AB ;時間秒的十位送給 A,時間秒的個位送 BMOV 71H,A; 時間秒要顯示的十位MOV 7OH,B; 時間秒要顯示的

7、個位MOV A,79HMOV B,#0AHDIV AB;時間分的十位送給 A,時間分的個位送BMOV 74H,A;時間分要顯示的十位送地址MOV 73H,B;時間分要顯示的個位送地址MOV A,7AHMOV B,#0AHDIV AB;時間時的十位送給 A,時間時的個位送BMOV 77H,A;時間時顯示的十位送地址MOV 76H,B;時間時要顯示的個位送地址MOV R1,#70HMOV R5,#0FEHMOV R3,#08HSCAN1: MOV A,R5 ; 數(shù)碼管的顯示程序TAB:MOV P2,AMOV A,R1MOV DPTR,#TABMOVC A,A+DPTR; 對字段表取值顯示MOV P

8、0,AMOV A,R5LCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#0FFHMOV P0,#0FFHRET;"09" 和"-" 的字段表DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH定時 / 計數(shù)器 T0 中斷程序INIT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTTO ;50m

9、s是否到20次,沒有到就繼續(xù)執(zhí)行 50ms的延時MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0 ; 一秒的延時是否計到 60 次,沒有就繼續(xù)執(zhí)行 MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0 ;60 分鐘的延時是否計到 24 次,沒有就 繼續(xù)執(zhí)行程序MOV 7AH,#00OUTT0:SETB ET0; 啟動定時器 T0POP PSWPOP ACCRETI; 按鍵處理程序KEYSCAN:CLR EAJNB P1.0,KEYS

10、CAN0 ;P1.0 有按鍵按下則跳轉(zhuǎn)到子程序JNB P1.1,KEYSCAN1 ;P1.1 有按鍵按下則跳轉(zhuǎn)到子程序JNB P1.2,KEYSCAN2 ;P1.2 有按鍵按下則跳轉(zhuǎn)到子程序KEYOUT: SETB EARETKEYSCAN0:LCALL DL20MS ;20ms 的延時消抖JB P1.0,KEYOUTWAIT0: JNB P1.0,WAIT0 ; 判斷按鍵是否松手, 松手就往下執(zhí)行程序 INC 7CHMOV A,7CHCLR ET0CLR TR0CJNE A,#03H,KEYOUT; 按下第一次和第二次對時、分選定MOV 7CH,#00 ; 按下第三次時就啟動計時SETB E

11、T0SETB TR0SJMP KEYOUTKEYSCAN1:LCALL DL20MS ; 按鍵加一的程序JB P1.1,KEYOUTWAIT1: JNB P1.1,WAIT1MOV A,7CHCJNE A,#02H,KSCAN11 ; 如果功能鍵按下則對時加一調(diào)整 INC 79HCJNE A,#3CH,KEYOUT ; 如果加到 60 則清零MOV 79H,#00 SJMP KEYOUT二次則對分進行加一調(diào)整MOV A,7AHCJNE A,#18H,KEYOUTMOV 7AH,#00SJMP KEYOUTKEYSCAN2:LCALL DL20MS;延時消抖程序JB P1.2,KEYOUTWAI

12、T2:JNB P1.2,WAIT2 ;判斷是否放開按鍵MOV A,7CHCJNE A,#02H,KSCAN21 ;如果功能鍵是按下第一次對時進行減一DEC 79HMOV A,79HCJNE A,#OFFH,KEYOUTMOV 79H,#3BHSJMP KEYOUTKSCAN21:DEC 7AH;如果功能鍵是按下第二次則對分進行減一CJNE A,#0FFH,KEYOUTMOV 7AH,#17HSJMP KEYOUTEND6、軟件編譯環(huán)境:Keil uVisio n2確保生成".Hex"文件©少-的:形晉&虹國4 Tuf 1n (il« 舉注 0*R

13、d呻 n”h F*bph«rd.i£rt3filpA AB« HH需洛冊Is器罷霧黑空sh?bj*?,rr閉卻上-?!廳眺小經(jīng)時闔打時4冬送檢釧時冏分的豐盤送日 片圍幷塵序的+噸週他址葉|¥1丹'T任亍芋卜忖:竊遙細(xì)屯斗問P'A上亠岸M閔時滬十氓詵FKIq義tinking.亠Program Si2«: dxdAia>0 code*323cr*ating hex fileMl*ddi,"!«f" - 0 Errortfi. 0 刪m詢g星,dh BiiBd A_g«nnwcl.人 Fi

14、nd in FifeE I鎬和功缸tiE:R五、系統(tǒng)硬件電路的設(shè)計系統(tǒng)的硬件主要包括單片機芯片,數(shù)碼管顯示,按鍵開關(guān)電路,它的硬件電路如下圖所示,單片 機采用廣泛使用的AT89C52系統(tǒng)時鐘采用12MHz的 晶振,八個數(shù)碼管顯示,小時與分鐘與秒鐘間用短橫 線,采用共陽極七段式數(shù)碼管,P0 口為段選碼輸出端, P2 口為位選碼輸出端。硬件電路如圖所示:-«£00-00-03g > 吩鼻斗H, A2 kf l.13 沖-sr六、課程設(shè)計總結(jié)經(jīng)過一周的時間以及對整本教材的知識總結(jié), 把課程設(shè)計分成了硬件和軟件兩大模塊。總的來說,硬件部分很好入手,電路也教簡單,主 要涉及的是簡單的按鍵、電容、電阻、晶振和數(shù)碼管。 在軟件部分,細(xì)分為了按鍵模塊、顯示模塊、定時/ 計數(shù)模塊,最后把幾個模塊整合在主程序模塊中,使 得程序簡單明了。整個

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論