單片機電子時鐘課程復習進程_第1頁
單片機電子時鐘課程復習進程_第2頁
單片機電子時鐘課程復習進程_第3頁
免費預覽已結(jié)束,剩余18頁可下載查看

下載本文檔

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

文檔簡介

1、、設計要求1準確計時,以數(shù)字形式顯示時、分、秒的時間。2、小時以24小時計時形式,分秒計時為 60進位。3、校正時間功能,即能隨意設定走時時間。4、鬧鐘功能,一旦走時到該時間,能以聲或光的形式告警提示。5、設計5V直流電源,系統(tǒng)時鐘電路、復位電路。6、能指示秒節(jié)奏,即秒提示。7、可采用交直流供電電源,且能自動切換。二、設計方案和論證本次設計時鐘電路,使用了 ATC89C5單片機芯片控制電路,單片機控制電 路簡單且省去了很多復雜的線路,使得電路簡明易懂,使用鍵盤鍵上的按鍵來 調(diào)整時鐘的時、分、秒,用一揚聲器來進行定時提醒,同時使用匯編語言程序 來控制整個時鐘顯示,使得編程變得更容易,這樣通過四個

2、模塊:鍵盤、芯片、 揚聲器、LED顯示即可滿足設計要求。2.1總設計原理框圖如下圖所示:校時輸入時鐘電路數(shù)據(jù)顯示聲光報時2.2、設計方案的選擇1. 計時方案方案1:采用實時時鐘芯片現(xiàn)在市場上有很多實時時鐘集成電路,女口 DS1287 DS12887 DS1302等。 這些實時時鐘芯片具備年、月、日、時、分、秒計時功能和多點定時功能, 計時數(shù)據(jù)的更新每秒自動進行一次,不需要程序干預。因此,在工業(yè)實時測 控系統(tǒng)中多采用這一類專用芯片來實現(xiàn)實時時鐘功能。方案2:使用單片機內(nèi)部的可編程定時器。利用單片機內(nèi)部的定時計數(shù)器進行中端定時,配合軟件延時實現(xiàn)時、分、秒的計時。該方案節(jié)省硬件成本,但程序設計較為復

3、雜。2. 顯示方案對于實時時鐘而言,顯示顯然是另一個重要的環(huán)節(jié)。通常LED顯示有兩種方式:動態(tài)顯示和靜態(tài)顯示。靜態(tài)顯示的優(yōu)點是程序簡單、顯示亮度有保證、單片機CPU勺開銷小,節(jié)約CPU勺工作時間。但占有I/O 口線多,每一個LED都要占有一個I/O 口, 硬件開銷大,電路復雜。需要幾個 LED就必須占有幾個并行口,比較適用于 LED數(shù)量較少的場合。當然當LED數(shù)量較多的時候,可以使用單片機的串行 口通過移位寄存器的方式加以解決,但程序編寫比較麻煩。LED動態(tài)顯示硬件連接簡單,但動態(tài)掃描的顯示方式需要占有CPU較多的時間,在單片機沒有太多實時測控任務的情況下可以采用。本系統(tǒng)需要采用6位LED數(shù)碼

4、管來分別顯示時、分、秒,因數(shù)碼管個數(shù) 較多,故本系統(tǒng)選擇動態(tài)顯示方式。2.3硬件部分1、STC89C5憚片機介紹STC89C5憚片機是由深圳宏晶公司代理銷售的一款 MCU是由美國設計 生產(chǎn)的一種低電壓、高性能 CMOS 8位單片機,片內(nèi)含8kbytes的可反復寫 的FlashROM和128bytes的RAM 2個16位定時計數(shù)器呵。STC89C5憚片機內(nèi)部主要包括累加器ACC有時也簡稱為A)、程序狀態(tài) 字PSW地址指示器DPTR只讀存儲器ROM隨機存取存儲器RAM寄存器、 并行I/O接口 P0P3定時器/計數(shù)器、串行I/O接口以及定時控制邏輯電路 等。這些部件通過內(nèi)部總線聯(lián)接起來,構(gòu)成一個完整

5、的微型計算機。其管腳 圖如圖所示。P10.TPOOPUTP01P12PC2P13?03P14PD4P15POSPiePQ6P17P07INTIP20INTOP21P22T1P23TOP24P25EAATP26P27XIX2RESETRXDTXD而aleFWRPSEN27巧143113 2191S兒 jjrr383736353433322122232425262728101130o曲39STC89C51單片機管腳結(jié)構(gòu)圖VCC電源。GND接地。P0 口: P0 口為一個8位漏級開路雙向I/O 口,每腳可吸收8TTL門電流。當 P1 口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)

6、存儲 器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入 口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1 口: P1 口是一個內(nèi)部提供上拉電阻的8位雙向I/O 口,P1 口緩沖器能 接收輸出4TTL門電流。P1 口管腳寫入1后,被內(nèi)部上拉為高,可用作 輸入, P1 口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH 編程和校驗時,P1 口作為第八位地址接收。P2 口: P2 口為一個內(nèi)部上拉電阻的8位雙向I/O 口,P2 口緩沖器可接收, 輸出4個TTL門電流,當P2 口被寫“ 1”時,其管腳被內(nèi)部上拉電阻 拉高,且 作

7、為輸入。并因此作為輸入時,P2 口的管腳被外部拉低,將輸出電流。這是由 于內(nèi)部上拉的緣故。P2 口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存 儲器進行存取時,P2 口輸出地址的高八位。在給出地址“ 1”時,它利用內(nèi)部上拉優(yōu) 勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2 口輸出其特殊功能寄存器 的內(nèi)容。P2 口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3 口: P3 口管腳是8個帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出4個 TTL門電流。當P3 口寫入“ 1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作 為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL)這是由于上拉的緣故

8、。P3 口也可作為AT89C5啲一些特殊功能口,如下表所示:口管腳備選功能P3.0 RXD (串行輸入口)P3.1 TXD (串行輸出口)P3.2 /INT0 (外部中斷0)P3.3 /INT1 (外部中斷1)P3.4 T0 (記時器0外部輸入)P3.5 T1 (記時器1外部輸入)P3.6 /WR (外部數(shù)據(jù)存儲器寫選通)P3.7 /RD (外部數(shù)據(jù)存儲器讀選通)P3 口同時為閃爍編程和編程校驗接收一些控制信號。RST復位輸入。當振蕩器復位器件時,要保持 RST腳兩個機器周期的高電平時 間。ALE/PROG當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的 地位字節(jié)。在FLASH編程期間

9、,此引腳用于輸入編程脈沖。在平時, ALE端以不 變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器 時, 將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE 只有在執(zhí)行MOV,MOV指令是ALE才起作用。另外,該引腳被略微拉高。如果 微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個 機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的 /PSEN信 號將不出現(xiàn)。EA/VPP當/EA保持低電平時,則

10、在此期間外部程序存儲(OOOOH-FFFFH, 不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET當 /EA端保持高電平時,此間內(nèi)部程序存儲器。在 FLASH編程期間,此引腳也用于 施加12V編程電源(VPP。P12P13P14P15P16P17 RESET RXD TXD INTOTTLFTi 唱RST直2、上電按鈕復位電路本設計采用上電按鈕復位電路:首先經(jīng)過上電復位,當按下按鍵時,接與VCC相連,為高電平形成復位,同時電解電容被電路放電;按鍵松開時,VCC 對電容充電,充電電流在電阻上,RST依然為高電平,仍然是復位,充電完成后, 電容相當于開路,RST為低電平,單片

11、機芯片正常工作。其中電阻R2決定了電容充電的時間,R2越大則充電時間長,復位信號從 VCC回落到0V的時間也長。3、晶振電路O1IIhX丄rII11:3OP1 1Y112M芒2|一1II5OP本設計晶振電路采用12M的晶振。晶振的作用是給單片機正常工作提供穩(wěn)定 的時鐘信號。單片機的晶振并不是只能用 12M只要不超過20M就行,在準許的 范圍內(nèi),晶振越大,單片機運行越快,還有用12M的就是好算時間,因為一個機 器周期為1/12時鐘周期,所以這樣用12M的話,一個時鐘周期為12us,那么定 此文檔僅供學習和交流時器計一次數(shù)就是1us 了,電容范圍在20-40pF之間,這里連接的是30pF的電 容。

12、機器周期=10*晶振周期=12*系統(tǒng)時鐘周期4.下載端口TOINTOHSTT1設計用到的STC89C52單片機芯片的ISP下載線是通過單片機的TXD RXD引腳把程序燒進去的。管腳TXD和 RXD用于異步串行通信。其實STC89C5洋片機的ISP下載線就是一個max232芯片連接STC和計算機的串行通信口。計算機 把程序從九針串口送到 max232芯片,電平轉(zhuǎn)換后送進單片機的串行口,也就是TXD和 RXD然后單片機的串行模塊把數(shù)據(jù)送到程序區(qū)。5、顯示電路就時鐘而言,通??刹捎靡壕э@示或數(shù)碼管顯示。由于一般的段式液晶 屏,需要專門的驅(qū)動電路,而且液晶顯示作為一種被動顯示,可視性相對較 差;對于具

13、有驅(qū)動電路和微處理器接口的液晶顯示模塊(字符或點陣),一般多采用并行接口,對微處理器的接口要求較高,占用資源多。另外,89C2051 本身無專門的液晶驅(qū)動接口,因此,本時鐘采用數(shù)碼管顯示方式。數(shù)碼管作 為一種主動顯示器件,具有亮度高、價格便宜等優(yōu)點,而且市場上也有專門 的時鐘顯示組合數(shù)碼管。對于實時時鐘而言,顯示顯然是另一個重要的環(huán)節(jié)。通常LED顯示有兩種方式:動態(tài)顯示和靜態(tài)顯示。靜態(tài)顯示的優(yōu)點是程序簡單、顯示亮度有保證、單片機CPU勺開銷小,節(jié)約CPU勺工作時間。但占有I/O 口線多,每一個LED都要占有一個I/O 口, 硬件開銷大,電路復雜。需要幾個 LED就必須占有幾個并行口,比較適用于

14、 LED數(shù)量較少的場合。當然當LED數(shù)量較多的時候,可以使用單片機的串行 口通過移位寄存器的方式加以解決,但程序編寫比較麻煩。LED動態(tài)顯示硬件連接簡單,但動態(tài)掃描的顯示方式需要占有CPU較多的時間,在單片機沒有太多實時測控任務的情況下可以采用。本系統(tǒng)需要采用6位LED數(shù)碼管來分別顯示時、分、秒,因數(shù)碼管個數(shù) 較多,故本系統(tǒng)選擇動態(tài)顯示方式。&時鐘顯示校正電路本設計利用按鍵開關來校正時鐘顯示的數(shù)字。當按鈕按下時,將在相應 的端口輸入一個低電平,通過相應的程序來改變時鐘顯示。其中S1按鍵開關用來選擇要修改的數(shù)字;S2按鍵用來增加所選數(shù)字的數(shù)值;S3按鍵用來 減少所選數(shù)字的數(shù)值。個1K左右

15、的電阻后接I/O 口,集電極C連接蜂鳴器后接地。單片機在復位后的個I/O 口是咼電平,此時二極管是截止的,編寫程序使選定的I/O為低電平,此時三極管導通,導通后蜂鳴器與電源正極連通,構(gòu)成一個工作回路, 從而發(fā)出滴滴的響聲。其中電阻R1在電路里起分壓限流的作用,PNP三極管 起到模擬開關的作用。8、外接電源電路制電路的導通與斷開,當開關閉合時,電路導通,夕卜部電源給電路正常供電, 電子時鐘正常工作。當開關斷開時,電路停止工作。9、總電路原理圖(五)軟件部分根據(jù)上述電子時鐘的工作流程,軟件設計可分為以下幾個功能模塊:(1) 主程序模塊。主程序主要用于系統(tǒng)初始化:設置計時緩沖區(qū)的位 置及初值,設置8

16、155的工作方式、定時器的工作方式和計數(shù)初值等參數(shù)。 主程序流程如下圖所示。定義堆棧區(qū)8155、TO、數(shù)據(jù)緩沖區(qū)、標志位初始化主程序流程圖(2) 計時模塊。即定時器0中斷子程序,完成刷新計時緩沖區(qū)的功能。系統(tǒng)使用6MHZ勺晶振,假設定時器0工作在方式1,則定時器的最大定 時時間為65.536ms,這個值遠遠小于1s。因此本系統(tǒng)采用定時器與軟件循 環(huán)相結(jié)合的定時方法。設定時器 0工作在方式1,每隔50ms溢出中斷一次, 則循環(huán)中斷20次延時時間是1s,上述過程重復60次為1分,分計時60次 為1小時,小時計時24次則時間重新回到00: 00: 00。因定時器0工作在方式1,則50ms定時對應的定

17、時器初值為:65536 50ms/2us=40536=9E58H 即卩 TH0=9EH TH0=58H但應當指出:CPU從響應T0中斷到完成定時器初值重裝這段時間, 定時 器T0并不停止工作,而是繼續(xù)計數(shù)。因此,為了確保 T0能準確定時50ms 重裝的定時器初值必須加以修正, 修正的定時器初值必須考慮到從原定時器 初值中扣除計數(shù)器多計的脈沖個數(shù)。由于定時器計數(shù)脈沖的周期恰好和機器 周期吻合,因此修正量等于CPU從響應中斷到重裝完TL0為止所用的機器周 期數(shù)。CPU響應中斷通常要38個機器周期。經(jīng)過測試,定時器 0重裝的計 數(shù)初值設為9E5FH9E67H可以滿足精度要求。另外,MCS-51單片機

18、只有二 進制加法指令,而時間是按十進制遞增,因此用加法指令后必須進行二-十進制轉(zhuǎn)換。計時模塊流程圖如下圖所示。(3) 時間設置模塊。該模塊由鍵盤輸入相應的數(shù)據(jù)來設置當前時間。程序通過調(diào)用一個鍵盤設置子程序通過鍵盤掃描將鍵入的6位時間值送入顯示緩沖區(qū)。設置時間后,時鐘要從這個時間開始計時,而時分秒單元各占一個字節(jié), 鍵盤占6個字節(jié)。因此程序中要調(diào)用一個合字子程序?qū)@示緩沖區(qū)中的 6位 BCD碼合并為3位壓縮BCD碼,并送入計時緩沖區(qū),作為當前計時起始時間。該程序同時要檢測輸入時間值的合法性,若鍵盤輸入的小時值大于23,分、秒值大于59,則不合法,將取消本次設置,清零重新開始計時。時間設置和鍵盤設

19、置子程序的流程圖如下圖所示。時間設置流程圖保護現(xiàn)場-顯示緩沖區(qū)首地址送 R0鍵盤輸入次數(shù)送R7調(diào)用鍵盤掃描程序 KEYScAn鍵號送R0顯示緩沖區(qū)地址加 1循環(huán)次數(shù)減1否是恢復現(xiàn)場鍵盤設置子程序流程圖(4) 顯示模塊。該模塊完成時分秒6位LED的動態(tài)顯示。因為顯示為6 位,二計時是3個字節(jié)單元,為此,必須將3字節(jié)計時緩沖區(qū)中的時分秒壓 縮BCD碼拆分為6字節(jié)BCD碼,并送入顯示緩沖區(qū)中。當按下調(diào)整時間鍵后,在6位設置完成之前,這6個LED應該顯示鍵人 的數(shù)據(jù),不顯示當前的時間。為此,我們設置了一個計時顯示允許標志位 F0, 在時間設置期間F0=1,不調(diào)用刷新顯示緩沖區(qū)的子程序。顯示程序流程圖如

20、下圖所示。返回顯示程序流程圖返回鍵盤掃描程序流程圖 程序:ORG 0000HAJMP MAINORG 000BHAJMP TIMEORG 0300HMAIN:mov 20h,#00hMOV 21H,#00HMOV 22H,#00HMOV 23H,#00HMOV IP,#02H ;IP,IE 初始化MOV IE,#82HMOV TMOD,#01H設定定時器工作方式?MOV TL0,#0B0HMOV TH0,#3CHSETB TR0 ;啟動定時?MOV SP,#40H ;重設堆棧指針NEXT: LCALL DISP ;調(diào)用顯示子程序?LCALL KEY ;調(diào)用按鍵檢測子程序JZ NEXT;LCAL

21、L ANKEY調(diào)用按鍵處理子程序SJMP NEXT重新循環(huán)NOPNOPNOP;定時中斷處理程序:TIME: PUSH ACC ;保護現(xiàn)場PUSH PSWMOV TL0,#0B4H賦定時初值MOV TH0,#3CHINC 20H ;MOV A,20HCJNE A,#20,RETI1MOV 20H,#00H ; 一秒鐘時間到MOV A,21HADD A,#01HDA AMOV 21H,ACJNE A,#60H,RETI1MOV 21H,#00H 一分鐘時間到MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETI1MOV 22H,#00H ; 一小時時間到M

22、OV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETI1MOV 23H,#00H 到時間達到24小時,清零.RETI1: POP PSW ;恢復現(xiàn)場POP ACCRETI ;中斷返回?NOPNOP;顯示子程序DISP: ANL 2FH,#10H ;處理小數(shù)點MOV A,21H ;處理秒 21H->2DH,2EHANL A,#0FHORL A,2FHMOV 2FH,AMOV A,21HANL A,#0F0HSWAP AMOV 2EH,AANL 2DH,#10HMOV A,22H ;處理分鐘 22H->2CH,2DHANL A,#0FHORL A

23、,2DHMOV 2DH,AMOV A,22HANL A,#0F0HSWAP AMOV 2CH,AANL 2BH,#10HMOV A,23H ;處理小時 23H->2AH,2BHANL A,#0FHORL A,2BHMOV 2BH,AMOV A,23HANL A,#0F0HSWAP AMOV 2AH,AMOV R0,#2FH ;顯示偏移量MOV R3,#06HMOV DPTR,#TABLEMOV A,#0BFHLOOP1: MOV B,A ;MOV P2,aMOV A,R0MOVC A,A+DPTRMOV P0,a ;送顯示MOV R2,#80H 延時DJNZ R2,$DEC R0MOV

24、A,BRR ADJNZ R3,LOOP1循環(huán)顯示RETTABLE: db 28h,7eh,0a2h,62h,74h,61h,21h ;不帶小數(shù)點DB 7ah,20h,60h,00,00,00,00,00,00DB 8H,5eH,82H,42H,54H,41H,1H,5aH ;帶小數(shù)點DB 00H,40H,00,00,00,00,00,00NOPNOP;按鍵判斷程序KEY: MOV P3,#0FFH ;MOV A,P3CPL AANL A,#3CHJZ RETX ;無鍵按下則返回LCALL DISP ;LCALL DISPMOV A,P3CPL AANL A,#3CHJZ RETX ;鍵盤去抖動

25、。MOV R6,A ;將鍵值存入R6bLOOP2: LCALL DISP ;MOV A,P3CPL AANL A,#3CHJNZ LOOP2等待鍵釋放MOV A,R6RETX: RETNOPNOP;按鍵處理子程序ANKEY: CLR EA 關中斷LX: MOV A,R6JB ACC.2,L1 ;是功能鍵轉(zhuǎn)L1JB ACC.3,L2 ;是確認鍵轉(zhuǎn)L2JB ACC.4,L3 ;是減 1 鍵轉(zhuǎn) L3JNB ACC.5,L12 ;不是增 1 鍵,轉(zhuǎn) L12JB 2BH.4,L6 ;判斷使哪一位(時、分、秒)的值加 1JB 2DH.4 丄8JB 2FH.4,L9L12: LCALL DISPLCALL DISPLCALL KEY ;判斷有無鍵按下。JZ L12LJMP LXL2: MOV 25H,#00H ;確認鍵處理程序CLR 2BH.4CLR 2DH.4CLR 2FH.4SETB EARETL3: JB 2BH.4,L61 ; 增一鍵處理程序JB 2DH.4,L81JB 2FH.4,L91AJMP L12L1: MOV A,25H ;功能鍵處理程序JZ

溫馨提示

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

評論

0/150

提交評論