電子跑表課程設(shè)計_第1頁
電子跑表課程設(shè)計_第2頁
電子跑表課程設(shè)計_第3頁
電子跑表課程設(shè)計_第4頁
電子跑表課程設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設(shè) 計 書系別 專業(yè) 班級 題目 電子跑表 教師 學(xué)生 年 月 號 一、 設(shè)計任務(wù):1.電子表,具有十分、分、十秒和秒的計時功能,并可以在數(shù)碼管上顯示。2電子表具有啟動鍵、停止鍵、復(fù)位鍵,而且可以隨時通過鍵盤進行各位時間的設(shè)置。二、 設(shè)計原理:本程序的主要設(shè)計原理是用主程序完成鍵盤按鍵的掃描,實現(xiàn)計時結(jié)果的數(shù)碼管顯示,實現(xiàn)秒與分之間的轉(zhuǎn)換。通過判斷鍵盤按鍵調(diào)用相應(yīng)功能程序段以實現(xiàn)相應(yīng)功能,即實現(xiàn)了啟動、暫停、復(fù)位功能,以及通過鍵盤進行十分、分、十秒、秒時間的手動設(shè)置功能。1.8254的初始化字 由此,本設(shè)計中的8254的初始化為:mov dx,my8254_mode ;初始化8254工

2、作方式 mov al,36h ;計數(shù)器0,方式3 out dx,al mov dx,my8254_count0 ;裝入計數(shù)初值 mov al,00h ;18432分頻 out dx,al mov al,54h out dx,al2.8255的初始化字由此,本設(shè)計中的8255的初始化為:mov dx,my8255_mode ;初始化8255工作方式 mov al,81h ;方式0,a口、b口輸出,c口低4位輸入 out dx,al三、 電子表軟件流程圖1.主程序流程圖開 始程 序 初 始 化判斷小鍵盤是否有鍵按下 n y若按鍵值為8、9、0a、0b、0c、0d、0e、0f,則要轉(zhuǎn)至?xí)r間設(shè)置處理程

3、序若按鍵值為1,則要轉(zhuǎn)至stopkeytag處理程序若按鍵值為2,則要轉(zhuǎn)至clearkeytag處理程序若按鍵值為3,則要轉(zhuǎn)至startisruning處理程序 pc機上面是不是有鍵按下調(diào) 用 子 程 序 n y返回dos結(jié) 束2.電子表處理程序開 始sec秒加1sec秒是否到10? n ysec秒清零,tensec十秒加1tensec十秒是否到6? n ytensec十秒清零,mint個位分加1mint個位分是否到10? n ymint個位分清零,tenmint十位分加1tenmint十位分到6? n ytenmint十位秒分清零調(diào)用led動態(tài)顯示程序結(jié) 束四、 電子表硬件接線圖abcde

4、鍵 盤f 及 數(shù)g 碼 管dp 顯 示 單 元x1x2x3x4y1y2y3y4d7 pb0d6 pb1d5 pb2d4 pb3d3 pb4d2 pb5d1 pb6d0 8255 pb7 單 元a1 pa0a0 pa1 pa2wr pa3rdcs pc0 pc1pc2pc3 xd7 xd6 xd5 xd4 xd3 xd2 xd1 xd0系 xa3 xa2 xiow xior ioy0 ioy1 intr clk統(tǒng) d7d6d5d4d3d2 8254d1 單 元d0a1a2wrrdcsout0clk0 總 線 五電子表軟件代碼;*根據(jù)check配置信息修改下列符號值*ioy0 equ 0e000h

5、 ;片選ioy0對應(yīng)的端口始地址ioy1 equ 0e040h;*my8255_a equ ioy0+00h*4 ;8255的a口地址my8255_b equ ioy0+01h*4 ;8255的b口地址my8255_c equ ioy0+02h*4 ;8255的c口地址my8255_mode equ ioy0+03h*4 ;8255的控制寄存器地址my8254_count0 equ ioy1+00h*4 ;8254計數(shù)器0端口地址my8254_count1 equ ioy1+01h*4 ;8254計數(shù)器1端口地址my8254_count2 equ ioy1+02h*4 ;8254計數(shù)器2端口地

6、址my8254_mode equ ioy1+03h*4 ;8254控制寄存器端口地址stack1 segment stack dw 256 dup(?)stack1 endsdata segmentdtable db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h,77h,7ch,39h,5eh,79h,71h ;鍵值表,0f對應(yīng)的7段數(shù)碼管的段位值timetable db 0,0,0,0startkey db 3 ;啟動鍵stopkey db 1 ;停止鍵clearkey db 2 ;清0鍵settmaddkey db 8 ;設(shè)置十位分鐘加setmaddkey

7、 db 9 ;設(shè)置個位分鐘加settsaddkey db 0ah ;設(shè)置十位秒加setsaddkey db 0bh ;設(shè)置個位秒加settmsubkey db 0ch ;設(shè)置十位分鐘減setmsubkey db 0dh ;設(shè)置個位分鐘減settssubkey db 0eh ;設(shè)置十位秒減setssubkey db 0fh ;設(shè)置個位秒減status db 0 ;8254out端口狀態(tài)鍵isruning db 0 wthousand db 0wsec db 0wmsec db 0tensec db 0sec db 0mint db 0tenmint db 0data ends code segm

8、ent assume cs:code,ds:datastart: mov ax,data mov ds,ax mov es,ax mov dx,my8254_mode ;初始化8254工作方式 mov al,36h ;計數(shù)器0,方式3 out dx,al mov dx,my8254_count0 ;裝入計數(shù)初值 mov al,00h ;18432分頻 out dx,al mov al,54h out dx,al mov dx,my8255_mode ;初始化8255工作方式 mov al,81h ;方式0,a口、b口輸出,c口低4位輸入 out dx,albegin: call dis ;顯示

9、刷新 call clear ;清屏 call ccscan ;掃描按鍵 jz nokeydown ;有鍵按下則跳置getkey1 jmp getkey1 nokeydown: mov ah,1 ;判斷pc鍵盤是否有按鍵按下 int 16h jz keyscanend ;無按鍵則跳回繼續(xù)循環(huán),有則退出 jmp quit keyscanend: cmp isruning,1 jne begin timestart:mov al,11100010b ;設(shè)置回讀命令mov dx,my8254_modeout dx,al mov dx,my8254_count0 ;讀0端口狀態(tài)控制字in al,dxcm

10、p status,1jne notstatustest al,80hjz changewmsecjmp beginnotstatus:test al,80hjnz changewmsecjmp beginchangewmsec:test al,80hjz changestatusmov status,1jmp haschangechangestatus:mov status,0haschange:inc wmseccmp wmsec,0ah ;百分秒到10,十分秒加1 jne changesecmov wmsec,0inc wseccmp wsec,0ah ;十分秒秒到10,個位秒加1jne

11、changesecmov wsec,0inc seccmp sec,0ah ;個位秒秒到10,十位秒加1jne changesecmov sec,0inc tenseccmp tensec,06h ;十位秒到6,清零jne changesecmov tensec,0inc mintcmp mint,0ah ;分鐘個位到10,十位加1jnz changesecmov mint,0inc tenmintcmp tenmint,06h ;十位分到6,清零jne changesecmov tenmint,0changesec:mov si,0;存儲時間mov al,tenmint;十位分mov tim

12、etablesi,alinc simov al,mint;個位分mov timetablesi,alinc simov al,tensec;十位秒mov timetablesi,alinc simov al,sec;個位秒mov timetablesi,alinc simov timetablesi,0inc sijmp begin quit: mov ax,4c00h ;返回到dos int 21hgetkey1:call dis ;顯示刷新 call dally call dally call clear ;清屏 call ccscan ;再次掃描按鍵 jnz getkey2 ;有鍵按下則

13、跳置getkey2 jmp begin ;否則跳回開始繼續(xù)循環(huán)getkey2:mov ch,0feh mov cl,00h ;設(shè)置當前檢測的是第幾列colum: mov al,ch ;選取一列,將x1x4中一個置0 mov dx,my8255_a out dx,al mov dx,my8255_c ;讀y1y4,用于判斷是哪一行按鍵閉合 in al,dxl1: test al,01h ;是否為第1行 jnz l2 ;不是則繼續(xù)判斷 mov al,00h ;設(shè)置第1行第1列的對應(yīng)的鍵值 jmp kcodel2: test al,02h ;是否為第2行 jnz l3 ;不是則繼續(xù)判斷 mov al

14、,04h ;設(shè)置第2行第1列的對應(yīng)的鍵值 jmp kcodel3: test al,04h ;是否為第3行 jnz l4 ;不是則繼續(xù)判斷 mov al,08h ;設(shè)置第3行第1列的對應(yīng)的鍵值 jmp kcodel4: test al,08h ;是否為第4行 jnz kk ;不是則繼續(xù)判斷 mov al,0ch ;設(shè)置第4行第1列的對應(yīng)的鍵值mynext: push axkon: call dis ;顯示刷新 call clear ;清屏 call ccscan ;掃描按鍵,判斷按鍵是否彈起 jnz kon ;未彈起則繼續(xù)循環(huán)等待彈起 pop axkcode: add al,cl ;將第1列的

15、值加上當前列數(shù),確定按鍵值 cmp al,startkey ; 判斷是否為開始鍵 jne stopkeytag cmp isruning,0 jne startisruning mov isruning,1 startisruning: jmp timestart stopkeytag: ; 判斷是否為停止鍵 cmp al,stopkey jne clearkeytag mov isruning,0 jmp startisruningclearkeytag: ; 判斷是否為清零鍵 cmp al,clearkey jnz settmaddtag call clearclock jmp kerrk

16、k:jmp nextsettmaddtag: ; 判斷是否為十位分鐘加設(shè)置鍵 cmp al,settmaddkey jnz setmaddtag call settmadd jmp kerrsetmaddtag: ; 判斷是否為個位分鐘加設(shè)置鍵 cmp al,setmaddkey jnz settsaddtag call setmadd jmp kerrsettsaddtag: ; 判斷是否為十位秒加設(shè)置鍵 cmp al,settsaddkey jnz setsaddtag call settsadd jmp kerrsetsaddtag: ; 判斷是否為個位秒加設(shè)置鍵 cmp al,sets

17、addkey jnz settmsubtag call setsadd jmp kerrsettmsubtag: ; 判斷是否為十位分鐘減設(shè)置鍵 cmp al,settmsubkey jnz setmsubtag call settmsub jmp kerrsetmsubtag: ; 判斷是否為個位分鐘減設(shè)置鍵 cmp al,setmsubkey jnz settssubtag call setmsub jmp kerrsettssubtag: ; 判斷是否為十位秒減設(shè)置鍵 cmp al,setssubkey jnz setssubtag call settssub jmp kerrsetss

18、ubtag: ; 判斷是否為個位秒減設(shè)置鍵 cmp al,setssubkey jnz kerr call setssub next: inc cl ;當前檢測的列數(shù)遞增 mov al,ch test al,08h ;檢測是否掃描到第4列 jz kerr ;是則跳回到開始處 rol al,1 ;沒檢測到第4列則準備檢測下一列 mov ch,al jmp columkerr: jmp beginccscan proc near ;掃描是否有按鍵閉合子程序 mov al,1h mov dx,my8255_a ;將4列全選通,x1x4置0 out dx,al mov dx,my8255_c in a

19、l,dx ;讀y1y4 not al and al,0fh ;取出y1y4的反值 retccscan endpclear proc near ;清除數(shù)碼管顯示子程序 mov dx,my8255_b ;段位置0即可清除數(shù)碼管顯示 mov al,00h out dx,al retclear endpdis proc near ;顯示鍵值子程序 push ax ;以緩沖區(qū)存放的鍵值為鍵值表偏移找到鍵值并顯示 mov si,offset timetable mov cx,si add cx,1 add si,5 mov dl,0dfh mov al,dlagain: push dx mov dx,my

20、8255_a out dx,al ;設(shè)置x1x4,選通一個數(shù)碼管 mov al,si ;取出緩沖區(qū)中存放鍵值 mov bx,offset dtable and ax,00ffh add bx,ax mov bl,bx cmp si,cx jne comer or bl,80h comer: mov al,bl ;將鍵值作為偏移和鍵值基地址相加得到相應(yīng)的鍵值 mov dx,my8255_b out dx,al ;寫入數(shù)碼管adp call dally dec si ;取下一個鍵值 pop dx mov al,dl test al,01h ;判斷是否顯示完? jz out1 ;顯示完,返回 ror

21、 al,1 mov dl,al jmp again ;未顯示完,跳回繼續(xù)out1: pop ax retdis endpdally proc near ;軟件延時子程序 push cx mov cx,00ffhd1: mov ax,00ffhd2: dec ax jnz d2 loop d1 pop cx retdally endp;設(shè)置十位分鐘加子程序settmadd proc nearadd tenmint,1mov al,tenmintmov si,0mov timetablesi,alretsettmadd endp;設(shè)置個位分鐘加子程序setmadd proc nearadd min

22、t,1mov al,mintmov si,1mov timetablesi,alretsetmadd endp;設(shè)置十位秒加子程序settsadd proc nearadd tensec,1mov al,tensecmov si,2mov timetablesi,alretsettsadd endp;設(shè)置個位秒加子程序setsadd proc nearadd sec,1mov al,secmov si,3mov timetablesi,alretsetsadd endp;設(shè)置十位分鐘減子程序settmsub proc nearsub tenmint,1mov al,tenmintmov si,

23、0mov timetablesi,alretsettmsub endp;設(shè)置個位分鐘減子程序setmsub proc nearsub mint,1mov al,mintmov si,1mov timetablesi,alretsetmsub endp;設(shè)置十位秒減子程序settssub proc nearsub tensec,1mov al,tensecmov si,2mov timetablesi,alretsettssub endp;設(shè)置個位秒減子程序setssub proc nearsub sec,1mov al,secmov si,3mov timetablesi,alretsetssub

溫馨提示

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

評論

0/150

提交評論