單片機產(chǎn)品設(shè)計課件_第1頁
單片機產(chǎn)品設(shè)計課件_第2頁
單片機產(chǎn)品設(shè)計課件_第3頁
單片機產(chǎn)品設(shè)計課件_第4頁
單片機產(chǎn)品設(shè)計課件_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

設(shè)計要求總體方案硬件設(shè)計軟件設(shè)計系統(tǒng)調(diào)試與運行第

10

單片機的應(yīng)用系統(tǒng)設(shè)計與開發(fā)本章內(nèi)容SingleChipMicrocomputer一、

設(shè)計要求設(shè)計并制作出具有如下功能的電腦鐘:

(1)自動計時,由6位LED顯示器顯示時、分、秒。

(2)具備校準(zhǔn)功能,可以直接由0~9數(shù)字鍵設(shè)置當(dāng)前時間。

(3)具備定時起鬧功能。

(4)一天時差不超過1秒鐘。二、

總體方案1.計時方案方案一:采用實時時鐘芯片。方案二:軟件控制。2.鍵盤/顯示方案方案一:串口擴展,LED靜態(tài)顯示。方案二:8155擴展,LED動態(tài)顯示。顯示方式框圖

(a)靜態(tài)顯示框圖;(b)動態(tài)顯示框圖

三、

硬件設(shè)計

1.電路原理圖2.系統(tǒng)工作流程本電腦鐘具備以下功能:

(1)時鐘顯示:6位LED從左到右依次顯示時、分、秒,采用24小時計時。

(2)鍵盤功能:采用4×3鍵盤,包括:0~9數(shù)字鍵,鍵號為00H~09HC/R鍵時間設(shè)定/啟動計時鍵,鍵號為0AHALM鍵鬧鐘設(shè)置/啟鬧/停鬧鍵,鍵號為0BH(1)時間顯示:上電后,系統(tǒng)自動進入時鐘顯示,從00:00:00開始計時,此時可以設(shè)定當(dāng)前時間。(2)時間調(diào)整:按下C/R鍵,系統(tǒng)停止計時,進入時間設(shè)定狀態(tài),系統(tǒng)保持原有顯示,等待鍵入當(dāng)前時間。按下0~9數(shù)字鍵可以順序設(shè)置時、分、秒,并在相應(yīng)LED管上顯示設(shè)置值,直至6位設(shè)置完畢。系統(tǒng)將自動由設(shè)定后的時間開始計時顯示。

(3)鬧鐘設(shè)置/啟鬧/停鬧:按下ALM鍵,系統(tǒng)繼續(xù)計時,顯示00:00:00,進入鬧鐘設(shè)置狀態(tài),等待鍵入啟鬧時間。按下0~9數(shù)字鍵可以順序進行相應(yīng)的時間設(shè)置,并在相應(yīng)LED管上顯示設(shè)置值,直至6位設(shè)置完畢。這將啟動定時啟鬧功能,并恢復(fù)時間顯示。定時時間到,蜂鳴器鳴叫,直至重新按下ALM鍵停鬧,并取消鬧鐘設(shè)置。四、軟件設(shè)計1.系統(tǒng)資源分配地址功能名稱初始化值30H~35H顯示緩沖區(qū),小時、分、秒(高位在前)DISP0~DISP500H3CH~3FH計時緩沖區(qū),時、分、秒、100msHOUR,MIN,SEC,MSEC00H40H~42H鬧鐘值寄存區(qū),時、分、秒AHOUR,AMIN,ASECFFH50H~7FH堆棧區(qū)

PSW.5計時顯示允許位(1:禁止,0:允許)F00PSW.1鬧鐘標(biāo)志位(1:正在鬧響,0:未鬧響)F10電子鐘控制軟件片內(nèi)RAM及標(biāo)志位分配表2.軟件流程圖9.3主程序流程圖圖9.4計時程序流程圖圖9.5時間設(shè)置/鬧鐘定時流程圖

圖9.6鍵盤設(shè)置子程序流程圖圖9.7鍵盤掃描描流程圖圖(4)鍵盤掃描描程序模模塊KEYSCAN:流程圖圖如圖9.7所示。圖9.8顯示流程程圖圖9.9定時比較較流程圖圖ORG0000HAJMP MAINORG000BHAJMP CLOCKORG0030HPORTEQU8000HPORTAEQU8001HPORTBEQU8002H;*****************主主程序MAIN******************PORTCEQU8003HDISP0EQU30HDISP1EQU31HDISP2EQU32HDISP3EQU33HDISP4EQU34HDISP5EQU35HHOUREQU3CHMINEQU3DHSECEQU3EHMSECEQU3FHAHOUREQU40HAMIN EQU41HASECEQU42HF1BITPSW.1MAIN:MOVSP,#50H;設(shè)置堆堆棧區(qū)MOVXDPTR,#PORTMOVA,#03HMOVX@DPTR,A;8155初始化CLRF1;清零鬧鬧鐘標(biāo)志志位CLRF0;允許計計時顯示示MOVAHOUR,#0FFHMOVAMIN,#0FFHMOVASEC,#0FFHMOVR7,#10HMOVR0,#DISP0CLRALOOP:MOV@R0,AINCR0DJNZR7,LOOP;設(shè)置初初值MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#3CH;定時器器0初始化,,定時時間100msSETBTR0;啟動定定時器SETBEASETBET0;開中斷斷BEGIN:ACALLALARM;調(diào)用定定時比較較ACALLKEYSCAN;調(diào)用鍵鍵盤掃描描CJNE A,#0AH,NEXT1;是CLR/RST鍵否?CLRTR0;是則暫暫時停止止計時MOVR1,#HOUR;地址指指針指向向計時緩緩沖區(qū)首首地址AJMP MODNEXT1:CJNEA,#0BH,BEGIN;是ALARM鍵否?JBF1,NEXT2;鬧鐘正正在鬧響響否?MOVR1,#AHOUR;地址指指針指向向鬧鐘值值寄存區(qū)區(qū)首地址址MOD:SETB F0;置位時時間設(shè)置置/鬧鐘定時時標(biāo)志,,禁止顯顯示計時時時間ACALLMODIFY;調(diào)用時時間設(shè)置置/鬧鐘定時時程序SETB TR0;重新開開始計時時CLRF0;清零時時間設(shè)置置/鬧鐘定時時標(biāo)志,,恢復(fù)顯顯示計時時時間AJMP BEGINNEXT2:SETB P1.0;鬧鐘正正在鬧響響,停鬧鬧CLRF1;清零鬧鬧鐘標(biāo)志志AJMP BEGIN;**************時時間設(shè)置/鬧鐘定時時模塊MODIFY************MODIFY:ACALLKEYIN;調(diào)用鍵鍵盤設(shè)置置子程序序ACALLCOMB;調(diào)用合合字子程程序RET鍵盤設(shè)置置子程序序KEYIN:KEYIN:PUSH PSWPUSH ACCSETB RS1;保護現(xiàn)現(xiàn)場MOVR0,#DISP0;R0指向顯示示緩沖區(qū)區(qū)首地址址MOVR7,#06H;設(shè)置鍵鍵盤輸入入次數(shù)L1:CLRRS1ACALLKEYSCAN;調(diào)用鍵鍵盤掃描描程序取取按下鍵鍵的鍵號SETBRS1CJNE A,#0AH,L2;鍵入數(shù)數(shù)合法性性檢測((是否大大于9)L2:JNCL1;大于9,重新鍵鍵入MOV@R0,A;鍵號送送顯示緩緩沖區(qū)INCR0DJNZ R7,L1;6位時間輸輸入完否否?未完繼續(xù),,否則返返回POPACCPOPPSWCLRRS1;恢復(fù)現(xiàn)現(xiàn)場RET;**********鍵盤盤掃描子子程序KEYSCAN***********KEYSCAN:ACALL TEST;調(diào)判按按鍵是否否按下子子程序TESTJNZREMOV;有鍵按按下調(diào)消消抖延時時ACALLDISPLAYACALLALARMAJMPKEYSCAN;無鍵按按下繼續(xù)續(xù)判是否否按鍵REMOV:ACALLDISPLAY;調(diào)用顯顯示子程程序延時時消抖ACALLTEST;再判是是否有鍵鍵按下JNZLIST;有鍵按按下轉(zhuǎn)逐逐列掃描描ACALLDISPLAYACALLALARMAJMP KEYSCAN;無鍵按按下繼續(xù)續(xù)判是否否按鍵LIST:MOVR2,#0FEH;首列掃掃描字送送R2MOVR3,#00H;首列鍵鍵號送R3LINE0:MOVDPTR,#PORTA;DPTR指針指向向8155的A口MOVA,R2;首列掃掃描字送送R2MOVX @DPTR,A;首列掃掃描字送送8155的A口MOVDPTR,#PORTC;DPTR指針指向向8155的C口MOVX A,@DPTR;讀入C口的行狀狀態(tài)JBACC.0,LINE1;第0行鍵無鍵鍵按下轉(zhuǎn)轉(zhuǎn)第1行MOVA,#00H;第0行有鍵按按下,行行首鍵號號送AAJMP TRYK;求鍵號號NEXT:INCR3;掃描下下一列MOVA,R2;列掃描描字送AJNBACC.3,EXIT;4列掃描完完,重新新進行下下一輪輪掃描RLA;4列未掃描描完,掃掃描字左左移掃描描下一列列MOVR2,A;掃描字字送AAJMPLINE0;轉(zhuǎn)向掃掃描下一一列EXIT:AJMPKEYSCAN;等待下下一次按按鍵TRYK:ADDA,R3;按公式式計算鍵鍵碼,求求得鍵號號PUSHACC;鍵號入棧保保護LETK:ACALLTEST;等待按鍵釋釋放JNZ LETK;按鍵未釋放放,繼續(xù)等待待POP ACC;按鍵釋放,,鍵號出棧RET;鍵盤掃描結(jié)結(jié)束,返回TEST:MOVDPTR,#PORTA;DPTR指針指向8155的A口MOVA,#00HMOVX@DPTR,A;全掃描字00H送8155的A口MOV DPTR,#PORTC;DPTR指針指向8155的C口MOVXA,@DPTR;讀入C口行狀態(tài)CPL A;A取反,以高電電平表示有鍵按下ANL A,#07H;屏蔽高5位RET;**************顯顯示子程序DISPLAY*************DISPLAY: JBF0,DISP;允許時間顯顯示標(biāo)志F0=1轉(zhuǎn)DISPACALLSEPA;否則調(diào)用SEPA刷新顯示緩沖沖區(qū)DISP:pushpsw;動態(tài)掃描顯顯示子程序Pushaccsetbrs0MOVdptr,#PORTAMOVA,#0FFHMOVX@DPTR,A;關(guān)顯示movr0,#disp0movr7,#00hmovr6,#06hmovr5,#0fehdis1:movdptr,#tabmova,@r0movca,@a+dptrmovdptr,#portbmovx@dptr,amovdptr,#portamova,r5movx@dptr,ahere:djnz r7,hereincr0mova,r5rlamovr5,adjnzr6,dis1clrrs0popaccpoppswrettab:db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71h;共陰極字型型碼表;*****************合字子子程序COMB******************COMB:MOVR0,#DISP1;R0指向顯示緩沖沖區(qū)小時低位ACALLCOMB1;合字CJNEA,#24H,CHK;小時大于24否?CHK:JNCEXIT1;大于24則取消本次設(shè)設(shè)置,退出MOV @R1,A;否則小時送送計時緩沖區(qū)區(qū)/鬧鐘值寄存區(qū)區(qū)小時單元INCR1MOV R0,#DISP3;R0指向顯示緩沖沖區(qū)分低位ACALLCOMB1CJNEA,#60H,CHK1CHK1:JNCEXIT1MOV@R1,AINC R1MOVR0,#DISP5;R0指向顯示緩沖沖區(qū)秒低位ACALLCOMB1CJNEA,#60H,CHK2CHK2:JNC EXIT1MOV @R1,ARETEXIT1:AJMPMAIN;輸入不合法法退出,重新新清零計時COMB1:MOVA,@R0ANLA,#0FH;取出低位MOV 43H,A;暫存于43H單元DEC R0;指向高位MOV A,@R0ANL A,#0FHSWAPA;高位送高4位ORL A,43H;高低位合并并RET;***************拆字子程序序SEPA***************SEPA:PUSHPSWPUSHACCSETBRS0MOV R0,#DISP5;指向顯示緩緩沖區(qū)秒低位位MOV A,SECACALLSEPA1MOV A,MINACALLSEPA1MOV A,HOURACALLSEPA1POP ACCPOP PSWRETSEPA1:MOV44H,A;暫存44HANLA,#0FH;取出低位MOV@R0,A;送顯示緩沖沖區(qū)低位DECR0;指向顯示緩緩沖區(qū)高位MOVA,44HANLA,#0F0H;取出高位SWAPA;高位送往低低4位形成高位數(shù)數(shù)據(jù)MOV @R0,A;高位數(shù)據(jù)送送顯示緩沖區(qū)區(qū)高位RET;**************定定時比較模塊塊ALARM****************ALARM:MOV A,ASECCJNEA,SEC,BACK;秒單元相同同則繼續(xù)比較較,否則返回回MOV A,AMINCJNEA,MIN,BACK;分單元相同同則繼續(xù)比較較,否則返回回MOV A,AHOURCJNEA,HOUR,BACK;小時單元相相同定時時間間到CLR P1.0;啟動鬧鐘鳴鳴叫SETBF1;置位鬧鐘標(biāo)標(biāo)志BACK:RET;***************定時器0中斷服務(wù)子程程序CLOCK***************CLOCK:MOVTL0,#0B7HMOV TH0,#3CH;重裝初值,

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論