LED七段數(shù)碼管數(shù)字鐘_第1頁
LED七段數(shù)碼管數(shù)字鐘_第2頁
LED七段數(shù)碼管數(shù)字鐘_第3頁
LED七段數(shù)碼管數(shù)字鐘_第4頁
LED七段數(shù)碼管數(shù)字鐘_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——LED七段數(shù)碼管數(shù)字鐘目錄

一、設計任務書錯誤!未定義書簽。二、設計題目2三、設計方案2四、硬件原理錯誤!未定義書簽。

1.七段數(shù)碼管顯示22.鍵盤掃描顯示錯誤!未定義書簽。3.8253計數(shù)器和8259中斷錯誤!未定義書簽。4.硬件連接4五、程序流程圖及程序清單5

1.七段數(shù)碼管顯示62.鍵盤掃描顯示63.定時器設計84.總程序設計錯誤!未定義書簽。六、調(diào)試過程及結(jié)果19七、設計總結(jié)和體會19八、(1)七段數(shù)碼管顯示

(2)鍵盤掃描顯示

7.七段數(shù)碼管顯示子程序框圖圖

圖8.讀鍵輸入子程序框圖

(3)定時器設計

圖9.定時中斷服務子程序框圖

2.程序代碼

CONTROLequ0c003hCOUNT0equ0c000hCOUNT1equ0c001hCOUNT2equ0c002h

md8255equ82h;8255工作方式

PA8255equ8000h;8255PA口輸出地址CTL8255equ8003h;8255控制口地址IN_KEYequ08001h;鍵盤讀入口

OUTBITequ08002h;位控制口OUTSEGequ08004h;段控制口

ICW1equ00010011b;單片8259,上升沿中斷,要寫ICW4ICW2equ00100000b;中斷號為20H

ICW4equ00000001b;工作在8086/88方式OCW1equ11111110b;只響應INT0中斷CS8259Aequ0d000h;8259地址CS8259Bequ0d001h

datasegmentCNTdb0Hourdb0Minutedb0Seconddb0

LEDBufdb6dup(?);顯示緩沖Numdb1dup(?);顯示的數(shù)據(jù)DelayTdb1dup(?)dinglindb6dup(?)

LEDMAP:;八段管顯示碼

db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hKeyTable:;鍵碼定義db16h,15h,14h,0ffhdb13h,12h,11h,10hdb0dh,0ch,0bh,0ahdb0eh,03h,06h,09hdb0fh,02h,05h,08hdb00h,01h,04h,07hdataends

codesegment

assumecs:code,ds:data

Delayprocnear

pushax;延時子程序pushcx

moval,0movcx,axloop$

popcxpopaxretDelayendp

DisplayLEDprocnear

movbx,offsetLEDBuf

movcl,6;共6個八段管movah,00100000b;從左邊開始顯示DLoop:

movdx,OUTBITmoval,0

outdx,al;關所有八段管moval,[bx]

movdx,OUTSEGoutdx,al

movdx,OUTBITmoval,ah

outdx,al;顯示一位八段管

pushaxmovah,1callDelaypopax

shrah,1incbxdeccljnzDLoop

movdx,OUTBIT

moval,0

outdx,al;關所有八段管ret

DisplayLEDendp

TestKeyprocnear

movdx,OUTBITmoval,0

outdx,al;輸出線置為0movdx,IN_KEY

inal,dx;讀入鍵狀態(tài)

notal

andal,0fh;高四位不用retTestKeyendp

GetKeyprocnear

movch,00100000bmovcl,6KLoop:

movdx,OUTBIT

moval,ch;找出鍵所在列notaloutdx,alshrch,1

movdx,IN_KEYinal,dxnotalandal,0fh

jneGoon_;該列有鍵入deccljnzKLoop

movcl,0ffh;沒有鍵按下,返回0ffhjmpExit1Goon_:

deccl

shlcl,2;鍵值=列X4+行

movch,4LoopC:

testal,1jnzExit1shral,1inccldecchjnzLoopCExit1:

movdx,OUTBITmoval,0outdx,al

movch,0

movbx,offsetKeyTableaddbx,cx

moval,[bx];取出鍵碼movbl,al

WaitRelease:

movdx,OUTBITmoval,0

outdx,al;等鍵釋放

movah,10callDelaycallTestKeyjneWaitReleasemoval,blretGetKeyendp

IEnterprocnearpushaxpushdx

incSecondmoval,Secondcmpal,60jneExit

movSecond,0incMinutemoval,Minutecmpal,60jneExit

movMinute,0incHourmoval,Hourcmpal,24jneExit

movHour,0Exit:

movdx,CS8259A

moval,20h;中斷服務程序終止指令outdx,al

popdxpopaxiretIEnterendp

IInitproc

movdx,CS8259Amoval,ICW1outdx,al

movdx,CS8259Bmoval,ICW2outdx,al

moval,ICW4outdx,al

moval,OCW1outdx,alretIInitendp

Startprocnear

movax,datamovds,ax

movLEDBuf,03fh;顯示00.00.00movLEDBuf+1,0bfhmovLEDBuf+2,03fhmovLEDBuf+3,0bfhmovLEDBuf+4,03fh

movLEDBuf+5,03fh

movHour,0movMinute,0movSecond,0

cli

movax,0movds,ax

moval,76h;01110110B;計數(shù)器1,16位,方式3,二進制movdx,CONTROLoutdx,al

movax,62500movdx,COUNT1

outdx,al;計數(shù)器低字節(jié)moval,ah

outdx,al;計數(shù)器高字節(jié)

moval,MD8255movdx,CTL8255outdx,al

movbx,4*ICW2;中斷號

movax,code

shlax,4;x16

addax,offsetIEnter;中斷入口地址(段地址為0)mov[bx],ax

movax,0incbxincbx

mov[bx],ax;代碼段地址為0

callIInit

movax,datamovds,ax

movCNT,0;計數(shù)值初始為0moval,CNTmovdx,PA8255

outdx,alsti

LP:;等待中斷,并計數(shù)。moval,Hourmovah,0movcl,10divcl

movch,ahmovah,0

movbx,offsetLEDMAPaddbx,axmoval,[bx]movLEDBuf,al

movbx,offsetLEDMAPmoval,chmovah,0addbx,axmoval,[bx]oral,80h

movLEDBuf+1,al

moval,Minutemovah,0movcl,10divcl

movch,ahmovah,0

movbx,offsetLEDMAPaddbx,axmoval,[bx]

movLEDBuf+2,al

movbx,offsetLEDMAPmoval,chmovah,0addbx,axmoval,[bx]oral,80h

movLEDBuf+3,al

moval,Second

movah,0movcl,10divcl

movch,ahmovah,0

movbx,offsetLEDMAPaddbx,axmoval,[bx]

movLEDBuf+4,al

movbx,offsetLEDMAPmoval,chmovah,0addbx,axmoval,[bx]oral,80h

movLEDBuf+5,alcallDisplayLEDD0:

callDisplayLED;顯示callTestKey;有鍵入?

jeLP;無鍵入,繼續(xù)顯示callGetKey;讀入鍵碼andal,0fh;顯示鍵碼movah,0

movdinglin[0],al

movbx,offsetLEDMAPaddbx,axmoval,[bx]movLEDBuf,al

D1:callDisplayLED;顯示callTestKey;有鍵入?

jeD1;無鍵入,繼續(xù)顯示callGetKey;讀入鍵碼andal,0fh;顯示鍵碼movah,0

movdinglin[1],al

movbx,offsetLEDMAPaddbx,axmoval,[bx]

movLEDBuf+1,al

D2:callDisplayLED;顯示callTestKey;有鍵入?

jeD2;無鍵入,繼續(xù)顯示callGetKey;讀入鍵碼andal,0fh;顯示鍵碼movah,0

movdinglin[2],al

movbx,offsetLEDMAPaddbx,axmoval,[bx]

movLEDBuf+2,al

D3:callDisplayLED;顯示callTestKey;有鍵入?

jeD3;無鍵入,繼續(xù)顯示callGetKey;讀入鍵碼andal,0fh;顯示鍵碼movah,0

movdinglin[3],al

movbx,offsetLEDMAPaddbx,axmoval,[bx]

movLEDBuf+3,alcallDisplayLED

D4:callDisplayLED;顯示callTestKey;有鍵入?

jeD4;無鍵入,繼續(xù)顯示callGetKey;讀入鍵碼andal,0fh;顯示鍵碼movah,0

movdinglin[4],al

movbx,offsetLEDMAPaddbx,axmoval,[bx]

movLEDBuf+4,alcallDisplayLED

D5:callDisplayLED;顯示callTestKey;有鍵入?

jeD5;無鍵入,繼續(xù)顯示callGetKey;讀入鍵碼andal,0fh;顯示鍵碼

movah,0

movdinglin[5],al

movbx,offsetLEDMAPaddbx,axmoval,[bx]

movLEDBuf+5,alcallDisplayLED

moval,dinglin[0]movcl,10dmulcl

movbl,dinglin[1]addal,blmovHour,alcmpHour,24jlL0

movHour,0

L0:moval,dinglin[2]movcl,10dmulcl

movbl,dinglin[3]addal,bl

movMinute,alcmpMinute,60jlL1

movMinute,0

L1:moval,dinglin[4]movcl,10dmulcl

movbl,dinglin[5]addal,bl

movSecond,alcmpSecond,60jlL2

movSecond,0

L2:jmpD0Startendpcode

溫馨提示

  • 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

提交評論