




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計課程名稱 : 單片機(jī)課程設(shè)計 題目名稱 : 單片機(jī)電子時鐘 學(xué) 院 : 電 信 學(xué) 院 專 業(yè) : 電 子 工 程 姓 名 : 學(xué) 號 : 指導(dǎo)教師 : 2010年11月7日 1、 課程設(shè)計名稱:51單片機(jī)電子時鐘2、 設(shè)計方案: 1、通過單片機(jī)內(nèi)部的計數(shù)/定時器,采用軟件編程來實現(xiàn)時鐘計數(shù),一般稱為軟時鐘,這種方法的硬件線路簡單,系統(tǒng)的功能一般與軟件設(shè)計相關(guān),通常用在對時間精度要求不高的場合。2、采用時鐘芯片,它的功能強(qiáng)大,功能部件集成在芯片內(nèi)部,具有自動產(chǎn)生時鐘等相關(guān)功能,硬件成本相對較高;軟件編程簡單,通常用在對時鐘精度要求較高的場合。三、設(shè)計內(nèi)容:這里采用應(yīng)用廣泛的at89c5
2、2作為時鐘控制芯片,利用單片機(jī)內(nèi)部的定時/計數(shù)器t0 實現(xiàn)軟時鐘的目的。首先將t0設(shè)定工作于定時方式,對機(jī)器周期計數(shù)形成基準(zhǔn)時間(50ms),然后用另一個定時/計數(shù)器t1對基準(zhǔn)時間計數(shù)形成秒,妙計60次形成分,分計60形成小時,小時計到12。最后通過數(shù)碼管把它們的內(nèi)容在相應(yīng)的位置顯示出來,達(dá)到時、分、秒計時的功能。此外還要實現(xiàn)對時間的調(diào)整功能,89c52的p1.0、p1.1、p1.2外接三個獨(dú)立按鍵,當(dāng)按下p1.0按鍵時,系統(tǒng)進(jìn)入調(diào)時間的狀態(tài)或啟動時間顯示的功能;當(dāng)按下p1.1按鍵時,對顯示的數(shù)碼管進(jìn)行加一的功能;當(dāng)按下p1.2按鍵時,對顯示的數(shù)碼管進(jìn)行減一的功能,達(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端口進(jìn)行數(shù)碼管顯示。 3、定時器/計數(shù)器t0中斷服務(wù)程序 t0用于計時,選中方式一,重復(fù)定時,定時時間設(shè)為50ms,定時時間到則中斷,在中斷服務(wù)程序中用一個計數(shù)器對50ms計數(shù),計2
4、0次則對秒單元加一。秒單元加到60則對分單元加一,同時秒單元清0;分單元加到60則對時單元加一,同時分單元清0;時單元加到24則對時單元清0,標(biāo)志一天時間計滿。在對各單元計數(shù)的同時,把他們的值放到存儲器單元的指定位置。流程圖如下:現(xiàn)場保護(hù),重置初值,啟動下一個50ms是開始顯示單元清0t0、t1設(shè)為16位計數(shù)模式允許t0中斷調(diào)用顯示子程序進(jìn)入功能程序按下鍵否開始中斷返回50ms計數(shù)器加一秒單元加一,50ms計數(shù)器清0分單元加一,秒單元清0時單元加一,分單元清0時單元清050ms計數(shù)器=20?秒單元=60?分單元=60?時單元=24?主程序流程圖t0中斷服務(wù)程序nononono 4、按鍵處理模塊
5、 按鍵設(shè)置為:如果沒有按鍵嗎,則時鐘正常走時。當(dāng)按下k0鍵時,進(jìn)入調(diào)分狀態(tài),時鐘停止走動;按k1和k2按鍵可以進(jìn)行加一和減一操作;繼續(xù)按k0鍵可以分別進(jìn)行分和小時的調(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;對連字符進(jìn)行裝值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;如果功能鍵是按下第 二次則對分進(jìn)行加一調(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;如果功能鍵是按下第一次對時進(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è)計系統(tǒng)的硬件主要包括單片機(jī)芯片,數(shù)碼管顯示,按鍵開關(guān)電路,它的硬件電路如下圖所示,單片機(jī)采用廣泛使用的at89c52,系統(tǒng)時鐘采用12mhz的晶振,八個數(shù)碼管顯示,
13、小時與分鐘與秒鐘間用短橫線,采用共陽極七段式數(shù)碼管,p0口為段選碼輸出端,p2口為位選碼輸出端。硬件電路如圖所示:6、 課程設(shè)計總結(jié)經(jīng)過一周的時間以及對整本教材的知識總結(jié),把課程設(shè)計分成了硬件和軟件兩大模塊。 總的來說,硬件部分很好入手,電路也教簡單,主要涉及的是簡單的按鍵、電容、電阻、晶振和數(shù)碼管。在軟件部分,細(xì)分為了按鍵模塊、顯示模塊、定時/計數(shù)模塊,最后把幾個模塊整合在主程序模塊中,使得程序簡單明了。整個設(shè)計過程中遇到的最大問題是軟件的編寫,由于采用的是匯編語言,其間使用到的各種寄存器、存儲器地址、變量很多,很難對程序的整體把握。通過電子鐘的設(shè)計,對單片機(jī)的原理、結(jié)構(gòu)、外圍電路進(jìn)一步的了
14、解。在整個設(shè)計過程中學(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,#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)系上傳者。文件的所有權(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 派出所工作管理制度
- 流動加油車管理制度
- 流引產(chǎn)手術(shù)管理制度
- 測繪可追溯管理制度
- 家庭教育心理學(xué)家長指南
- 家庭教育的心理環(huán)境與技巧
- 海底撈人員管理制度
- 家庭教育在扶貧中的重要作用
- 海鮮養(yǎng)殖及管理制度
- 家居裝飾的流行趨勢與新材料的崛起
- 建筑師個人簡歷模板3篇
- 鄉(xiāng)土景觀研究智慧樹知到答案章節(jié)測試2023年長安大學(xué)
- 四川省成都市武侯區(qū)2022-2023學(xué)年生物七下期末監(jiān)測試題含解析
- 牙外傷(國際指南)
- 部編版八年級下-24.唐詩三首(2)茅屋為秋風(fēng)所破歌【課件】
- 2023-2024學(xué)年湖北省仙桃市小學(xué)數(shù)學(xué)四年級下冊期末評估試卷
- GB/T 1115-2022圓柱形銑刀
- GB/T 6547-1998瓦楞紙板厚度的測定法
- GB/T 3505-2009產(chǎn)品幾何技術(shù)規(guī)范(GPS)表面結(jié)構(gòu)輪廓法術(shù)語、定義及表面結(jié)構(gòu)參數(shù)
- GB/T 21446-2008用標(biāo)準(zhǔn)孔板流量計測量天然氣流量
- GB/T 17772-2018土方機(jī)械保護(hù)結(jié)構(gòu)的實驗室鑒定撓曲極限量的規(guī)定
評論
0/150
提交評論