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

下載本文檔

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

文檔簡介

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

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

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

4、,在中斷服務(wù)程序中用一個(gè)計(jì)數(shù)器對50ms計(jì)數(shù),計(jì)20次則對秒單元加一。秒單元加到60則對分單元加一,同時(shí)秒單元清0;分單元加到60則對時(shí)單元加一,同時(shí)分單元清0;時(shí)單元加到24則對時(shí)單元清0,標(biāo)志一天時(shí)間計(jì)滿。在對各單元計(jì)數(shù)的同時(shí),把他們的值放到存儲器單元的指定位置。流程圖如下:現(xiàn)場保護(hù),重置初值,啟動下一個(gè)50ms是開始顯示單元清0T0、T1設(shè)為16位計(jì)數(shù)模式允許T0中斷調(diào)用顯示子程序進(jìn)入功能程序按下鍵否開始中斷返回50ms計(jì)數(shù)器加一秒單元加一,50ms計(jì)數(shù)器清0分單元加一,秒單元清0時(shí)單元加一,分單元清0時(shí)單元清050ms計(jì)數(shù)器=20?秒單元=60?分單元=60?時(shí)單元=24?主程序流程圖

5、T0中斷服務(wù)程序NONONONO 4、按鍵處理模塊 按鍵設(shè)置為:如果沒有按鍵嗎,則時(shí)鐘正常走時(shí)。當(dāng)按下K0鍵時(shí),進(jìn)入調(diào)分狀態(tài),時(shí)鐘停止走動;按K1和K2按鍵可以進(jìn)行加一和減一操作;繼續(xù)按K0鍵可以分別進(jìn)行分和小時(shí)的調(diào)整;最后按K0鍵啟動計(jì)時(shí)。5、 匯編語言程序ORG 0000HLJMP STARTORG 000BHLJMP INIT0 START:MOV R0,#70H;主程序開始MOV R7,#0CH INIT:MOV R0,#00HINC R0DJN Z R7,INITMOV 72H,#10;對連字符進(jìn)行裝值MOV 75H,#10MOV TMOD,#01H;選擇定時(shí)器/計(jì)數(shù)器T0的方式1M

6、OV TL0,#0B0H;對低位賦初值MOV TH0,#03CH;高位賦初值SETB EASETB ET0SETB TR0 START1:LCALL SCANLCALL KEYSCANSJMP START1 DL1MS:MOV R6,#14H;延時(shí)1子程序 DL1:MOV R7,#19H DL2:DJNZ R7,DL2DJNZ R6,DL1RET DL20MS:ACALL SCAN;延時(shí)20ms子程序ACALL SCANACALL SCANRET ;數(shù)碼管顯示程序開始 SCAN:MOV A,78HMOV B,#0AHDIV AB ;時(shí)間秒的十位送給A,時(shí)間秒的個(gè)位送BMOV 71H,A;時(shí)間秒

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

8、;對字段表取值顯示MOV P0,AMOV A,R5LCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#0FFHMOV P0,#0FFHRET ;09和-的字段表TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;定時(shí)/計(jì)數(shù)器T0中斷程序 INIT0:PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTT0;50ms是否到20次,沒有

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

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

11、ALL DL20MS;按鍵加一的程序JB P1.1,KEYOUT WAIT1:JNB P1.1,WAIT1MOV A,7CHCJNE A,#02H,KSCAN11;如果功能鍵按下則對時(shí)加一調(diào)整INC 79HCJNE A,#3CH,KEYOUT;如果加到60則清零MOV 79H,#00SJMP KEYOUT KSCAN11:INC 7AH;如果功能鍵是按下第 二次則對分進(jìn)行加一調(diào)整MOV A,7AHCJNE A,#18H,KEYOUTMOV 7AH,#00SJMP KEYOUT KEYSCAN2:LCALL DL20MS;延時(shí)消抖程序JB P1.2,KEYOUT WAIT2:JNB P1.2,W

12、AIT2;判斷是否放開按鍵MOV A,7CHCJNE A,#02H,KSCAN21;如果功能鍵是按下第一次對時(shí)進(jìn)行減一DEC 79HMOV A,79HCJNE A,#0FFH,KEYOUTMOV 79H,#3BHSJMP KEYOUT KSCAN21:DEC 7AH;如果功能鍵是按下第二次則對分進(jìn)行減一CJNE A,#0FFH,KEYOUTMOV 7AH,#17HSJMP KEYOUTEND6、軟件編譯環(huán)境:Keil uVision2 確保生成 . Hex文件5、 系統(tǒng)硬件電路的設(shè)計(jì)系統(tǒng)的硬件主要包括單片機(jī)芯片,數(shù)碼管顯示,按鍵開關(guān)電路,它的硬件電路如下圖所示,單片機(jī)采用廣泛使用的AT89C5

13、2,系統(tǒng)時(shí)鐘采用12MHz的晶振,八個(gè)數(shù)碼管顯示,小時(shí)與分鐘與秒鐘間用短橫線,采用共陽極七段式數(shù)碼管,P0口為段選碼輸出端,P2口為位選碼輸出端。硬件電路如圖所示:6、 課程設(shè)計(jì)總結(jié)經(jīng)過一周的時(shí)間以及對整本教材的知識總結(jié),把課程設(shè)計(jì)分成了硬件和軟件兩大模塊。 總的來說,硬件部分很好入手,電路也教簡單,主要涉及的是簡單的按鍵、電容、電阻、晶振和數(shù)碼管。在軟件部分,細(xì)分為了按鍵模塊、顯示模塊、定時(shí)/計(jì)數(shù)模塊,最后把幾個(gè)模塊整合在主程序模塊中,使得程序簡單明了。整個(gè)設(shè)計(jì)過程中遇到的最大問題是軟件的編寫,由于采用的是匯編語言,其間使用到的各種寄存器、存儲器地址、變量很多,很難對程序的整體把握。通過電子

14、鐘的設(shè)計(jì),對單片機(jī)的原理、結(jié)構(gòu)、外圍電路進(jìn)一步的了解。在整個(gè)設(shè)計(jì)過程中學(xué)到了團(tuán)體精神和獨(dú)立解決問題的重要性。為以后的求職之路打下了基礎(chǔ)。7、 參考資料 1單片機(jī)原理與應(yīng)用 謝維成 楊加國 編著 2 單片機(jī)應(yīng)用與仿真調(diào)試 嚴(yán)天峰 編著3模擬電子技術(shù)(第三版) 胡宴如 耿蘇燕 編著4數(shù)字電子技術(shù)(第三版) 楊志忠 衛(wèi)樺林 編著 ORG 0000HLJMP STARTORG 000BHLJMP INIT0 START:MOV R0,#70H;主程序開始MOV R7,#0CH INIT:MOV R0,#00HINC R0DJNZ R7,INITMOV 72H,#10;對連字符進(jìn)行裝值MOV 75H,#

15、10MOV TMOD,#01H;選擇定時(shí)器/計(jì)數(shù)器T0的方式1MOV TL0,#0B0H;對低位賦初值MOV TH0,#03CH;高位賦初值SETB EASETB ET0SETB TR0 START1:LCALL SCANLCALL KEYSCANSJMP START1 DL1MS:MOV R6,#14H;延時(shí)1子程序 DL1:MOV R7,#19H DL2:DJNZ R7,DL2DJNZ R6,DL1RET DL20MS:ACALL SCAN;延時(shí)20ms子程序ACALL SCANACALL SCANRET ;數(shù)碼管顯示程序開始 SCAN:MOV A,78HMOV B,#0AHDIV AB

16、;時(shí)間秒的十位送給A,時(shí)間秒的個(gè)位送BMOV 71H,A;時(shí)間秒要顯示的十位MOV 70H,B;時(shí)間秒要顯示的個(gè)位MOV A,79HMOV B,#0AHDIV AB;時(shí)間分的十位送給A,時(shí)間分的個(gè)位送BMOV 74H,A;時(shí)間分要顯示的十位送地址MOV 73H,B;時(shí)間分要顯示的個(gè)位送地址MOV A,7AHMOV B,#0AHDIV AB;時(shí)間時(shí)的十位送給A,時(shí)間時(shí)的個(gè)位送BMOV 77H,A;時(shí)間時(shí)顯示的十位送地址MOV 76H,B;時(shí)間時(shí)要顯示的個(gè)位送地址MOV R1,#70HMOV R5,#0FEHMOV R3,#08H SCAN1:MOV A,R5;數(shù)碼管的顯示程序MOV P2,AMO

17、V A,R1MOV DPTR,#TABMOVC A,A+DPTR;對字段表取值顯示MOV P0,AMOV A,R5LCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#0FFHMOV P0,#0FFHRET ;09和-的字段表TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;定時(shí)/計(jì)數(shù)器T0中斷程序 INIT0:PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7B

18、HCJNE A,#14H,OUTT0;50ms是否到20次,沒有到就繼續(xù)執(zhí)行50ms的延時(shí)MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0;一秒的延時(shí)是否計(jì)到60次,沒有就繼續(xù)執(zhí)行 MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0;60分鐘的延時(shí)是否計(jì)到24次,沒有就 ;繼續(xù)執(zhí)行程序MOV 7AH,#00 OUTT0:SETB ET0;啟動定時(shí)器T0POP PSWPOP ACCRETI;按鍵處理程序 KEYSCAN:CLR EAJNB P1.0,KEYSCAN0;P1.0有按鍵按下則跳轉(zhuǎn)到子程序JNB P1.1,KEYSCAN1;P1.1有按鍵按下則跳轉(zhuǎn)到子程序JNB P1.2,KEYSCAN2;P1.2有按鍵按下則跳轉(zhuǎn)到子程序 KEYOUT:SETB EARET KEYSCAN0:LCALL DL20MS;20ms的延時(shí)消抖JB P1.0,KEYOUT WAIT0:JNB P1.0,WAIT0;判斷按鍵是否松手, 松手就往下執(zhí)行程序IN

溫馨提示

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

評論

0/150

提交評論