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

下載本文檔

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

文檔簡介

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

2、2作為時鐘控制芯片,利用單片機內(nèi)部的定時/計數(shù)器t0 實現(xiàn)軟時鐘的目的。首先將t0設定工作于定時方式,對機器周期計數(shù)形成基準時間(50ms),然后用另一個定時/計數(shù)器t1對基準時間計數(shù)形成秒,妙計60次形成分,分計60形成小時,小時計到12。最后通過數(shù)碼管把它們的內(nèi)容在相應的位置顯示出來,達到時、分、秒計時的功能。此外還要實現(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)整時間的目的。 四、系

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

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

5、 按鍵設置為:如果沒有按鍵嗎,則時鐘正常走時。當按下k0鍵時,進入調(diào)分狀態(tài),時鐘停止走動;按k1和k2按鍵可以進行加一和減一操作;繼續(xù)按k0鍵可以分別進行分和小時的調(diào)整;最后按k0鍵啟動計時。5、 匯編語言程序org 0000hljmp startorg 000bhljmp init0 start:mov r0,#70h;主程序開始mov r7,#0ch init:mov r0,#00hinc r0djn z r7,initmov 72h,#10;對連字符進行裝值mov 75h,#10mov tmod,#01h;選擇定時器/計數(shù)器t0的方式1mov tl0,#0b0h;對低位賦初值mov th

6、0,#03ch;高位賦初值setb easetb et0setb tr0 start1:lcall scanlcall keyscansjmp start1 dl1ms:mov r6,#14h;延時1子程序 dl1:mov r7,#19h dl2:djnz r7,dl2djnz r6,dl1ret dl20ms:acall scan;延時20ms子程序acall scanacall scanret ;數(shù)碼管顯示程序開始 scan:mov a,78hmov b,#0ahdiv ab ;時間秒的十位送給a,時間秒的個位送bmov 71h,a;時間秒要顯示的十位mov 70h,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,#08h scan1:mov a,r5;數(shù)碼管的顯示程序mov p2,amov a,r1mov dptr,#tabmovc a,a+dptr;對字段表取值顯示mov p0,amov a,r5

8、lcall 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ù)器t0中斷程序 init0:push accpush pswclr et0clr tr0mov tl0,#0b0hmov th0,#03chsetb tr0inc 7bhmov a,7bhcjne a,#14h,outt0;50ms是否到20次,沒有到就繼續(xù)執(zhí)行50ms的延時mov 7bh,#00i

9、nc 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,#00 outt0:setb et0;啟動定時器t0pop pswpop accreti;按鍵處理程序 keyscan:clr eajnb p1.0,keyscan0;p1.0有按鍵按下則跳轉(zhuǎn)到子程序jnb p1.1,keyscan1;p1.1有按

10、鍵按下則跳轉(zhuǎn)到子程序jnb p1.2,keyscan2;p1.2有按鍵按下則跳轉(zhuǎn)到子程序 keyout:setb earet keyscan0:lcall dl20ms;20ms的延時消抖jb p1.0,keyout wait0:jnb p1.0,wait0;判斷按鍵是否松手, 松手就往下執(zhí)行程序inc 7chmov a,7chclr et0clr tr0cjne a,#03h,keyout;按下第一次和第二次對時、分選定mov 7ch,#00;按下第三次時就啟動計時setb et0setb tr0sjmp keyout keyscan1:lcall dl20ms;按鍵加一的程序jb p1.1

11、,keyout wait1:jnb p1.1,wait1mov a,7chcjne a,#02h,kscan11;如果功能鍵按下則對時加一調(diào)整inc 79hcjne a,#3ch,keyout;如果加到60則清零mov 79h,#00sjmp keyout kscan11:inc 7ah;如果功能鍵是按下第 二次則對分進行加一調(diào)整mov a,7ahcjne a,#18h,keyoutmov 7ah,#00sjmp keyout keyscan2:lcall dl20ms;延時消抖程序jb p1.2,keyout wait2:jnb p1.2,wait2;判斷是否放開按鍵mov a,7chcjn

12、e a,#02h,kscan21;如果功能鍵是按下第一次對時進行減一dec 79hmov a,79hcjne a,#0ffh,keyoutmov 79h,#3bhsjmp keyout kscan21:dec 7ah;如果功能鍵是按下第二次則對分進行減一cjne a,#0ffh,keyoutmov 7ah,#17hsjmp keyoutend6、軟件編譯環(huán)境:keil uvision2 確保生成 . hex文件5、 系統(tǒng)硬件電路的設計系統(tǒng)的硬件主要包括單片機芯片,數(shù)碼管顯示,按鍵開關電路,它的硬件電路如下圖所示,單片機采用廣泛使用的at89c52,系統(tǒng)時鐘采用12mhz的晶振,八個數(shù)碼管顯示,

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

14、解。在整個設計過程中學到了團體精神和獨立解決問題的重要性。為以后的求職之路打下了基礎。7、 參考資料 1單片機原理與應用 謝維成 楊加國 編著 2 單片機應用與仿真調(diào)試 嚴天峰 編著3模擬電子技術(第三版) 胡宴如 耿蘇燕 編著4數(shù)字電子技術(第三版) 楊志忠 衛(wèi)樺林 編著 org 0000hljmp startorg 000bhljmp init0 start:mov r0,#70h;主程序開始mov r7,#0ch init:mov r0,#00hinc r0djnz r7,initmov 72h,#10;對連字符進行裝值mov 75h,#10mov tmod,#01h;選擇定時器/計數(shù)器

15、t0的方式1mov tl0,#0b0h;對低位賦初值mov th0,#03ch;高位賦初值setb easetb et0setb tr0 start1:lcall scanlcall keyscansjmp start1 dl1ms:mov r6,#14h;延時1子程序 dl1:mov r7,#19h dl2:djnz r7,dl2djnz r6,dl1ret dl20ms:acall scan;延時20ms子程序acall scanacall scanret ;數(shù)碼管顯示程序開始 scan:mov a,78hmov b,#0ahdiv ab ;時間秒的十位送給a,時間秒的個位送bmov 71

16、h,a;時間秒要顯示的十位mov 70h,b;時間秒要顯示的個位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,#08h scan1:mov a,r5;數(shù)碼管的顯示程序mov p2,amov a,r1mov dptr,#tabmovc a

17、,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ù)器t0中斷程序 init0:push accpush pswclr et0clr tr0mov tl0,#0b0hmov th0,#03chsetb tr0inc 7bhmov a,7bhcjne a,#14h,outt0;50ms是否

18、到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,#00 outt0:setb et0;啟動定時器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的延時消抖jb p1.0,keyout wait0:jnb p1.0,wait0;判斷按鍵是否松手, 松手就往下執(zhí)行程序inc 7

溫馨提示

  • 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

提交評論