欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      單片機(jī)課程論文設(shè)計(jì)-電子鐘課程設(shè)計(jì)

      時(shí)間:2019-05-14 18:41:32下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《單片機(jī)課程論文設(shè)計(jì)-電子鐘課程設(shè)計(jì)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《單片機(jī)課程論文設(shè)計(jì)-電子鐘課程設(shè)計(jì)》。

      第一篇:?jiǎn)纹瑱C(jī)課程論文設(shè)計(jì)-電子鐘課程設(shè)計(jì)

      單片機(jī)課程論文設(shè)計(jì) ——電子鐘

      一 課程設(shè)計(jì)的主要內(nèi)容 1 設(shè)計(jì)思想 1.1硬件設(shè)計(jì)思想 1.1.1電路設(shè)計(jì)思想

      電路原理圖見圖1,由動(dòng)態(tài)數(shù)碼顯示組成時(shí)、分、秒的顯示。把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0-P1.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的A-H端口上;把“單片機(jī)系統(tǒng):區(qū)域中的P3.0-P3.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中S-S8端口上;“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導(dǎo)線連接到“獨(dú)立式鍵盤”區(qū)域中的SP3、SP2、SP1端口上。

      1.1.2鍵盤設(shè)計(jì)思想

      鍵盤是微機(jī)的主要設(shè)備,按鍵的讀取容易引起錯(cuò)誤動(dòng)作??刹捎密浖ザ秳?dòng)的方法處理,軟件的觸點(diǎn)在閉合和斷開的時(shí)候會(huì)產(chǎn)生抖動(dòng),這時(shí)觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不采取妥善處理的話,將引起按鍵命令錯(cuò)誤或重復(fù)執(zhí)行,在這里采用軟件延時(shí)的方法來避開抖動(dòng),延時(shí)時(shí)間20ms.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ù)字來。但P0口的輸出的數(shù)據(jù)是要BCD碼,各存儲(chǔ)單元存儲(chǔ)的是二進(jìn)制數(shù),也就是和要顯示出的字符表達(dá)的含義是不一致的??梢?,將要顯示的存儲(chǔ)單元的數(shù)據(jù)直接送到P0口去驅(qū)動(dòng)LED數(shù)碼管顯示是不能正確表達(dá)的,必須在系統(tǒng)內(nèi)部將要顯示的數(shù)據(jù)經(jīng)過BCD碼行轉(zhuǎn)換后,將各個(gè)單元數(shù)據(jù)的段選代碼送入P0口,給CD4511譯碼后去驅(qū)動(dòng)數(shù)碼管顯示。具體轉(zhuǎn)換過程如下:

      我們先將要顯示的數(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?同時(shí)送給兩個(gè)譯碼器中,譯碼后? 45? 字就在兩個(gè)LED中顯示出來。

      1.2.2計(jì)時(shí)功能的實(shí)現(xiàn)與中斷服務(wù)程序

      時(shí)間的運(yùn)行依靠定時(shí)中斷子程序?qū)r(shí)鐘單元數(shù)值進(jìn)位調(diào)整來實(shí)現(xiàn)的。計(jì)數(shù)器T0打開后,進(jìn)入計(jì)時(shí),滿100毫秒后,重裝定時(shí)。中斷一次,滿一秒后秒進(jìn)位,滿60秒后即為1分鐘,分鐘單元進(jìn)位,60分到了后,時(shí)單元進(jìn)位。得到時(shí)、分、秒存儲(chǔ)單元的值,并經(jīng)譯碼后,通過掃描程序送LED中顯示出來,實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)功能。累加是用指令I(lǐng)NC來實(shí)現(xiàn)的。進(jìn)入中斷服務(wù)程序以后,執(zhí)行PUSH PSW和PUSH A將程序狀態(tài)寄存器PSW的內(nèi)容和累加器A中的數(shù)據(jù)保存起來,這便是所謂的? 保護(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í)開關(guān)控制,其主要控制思想是這樣的:先將執(zhí)行設(shè)備開啟的時(shí)間和關(guān)閉時(shí)間置入RAM某一單元,在計(jì)時(shí)主程序當(dāng)中執(zhí)行幾條比較指令,如果當(dāng)前計(jì)時(shí)時(shí)間與執(zhí)行設(shè)備的設(shè)定開啟時(shí)間相等,就執(zhí)行一條CLR指令,將對(duì)應(yīng)的那路P3置為高電位,開啟;如果當(dāng)前計(jì)時(shí)時(shí)間與執(zhí)行設(shè)備設(shè)定的關(guān)閉時(shí)間相等,就執(zhí)行SETB對(duì)應(yīng)的P3置低電位,二極管截止。實(shí)現(xiàn)此控制功能用到的比較指令為CJNE A,#direct,rel,其轉(zhuǎn)移條件是累加器A中的值與立即數(shù)不等則轉(zhuǎn)移。

      二 課程設(shè)計(jì)的目的

      實(shí)現(xiàn)的功能:

      ①開機(jī)時(shí),電子鐘從12:00:00開始自動(dòng)計(jì)時(shí)。②設(shè)置按鍵,能對(duì)時(shí)、分、秒進(jìn)行調(diào)整。

      三設(shè)計(jì)方案的論證

      3.1電路原理與電路圖 3.1.1電路原理

      電路原理圖見圖1,由動(dòng)態(tài)數(shù)碼顯示管組成時(shí)、分、秒的顯示。P0口的8條數(shù)據(jù)線P0.0至P0.7分別與兩個(gè)CD4511譯碼的ABCD口相接,P2口的P2.0至P2.2分別通過電阻R10至R13與VT1至VT3的基極相連接。這樣通過P0口送出一個(gè)存儲(chǔ)單元的高位、低位BCD顯示代碼,通過P2口送出掃描選通代碼輪流點(diǎn)亮LED1至LED6,就會(huì)將要顯示的數(shù)據(jù)在數(shù)碼管中顯示出來。從P0口輸出的代碼是BCD碼,從P2口輸出的就是位選碼。這是掃描顯示原理。

      電路原理圖

      C130pFU1X119CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617S-0S-1S-2S-3S-4S-5S-6S-7C230pFXTAL2R210kR310kR410kR110k9RSTC310uF293031PSENALEEARP1987654321RESPACK-***78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51時(shí)分秒S-7S-6S-5S-4S-3S-2S-1S-001234567

      圖 1 電路原理圖

      3.2 流程圖與算法描述 3.2.1流程圖

      3.3軟件設(shè)計(jì)

      SECOND

      EQU 30H;MINITE EQU 31H;HOUR

      EQU 32H;HOURK

      BIT P0.2 MINITEK BIT P0.1 SECONDK BIT P0.0 DISPBUF EQU 40H DISPBIT EQU 48H 流程圖

      秒寄存器

      分寄存器

      時(shí)寄存器 圖

      T2SCNTA

      EQU 49H

      T2SCNTB EQU 4AH TEMP

      ORG 00H;

      程序執(zhí)行開始EQU 4BH 地址

      LJMP

      START;

      執(zhí)行

      ORG

      0BH;T0

      LJMP

      INT_T0;

      ;主程序

      START: MOV

      SECOND,#00H;

      得單元

      MOV

      MINITE,#00H

      MOV

      HOUR,#12

      MOV

      DISPBIT,#00H

      MOV

      T2SCNTA,#00H

      MOV

      T2SCNTB,#00H

      MOV

      TEMP,#0FEH

      LCALL

      DISP;

      子程序

      MOV

      TMOD,#01H

      MOV

      TH0,#(65536-2000)/ 256;

      MOV

      TL0,#(65536-2000)/ 256

      SETB

      TR0;

      SETB

      ET0;

      SETB

      EA;

      WT:

      跳轉(zhuǎn)到標(biāo)號(hào)START

      中斷程序入口

      跳至IN-T0執(zhí)行

      清0存放秒分時(shí)值

      在2KB范圍內(nèi)長(zhǎng)調(diào)用 顯示2毫秒

      允許TO中斷

      開啟T0定時(shí)器

      總中斷開放

      按鍵掃描子程序及校時(shí)調(diào)整

      JB

      SECONDK, NK1;SECONDK為1(sp1建按下)時(shí)跳到

      LCALL

      DELY10MS

      JB

      SECONDK,NK1

      INC

      SECOND;

      對(duì)計(jì)數(shù)器加1

      MOV

      A,SECOND

      CJNE

      A,#60, NS60;沒到60秒返回,到60秒清0;判斷計(jì)數(shù)器是否滿59

      MOV

      SECOND,#00H NS60:

      LCALL

      DISP

      JNB

      SECONDK,$;

      NK1: JB

      MINITEK,NK2;

      LCALL

      DELY10MS

      JB

      MINITEK,NK2;

      INC

      MINITE

      MOV

      A,MINITE

      CJNE

      A,#60, NM60

      MOV

      MINITE,#00H NM60:

      LCALL DISP

      JNB

      MINITEK, $;

      NK2:

      JB

      HOURK,NK3

      LCALL

      DELY10MS

      JB

      HOURK,NK3

      INC

      HOUR

      MOV

      A, HOUR

      CJNE

      A, #24,NH24

      MOV

      HOUR,#00H

      不滿60秒就循環(huán)執(zhí)行 分控制鍵按下時(shí)跳轉(zhuǎn)

      分控制鍵按下時(shí)跳轉(zhuǎn)

      不滿60分就循環(huán)執(zhí)行

      NH24:

      LCALL

      DIS

      JNB

      HOURK,$;

      不滿24小時(shí)就循環(huán)執(zhí)行

      NK3 LJMP

      WT DELY10MS:;

      延時(shí)1毫秒的子程序

      MOV D1:

      MOV

      ;顯示子程序

      DISP:

      ;

      地址

      MOV

      ADD

      DEC

      MOV

      MOV

      MOV

      DIV

      MOV

      DEC

      MOV

      MOV

      DEC

      MOV

      MOV

      DEC

      MOV R6, #10 R7, #248 DJNZ

      R7, $ DJNZ

      R6, D1 RET

      A, #DISPBUF;

      A, #8 A R1, A A, HOUR;

      B, #10;

      AB @R1, A;

      R1 A, B @R1, A R1;A, #10 @R1, A R1 A, MINITE;

      將得出的時(shí)間存入40H(DISPBUF)之后的將temp中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制 時(shí)送A

      10進(jìn)制/10=10進(jìn)制 累加器送內(nèi)部RAM單元

      分送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;

      MOV

      B, #10

      DIV

      AB;

      MOV @R1, A

      DEC

      R1

      MOV A, B

      MOV @R1, A

      DEC

      R1

      RET INT_T0:;T0

      MOV TH0,#(65536-2000)/ 256;

      MOV TL0,#(65536-2000)/ 256

      MOV A, #0FFH

      MOV P3, A

      MOV A, #DISPBUF

      ADD

      A, DISPBIT;

      MOV R0, A

      MOV A, @R0;

      MOV DPTR, #TABLE;

      MOVC A,@A+DPTR;

      秒送A

      十進(jìn)制調(diào)整 TIME子程序 2毫秒 地址加,并將時(shí)間的各位送到p1 取顯示數(shù)據(jù)到A 取段碼表地址

      查顯示數(shù)據(jù)對(duì)應(yīng)段碼

      中斷服務(wù)子程序,即計(jì)時(shí)

      MOV

      P1, A;

      分十位送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, #00H KNA:

      INC

      T2SCNTA;

      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;

      MOV SECOND, #00H;

      INC

      MINITE;分加1

      MOV A, MINITE;

      CJNE A, #60, NEXT;

      MOV

      MINITE, #00H;

      INC

      HOUR;

      時(shí)加1

      MOV A, HOUR

      CJNE A, #24, NEXT;

      MOV

      HOUR, #00H

      時(shí)間的增加與進(jìn)位 到60秒了嗎? 到60秒清0 到60分了嗎? 到60分清0 到24小時(shí)了嗎?

      NEXT:

      LCALL

      DISP DONE:

      RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H TAB:

      DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07F

      四 系統(tǒng)調(diào)試

      系統(tǒng)由AT89C51、SEG數(shù)碼管、按鍵、電容、晶振、電阻等部分構(gòu)成,能實(shí)現(xiàn)時(shí)間的調(diào)整、時(shí)間校對(duì)、定時(shí)時(shí)間的設(shè)定,輸出等功能。系統(tǒng)的功能選擇由按鍵‘時(shí)’、‘分’、‘秒’、完成。開機(jī)時(shí),顯示12:00:00的時(shí)間開始計(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ù)程序中完成。該電子鐘的精確度在仿真軟件中效果良好。

      五 心得體會(huì)

      計(jì)算機(jī)控制技術(shù)是一門很綜合的課程。任何一個(gè)計(jì)算機(jī)系統(tǒng)都是一個(gè)復(fù)雜的整體,學(xué)習(xí)計(jì)算機(jī)控制技術(shù)是要涉及到整體的每一部分。討論某一部分原理時(shí)又要涉及到其它部分的工作原理。這樣一來,不僅不能在短時(shí)間內(nèi)較深入理解計(jì)算機(jī)的工作原理,而且也很難孤立地理解某一部分的工作原理。所以,在循序漸進(jìn)的課堂教學(xué)過程中,我總是處于“學(xué)會(huì)了一些新知識(shí),弄清了一些原來保留的問題,又出現(xiàn)了一些新問題”的循環(huán)中,直到課程結(jié)束時(shí),才把保留的問題基本搞清楚。

      學(xué)習(xí)該門課程知識(shí)時(shí),其思維方法也和其它課程不同,該課程偏重于工程思維,靈活知識(shí)運(yùn)用,具體地說,在了解了計(jì)算機(jī)編程后,剩下的是如何將它們用于實(shí)際系統(tǒng)中,其創(chuàng)造性勞動(dòng)在于如何用計(jì)算機(jī)的有關(guān)技術(shù)和廠家提供的各種芯片,設(shè)計(jì)實(shí)用的電路和系統(tǒng),再配上相應(yīng)的應(yīng)用程序,完成各種實(shí)際應(yīng)用項(xiàng)目。

      這次課程設(shè)計(jì)較為綜合,主要的困難來自對(duì)程序的編寫和校對(duì),功夫不負(fù)有心人,經(jīng)過我的虛心求學(xué)和查找資料,最終對(duì)實(shí)驗(yàn)的原理有了較清晰的認(rèn)識(shí)。但是仍然存在很多的不足,今后需要加強(qiáng)的地方還是很多,所以在今后的求學(xué)路上我會(huì)更加努力。望老師批評(píng)改正。

      六 參考文獻(xiàn):

      [1].潘新民,王燕芳編著.微型計(jì)算機(jī)控制技術(shù)[M].北京:電子工業(yè)出版社,2003 [2].何立民.單片機(jī)應(yīng)用技術(shù)選編(1)[M].北京:北京航空航天大學(xué)出版社,1995,6 [3].劉國(guó)榮,梁景凱.計(jì)算機(jī)控制技術(shù)與應(yīng)用[M] .北京:機(jī)械工業(yè)出版社,1999,5 [4].齊維毅,丁言鎂,齊振國(guó).單片機(jī)原理及應(yīng)用設(shè)計(jì)實(shí)驗(yàn)[M] .沈陽:遼寧大學(xué)出版社,2006,5 [5].李華.MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1993,8 [6].潘新民,王燕芳編著.單片微型計(jì)算機(jī)實(shí)用系統(tǒng)設(shè)計(jì)[M].北京:人民郵電出版社,1992

      第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)電子鐘設(shè)計(jì)

      單片機(jī)課程設(shè)計(jì)電子鐘設(shè)計(jì)

      目錄

      一、摘要

      二、設(shè)計(jì)任務(wù)

      三、基本原理

      數(shù)碼管顯示可以用靜態(tài)顯示或動(dòng)態(tài)顯示方法。靜態(tài)顯示需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜,時(shí)鐘顯示用四個(gè)數(shù)碼管。動(dòng)態(tài)顯示相對(duì)簡(jiǎn)單,但需動(dòng)態(tài)掃描,掃描頻率要大于人視覺暫留頻率,信息看起來才穩(wěn)定。譯碼方式可分為軟件譯碼和硬件譯碼,軟件譯碼通過譯碼程序查的顯示信息的字段碼;硬件譯碼通過硬件譯碼器得到顯示信息的字段碼,實(shí)際中通常采用軟件譯碼。

      在具體處理時(shí),定時(shí)器計(jì)數(shù)器采用中斷方式工作,對(duì)時(shí)鐘的形成在中斷服務(wù)程序中實(shí)現(xiàn)。在主程序中只需對(duì)定時(shí)器計(jì)數(shù)器初始化、調(diào)用顯示子程序和控制子程序。另外,為了使用便,設(shè)計(jì)了簡(jiǎn)單的按鍵,可以通過按鍵實(shí)現(xiàn)時(shí)、分的調(diào)整,這樣在主程序中就加入了按鍵設(shè)置子程序。

      四、編程算法思路

      五、程序流程圖

      六、硬件單元設(shè)計(jì)

      七、軟件單元設(shè)計(jì)

      八、調(diào)試結(jié)果分析

      九、設(shè)計(jì)總結(jié)及心得體會(huì)

      十、參考文獻(xiàn)

      一設(shè)計(jì)任務(wù)

      1、基本任務(wù):利用定時(shí)器/計(jì)數(shù)器中斷和靜態(tài)顯示或動(dòng)態(tài)顯示,實(shí)現(xiàn)電子時(shí)鐘的時(shí)分秒精確走時(shí)和校準(zhǔn)

      。時(shí)間顯示用四個(gè)數(shù)碼管分別顯示時(shí)、分、秒用點(diǎn)表示,在時(shí)和分的中間閃動(dòng),時(shí)間顯示格式(18:49)

      時(shí)間校準(zhǔn)用2個(gè)鍵實(shí)現(xiàn):一個(gè)鍵K1作移位選擇(選中要修改的位,選中的位用閃爍指示),一個(gè)鍵K2做加1(對(duì)選中的位進(jìn)行加1修改)。

      2、功能增強(qiáng)型任務(wù):在基本任務(wù)的基礎(chǔ)上加上日歷功能、準(zhǔn)時(shí)報(bào)時(shí)功能和跑表功能

      (1)日歷功能:能實(shí)現(xiàn)時(shí)、分、秒和年、月、日計(jì)時(shí),增加1個(gè)按鍵控制分3屏例如顯開始的第1屏默認(rèn)顯示“時(shí)、分、秒”四位+秒點(diǎn),按下K3鍵顯示“月和日”四位,再按下課K3鍵顯示“年份”四位,再按下K3鍵顯示“時(shí)、分、秒”,依次類推。程序要能處理閏年、閏月功能。

      (2)準(zhǔn)點(diǎn)報(bào)時(shí)功能:可以在增加一個(gè)按鍵K4設(shè)計(jì)具有鬧鐘功能,實(shí)現(xiàn)定點(diǎn)報(bào)時(shí)。具體操作是:按下

      K4鍵,進(jìn)入鬧鐘設(shè)置功能,再通過K1、K2鍵來完成定點(diǎn)報(bào)警時(shí)間的設(shè)置。

      (3)跑表功能:再增加一個(gè)按鍵K5設(shè)計(jì)跑表功能,實(shí)現(xiàn)啟動(dòng)毫秒計(jì)數(shù),相當(dāng)與田徑運(yùn)動(dòng)比賽的跑

      表工作。

      三基本原理

      軟件時(shí)鐘時(shí)利用單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器來實(shí)現(xiàn)的,它的過程如下:首先定單片機(jī)內(nèi)部的一個(gè)定時(shí)器/計(jì)數(shù)器工作于定時(shí)方式,對(duì)機(jī)器周期形成基準(zhǔn)時(shí)間,然后用另一個(gè)定時(shí)器/計(jì)數(shù)器或軟件計(jì)數(shù)的方法對(duì)基準(zhǔn)時(shí)間計(jì)數(shù)形成秒,秒計(jì)60次形成分,分計(jì)60次形成小時(shí),小時(shí)計(jì)24次則計(jì)滿一天。然后通過數(shù)碼管把它們的內(nèi)容在相應(yīng)位置顯示出來即可。

      四編程算法思路

      1、主程序的設(shè)計(jì):串行口工作方式0,定時(shí)器/計(jì)數(shù)器1工作在方式1進(jìn)行初始化,然后通過循環(huán)(調(diào)用顯示子程序)等待定時(shí)中斷的到來。

      2、按鍵的控制:KEY1控制時(shí)的調(diào)節(jié),kEY2控制分的調(diào)節(jié),KEY3控制時(shí)、分定型

      3、中斷服務(wù)程序的設(shè)計(jì):中斷服務(wù)程序主要功能是實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)處理。

      4、時(shí)、分、秒計(jì)時(shí)的實(shí)現(xiàn):秒計(jì)時(shí)時(shí)采用中斷方式進(jìn)行溢出次數(shù)的累計(jì)得到的。從秒到分,從分到時(shí)可通過軟件的累加和比較到位方法來實(shí)現(xiàn)。要求每滿1秒,則“秒”單元中的內(nèi)容加1;“秒”單元每滿60,則“秒”單元清0,同時(shí)“分”單元中的內(nèi)容加1;“分”單元每滿60,則“分”單元清0,同時(shí)“時(shí)”單元加1?!皶r(shí)”單元每滿24,則將“時(shí)”單元清0。

      5、顯示子程序:采用數(shù)碼管靜態(tài)顯示來顯示時(shí)鐘的走動(dòng)

      6,延時(shí)子程序:用來實(shí)現(xiàn)按鍵操控延時(shí)和實(shí)現(xiàn)整點(diǎn)12時(shí)報(bào)時(shí)

      五程序流程圖

      六硬件單元設(shè)計(jì)

      1、電路總設(shè)計(jì)圖

      2、AT89C51芯片

      七軟件單元設(shè)計(jì)

      1、資源分配:定時(shí)器T1,P1.6為調(diào)整時(shí)鐘,P1.5為調(diào)整分鐘,P1.4為控制調(diào)整

      30H秒顯示單元,31H分顯示單元,32H時(shí)顯示單元,08H放分調(diào)整標(biāo)

      志,09H放時(shí)調(diào)整標(biāo)志,0AH放閃爍標(biāo)志

      2、程序清單(加注釋)

      八調(diào)試結(jié)果分析

      在實(shí)驗(yàn)操作過程中,將所寫好的程序打入計(jì)算機(jī)內(nèi),通過編譯檢查其是否有錯(cuò)誤,如有錯(cuò)誤將其改正,直至無誤后下載仿真器,實(shí)現(xiàn)運(yùn)行。觀察實(shí)驗(yàn)箱上的數(shù)碼管顯示,判斷其是否為所需結(jié)果,如果與所要求的有差別,需繼續(xù)調(diào)試,重新修改程序,檢查硬件設(shè)施不斷地調(diào)試,不斷地檢查直至得到所要的結(jié)果。在調(diào)試過程中,開始運(yùn)行時(shí)能夠?qū)崿F(xiàn)時(shí)鐘的顯示,但是無法實(shí)現(xiàn)其閃爍功能,后經(jīng)不斷調(diào)試修改及同學(xué)的幫助最終實(shí)現(xiàn)該功能,能夠達(dá)到時(shí)鐘顯示調(diào)節(jié)的基本要求,還可以實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)。但在增加其功能顯示年月時(shí)又出現(xiàn)一定的問題,未能實(shí)現(xiàn)該功能,程序存在一定的不足性,需繼續(xù)完善,實(shí)現(xiàn)更多的功能

      九設(shè)計(jì)總結(jié)及心得體會(huì)

      經(jīng)過兩天的單片機(jī)課程設(shè)計(jì),終于完成了我的電子時(shí)鐘的設(shè)計(jì),雖然沒有完全達(dá)到設(shè)計(jì)要求,但從心底里說,還是高興的,畢竟這次設(shè)計(jì)把一些基本功能都做了出來,只是一些增強(qiáng)型功能未能實(shí)現(xiàn)。

      在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過一些實(shí)驗(yàn)但這次設(shè)計(jì)真的讓我長(zhǎng)進(jìn)了很多單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個(gè)程序并不是一件簡(jiǎn)單的事,要有通篇的全局思想考慮問題。在操作的過程中,出現(xiàn)許多錯(cuò)誤,都是在連接處不能夠上下連貫正確運(yùn)行,還需繼續(xù)努力。有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。

      從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在課程設(shè)計(jì)中的最大收獲,同時(shí),要把所學(xué)只是靈活應(yīng)用才能真正領(lǐng)悟其中的意義,加深對(duì)它的理解與掌握。還有,通過此次的操作也使我的實(shí)踐操作能力得到了進(jìn)一步的提高。

      十參考文獻(xiàn)

      【1】張毅剛,彭喜元,董繼成。單片機(jī)原理及應(yīng)用。北京:高等教育出版社,2003

      【2】周航慈。單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù)(修訂版)。北京:北京航空航天大學(xué)出版社,2002

      【3】萬光毅等。單片機(jī)實(shí)驗(yàn)與實(shí)踐教程。北京:北京航空航天大學(xué)出版社,2003

      【4】何立民,I2C總線應(yīng)用系統(tǒng)設(shè)計(jì)。北京:北京航空航天大學(xué)出版社,2002

      【5】周航慈,朱兆優(yōu),李躍忠。智能儀器原理與設(shè)計(jì)。北京:北航大學(xué)出版社,2005

      第三篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)電子鐘

      課程設(shè)計(jì)任務(wù)書

      (指導(dǎo)教師填寫)

      課程設(shè)計(jì)名稱電子技術(shù)課程設(shè)計(jì)學(xué)生姓名專業(yè)班級(jí)設(shè)計(jì)題目數(shù)字鐘

      一、課程設(shè)計(jì)的任務(wù)和目的任務(wù):設(shè)計(jì)一臺(tái)能顯示“時(shí)”、“分”、“秒”的數(shù)字鐘,周期為24小時(shí);具有校時(shí)、正點(diǎn)報(bào)時(shí)功能。

      目的:培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)的能力,綜合設(shè)計(jì)能力,培養(yǎng)動(dòng)手能力及分析問題、解決問題的能力。

      二、設(shè)計(jì)內(nèi)容、技術(shù)條件和要求

      1.數(shù)字鐘可顯示“時(shí)”、“分”、“秒”,且“時(shí)”、“分”、“秒”分別用兩個(gè)數(shù)碼管顯示,計(jì)滿23小時(shí)60分鐘60秒,則全部清零。

      2.具有校時(shí)功能,時(shí)、分校時(shí)用1HZ的信號(hào)進(jìn)行,而秒較時(shí)用2HZ時(shí)鐘信號(hào)進(jìn)行。

      3.整點(diǎn)能自動(dòng)報(bào)時(shí)。要求報(bào)時(shí)聲響為四低一高,最后一響為整點(diǎn),前四聲用500HZ信號(hào)讓喇叭發(fā)聲,最后一聲用1000HZ信號(hào)。

      4.根據(jù)上述要求,畫出電路總框圖,簡(jiǎn)述各部分工作原理。

      5.進(jìn)行各部分電路的設(shè)計(jì),要求有分析過程、原理圖表示。

      6.對(duì)原理圖進(jìn)行仿真。

      7.在實(shí)驗(yàn)箱上組裝、調(diào)試。

      8.撰寫設(shè)計(jì)總結(jié)報(bào)告。

      三、時(shí)間進(jìn)度安排

      第一周:理論設(shè)計(jì)。

      周一上午布置設(shè)計(jì)任務(wù),講解設(shè)計(jì)要求,安排答疑、實(shí)驗(yàn)時(shí)間;

      周三、周四下午課程設(shè)計(jì)答疑,其他時(shí)間學(xué)生查資料,做初步理論設(shè)計(jì);

      周五交設(shè)計(jì)初稿,由指導(dǎo)教師審查;

      第二周:仿真和安裝調(diào)試、撰寫設(shè)計(jì)總結(jié)報(bào)告

      周一、二學(xué)生進(jìn)實(shí)驗(yàn)室做仿真實(shí)驗(yàn),并根據(jù)實(shí)驗(yàn)情況修正設(shè)計(jì)圖;

      周三至周五做插接線實(shí)驗(yàn),最后根據(jù)實(shí)驗(yàn)情況總結(jié)、撰寫設(shè)計(jì)說明書。

      四、主要參考文獻(xiàn)

      1.各種版本的數(shù)字電子技術(shù)基礎(chǔ)教材

      2.各種版本的電子技術(shù)課程設(shè)計(jì)指導(dǎo)書

      3.集成電路手冊(cè)

      指導(dǎo)教師簽字:年月日

      第四篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)-電子鐘-完整

      單片機(jī)課程設(shè)計(jì)

      題目

      專業(yè) 通信工程 班級(jí) 11級(jí)1班 學(xué)號(hào) 姓名

      電 子 鐘 設(shè) 計(jì)

      單片機(jī)原理與應(yīng)用課程設(shè)計(jì)

      電子鐘設(shè)計(jì)

      功能要求:

      1、設(shè)計(jì)一個(gè)電子時(shí)鐘,要求可以顯示時(shí)、分、秒,用戶可以設(shè)置時(shí)間。

      2、實(shí)現(xiàn)秒表功能。

      功能描述

      (1)

      時(shí)鐘。初始界面是時(shí)鐘顯示,按鍵S1是調(diào)時(shí)選位,按鍵S2是加數(shù)。根據(jù)不同的閃爍位置進(jìn)行調(diào)節(jié)。

      (2)

      年與日,星期。在初始狀態(tài)下,按下S2,則跳轉(zhuǎn),顯示年月日,5S后跳回初始界面。若在年月日界面再次按下S2,則再次跳轉(zhuǎn),顯示星期,幾秒后跳轉(zhuǎn)回初始界面。

      (3)

      秒表。在初始界面下,按下S3,則跳轉(zhuǎn),進(jìn)入秒表。秒表功能鍵如下:S1 退出秒表;S2 停止開始計(jì)時(shí);S3 秒表清零。

      (4)

      鬧鐘。在設(shè)置中設(shè)置好時(shí)間,最高位設(shè)為“1”則打開鬧鐘。最高位設(shè)為“0”則關(guān)閉鬧鐘。在鬧鐘響是,按S3進(jìn)行關(guān)鬧鐘。

      工作原理 ? 硬件

      采用80C51系列單片機(jī)作為CPU,P0口作為數(shù)據(jù)線,通過鎖存器進(jìn)行段選和位選,是數(shù)碼管不斷地顯示數(shù)字。數(shù)碼管的顯示是掃描式。(1)

      本電子鐘用的單片機(jī)型號(hào)是STC89C516RD+。P0口作為段選和位選的數(shù)據(jù)線。P10口為段選寄存器的使能端。P11口為位選寄存器的使能端。晶振采用的12MHz晶振。要求頻率穩(wěn)定。

      (2)

      本電子鐘用的是共陰極數(shù)碼管。從左到右,第1,2位是秒位;第4,5位是分位;第7,8位是時(shí)位。第3,6位是“--”。

      (3)

      通過單片機(jī)的P0口,先對(duì)數(shù)碼管進(jìn)行位選,即在位鎖存器使能是將P0口數(shù)據(jù)進(jìn)行鎖存。再通過段鎖存器將P0口送來的段數(shù)據(jù)進(jìn)行鎖存。此時(shí)數(shù)碼管的第一位顯示數(shù)字。同樣的步驟進(jìn)行第二位顯示。以非??斓乃俣冗M(jìn)行,由于人眼的余輝效應(yīng),會(huì)看到8位數(shù)碼管一起亮。即可以顯示時(shí)間。通過單片機(jī)的內(nèi)部TO,T1的計(jì)數(shù)。即可以實(shí)現(xiàn)時(shí)鐘,秒表等功能。(4)電路圖如下:

      ? 軟件

      程序代碼包括三部分:1.bujian(部件庫)2.main(主函數(shù))3.H(頭文件庫)。一 .bujian(部件庫)(1)xianshi.c #include #include #define m 2 Unsigned char code t[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void led_s(unsigned int s){ p10=1;p10=0;p11=1;P0=0x7f;

      //數(shù)碼管秒個(gè)位

      P0=t[s%10];p11=0;P0=0xff;delay(m);p10=1;p10=0;p11=1;P0=0xbf;p11=0;

      //消隱

      P0=t[s/10];

      //消隱 //數(shù)碼管秒十位

      P0=0xff;delay(m);} void led_f(unsigned int s){ p10=1;// P0=t[s%10];p10=0;p11=1;P0=0xef;

      p11=0;

      P0=0xff;delay(m);p10=1;

      P0=t[s/10];p10=0;p11=1;P0=0xf7;p11=0;

      P0=0xff;delay(m);} void led_h(unsigned int s){

      // p10=1;P0=t[s%10];p10=0;p11=1;P0=0xfd;

      p11=0;// P0=0xff;delay(m);p10=1;

      P0=t[s/10];p10=0;p11=1;P0=0xfe;p11=0;

      數(shù)碼管分個(gè)位 //消隱

      //數(shù)碼管分十位

      //消隱

      數(shù)碼管時(shí)個(gè)位

      消隱

      //數(shù)碼管時(shí)十位

      //消隱

      P0=0xff;delay(m);}

      void line(void){ p10=1;P0=0x40;p10=0;p11=1;P0=0xfb;delay(m);p11=0;

      p10=1;P0=0x40;p10=0;p11=1;P0=0xdf;p11=0;delay(m);}

      //消隱

      P0=0xff;

      //數(shù)碼管“---”

      //消隱

      P0=0xff;

      //數(shù)碼管“---”

      (2)miaobiao.c #include #include

      #include extern mms,ms,mf,ss;void miaobiao(void){ TR1=1;while(1){ led_s(mms);led_f(ms);line();led_h(mf);if(s2==0){ while(!s2){led_s(mms);led_f(ms);line();led_h(mf);} if(ss==1){TR1=0;ss=!ss;}else {TR1=1;ss=!ss;} } if(s1==0){ while(!s1){led_s(mms);led_f(ms);line();led_h(mf);} TR1=0;break;} if(s3==0)

      { while(!s3){led_s(mms);led_f(ms);line();led_h(mf);} TR1=0;mms=0;ms=0;mf=0;} } }

      (3)Delay.c #include

      void delay(unsigned int a)

      { unsigned char l;

      while(a--)

      {for(l=0;l<100;l++);} }

      (4)gongneng.c #include

      #include #include extern h,f,s,n,y,r,nian,xing;extern ns,nf,nh;void gongneng(){ unsigned int aa=0,shanshuo=0,x=1,bb;

      if(s2==0){ delay(3);if(s2==0)while(!s2){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);}

      // while(1){ led_s(r);delay(2);led_f(y);delay(2);line();led_h(nian);delay(2);aa++;if(s2==0)

      { while(!s2)

      {

      led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);}

      //星期顯示

      while(1)

      {led_f(xing);delay(2);

      bb++;

      if(bb==100){bb=0;break;}

      日期顯示 }

      }

      if(aa==100)

      line();led_f(y);delay(1);led_h(nian);delay(1);

      } } if(s1==0){ delay(3);if(s1==0){

      switch(x){ case 1 : if(shanshuo==1){led_s(s);} line();led_f(f);delay(2);led_h(h);delay(2);break;case 2 :led_s(s);if(shanshuo==1){led_f(f);} delay(2);line();led_h(h);delay(2);break;case 3 : led_s(s);led_f(f);delay(2);line();if(shanshuo==1){led_h(h);} delay(2);break;case 4 : if(shanshuo==1){led_s(r);} led_f(y);delay(2);line();led_h(nian);delay(2);break;case 5 : led_s(r);if(shanshuo==1){led_f(y);} delay(2);line();led_h(nian);delay(2);break;case 6 :led_s(r);led_f(y);delay(2);line();if(shanshuo==1){led_h(nian);} delay(2);break;case 7 :if(shanshuo==1){led_f(xing);delay(5);} break;case 8 :if(shanshuo==1){led_s(nf);} line();led_f(nh);delay(2);led_h(ns);delay(2);break;case 9 :led_s(nf);if(shanshuo==1){led_f(nh);} delay(2);line();led_h(ns);delay(2);break;case 10:led_s(nf);led_f(nh);delay(2);line();if(shanshuo==1){led_h(ns);} delay(2);break;default : break;}

      aa++;if(s2==0){ while(!s2){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }

      switch(x)

      { case 1 : s++;if(s>59)s=0;break;

      while(!s1);while(1)

      { if(x==1||x==2||x==3)TR0=0;else TR0=1;if(aa==20){shanshuo=!shanshuo;aa=0;}

      { break;} { led_s(r);delay(1);

      } if(s1==0)

      case 2 :

      }

      f++;if(f>59)f=0;break;

      case 3 : h++;if(h>23)h=0;break;case 4 : r++;if(r>31)r=1;break;case 5 : y++;if(y>12)y=1;break;case 6 : case 7 :

      nian++;if(nian>20)nian=10;break;xing++;if(xing>7)xing=1;break;

      case 8 : nf++;if(nf>59)nf=0;break;case 9 : nh++;if(nh>23)nh=0;break;case 10: ns=!ns;break;

      default: break;{while(!s1){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }

      x++;if(x>10){ x=0;TR0=1;break;} } } } } } } 二.H(頭文件庫)(1)Delay.h #ifndef _DELAY_H__

      void led_s(unsigned int s);void led_h(unsigned int s);#define _DELAY_H__ void delay(unsigned int a);#endif(2)xianshi.h #ifndef _XIANSHI_H__ #define _XIANSHI_H__

      void led_f(unsigned int s);void line(void);#endif(3)gongneng.h

      #ifndef _DONGNENG_H__ #define _GONGNENG_H__ void gongneng(void);#endif(4)miaobiao.h

      #ifndef _MIAOBIAO_H__ #define _MIAOBIAO_H__ void miaobiao(void);#endif(5)dingyi.h #ifndef _DINGYI_H__ #define _DINGYI_H__ sbit s1=P2^4;

      sbit s2=P2^5;

      sbit s3=P2^6;sbit p10=P1^0;sbit p11=P1^1;sbit p12=P1^2;#endif

      //流水燈使能端 //按鍵1 //按鍵2 //按鍵3 sbit p37=P3^7;//蜂鳴器時(shí)能

      三.Main(主函數(shù))(1)main.c #include #include #include #include #include unsigned int h,m,f,s,n,y=10,r=12,nian=13,xing=2,mms,ms,mf;unsigned int ns=0,nf,nh,ll=0;unsigned int ss=1;void main(){ P0=0xff;p12=0;TMOD=0x12;EA=1;

      ET0=1;TH0=6;TR0=1;

      //關(guān)閉流水燈

      ET1=1;TH1=(65535-5000)/256;TL1=(65535-5000)%256;TR1=0;while(1){ if((s3==0)&&(ns==0)){while(!s3);miaobiao();} if(s1==0||s2==0)gongneng();else { led_s(s);line();led_f(f);line();led_h(h);} if((f==nf)&&(h==nh)&&(ns==1))ll=1;else ll=0;} } void zhongduan(void)interrupt 1 {

      if((ll==1)&&(ns==1))

      { p37=!p37;if((s3==0)&&(ns==1)){ while(!s3)ns=0;p37=1;} } n++;if(n==5000){n=0;s++;if(s==60){ s=0;f++;} if(f==60){ f=0;h++;}

      if(h==24){ h=0;r++;xing++;} switch(r){ case 29 : if(nian/4==0){if(y==2)r=0;} y++;case 31 : if(y==4||y==6||y==9||y==11){ } if(xing>7)xing=1;if(y==13){ y=1;nian++;} } } default : break;

      break;case 30 : if((nian/4)!=0){if(y==2){ r=0;y++;}} break;

      r=0;y++;} break;case 32 : if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){r=0;y++;} break;void zhongduan1(void)interrupt 3

      {

      TH1=(65535-5000)/256;

      m++;TL1=(65535-5000)%256;if(m==2){mms++;m=0;if(mms>=100){ mms=0;ms++;} if(ms==60){ ms=0;mf++;} if(mf==60){ mf=0;} } }

      參考文獻(xiàn):

      單片機(jī)中級(jí)教程(第2版)、單片機(jī)語言C51程序設(shè)計(jì)(趙文博)感想: 這次課程設(shè)計(jì)整體來說是成功的,但我也發(fā)現(xiàn)了自己許多錯(cuò)漏和不足之處。譬如,最簡(jiǎn)單的程序沒寫好就想著寫更復(fù)雜的程序,做事還是缺乏耐性和細(xì)心,當(dāng)有時(shí)遇到問題時(shí),總覺得無從下手,對(duì)于課本上的知識(shí)不能很好的組織起來。在編寫各功能程序時(shí),特別是后來增添的比較復(fù)雜的程序

      第五篇:多功能電子鐘設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)報(bào)告東華理工

      單片機(jī)原理及應(yīng)用設(shè)計(jì)課程

      設(shè)計(jì)報(bào)告

      課題名稱:多功能電子鐘設(shè)計(jì) 姓 名: 學(xué) 號(hào): 班 級(jí): 指導(dǎo)老師:

      2017年6月13日

      目錄

      一、設(shè)計(jì)任務(wù)

      ....................................................1 1.1 基本任務(wù)..................................................1 1.2 功能增強(qiáng)型任務(wù)

      .........................................1

      二、任務(wù)分析

      ....................................................1 2.1 計(jì)時(shí)方案分析

      ...............................................1 2.2顯示方案分析

      .................................................2 2.3 預(yù)期功能實(shí)現(xiàn)

      ............................................2

      三、設(shè)計(jì)思路......................................................2 3.1 計(jì)時(shí)部分課程設(shè)計(jì)思路

      ..................................2 3.2 按鍵判斷部分課程設(shè)計(jì)思路

      ..............................3 3.3 數(shù)碼管顯示部分..........................................3

      四、電路圖

      ....................................................3

      五、程序流程圖

      ..................................................6

      六、調(diào)試結(jié)果

      ....................................................8 6.1 時(shí)鐘模塊調(diào)試結(jié)果..............................................8 6.2 秒表模塊調(diào)試結(jié)果..........................................8 6.3 日歷功能調(diào)試模塊..........................................9

      七、總結(jié)

      ........................................................9

      八、程序代碼.....................................................10

      一、設(shè)計(jì)任務(wù)

      1、基本任務(wù):利用定時(shí)器/計(jì)數(shù)器中斷和靜態(tài)顯示或動(dòng)態(tài)顯示,實(shí)現(xiàn)電子鐘的時(shí)分秒精確走時(shí)和校準(zhǔn)。時(shí)間顯示用四個(gè)數(shù)碼管分別顯示時(shí)、分,秒用點(diǎn)表示,在時(shí)和分的中間閃動(dòng),時(shí)間顯示格式:

      時(shí)間校準(zhǔn)用 2 個(gè)鍵實(shí)現(xiàn):一個(gè)鍵 K1做移位選擇鍵(選中要修改的位,選中的位用閃爍指示),一個(gè)鍵 K2做加 1 鍵(對(duì)選中的位進(jìn)行加 1 修改)。

      2、功能增強(qiáng)型任務(wù):在基本任務(wù)的基礎(chǔ)上日歷功能、準(zhǔn)點(diǎn)報(bào)時(shí)功能和跑表功能:

      (1)日歷功能:能實(shí)現(xiàn)時(shí)、分、秒和年、月、日計(jì)時(shí),增加 1 個(gè)按鍵控制分 3 屏顯示,例如開始的第 1 屏默認(rèn)顯示“時(shí)、分、秒”四位+秒點(diǎn),按下 K3鍵顯示“月和日”四位,再按下 K3鍵顯示“年份”四位,再按下 K3 鍵顯示“時(shí)、分、秒”,依次類推。程序要能處理閏年、閏月功能。

      (2)準(zhǔn)點(diǎn)報(bào)時(shí)功能:可以再增加一個(gè)鍵 K(4)設(shè)計(jì)具有鬧鐘功能,實(shí)現(xiàn)定點(diǎn)報(bào)時(shí)。具體操作是:按下 K4 鍵,進(jìn)入鬧鐘設(shè)置功能,再通過 K1、K2鍵來完成定點(diǎn)報(bào)警時(shí)間的設(shè)置。

      (3)跑表功能:再增加一個(gè)鍵 K5 設(shè)計(jì)跑表功能,實(shí)現(xiàn)啟動(dòng)毫秒計(jì)數(shù),相當(dāng)與田徑運(yùn)動(dòng)比賽的跑表工作。

      二、任務(wù)分析

      本次設(shè)計(jì)時(shí)鐘電路,使用ATC89C51單片機(jī)芯片控制電路,單片機(jī)控制電路簡(jiǎn)單且省去了很多復(fù)雜的線路,使得電路簡(jiǎn)明易懂,使用鍵盤鍵上的按鍵來調(diào)整時(shí)鐘的時(shí)、分、秒,用一蜂鳴器來進(jìn)行定時(shí)提醒,同時(shí)使用C語言程序來控制整個(gè)時(shí)鐘顯示,使得編程變得更容易,這樣通過四個(gè)模塊:鍵盤、開關(guān)電路、報(bào)警電路、LED數(shù)碼管顯示即可滿足設(shè)計(jì)要求。

      1、計(jì)時(shí)方案分析:

      使用單片機(jī)內(nèi)部的可編程定時(shí)器。

      利用單片機(jī)內(nèi)部的定時(shí)計(jì)數(shù)器進(jìn)行中端定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本,但程序設(shè)計(jì)較為復(fù)雜。

      2、顯示方案分析:

      對(duì)于實(shí)時(shí)時(shí)鐘而言,顯示顯然是另一個(gè)重要的環(huán)節(jié)。通常LED顯示有兩種方式:動(dòng)態(tài)顯示和靜態(tài)顯示。

      靜態(tài)顯示的優(yōu)點(diǎn)是程序簡(jiǎn)單、顯示亮度有保證、單片機(jī)CPU的開銷小,節(jié)約CPU的工作時(shí)間。但占有I/O口線多,每一個(gè)LED都要占有一個(gè)I/O口,硬件開銷大,電路復(fù)雜。需要幾個(gè)LED就必須占有幾個(gè)并行口,比較適用于LED數(shù)量較少的場(chǎng)合。當(dāng)然當(dāng)LED數(shù)量較多的時(shí)候,可以使用單片機(jī)的串行口通過移位寄存器的方式加以解決,但程序編寫比較麻煩。

      LED動(dòng)態(tài)顯示硬件連接簡(jiǎn)單,但動(dòng)態(tài)掃描的顯示方式需要占有CPU較多的時(shí)間,在單片機(jī)沒有太多實(shí)時(shí)測(cè)控任務(wù)的情況下可以采用。

      本系統(tǒng)需要采用4位LED數(shù)碼管來分別顯示時(shí)、分、秒,因數(shù)碼管個(gè)數(shù)較多,故本系統(tǒng)選擇動(dòng)態(tài)顯示方式。

      3、預(yù)期功能實(shí)現(xiàn): 1.基本任務(wù)要求:

      (1)時(shí)間走時(shí)準(zhǔn)確,每天誤差不能超過5秒。

      (2)仿照電子表的校時(shí)功能,校時(shí)修改時(shí),被修改位能閃爍顯示,按鍵要靈敏。(3)若最高位為 0,高位能滅零顯示。2.增強(qiáng)型任務(wù)要求:

      (1)跑表功能計(jì)數(shù)誤差 1ms。

      (2)日歷程序要能處理閏年、閏月功能。(3)準(zhǔn)點(diǎn)報(bào)時(shí)能人工解除和自動(dòng)解除。

      三、設(shè)計(jì)思路

      1、計(jì)時(shí)部分課程設(shè)計(jì)思路

      該課程設(shè)計(jì)是利用80C51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)、以及行列鍵盤,設(shè)計(jì)一個(gè)單片機(jī)電子時(shí)鐘。設(shè)計(jì)的電子時(shí)鐘通過數(shù)碼管顯示,并能通過按鍵實(shí)現(xiàn)設(shè)置時(shí)間、校時(shí)、啟動(dòng)控制等。

      用定時(shí)/計(jì)數(shù)器T0,工作于定時(shí),采用方式1,對(duì)12MHZ的系統(tǒng)時(shí)鐘進(jìn)行定時(shí)計(jì)數(shù),初值設(shè)為62500ms(自己計(jì)算)。形成定時(shí)時(shí)間為62500ms。用片內(nèi)RAM的2FH單元對(duì)62500ms計(jì)數(shù),計(jì)16次產(chǎn)生秒計(jì)數(shù)器34H單元加1,秒計(jì)數(shù)器加到60則分計(jì)數(shù)器33H單元加1,分計(jì)數(shù)器加到60則時(shí)計(jì)數(shù)器32H單元加1,時(shí)計(jì)數(shù)器加到24則時(shí)計(jì)數(shù)器清0。然后把分、時(shí)、日、月計(jì)數(shù)器分成分單元和時(shí)單元放到4個(gè)數(shù)碼管的顯示緩沖區(qū),通過數(shù)碼管顯示出來。顯示格式為小時(shí)高位、小時(shí)低位---分高位、分低位和顯示日期格式為月高位、月低位---日高位、日低位。

      2、按鍵判斷部分課程設(shè)計(jì)思路

      當(dāng)每十六微秒進(jìn)位一次時(shí),程序就進(jìn)行一次判斷按鍵是否有按下的(是否有校正鍵按下),判斷是否與上次按鍵相同。

      如果相同直接送入時(shí)間緩沖間送出顯示,如果不相同就保存按下的按鍵再進(jìn)行判斷是不是切換鍵按下,如果是時(shí)間時(shí)期同時(shí)取反,將取反時(shí)間送入時(shí)間緩沖間送出顯示同時(shí)將取反日期送入日期緩沖間送出顯示。

      如果不是,判斷是否是校正鍵按下,如果不是重復(fù)將取反時(shí)間送入時(shí)間緩沖間送出顯示同時(shí)將取反日期送入日期緩沖間送出顯示。如果是校正鍵按下就進(jìn)入校正狀態(tài),將校正指針初值設(shè)成(00,01、10、11、分別代表分、時(shí)日、月)同樣判斷校正指針中的值進(jìn)入下面分、時(shí)、日、月四個(gè)子程序中執(zhí)行,同時(shí)進(jìn)入每個(gè)時(shí)間日期子程序中都要進(jìn)行判斷是否有鍵按下,每次按鍵任何一個(gè)鍵都要送入時(shí)間日期緩沖間顯示。

      3、數(shù)碼管顯示部分

      把我們?cè)O(shè)計(jì)好的程序通過查表在數(shù)碼管上顯示出來,數(shù)碼管上從左到右分別顯示月、日/時(shí)、分,四個(gè)數(shù)碼管分別顯示高位和低位,切換時(shí)間顯示時(shí),要顯示出小數(shù)點(diǎn)閃爍。

      四、電路圖

      實(shí)驗(yàn)電路包括LED數(shù)碼管顯示、鍵盤和報(bào)警喇叭三部分電路,如下所示。

      圖4.1 按鍵電路部分

      圖4.2 撥鍵開關(guān)連接電路

      圖4.3 鬧鐘報(bào)警電路

      圖4.4 動(dòng)態(tài)數(shù)碼管顯示電路

      圖4.6 晶振電路

      本設(shè)計(jì)晶振電路采用12M的晶振。晶振的作用是給單片機(jī)正常工作提供穩(wěn)定的時(shí)鐘信號(hào)。單片機(jī)的晶振并不是只能用12M,只要不超過20M就行,在準(zhǔn)許的范圍內(nèi),晶振越大,單片機(jī)運(yùn)行越快,還有用12M的就是好算時(shí)間,因?yàn)橐粋€(gè)機(jī)器周期為1/12時(shí)鐘周期,所以這樣用12M的話,一個(gè)時(shí)鐘周期為12us,那么定時(shí)器計(jì)一次數(shù)就是1us了,電容范圍在20-40pF之間,這里連接的是30pF的電容。

      機(jī)器周期=10*晶振周期=12*系統(tǒng)時(shí)鐘周期

      圖4.7 上電按鈕復(fù)位電路

      本設(shè)計(jì)采用上電按鈕復(fù)位電路:首先經(jīng)過上電復(fù)位,當(dāng)按下按鍵時(shí),RST直接與VCC相連,為高電平形成復(fù)位,同時(shí)電解電容被電路放電;按鍵松開時(shí),VCC對(duì)電容充電,充電電流在電阻上,RST依然為高電平,仍然是復(fù)位,充電完成后,電容相當(dāng)于開路,RST為低電平,單片機(jī)芯片正常工作。其中電阻R2決定了電容充電的時(shí)間,R2越大則充電時(shí)間長(zhǎng),復(fù)位信號(hào)從VCC回落到0V的時(shí)間也長(zhǎng)。

      圖4.8 總電路圖

      五、程序流程圖

      開始等待外部中斷按鍵按下外部中斷0判斷是外部中斷0還是外部中斷1外部中斷1從當(dāng)前顯示時(shí)間開始計(jì)時(shí)停止計(jì)時(shí),等待設(shè)置時(shí)間掃描矩陣鍵盤,判斷按鍵否是根據(jù)不同按鍵控制設(shè)置位,以及時(shí)間的加減

      主函數(shù)程序流程圖

      鍵盤掃面程序流程圖

      定時(shí)器中斷程序流程圖

      外部中斷程序流程圖

      六、調(diào)試結(jié)果

      圖6.1 時(shí)鐘模塊調(diào)試結(jié)果

      圖6.2 秒表模塊調(diào)試結(jié)果

      圖6.3 日歷功能調(diào)試模塊

      七、總結(jié)

      通過這幾天的的單片機(jī)課程設(shè)計(jì),有很多的心得體會(huì),有關(guān)于單片機(jī)的,也有關(guān)于之前所學(xué)過模電數(shù)電等基礎(chǔ)科目的。下面是我對(duì)這幾天課程設(shè)計(jì)的總結(jié):

      1.本次課程設(shè)計(jì)我主要通過Proteus軟件仿真得到實(shí)驗(yàn)結(jié)果。本次實(shí)驗(yàn)我完成了實(shí)驗(yàn)的基本設(shè)計(jì)任務(wù),即電子鐘的設(shè)計(jì),也達(dá)到了其所有的設(shè)計(jì)要求。在這基礎(chǔ)上,我還完成了功能增強(qiáng)型的幾項(xiàng)任務(wù),如日歷功能,其中跑秒的誤差控制在了1ms范圍內(nèi)。但美中不足的是,日歷功能不太完善,我設(shè)計(jì)的程序并不能處理閏年和閏月,且并沒有鬧鐘這個(gè)模塊,這正是我有待改善的地方。

      2.本次實(shí)驗(yàn),我又加深了對(duì)單片機(jī)的記憶。有些知識(shí)會(huì)遷移和聯(lián)系模電數(shù)電。課堂教學(xué)考慮到大多數(shù)同學(xué)的需求,主要強(qiáng)調(diào)“基本”——基本知識(shí)、基本理論、基本方法、基本技能。而這次設(shè)計(jì)正是為我們提供了一個(gè)深入學(xué)習(xí)、探索的機(jī)會(huì),成為課堂教學(xué)的有益補(bǔ)充。

      3.單片機(jī)理論的學(xué)習(xí)是為課程的設(shè)計(jì)作準(zhǔn)備的,但有時(shí)學(xué)習(xí)的理論也解決不了實(shí)踐中的問題。實(shí)踐中獲得的知識(shí)能讓我對(duì)單片機(jī)的知識(shí)有更好的認(rèn)識(shí)和理解。雖然這次的課程設(shè)計(jì)我參考了一些文獻(xiàn)資料,沒有做到創(chuàng)新,但在對(duì)程序的讀寫過程中我明白了許多。4.通過本次課程設(shè)計(jì)讓我更加了解了單片機(jī)各模塊的功能,包括數(shù)碼管顯示,4*4矩陣 鍵盤,獨(dú)立按鍵。實(shí)驗(yàn)過程讓我更加了解并進(jìn)一步掌握了中斷,定時(shí)計(jì)數(shù),4*4鍵盤輸入等程序編寫。以及掌握了通過Proteus構(gòu)造自己所需要的外圍電路,進(jìn)行仿真實(shí)驗(yàn)。通過此次課程設(shè)計(jì),初步掌握了使單片機(jī)多個(gè)模塊進(jìn)行工作的原理和方法。

      八、程序代碼

      #include typedef unsigned int unint;unsigned char h_code,l_code,key_code;int i=0;

      //定義全局變量

      unsigned char code key[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb, 0xbb,0x7b,0xe7,0xd7,0xb7,0x77};

      //按鍵狀態(tài)定義

      unsigned char code number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40};unsigned char code which[]={0x00,0x01,0x03,0x04,0x06,0x07};unsigned int HH=0;hh=0;MM=0;mm=0;SS=0;ss=0;sbit P32=P3^2;//延遲函數(shù)

      void delay(unint k)

      {unint i,j,x;

      for(x=1;x<=k;x++)

      for(i=0;i<10;i++)

      for(j=0;j<17;j++);

      }

      //按鍵掃描

      unsigned char Scan_keyboard()

      { unsigned char h_code,l_code,key_code;

      P1=0xf0;

      h_code =P1;

      h_code = h_code &0xf0;

      P1=0x0f;

      l_code =P1;

      l_code = l_code &0x0f;

      key_code = h_code | l_code;

      return key_code;

      }

      void timer0_int(void)interrupt 1 {

      ss++;

      if(ss>9)

      {

      SS++;

      ss=0;

      }

      if(SS>5)

      {

      mm++;

      SS=0;

      }

      if(mm>9)

      {

      MM++;

      mm=0;

      }

      if(MM>5)

      {

      hh++;

      MM=0;

      }

      if(hh>9&&HH<2)

      {

      HH++;

      hh=0;

      }

      if(HH==2&&hh>3)

      {

      HH=0;

      hh=0;

      }

      TH0=0x3c;

      TL0=0xb0;}

      void P3_2()

      {

      TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;

      //總中斷打開 TR0=1;

      //中斷標(biāo)志位 ET0=1;

      //中斷允許位 while(1){

      int k=0;

      delay(2);P2=0x00;P0=number[5];

      delay(2);P2=0x01;P0=number[hh];

      delay(2);P2=0x02;P0=number[10];

      delay(2);P2=0x03;P0=number[MM];

      delay(2);P2=0x04;P0=number[mm];

      delay(2);P2=0x05;P0=number[10];

      delay(2);P2=0x06;P0=number[SS];

      delay(2);P2=0x07;P0=number[ss];

      }

      } main(){

      unsigned char keynumber;while(1){ int k=0;

      delay(2);P2=0x02;P0=number[10];

      delay(2);P2=0x05;P0=number[10];for(;k<6;k++){

      delay(2);P2=which[k];P0=number[0];} // if(P32==0)14

      P3_2();/* keynumber=Scan_keyboard();if(keynumber!=0xff)

      {

      switch(keynumber)

      {

      case 0xee:P2=0x07;P0=number[i++];break;

      case 0xde:P2=0x07;P0=number[i--];break;

      case 0xbe:P2=0x07;i=0;P0=number[i];break;

      default:break;

      }

      delay(150);

      } if(i>9)i=0;else if(i<0)i=9;*/ } }

      下載單片機(jī)課程論文設(shè)計(jì)-電子鐘課程設(shè)計(jì)word格式文檔
      下載單片機(jī)課程論文設(shè)計(jì)-電子鐘課程設(shè)計(jì).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦