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

下載本文檔

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

文檔簡介

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

10

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

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

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

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

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

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

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

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

三、

硬件設計

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

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

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

(3)鬧鐘設置/啟鬧/停鬧:按下ALM鍵,系統(tǒng)繼續(xù)計時,顯示00:00:00,進入鬧鐘設置狀態(tài),等待鍵入啟鬧時間。按下0~9數(shù)字鍵可以順序進行相應的時間設置,并在相應LED管上顯示設置值,直至6位設置完畢。這將啟動定時啟鬧功能,并恢復時間顯示。定時時間到,蜂鳴器鳴叫,直至重新按下ALM鍵停鬧,并取消鬧鐘設置。四、軟件設計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鬧鐘標志位(1:正在鬧響,0:未鬧響)F10電子鐘控制軟件片內(nèi)RAM及標志位分配表2.軟件流程圖9.3主程序流程圖圖9.4計時程序流程圖圖9.5時間設置/鬧鐘定時流程圖

圖9.6鍵盤設置子程序流程圖圖9.7鍵盤掃描描流程圖圖(4)鍵盤掃描描程序模模塊KEYSCAN:流程圖圖如圖9.7所示。圖9.8顯示流程程圖圖9.9定時比較較流程圖圖ORG0000HAJMP MAINORG000BHAJMP CLOCKORG0030HPORTEQU8000HPORTAEQU8001HPORTBEQU8002H;*****************主主程序MAIN******************PORTCEQU8003HDISP0EQU30HDISP1EQU31HDISP2EQU32HDISP3EQU33HDISP4EQU34HDISP5EQU35HHOUREQU3CHMINEQU3DHSECEQU3EHMSECEQU3FHAHOUREQU40HAMIN EQU41HASECEQU42HF1BITPSW.1MAIN:MOVSP,#50H;設置堆堆棧區(qū)MOVXDPTR,#PORTMOVA,#03HMOVX@DPTR,A;8155初始化CLRF1;清零鬧鬧鐘標志志位CLRF0;允許計計時顯示示MOVAHOUR,#0FFHMOVAMIN,#0FFHMOVASEC,#0FFHMOVR7,#10HMOVR0,#DISP0CLRALOOP:MOV@R0,AINCR0DJNZR7,LOOP;設置初初值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;置位時時間設置置/鬧鐘定時時標志,,禁止顯顯示計時時時間ACALLMODIFY;調(diào)用時時間設置置/鬧鐘定時時程序SETB TR0;重新開開始計時時CLRF0;清零時時間設置置/鬧鐘定時時標志,,恢復顯顯示計時時時間AJMP BEGINNEXT2:SETB P1.0;鬧鐘正正在鬧響響,停鬧鬧CLRF1;清零鬧鬧鐘標志志AJMP BEGIN;**************時時間設置/鬧鐘定時時模塊MODIFY************MODIFY:ACALLKEYIN;調(diào)用鍵鍵盤設置置子程序序ACALLCOMB;調(diào)用合合字子程程序RET鍵盤設置置子程序序KEYIN:KEYIN:PUSH PSWPUSH ACCSETB RS1;保護現(xiàn)現(xiàn)場MOVR0,#DISP0;R0指向顯示示緩沖區(qū)區(qū)首地址址MOVR7,#06H;設置鍵鍵盤輸入入次數(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;恢復現(xiàn)現(xiàn)場RET;**********鍵盤盤掃描子子程序KEYSCAN***********KEYSCAN:ACALL TEST;調(diào)判按按鍵是否否按下子子程序TESTJNZREMOV;有鍵按按下調(diào)消消抖延時時ACALLDISPLAYACALLALARMAJMPKEYSCAN;無鍵按按下繼續(xù)續(xù)判是否否按鍵REMOV:ACALLDISPLAY;調(diào)用顯顯示子程程序延時時消抖ACALLTEST;再判是是否有鍵鍵按下JNZLIST;有鍵按按下轉逐逐列掃描描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行鍵無鍵鍵按下轉轉第1行MOVA,#00H;第0行有鍵按按下,行行首鍵號號送AAJMP TRYK;求鍵號號NEXT:INCR3;掃描下下一列MOVA,R2;列掃描描字送AJNBACC.3,EXIT;4列掃描完完,重新新進行下下一輪輪掃描RLA;4列未掃描描完,掃掃描字左左移掃描描下一列列MOVR2,A;掃描字字送AAJMPLINE0;轉向掃掃描下一一列EXIT:AJMPKEYSCAN;等待下下一次按按鍵TRYK:ADDA,R3;按公式式計算鍵鍵碼,求求得鍵號號PUSHACC;鍵號入棧保保護LETK:ACALLTEST;等待按鍵釋釋放JNZ LETK;按鍵未釋放放,繼續(xù)等待待POP ACC;按鍵釋放,,鍵號出棧RET;鍵盤掃描結結束,返回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;允許時間顯顯示標志F0=1轉DISPACALLSEPA;否則調(diào)用SEPA刷新顯示緩沖沖區(qū)DISP:pushpsw;動態(tài)掃描顯顯示子程序Pushaccsetbrs0MOVdptr,#PORTAMOVA,#0FFHMOVX@DPTR,A;關顯示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則取消本次設設置,退出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;置位鬧鐘標標志BACK:RET;***************定時器0中斷服務子程程序CLOCK***************CLOCK:MOVTL0,#0B7HMOV TH0,#3CH;重裝初值,

溫馨提示

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

評論

0/150

提交評論