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

下載本文檔

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

文檔簡介

./課程設計課程名稱:單片機課程設計題目名稱:單片機電子時鐘學院:電信學院專業(yè):電子工程姓名:曾代科學號:1指導教師:加國20XX11月7日課程設計名稱:51單片機電子時鐘設計方案:1、通過單片機部的計數(shù)/定時器,采用軟件編程來實現(xiàn)時鐘計數(shù),一般稱為軟時鐘,這種方法的硬件線路簡單,系統(tǒng)的功能一般與軟件設計相關,通常用在對時間精度要求不高的場合。2、采用時鐘芯片,它的功能強大,功能部件集成在芯片部,具有自動產(chǎn)生時鐘等相關功能,硬件成本相對較高;軟件編程簡單,通常用在對時鐘精度要求較高的場合。三、設計容:這里采用應用廣泛的AT89C52作為時鐘控制芯片,利用單片機部的定時/計數(shù)器T0實現(xiàn)軟時鐘的目的。首先將T0設定工作于定時方式,對機器周期計數(shù)形成基準時間〔50ms,然后用另一個定時/計數(shù)器T1對基準時間計數(shù)形成秒,妙計60次形成分,分計60形成小時,小時計到12。最后通過數(shù)碼管把它們的容在相應的位置顯示出來,達到時、分、秒計時的功能。此外還要實現(xiàn)對時間的調(diào)整功能,89C52的P1.0、P1.1、P1.2外接三個獨立按鍵,當按下P1.0按鍵時,系統(tǒng)進入調(diào)時間的狀態(tài)或啟動時間顯示的功能;當按下P1.1按鍵時,對顯示的數(shù)碼管進行加一的功能;當按下P1.2按鍵時,對顯示的數(shù)碼管進行減一的功能,達到調(diào)整時間的目的。四、系統(tǒng)軟件程序設計1.主程序先對顯示單元和定時器/計數(shù)器初始化,然后重復調(diào)用數(shù)碼管顯示模塊和按鍵處理模塊,當有按鍵按下時,則轉(zhuǎn)入相應的功能程序。數(shù)碼管顯示模塊本實驗有8個數(shù)碼管,從右到左為妙、橫線、分、橫線、時。在本系統(tǒng)中數(shù)碼管顯示采用軟件譯碼動態(tài)顯示。在存儲器中首先建立一顯示信息的字段碼表,顯示時,先從顯示緩沖區(qū)中取出顯示的信息,然后通過查表程序在字段表中查出所顯示的信息的斷碼,從P0端口輸出,同時在P2端口進行數(shù)碼管顯示。3、定時器/計數(shù)器T0中斷服務程序T0用于計時,選中方式一,重復定時,定時時間設為50ms,定時時間到則中斷,在中斷服務程序中用一個計數(shù)器對50ms計數(shù),計20次則對秒單元加一。秒單元加到60則對分單元加一,同時秒單元清0;分單元加到60則對時單元加一,同時分單元清0;時單元加到24則對時單元清0,標志一天時間計滿。在對各單元計數(shù)的同時,把他們的值放到存儲器單元的指定位置。流程圖如下:現(xiàn)場保護,重置初值,啟動下一個50ms現(xiàn)場保護,重置初值,啟動下一個50ms是開始顯示單元清0T0、T1設為16位計數(shù)模式允許T0中斷調(diào)用顯示子程序進入功能程序按下鍵否開始中斷返回50ms計數(shù)器加一秒單元加一,50ms計數(shù)器清0分單元加一,秒單元清0時單元加一,分單元清0時單元清050ms計數(shù)器=20?秒單元=60?分單元=60?時單元=24?主程序流程圖T0中斷服務程序NONONONO4、按鍵處理模塊按鍵設置為:如果沒有按鍵嗎,則時鐘正常走時。當按下K0鍵時,進入調(diào)分狀態(tài),時鐘停止走動;按K1和K2按鍵可以進行加一和減一操作;繼續(xù)按K0鍵可以分別進行分和小時的調(diào)整;最后按K0鍵啟動計時。匯編語言程序 ORG0000H LJMPSTART ORG000BH LJMPINIT0START: MOVR0,#70H ;主程序開始 MOVR7,#0CHINIT: MOVR0,#00H INCR0 DJNZR7,INIT MOV72H,#10 ;對連字符進行裝值 MOV75H,#10 MOVTMOD,#01H ;選擇定時器/計數(shù)器T0的方式1 MOVTL0,#0B0H ;對低位賦初值 MOVTH0,#03CH ;高位賦初值 SETBEA SETBET0 SETBTR0START1: LCALLSCAN LCALLKEYSCAN SJMPSTART1DL1MS: MOVR6,#14H ;延時1子程序DL1: MOVR7,#19HDL2: DJNZR7,DL2 DJNZR6,DL1 RET DL20MS: ACALLSCAN ;延時20ms子程序 ACALLSCAN ACALLSCAN RET;數(shù)碼管顯示程序開始SCAN: MOVA,78H MOVB,#0AH DIVAB;時間秒的十位送給A,時間秒的個位送B MOV71H,A ;時間秒要顯示的十位 MOV70H,B ;時間秒要顯示的個位 MOVA,79H MOVB,#0AH DIVAB ;時間分的十位送給A,時間分的個位送B MOV74H,A ;時間分要顯示的十位送地址 MOV73H,B ;時間分要顯示的個位送地址 MOVA,7AH MOVB,#0AH DIVAB ;時間時的十位送給A,時間時的個位送B MOV77H,A ;時間時顯示的十位送地址 MOV76H,B ;時間時要顯示的個位送地址 MOVR1,#70H MOVR5,#0FEH MOVR3,#08HSCAN1: MOVA,R5 ;數(shù)碼管的顯示程序 MOVP2,A MOVA,R1 MOVDPTR,#TAB MOVCA,A+DPTR ;對字段表取值顯示 MOVP0,A MOVA,R5 LCALLDL1MS INCR1 MOVA,R5 RLA MOVR5,A DJNZR3,SCAN1 MOVP2,#0FFH MOVP0,#0FFH RET ;"0~9"和"-"的字段表TAB: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH;定時/計數(shù)器T0中斷程序INIT0: PUSHACC PUSHPSW CLRET0 CLRTR0 MOVTL0,#0B0H MOVTH0,#03CH SETBTR0 INC7BH MOVA,7BHCJNEA,#14H,OUTT0 ;50ms是否到20次,沒有到就繼續(xù)執(zhí)行50ms的延時 MOV7BH,#00 INC78H MOVA,78HCJNEA,#3CH,OUTT0 ;一秒的延時是否計到60次,沒有就繼續(xù)執(zhí)行 MOV78H,#00 INC79H MOVA,79H CJNEA,#3CH,OUTT0 MOV79H,#00 INC7AH MOVA,7AH CJNEA,#18H,OUTT0 ;60分鐘的延時是否計到24次,沒有就繼續(xù)執(zhí)行程序 MOV7AH,#00OUTT0:SETBET0 ;啟動定時器T0 POPPSW POPACC RETI ;按鍵處理程序KEYSCAN:CLREA JNBP1.0,KEYSCAN0 ;P1.0有按鍵按下則跳轉(zhuǎn)到子程序 JNBP1.1,KEYSCAN1 ;P1.1有按鍵按下則跳轉(zhuǎn)到子程序 JNBP1.2,KEYSCAN2 ;P1.2有按鍵按下則跳轉(zhuǎn)到子程序KEYOUT: SETBEA RETKEYSCAN0:LCALLDL20MS ;20ms的延時消抖 JBP1.0,KEYOUTWAIT0: JNBP1.0,WAIT0 ;判斷按鍵是否松手,松手就往下執(zhí)行程序 INC7CH MOVA,7CH CLRET0 CLRTR0 CJNEA,#03H,KEYOUT ;按下第一次和第二次對時、分選定 MOV7CH,#00 ;按下第三次時就啟動計時 SETBET0 SETBTR0 SJMPKEYOUTKEYSCAN1:LCALLDL20MS ;按鍵加一的程序 JBP1.1,KEYOUTWAIT1: JNBP1.1,WAIT1 MOVA,7CH CJNEA,#02H,KSCAN11 ;如果功能鍵按下則對時加一調(diào)整 INC79H CJNEA,#3CH,KEYOUT ;如果加到60則清零 MOV79H,#00 SJMPKEYOUTKSCAN11:INC7AH ;如果功能鍵是按下第二次則對分進行加一調(diào)整 MOVA,7AH CJNEA,#18H,KEYOUT MOV7AH,#00 SJMPKEYOUTKEYSCAN2:LCALLDL20MS ;延時消抖程序 JBP1.2,KEYOUTWAIT2: JNBP1.2,WAIT2 ;判斷是否放開按鍵 MOVA,7CH CJNEA,#02H,KSCAN21 ;如果功能鍵是按下第一次對時進行減一 DEC79H MOVA,79H CJNEA,#0FFH,KEYOUT MOV79H,#3BH SJMPKEYOUTKSCAN21:DEC7AH ;如果功能鍵是按下第二次則對分進行減一 CJNEA,#0FFH,KEYOUT MOV7AH,#17H SJMPKEYOUT END6、軟件編譯環(huán)境:KeiluVision2確保生成".Hex"文件系統(tǒng)硬件電路的設計系統(tǒng)的硬件主要包括單片機芯片,數(shù)碼管顯示,按鍵開關電路,它的硬件電路如下圖所示,單片機采用廣泛使用的AT89C52,系統(tǒng)時鐘采用12MHz的晶振,八個數(shù)碼管顯示,小時與分鐘與秒鐘間用短橫線,采用共陽極七段式數(shù)碼管,P0口為段選碼輸出端,P2口為位選碼輸出端。硬件電路如圖所示:課程設計總結經(jīng)過一周的時間以及對整本教材的知識總結,把課程設計分成了硬件和軟件兩大模塊??偟膩碚f,硬件部分很好入手,電路也教簡單,主要涉及的是簡單的按鍵、電容、電阻、晶振和數(shù)碼管。在軟件部分,細分為了按鍵模塊、顯示模塊、定時/計數(shù)模塊,最后把幾個模塊整合在主程序模塊中,使得程序簡單明了。整個設計過程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論