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

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)電子時(shí)鐘的設(shè)計(jì)摘 要系統(tǒng)由at89c51、seg數(shù)碼管、按鍵、電容、晶振、電阻等部分構(gòu)成,能實(shí)現(xiàn)時(shí)間的調(diào)整、時(shí)間校對(duì)、定時(shí)時(shí)間的設(shè)定,輸出等功能。系統(tǒng)的功能選擇由按鍵時(shí)、分、秒、完成。 開(kāi)機(jī)時(shí),顯示12:00:00的時(shí)間開(kāi)始計(jì)時(shí);p0.0/ad0控制“秒”的調(diào)整,每按一次加1秒;p0.1/ad1控制“分”的調(diào)整,每按一次加1分;p0.2/ad2控制“時(shí)”的調(diào)整,每按一次加1個(gè)小時(shí);系統(tǒng)的主程序主要完成時(shí)間顯示和定時(shí)輸出判斷功能。而時(shí)間單元進(jìn)位,時(shí)間設(shè)定時(shí),調(diào)定時(shí)間設(shè)定時(shí)等功能全部在中斷服務(wù)程序中完成。該電子鐘的精確度在仿真軟件中效果良好。關(guān)鍵詞:電子鐘;at89c51;中斷;seg1 設(shè)

2、計(jì)思想1.1硬件設(shè)計(jì)思想2.1.1電路設(shè)計(jì)思想電路原理圖見(jiàn)附圖1,由動(dòng)態(tài)數(shù)碼顯示組成時(shí)、分、秒的顯示。把“單片機(jī)系統(tǒng)”區(qū)域中的p1.0p1.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的ah端口上;把“單片機(jī)系統(tǒng):區(qū)域中的p3.0p3.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中ss8端口上;“單片機(jī)系統(tǒng)”區(qū)域中的p0.0/ad0、p0.1/ad1、p0.2/ad2端口分別用導(dǎo)線連接到“獨(dú)立式鍵盤(pán)”區(qū)域中的sp3、sp2、sp1端口上。1.1.2鍵盤(pán)設(shè)計(jì)思想鍵盤(pán)是人與微機(jī)打交道的主要設(shè)備,按鍵的讀取容易引起誤動(dòng)作。可采用軟件去抖動(dòng)的方法處理,軟件的觸點(diǎn)在閉合和斷開(kāi)的時(shí)候會(huì)產(chǎn)生抖動(dòng),這時(shí)觸點(diǎn)的邏

3、輯電平是不穩(wěn)定的,如不采取妥善處理的話,將引起按鍵命令錯(cuò)誤或重復(fù)執(zhí)行,在這里采用軟件延時(shí)的方法來(lái)避開(kāi)抖動(dòng),延時(shí)時(shí)間20ms.1.1.3連擊功能的實(shí)現(xiàn)按下某鍵時(shí),對(duì)應(yīng)的功能鍵解釋程序得到執(zhí)行,如操作者沒(méi)有釋放按鍵,則對(duì)應(yīng)的功能會(huì)反復(fù)執(zhí)行,好象連續(xù)執(zhí)行,在這里我們采用軟件延時(shí)250ms,當(dāng)按鍵沒(méi)釋放則執(zhí)行下一條對(duì)應(yīng)程序。利用連擊功能,能實(shí)現(xiàn)快速調(diào)時(shí)操作。1.2軟件設(shè)計(jì)思想本系統(tǒng)的主程序主要完成時(shí)間顯示和定時(shí)輸出判斷功能。而時(shí)間單元進(jìn)位,時(shí)間設(shè)定時(shí),調(diào)定時(shí)間設(shè)定時(shí)等功能全部在中斷服務(wù)程序中完成。1.2.1數(shù)據(jù)與代碼轉(zhuǎn)換由前述可知,從p2口輸出位選碼,從p0口輸出段選碼,led就會(huì)顯示出數(shù)字來(lái)。但p0

4、口的輸出的數(shù)據(jù)是要bcd碼,各存儲(chǔ)單元存儲(chǔ)的是二進(jìn)制數(shù),也就是和要顯示出的字符表達(dá)的含義是不一致的??梢?jiàn),將要顯示的存儲(chǔ)單元的數(shù)據(jù)直接送到p0口去驅(qū)動(dòng)led數(shù)碼管顯示是不能正確表達(dá)的,必須在系統(tǒng)內(nèi)部將要顯示的數(shù)據(jù)經(jīng)過(guò)bcd碼行轉(zhuǎn)換后,將各個(gè)單元數(shù)據(jù)的段選代碼送入p0口,給cd4511譯碼后去驅(qū)動(dòng)數(shù)碼管顯示。具體轉(zhuǎn)換過(guò)程如下:我們先將要顯示的數(shù)據(jù)裝入累加器a中,再將a中的數(shù)據(jù)轉(zhuǎn)換成高低兩位的bcd碼,再放回a中,然后將a中的值輸出。如:有一個(gè)單元存儲(chǔ)了45這樣一位數(shù),則需轉(zhuǎn)換成四位的bcd碼:(0100)(0101)然后放入a中。 a中bcd碼,高位四位代表¡4¡低四位代表&

5、#161;5¡同時(shí)送給兩個(gè)譯碼器中,譯碼后¡ 45¡ 字就在兩個(gè)led中顯示出來(lái)。1.2.2計(jì)時(shí)功能的實(shí)現(xiàn)與中斷服務(wù)程序時(shí)間的運(yùn)行依靠定時(shí)中斷子程序?qū)r(shí)鐘單元數(shù)值進(jìn)位調(diào)整來(lái)實(shí)現(xiàn)的。計(jì)數(shù)器t0打開(kāi)后,進(jìn)入計(jì)時(shí),滿100毫秒后,重裝定時(shí)。中斷一次,滿一秒后秒進(jìn)位,滿60秒后即為1分鐘,分鐘單元進(jìn)位,60分到了后,時(shí)單元進(jìn)位。得到時(shí)、分、秒存儲(chǔ)單元的值,并經(jīng)譯碼后,通過(guò)掃描程序送led中顯示出來(lái),實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)功能。累加是用指令inc來(lái)實(shí)現(xiàn)的。進(jìn)入中斷服務(wù)程序以后,執(zhí)行push psw和push a將程序狀態(tài)寄存器psw的內(nèi)容和累加器a中的數(shù)據(jù)保存起來(lái),這便是所謂的

6、61; 保護(hù)現(xiàn)場(chǎng)¡ . 以保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)時(shí)存取關(guān)鍵數(shù)據(jù)的存儲(chǔ)區(qū)叫做堆棧。在軟件的控制之下,堆棧可在片內(nèi)ram中的任一區(qū)間設(shè)定,而堆棧的數(shù)據(jù)存取與一般的ram存取又有區(qū)別,對(duì)它的操作,要遵循¡ 后進(jìn)先出¡ 的原則。1.2.3時(shí)間控制功能與比較指令系統(tǒng)的另一功能就是實(shí)現(xiàn)對(duì)執(zhí)行設(shè)備的定時(shí)開(kāi)關(guān)控制,其主要控制思想是這樣的:先將執(zhí)行設(shè)備開(kāi)啟的時(shí)間和關(guān)閉時(shí)間置入ram某一單元,在計(jì)時(shí)主程序當(dāng)中執(zhí)行幾條比較指令,如果當(dāng)前計(jì)時(shí)時(shí)間與執(zhí)行設(shè)備的設(shè)定開(kāi)啟時(shí)間相等,就執(zhí)行一條clr指令,將對(duì)應(yīng)的那路p3置為高電位,開(kāi)啟;如果當(dāng)前計(jì)時(shí)時(shí)間與執(zhí)行設(shè)備設(shè)定的關(guān)閉時(shí)間相等,就執(zhí)行setb對(duì)

7、應(yīng)的p3置低電位,二極管截止,。實(shí)現(xiàn)此控制功能用到的比較指令為cjne a,#direct, rel,其轉(zhuǎn)移條件是累加器a中的值與立即數(shù)不等則轉(zhuǎn)移。3 電路原理與電路圖3.1電路原理電路原理圖見(jiàn)附圖1,由動(dòng)態(tài)數(shù)碼顯示管組成時(shí)、分、秒的顯示。p0口的8條數(shù)據(jù)線p0.0至p0.7分別與兩個(gè)cd4511譯碼的abcd口相接,p2口的p2.0至p2.2分別通過(guò)電阻r10至r13與vt1至vt3的基極相連接。這樣通過(guò)p0口送出一個(gè)存儲(chǔ)單元的高位、低位bcd顯示代碼,通過(guò)p2口送出掃描選通代碼輪流點(diǎn)亮led1至led6,就會(huì)將要顯示的數(shù)據(jù)在數(shù)碼管中顯示出來(lái)。從p0口輸出的代碼是bcd碼,從p2口輸出的就是

8、位選碼。這是掃描顯示原理。3電路原理圖(如圖3.1)圖 3.1 電路原理圖4 流程圖與算法描述4.1流程圖開(kāi)始計(jì)數(shù)單元清零th0,tl0裝入初值開(kāi)中斷,并允許t0中斷秒按鍵識(shí)別成功否?second加1second=60嗎?second=0顯示數(shù)據(jù)處理分按鍵識(shí)別成功否?minite加1minite=60嗎?minite=0顯示數(shù)據(jù)處理時(shí)按鍵識(shí)別成功否?hour加1hour=24嗎?hour=0顯示數(shù)據(jù)處理流程圖1:實(shí)驗(yàn)主程序流程圖t0中斷入口通過(guò)查表方式顯示數(shù)據(jù)數(shù)碼位選加1位選數(shù)值8嗎?位選數(shù)值0秒計(jì)數(shù)加1秒計(jì)數(shù)500嗎?秒計(jì)數(shù)0second加1second=60嗎?second=0,并mini

9、te加1minite=60嗎?minite=0,并hour加1hour=24嗎?hour=0顯示數(shù)據(jù)處理中斷返回流程圖2:定時(shí)中斷程序流程圖參考文獻(xiàn):1陳立周,陳宇.單片機(jī)原理及其應(yīng)用m. 機(jī)械工業(yè)出版社,2006.2謝維成,楊加國(guó),董秀成.單片機(jī)原理與應(yīng)用及c51程序設(shè)計(jì)m.北京:清華大學(xué)出版社,2009.252-2683孫育才,蘇學(xué)成.單片微型計(jì)算機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)m.南京:東南大學(xué)出版社,1990.4.2附錄(匯編程序)second equ 30h; 秒寄存器minite equ 31h; 分寄存器hour equ 32h; 時(shí)寄存器hourk bit p0.2minitek bit

10、p0.1secondk bit p0.0dispbuf equ 40h dispbit equ 48h t2scnta equ 49h t2scntb equ 4ah temp equ 4bh org 00h; 程序執(zhí)行開(kāi)始地址 ljmp start; 跳轉(zhuǎn)到標(biāo)號(hào)start執(zhí)行 org 0bh; t0中斷程序入口 ljmp int_t0; 跳至in-t0執(zhí)行;主程序start: mov second, #00h; 清0存放秒分時(shí)值得單元 mov minite, #00h mov hour, #12 mov dispbit, #00h mov t2scnta, #00h mov t2scntb,

11、 #00h mov temp, #0feh lcall disp; 在2kb范圍內(nèi)長(zhǎng)調(diào)用 顯示子程序 mov tmod, #01h mov th0, #(65536-2000) / 256; 2毫秒 mov tl0, #(65536-2000) / 256 setb tr0; 允許to中斷 setb et0; 開(kāi)啟t0定時(shí)器 setb ea; 總中斷開(kāi)放;按鍵掃描子程序及校時(shí)調(diào)整wt: jb secondk, nk1; secondk為1(sp1建按下)時(shí)跳到 lcall dely10ms jb secondk, nk1 inc second; 對(duì)計(jì)數(shù)器加1 mov a, second cjn

12、e a, #60, ns60; 沒(méi)到60秒返回,到60秒清0 ;判斷計(jì)數(shù)器是否滿59? mov second, #00hns60: lcall disp jnb secondk,$; 不滿60秒就循環(huán)執(zhí)行nk1: jb minitek, nk2; 分控制鍵按下時(shí)跳轉(zhuǎn) lcall dely10ms jb minitek, nk2; 分控制鍵按下時(shí)跳轉(zhuǎn) inc minite mov a, minite cjne a, #60, nm60 mov minite, #00hnm60: lcall disp jnb minitek, $; 不滿60分就循環(huán)執(zhí)行nk2: jb hourk, nk3 lca

13、ll dely10ms jb hourk, nk3 inc hour mov a, hour cjne a, #24, nh24 mov hour, #00hnh24: lcall disp jnb hourk, $ ;不滿24小時(shí)就循環(huán)執(zhí)行nk3ljmp wtdely10ms: ;延時(shí)1毫秒的子程序 mov r6, #10d1: mov r7, #248 djnz r7, $ djnz r6, d1 ret ;顯示子程序disp: ;將得出的時(shí)間存入40h(dispbuf)之后的地址 mov a, #dispbuf; 將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制 add a, #8 dec a m

14、ov r1, a mov a, hour; 時(shí)送a mov b, #10; 10進(jìn)制/10=10進(jìn)制 div ab mov r1, a; 累加器送內(nèi)部ram單元 dec r1 mov a, b mov r1, a dec r1; mov a, #10 mov r1, a dec r1 mov a, minite; 分送a mov b, #10 div ab; 十進(jìn)制調(diào)整 mov r1, a dec r1 mov a, b mov r1, a dec r1 mov a, #10 mov r1, a dec r1 mov a, second;秒送a mov b, #10 div ab; 十進(jìn)制調(diào)整

15、 mov r1, a dec r1 mov a, b mov r1, a dec r1 retint_t0: ;t0中斷服務(wù)子程序,即計(jì)時(shí)time子程序 mov th0,#(65536-2000) / 256; 2毫秒 mov tl0,#(65536-2000) / 256 mov a, #0ffh mov p3, a mov a, #dispbuf add a, dispbit; 地址加,并將時(shí)間的各位送到p1 mov r0, a mov a, r0; 取顯示數(shù)據(jù)到a mov dptr, #table; 取段碼表地址 movc a, a+dptr; 查顯示數(shù)據(jù)對(duì)應(yīng)段碼 mov p1, a;

16、分十位送p1口顯示 mov a, dispbit mov dptr, #tab; 表地址送數(shù)據(jù)指針 movc a, a+dptr mov p3, a inc dispbit mov a, dispbit cjne a, #08h, kna mov dispbit, #00hkna: inc t2scnta; 時(shí)間的增加與進(jìn)位 mov a, t2scnta cjne a, #100, done mov t2scnta, #00h inc t2scntb mov a, t2scntb cjne a, #05h, done mov t2scntb, #00h inc second; 秒加一 mov a, second; cjne a, #60, next; 到60秒了嗎? mov second, #00h; 到60秒清0 inc minite; 分加1 mov

溫馨提示

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

評(píng)論

0/150

提交評(píng)論