




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、v設(shè)計要求設(shè)計要求v總體方案總體方案v硬件設(shè)計硬件設(shè)計v軟件設(shè)計軟件設(shè)計v系統(tǒng)調(diào)試與運行系統(tǒng)調(diào)試與運行第第1010章章單單片片機機的的應(yīng)應(yīng)用用系系統(tǒng)統(tǒng)設(shè)設(shè)計計與與開開發(fā)發(fā) 本章內(nèi)容本章內(nèi)容Single Chip Microcomputer一、一、 設(shè)計要求設(shè)計要求 設(shè)計并制作出具有如下功能的電腦鐘:設(shè)計并制作出具有如下功能的電腦鐘: (1) (1) 自動計時,由自動計時,由6 6位位LEDLED顯示器顯示時、分、秒。顯示器顯示時、分、秒。 (2) (2) 具備校準功能,可以直接由具備校準功能,可以直接由0 09 9數(shù)字鍵設(shè)置當前時間。數(shù)字鍵設(shè)置當前時間。 (3) (3) 具備定時起鬧功能。具備
2、定時起鬧功能。 (4) (4) 一天時差不超過一天時差不超過1 1秒鐘。秒鐘。二、二、 總體方案總體方案1. 計時方案計時方案 方案一:采用實時時鐘芯片。 方案二:軟件控制。2. 鍵盤鍵盤/顯示方案顯示方案 方案一:串口擴展,LED靜態(tài)顯示。 方案二:8155擴展,LED動態(tài)顯示。顯示方式框圖(a) 靜態(tài)顯示框圖;(b) 動態(tài)顯示框圖移 位 寄 存 器LED1LED244鍵 盤8031串 行 口P1口移 位 寄 存 器80318155鍵 盤 顯 示接 口LED顯 示44鍵 盤(a)(b)三、三、 硬件設(shè)計硬件設(shè)計 1. 電路原理圖電路原理圖AD0PA0AD1PA1AD2PA2AD3PA3AD4
3、PA4AD5PA5AD6PA6AD7PA7PB0CEPB1RDPB2WRPB3IO/MPB4ALEPB5PB6PB7TMROUT6PC0PC1TMRIN3PC2PC3PC4RESET4PC58155EA/VP31X119X218RESET9RD17WR16INT012INT113T014T11512345678PSENALE/PTXDRXD89C51dpgfed cbaLED0LED1LED2LED3 LED4LED50123456789C/RALMPA0PA5PC0PC1PC2PB0PB7+5 V+5 V蜂 鳴 器+5 V+5 V74LS073938373635343332212223242
4、5262728293011101213141516171819891071121222324252627282930313233343536373839125P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.720 pF20 pF6 MH z1 k5.1 k3R200 822 F12. 系統(tǒng)工作流程系統(tǒng)工作流程本電腦鐘具備以下功能:本電腦鐘具備以下功能: (1) (1) 時鐘顯示:時鐘顯示:6 6位位LEDLED從左到右依次顯示時、分、秒,采用從左到右依次
5、顯示時、分、秒,采用2424小時計時。小時計時。 (2) (2) 鍵盤功能:采用鍵盤功能:采用4 43 3鍵盤,包括:鍵盤,包括:0 09 9 數(shù)字鍵,鍵號為數(shù)字鍵,鍵號為00H00H09HC/R09HC/R鍵鍵 時間設(shè)定時間設(shè)定/ /啟動計時鍵,鍵號為啟動計時鍵,鍵號為0AH0AH ALM ALM鍵鍵 鬧鐘設(shè)置鬧鐘設(shè)置/ /啟鬧啟鬧/ /停鬧鍵,鍵號為停鬧鍵,鍵號為0BH0BH (1) (1) 時間顯示:上電后,系統(tǒng)自動進入時鐘顯示,從時間顯示:上電后,系統(tǒng)自動進入時鐘顯示,從0000:0000:0000開始計時,此開始計時,此時可以設(shè)定當前時間。時可以設(shè)定當前時間。(2) (2) 時間調(diào)整
6、:按下時間調(diào)整:按下C/RC/R鍵,系統(tǒng)停止計時,進入時間設(shè)定狀態(tài),系統(tǒng)保持原有顯鍵,系統(tǒng)停止計時,進入時間設(shè)定狀態(tài),系統(tǒng)保持原有顯示,等待鍵入當前時間。按下示,等待鍵入當前時間。按下0 09 9數(shù)字鍵可以順序設(shè)置時、分、秒,并在相應(yīng)數(shù)字鍵可以順序設(shè)置時、分、秒,并在相應(yīng)LEDLED管上顯示設(shè)置值,直至管上顯示設(shè)置值,直至6 6位設(shè)置完畢。系統(tǒng)將自動由設(shè)定后的時間開始計時顯示。位設(shè)置完畢。系統(tǒng)將自動由設(shè)定后的時間開始計時顯示。 (3) (3) 鬧鐘設(shè)置鬧鐘設(shè)置/ /啟鬧啟鬧/ /停鬧:按下停鬧:按下ALMALM鍵,系統(tǒng)繼續(xù)計時,顯示鍵,系統(tǒng)繼續(xù)計時,顯示0000:0000:0000,進,進入鬧
7、鐘設(shè)置狀態(tài),等待鍵入啟鬧時間。按下入鬧鐘設(shè)置狀態(tài),等待鍵入啟鬧時間。按下0 09 9數(shù)字鍵可以順序進行相應(yīng)的時間設(shè)數(shù)字鍵可以順序進行相應(yīng)的時間設(shè)置,并在相應(yīng)置,并在相應(yīng)LEDLED管上顯示設(shè)置值,直至管上顯示設(shè)置值,直至6 6位設(shè)置完畢。這將啟動定時啟鬧功能,位設(shè)置完畢。這將啟動定時啟鬧功能,并恢復(fù)時間顯示。定時時間到,蜂鳴器鳴叫,直至重新按下并恢復(fù)時間顯示。定時時間到,蜂鳴器鳴叫,直至重新按下ALMALM鍵停鬧,并取消鍵停鬧,并取消鬧鐘設(shè)置。鬧鐘設(shè)置。四、軟件設(shè)計四、軟件設(shè)計1. 系統(tǒng)資源分配系統(tǒng)資源分配地地 址址功功 能能名名 稱稱初始化值初始化值30H35H顯示緩沖區(qū),小時、分、秒(高位
8、在前)顯示緩沖區(qū),小時、分、秒(高位在前)DISP0DISP500H3CH3FH計時緩沖區(qū),時、分、秒、計時緩沖區(qū),時、分、秒、100 msHOUR,MIN,SEC,MSEC00H40H42H鬧鐘值寄存區(qū),時、分、秒鬧鐘值寄存區(qū),時、分、秒AHOUR,AMIN,ASECFFH50H7FH堆棧區(qū)堆棧區(qū) PSW.5計時顯示允許位(計時顯示允許位(1:禁止,:禁止,0:允許):允許)F00PSW.1鬧鐘標志位(鬧鐘標志位(1:正在鬧響,:正在鬧響,0:未鬧響):未鬧響)F10電子鐘控制軟件片內(nèi)RAM及標志位分配表2. 軟件流程軟件流程開 始定 義 堆 棧 區(qū)8155、 定 時 器 0、數(shù) 據(jù) 緩 沖
9、 區(qū) 、鬧 鐘 標 志 位 初 始 化調(diào) 用 定 時比 較 程 序調(diào) 用 鍵 掃 描子 程 序是 C/R鍵是 ALM鍵鬧 鐘 標 志 位 1停 鬧清 零 鬧 鐘 標 志地 址 指 針 指 向計 時 緩 沖 區(qū)調(diào) 用 時 間 設(shè) 置 /鬧 鐘 定 時 程 序地 址 指 針 指 向鬧 鐘 值 寄 存 區(qū)YNNYYN圖9.3 主程序流程圖圖9.4 計時程序流程圖保 護 現(xiàn) 場時 間 校 正重 裝 定 時 器 0初 值循 環(huán) 次 數(shù) 減 1秒 單 元 清 零分 單 元 加 160分 到分 單 元 清 零小 時 單 元 加 124小 時 到小 時 單 元 清 零恢 復(fù) 現(xiàn) 場返 回滿 10次秒 單 元
10、加 160 s到NYYYYNNN圖9.5 時間設(shè)置/鬧鐘定時流程圖 保 護 現(xiàn) 場調(diào) 用 鍵 盤 設(shè) 置 子 程 序ACALL KEYIN調(diào) 用 合 字 程 序ACALL COMB恢 復(fù) 現(xiàn) 場返 回圖9.6 鍵盤設(shè)置子程序流程圖保護現(xiàn)場顯示緩沖區(qū)首地址送R0鍵盤輸入次數(shù)送R7調(diào)用鍵盤掃描程序ACALL KEYSCAN鍵號送R0顯示緩沖區(qū)地址加1INC R0循環(huán)次數(shù)減1循環(huán)次數(shù)到恢復(fù)現(xiàn)場返回Yc圖9.7 鍵盤掃描流程圖 (4) 鍵盤掃描程序模塊KEYSCAN:流程圖如圖9.7所示。 掃 描 鍵 盤有 鍵 按 下調(diào) 用 顯 示 程 序有 鍵 按 下求 取 鍵 號返 回調(diào) 用 顯 示 程 序調(diào) 用
11、 定 時 比 較 程 序調(diào) 用 顯 示 程 序調(diào) 用 定 時 比 較 程 序YNNY圖9.8 顯示流程圖保 護 現(xiàn) 場動 態(tài) 掃 描 顯 示調(diào) 用 拆 字 程 序返 回YN允許顯示計時時間圖9.9 定時比較流程圖保護現(xiàn)場鬧鐘值與計時值秒單元相等啟鬧鬧鐘標志置位返回YN鬧鐘值與計時值分單元相等鬧鐘值與計時值小時單元相等恢復(fù)現(xiàn)場NNYYORG0000HAJMP MAINORG 000BHAJMP CLOCKORG 0030HPORT EQU 8000HPORTA EQU 8001HPORTB EQU 8002H;*主程序MAIN*PORTCEQU 8003HDISP0 EQU 30HDISP1 E
12、QU 31HDISP2 EQU 32HDISP3 EQU 33HDISP4 EQU 34HDISP5 EQU 35HHOUR EQU 3CH MIN EQU 3DH SEC EQU 3EH MSEC EQU 3FH AHOUR EQU 40H AMINEQU 41H ASEC EQU 42H F1 BIT PSW.1MAIN:MOV SP,#50H ;設(shè)置堆棧區(qū) MOVX DPTR,#PORT MOVA,#03H MOVX DPTR,A;8155初始化CLR F1;清零鬧鐘標志位CLRF0;允許計時顯示 MOV AHOUR,#0FFH MOV AMIN,#0FFH MOV ASEC,#0FFH
13、 MOV R7,#10H MOV R0,#DISP0 CLR ALOOP: MOV R0,A INC R0 DJNZ R7,LOOP ;設(shè)置初值 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH ;定時器0初始化,定時 時間100 ms SETB TR0;啟動定時器 SETB EA SETB ET0;開中斷 BEGIN: ACALLALARM ;調(diào)用定時比較 ACALLKEYSCAN ;調(diào)用鍵盤掃描 CJNEA,#0AH,NEXT1 ;是CLR/RST鍵否? CLR TR0 ;是則暫時停止計時 MOV R1,#HOUR ;地址指針指向計時緩沖區(qū)首地址 AJMPM
14、ODNEXT1:CJNE A,#0BH,BEGIN ;是ALARM鍵否? JB F1,NEXT2 ;鬧鐘正在鬧響否? MOVR1,#AHOUR ;地址指針指向鬧鐘值寄存區(qū)首地址 MOD: SETBF0 ;置位時間設(shè)置/鬧鐘定時標志,禁止顯示計時時間 ACALLMODIFY ;調(diào)用時間設(shè)置/鬧鐘定時程序 SETBTR0 ;重新開始計時 CLRF0 ;清零時間設(shè)置/鬧鐘定時標志,恢復(fù)顯示計時時間 AJMPBEGINNEXT2: SETBP1.0;鬧鐘正在鬧響,停鬧 CLRF1;清零鬧鐘標志 AJMPBEGIN ;*時間設(shè) 置/鬧鐘定時模塊MODIFY*MODIFY:ACALL KEYIN;調(diào)用鍵盤
15、設(shè)置子程序 ACALL COMB;調(diào)用合字子程序RET鍵盤設(shè)置子程序KEYIN:KEYIN:PUSH PSWPUSH ACC SETBRS1 ;保護現(xiàn)場 MOVR0,#DISP0 ;R0指向顯示緩沖區(qū)首地址 MOVR7,#06H ;設(shè)置鍵盤輸入次數(shù)L1:CLRRS1 ACALLKEYSCAN ;調(diào)用鍵盤掃描程序取按下鍵 的鍵號 SETB RS1 CJNEA,#0AH,L2 ;鍵入數(shù)合法性檢測(是否大 于9) L2:JNCL1;大于9,重新鍵入MOV R0,A;鍵號送顯示緩沖區(qū)INCR0DJNZ R7,L1;6位時間輸入完否?未 完繼續(xù),否則返回POPACCPOPPSWCLRRS1;恢復(fù)現(xiàn)場RE
16、T ;*鍵盤掃描子程序KEYSCAN* KEYSCAN:ACALLTEST ;調(diào)判按鍵是否按下子程序TEST JNZ REMOV ;有鍵按下調(diào)消抖延時 ACALLDISPLAY ACALLALARM AJMP KEYSCAN ;無鍵按下繼續(xù)判是否按鍵 REMOV: ACALL DISPLAY;調(diào)用顯示子程序延時消抖 ACALL TEST ;再判是否有鍵按下 JNZLIST ;有鍵按下轉(zhuǎn)逐列掃描 ACALL DISPLAY ACALL ALARM AJMPKEYSCAN ;無鍵按下繼續(xù)判是否按鍵 LIST: MOV R2,#0FEH ;首列掃描字送R2MOV R3,#00H ;首列鍵號送R3LI
17、NE0:MOV DPTR,#PORTA ;DPTR指針指向8155的A口 MOV A,R2 ;首列掃描字送R2 MOVXDPTR,A ;首列掃描字送8155的A口 MOV DPTR,#PORTC ;DPTR指針指向8155的C口 MOVXA,DPTR ;讀入C口的行狀態(tài) JB ACC.0,LINE1 ;第0行鍵無鍵按下轉(zhuǎn)第1行 MOVA,#00H ;第0行有鍵按下,行首鍵號送A AJMPTRYK ;求鍵號 NEXT: INC R3;掃描下一列 MOV A,R2;列掃描字送A JNB ACC.3,EXIT ;4列掃描完,重新進行 下一輪掃描 RL A;4列未掃描完,掃描字左移掃描下一列 MOV
18、R2,A;掃描字送A AJMP LINE0 ;轉(zhuǎn)向掃描下一列 EXIT: AJMP KEYSCAN;等待下一次按鍵TRYK: ADD A,R3;按公式計算鍵碼,求得鍵號 PUSH ACC;鍵號入棧保護LETK:ACALL TEST;等待按鍵釋放 JNZLETK;按鍵未釋放,繼續(xù)等待 POPACC;按鍵釋放,鍵號出棧RET;鍵盤掃描結(jié)束,返回TEST: MOV DPTR,#PORTA ;DPTR指針指向8155的A口MOV A,#00HMOVX DPTR, A ;全掃描字00H送8155的A口MOV DPTR,#PORTC ;DPTR指針指向8155的C口MOVX A,DPTR ;讀入C口行狀態(tài)
19、CPLA ;A取反,以高電平表示有 鍵按下ANLA,#07H ;屏蔽高5位RET ;*顯示子程序DISPLAY*DISPLAY:JB F0,DISP ;允許時間顯示標志F0=1轉(zhuǎn)DISPACALL SEPA ;否則調(diào)用SEPA刷新顯示緩沖區(qū) DISP: push psw ;動態(tài)掃描顯示子程序 Pushacc setb rs0 MOV dptr,#PORTA MOV A,#0FFH MOVX DPTR,A ;關(guān)顯示 mov r0,#disp0 mov r7,#00h mov r6,#06h mov r5,#0fehdis1: mov dptr,#tab mov a,r0 movc a,a+dpt
20、r mov dptr,#portbmovx dptr,a mov dptr,#porta mov a,r5 movx dptr,ahere: djnz r7,here inc r0 mov a,r5 rl a mov r5,a djnz r6,dis1 clr rs0 pop acc pop psw ret tab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h db 7fh,6fh,77h,7ch,39h,5eh,79h,71h;共陰極字型碼表 ;*合字子程序COMB*COMB: MOV R0,#DISP1 ;R0指向顯示緩沖區(qū)小時 低位 ACALL COMB1 ;合
21、字 CJNE A,#24H,CHK ;小時大于24否?CHK: JNCEXIT1 ;大于24則取消本次設(shè) 置,退出 MOVR1,A ;否則小時送計時緩沖區(qū) /鬧鐘值寄存區(qū)小時單元 INCR1 MOVR0,#DISP3 ;R0指向顯示緩沖區(qū)分低位 ACALLCOMB1 CJNEA,#60H,CHK1CHK1:JNC EXIT1 MOV R1,A INC R1 MOV R0,#DISP5 ;R0指向顯示緩沖區(qū)秒低位 ACALL COMB1 CJNEA,#60H,CHK2 CHK2:JNCEXIT1 MOV R1,ARET EXIT1: AJMP MAIN ;輸入不合法退出,重新清 零計時COMB1
22、:MOV A,R0 ANL A,#0FH ;取出低位 MOV43H,A;暫存于43H單元 DECR0;指向高位 MOVA,R0 ANLA,#0FH SWAPA;高位送高4位 ORLA,43H;高低位合并RET;*拆字子程序SEPA*SEPA:PUSH PSW PUSH ACC SETB RS0 MOVR0,#DISP5;指向顯示緩沖區(qū)秒低位 MOVA,SEC ACALL SEPA1 MOVA,MIN ACALL SEPA1 MOVA,HOUR ACALL SEPA1 POPACC POPPSW RETSEPA1:MOV 44H,A;暫存44H ANLA, #0FH;取出低位 MOV R0,A;送顯示緩沖區(qū)低位 DEC R0 ;指向顯示緩沖區(qū)高位 MOV A,44H ANL A,#0F0H;取出高位 SWAPA;高位送往低4位形成高位數(shù)據(jù) MOVR0,A ;高位數(shù)據(jù)送顯示緩沖區(qū)高位RET;*定時比較模塊ALARM*ALARM:MOV A,ASECCJNE A,SEC,BACK ;秒單元相同則繼續(xù)比較,否則返回 MOV A,AMINCJNE A,MI
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 眉山職業(yè)技術(shù)學院《外國語語音與歌唱》2023-2024學年第二學期期末試卷
- 寧波諾丁漢大學《巖溶學》2023-2024學年第二學期期末試卷
- 南京傳媒學院《大學外語(一)》2023-2024學年第一學期期末試卷
- 四川省涼山州西昌市2025年初三月考試題(二)語文試題試卷含解析
- 內(nèi)江市隆昌縣2024-2025學年數(shù)學三下期末質(zhì)量跟蹤監(jiān)視試題含解析
- 上海電機學院《數(shù)字游戲合成》2023-2024學年第二學期期末試卷
- 山西?。ㄋ分莸貐^(qū))市級名校2024-2025學年初三4月期中練習(二模)(理、文合卷)數(shù)學試題含解析
- 山東省棗莊市部分重點高中2025年高三七校聯(lián)考歷史試題試卷含解析
- 南京科技職業(yè)學院《大學英語I(藝體類)》2023-2024學年第一學期期末試卷
- 江蘇衛(wèi)生健康職業(yè)學院《構(gòu)筑物與公共藝術(shù)》2023-2024學年第二學期期末試卷
- 鋼結(jié)構(gòu)隔層施工合同范本
- 季度工作總結(jié)報告模板
- 跟骨骨折護理查房課件
- 《資本論》(德)卡爾·馬克思-文字版
- 籃球大單元教學計劃
- 多模態(tài)交互反饋機制
- 部編版小學道德與法治三年級下冊第8課《大家的“朋友”》課件
- 中華文明史(山東聯(lián)盟)智慧樹知到答案2024年青島理工大學
- NBT 33018-2015 電動汽車充換電設(shè)施供電系統(tǒng)技術(shù)規(guī)范
- DL∕T 523-2017 化學清洗緩蝕劑應(yīng)用性能評價指標及試驗方法
- HJ 651-2013 礦山生態(tài)環(huán)境保護與恢復(fù)治理技術(shù)規(guī)范(試行)
評論
0/150
提交評論