第一篇:微機原理課程設計(電子時鐘)
電子時鐘課程設計
一:設計背景
電子數字鐘的應用十分廣泛,通過計時精度很高的石英晶振(也可采用衛星傳遞的時鐘標準信號),采用相應進制的計數器,轉化為二進制數,經過譯碼和顯示電路準確地將時間“時”“分”“秒”用數字的方式顯示出來。與傳統的機械鐘相比,它具有走時準確,顯示直觀,無機械傳動,無需人的經常調整等優點。它廣泛用于電子表、車站、碼頭、廣場等公共場所的大型遠距離時間顯示電子鐘。
二:數字鐘電路設計思路
1.選用8253計數器2進行1s的定時,其輸出OUT1與8259的IRQ0相連,當定時到1s時產生一個中斷服務程序進行時、分、秒的計數,并送入相應的存儲單元;8255的A口接七段數碼管的位選信號,B口接數碼管的段選信號。時、分、秒的數值通過對8255的編程可送到七段數碼管上顯示。2.此程序主要由四部分組成:
第一部分為最主要的部分定義顯示界面;
第二部分為利用延時程序,并將調用的二進制表示的時間數轉換成ASCII碼,并將時間數存入內存區;
第三部分將存在系統內存區的時間數用七段數碼管顯示出來; 第四部分利用循環程序分別對秒個位、秒十位、分個位、分十位與相應的規定值進行比較,結合延時程序來實現電子鐘數字的跳變,從而形成走時準確的電子鐘。
該程序實現了準確顯示秒和分,讀數準確,走時精準。此電子鐘能準確的從0時0分0秒走時到23時59分59秒,然后能自動回復到0時0分0秒循環走時。
3.基本工作原理:系統設計的電子時鐘主要由顯示模塊、時鐘控制模塊和時鐘運算模塊三大部分組成。以8086微處理器作CPU,用8253做定時器產生時鐘頻率提供一個頻率為10kHz的時鐘信號,要求每隔10ms完成一次掃描鍵盤的工作。在寫入控制字與計數初值后,每到10ms定時器就啟動工作,即當計數器減到1時,輸出端OUT0輸出一個CLK周期的低電平,向CPU申請中斷,當達到100次時,則輸出端OUT1輸出1s,向CPU申請中斷,由8255控制一個數碼管顯示,當計數到60s時,則輸出端OUT2向CPU申請中斷,由另一數碼管顯示1min,同理由數碼管顯示1h.CPU處理,使數碼管的顯示發生變化。
電子時鐘的顯示格式HH:MM:SS由左到右分別為時、分、秒,并依次對秒、分、小時寄存器的內容加一,六個數碼管動態顯示時、分、秒的當前值。最大記時23:59:59超過這個時間時分秒位都清零從00:00:00重新開始。8253芯片介紹
8253是NMOS工藝制成的可編程計數器/定時器,有幾種芯片型號,外形引腳及功能都是兼容的,只是工作的最高計數速率有所差異,例如8253(2.6MHz),8253-5(5MHz)8253內部有三個計數器,分別成為計數器0、計數器1和計數器2,他們的機構完全相同。每個計數器的輸入和輸出都決定于設置在控制寄存器中的控制 字,互相之間工作完全獨立。每個計數器通過三個引腳和外部聯系,一個為時鐘輸入端CLK,一個為門控信號輸入端GATE,另一個為輸出端OUT。每個計數 器內部有一個8位的控制寄存器,還有一個16位的計數初值寄存器CR、一個計數執行部件CE和一個輸出鎖存器OL。
8255芯片介紹 8255特性:
①一個并行輸入/輸出的LSI芯片,多功能的I/O器件,可作為CPU總線與外圍的接口.②具有24個可編程設置的I/O口,即使3組8位的I/O口為PA口,PB口和PC口.它們又可分為兩組12位的I/O口,A組包括A口及C口(高4位,PC4~PC7),B組包括B口及C口(低4位,PC0~PC3).A組可設置為基本的I/O口,閃控(STROBE)的I/O閃控式,雙向I /O3種模式;B組只能設置為基本I/O或閃控式I/O兩種模
8255芯片
8253芯片
式,而這些操作模式完全由控制寄存器的控制字決定.8255引腳功能:
RESET:復位輸入線 , CS:芯片選擇信號線 , RD:讀信號線 , WR:寫入信號 , D0~D7:三態雙向數據總線 ,PA0~PA7:端口A輸入輸出線 ,PB0~PB7:端口B輸入輸出線, PC0~PC7:端口C輸入輸出線, A0,A1:地址選擇線 三:程序流程圖
三、電
子
表
原
理
圖
:
四:程序代碼
D8279 equ 200H C8279 equ 202H C8253 equ 20bH D82530 equ 208H D82531 equ 209H C82590 equ 210H
C82591 equ 211H data segment HOUR
db 00 MINUTE
db 00 SECOND
db 008 STAT
db 00 LED
db 31H,06H,5bH,4fH,66H,6dH,7dH,27H,7fH,6fH,00H,00H DISBUF db 8 dup(0)data ends stack segment stack
dw 100 dup(?)stack ends code segment
assume cs:code,ds:data START:
MOV AX,DATA
MOV DS,AX
CLI
MOV AL,13H
MOV DX,C82590
OUT DX,AL
MOV AL,8
MOV DX,C82591
OUT DX,AL
MOV AL,1
OUT DX,AL
MOV AX,0
MOV ES,AX
LEA AX,INT0
MOV AX,CS
MOV ES:[4*8+2],AX
MOV DX,C8253
MOV AL,36H
OUT DX,AL
MOV DX,D82530
MOV AX,10000
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,C8253
MOV AL,36H
OUT DX,AL
MOV DX,D82531
MOV AX,100
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,C8279
MOV AL,00H
OUT DX,AL
MOV AL,34H
OUT DX,AL
MOV AL,0D2H
OUT DX,AL
MOV STAT,0
MOV DX,C82591
MOV AL,0FEH
OUT DX,AL
WAIT1:
MOV DX,C8279
IN AL,DX
MOV AH,AL
AND AL,80H
JNE WAIT1
MOV AL,AH
AND AL,0FH
CMP AL,00H
JE WAIT1
MOV AL,40H
OUT DX,AL CHK: MOV DX,D8279
IN AL,DX
CMP AL,33H
JNE BBB
MOV DX,C82591
MOV AL,0FFH
OUT DX,AL
MOV AL,STAT
INC AL
MOV STAT,AL
CMP AL,1
JNZ AA1
MOV SI,OFFSET DISPBUF
MOV CX,4
MOV AL,00 BB0: MOV [SI],AL
INC SI
LOOP BB0
CALL DISP
JMP CHK AA1: CMP AL,2
JNZ AA2
MOV SI,OFFSET DISPBUF
MOV AL,00
MOV [SI],AL
INC SI
MOV [SI],AL
ADD SI,2
MOV [SI],AL
INC SI
MOV [SI],AL
CALL DISP
JMP CHK AA2: CMP AL,3
JNZ AA3
MOV SI,OFFSET DISPBUF+2
MOV CX,4
MOV AL,00 BB1: MOV [SI],AL
INC SI
LOOP BB1
CALL DISP
JMP CHK AA3: MOV STAT,00
MOV AL,0FEH
MOV DX,C82591
OUT DX,AL
CALL FULLSFM
CALL DISP
JMP CHK BBB: CMP AL,3BH
JE BBB0
JMP CCC BB0: MOV AL,STAT
CMP AL,1
JNZ BBB1
MOV AL,HOUR
ADD AL,1
DAA
MOV HOUR,AL
CALL FULLSH1
CALL DISP
JMP BBB BBB1: MOV AL,STAT
CMP AL,2
JNZ BBB3
MOV AL,MINUTE
ADD AL,1
DAA
MOV MINUTE,AL
CALL FULLFEN
CALL DISP
JMP BBB BBB3:
MOV AL,STAT
CMP AL,3
JZ
BBB4
JMP
DDD BBB4:
MOV AL,SECOND
ADD AL,1
DAA
MOV SECOND,AL
CALL FULLMIAO
CALL DISP
JMP BBB
CCC:
CMP AL,3AH
JE CC0
JMP DDD CC0:
MOV AL,STAT
CMP AL,1
JNZ CCC1
MOV AL,HOUR
SUB AL,1
DAS
MOV AL,HOUR
SUB AL,1
ADD AL,1
DAA
MOV SECOND,AL
CMP AL,60H
JNZ FANHUI
MOV SECOND,0
MOV AL,MINUTE
ADD AL,1
DAA
MOV MINUTE,AL
CMP AL,60H
JNZ FANHUI
MOV MINUTE,0
MOV AL,HOUR
ADD AL,1
DAA
MOV HOUR,AL
CMP AL,24H
JNZ FANHUI
MOV HOUR,0
CALL FULLSFM
CALL DISP
POP SI
POP DI
POP BX
POP AX
IRET FULL
SFM PROC NEAR
LEA DI,DISBUF
LEA BX,LED
LEA SI,SECOND
MOV CX,3 AA4:
MOV AL,[SI]
AND AL,0FH
XLAT
MOV [DI],AL
INC DI
MOV AL,[SI]
PUSH CX
MOV CL,4
SHR AL,CL
AND AL,0FH
XLAT
MOV [DI],AL
INC DI
POP CX
INC SI
LOOP AA4
RET FULL
SFM ENDP FULL
SHI PROC NEAR
LEA SI,DISBUF
MOV AL,0
MOV CX,4 CCC0:
MOV [SI],AL
INC SI
LOOP CCC0
LEA BX,LED
MOV AL,HOUR
AND AL,0FH
XLAT
MOV [SI],AL
XLAT
MOV [SI],AL
MOV AL,HOUR
MOV CL,4
SHR
AL,CL
AND AL,0FH
XLAT
INC
SI
MOV
[SI],AL
RET FULL
SHI ENDP FULL
FEN PROC NEAR
LEA SI,DISBUF
MOV AL,0
MOV [SI],AL
INC SI
MOV [SI],AL
INC SI
LEA BX,LED
MOV
AL,MINUTE
AND AL,0FH
XLAT
MOV
[SI],AL
MOV AL,MINUTE
MOV
CL,4
SHR AL,CL
AND AL,0FH
XLAT
INC SI
MOV
[SI],AL
RET FULL
FEN ENDP FULL
MIAO PROC NEAR
LEA SI,DISBUF
LEA BX,LED
MOV AL,SECOND
AND AL,0FH
XLAT
MOV [SI],AL
MOV AL,SECOND
MOV CL,4
SHR AL,CL
AND AL,0FH
XLAT
INC SI
MOV [SI],AL
MOV AL,0
INC SI
MOV [SI],AL
INC SI
MOV [SI],AL
INC SI
MOV [SI],AL
INC SI
MOV [SI],AL
RET FULL MIAO ENDP DISP
PROC NEAR
MOV CX,8
MOV DX,D8279
LEA SI,DISBUF DISI
MOV AL,[SI]
OUT DX,AL
INC SI
LOOP DISI
RET CODE ENDS
END START
第二篇:微機原理課程設計電子鬧鐘
電子鐘設計
1任務要求
1.1顯示位置:屏幕中央.1.2日期顯示格式“時:分:秒.1.312/24時制可調.1.4在顯示屏上顯示提示語“CURRENT TIME IS:”和當前時間.2工作原理
1時鐘起始時間的設置
先調用DOS操作系統模塊9,在顯示屏上顯示提示語“TIME SYSTEM IS:”,輸入時制12或24后,顯示“CURRENT TIME IS:”,再調用DOS操作系統模塊10,提示要輸入時鐘的起始時間,輸入時間的格式是“時:分:秒”。輸入的時間以字符串形式存放在已定義的存儲器緩存區內,繼而調用TRAN1轉換子程序和MUL10乘10子程序,將存放在存儲器緩存區內的ASCII字符轉換為壓縮BCD碼,并將時、分、秒的值放在寄存器CH、DH、DL中。
2延時程序
調用延時TIME延時中斷服務程序,累加到存放秒值的寄存器DL中,并進行十進制調整。在累加的過程中,不斷地對時、分、秒值進行比較,秒不能等于60,分不能等于60,時不能等于24。秒等于限制值時,則使秒值為0分值加1;分等于限制值時,則使分值為0時值加1;時等于限制值時,則使時值為0;時、分、秒值都不超過限制值時,就轉顯示屏輸出。
3時間顯示
調用DOS操作系統模塊9,可用來顯示存儲器內字符串。由于顯示的字符必須為ASCII碼,因為要調用TRAN2轉換子程序將寄存器CH、DH、DL內壓縮BCD碼字符串轉換成ASCII字符串,字符串最后以字符“$”結束,并按時、分、秒的順序送存儲器緩沖區內。調用DOS操作系統模塊9,(DS:DX)應指向字符串首址。程序一旦進入運行,就將不間斷地在顯示屏顯示時間,要想程序停止運行,可同時在鍵盤按下CTRL和BREAK二鍵。
4程序堆圖 5程序清單
DATA SEGMENT BUFFER DB 10;設置輸入字符串用緩沖區 DB ? DB 10 DUP(?)TS DB 'TIME SYSTEM IS:$' CT DB 'CURRENT TIME IS:$' PM DB 'PM $' AM DB 'AM $' KEEPIP DW 0 KEEPCS DW 0 SR DB ? HOUR DB ? DAT ENDS STA SEGMENT PARA STACK 'STACK' STAPN DB 100 DUP(?)TOP EQU LENGTH STAPN STA ENDS COD SEGMENT START PROC FAR ASSUME CS:COD,DS:DAT,SS:STA MOV AX,DATA MOV DS,AX MOV AX,STA MOV SS,AX MOV AX,TOP MOV SP,AX MOV AH,35H;設置1CH中斷
MOV AL,1CH
INT 21H
;段地址放入ES,偏移地址放入BX
MOV KEEPIP,BX
;保偏移地址存
MOV KEEPCS,ES
;保存段地址
PUSH DS
MOV DX,OFFSET TIME
MOV AX,SEG TIME
MOV DS,AX
MOV AL,1CH
MOV AH,25H
;設置中斷功能調用
INT 21H
POP DS
MOV DX,OFFSET TS
;DOS功能模塊,顯示字符串
MOV AH,9
INT 21H
MOV AH,1
;DOS功能模塊,從鍵盤輸入字符
INT 21H
MOV AH,1
INT 21H
MOV SR,AL
MOV DL,0AH
;”換行“
MOV AH,2
INT 21H
MOV DL,0DH
;”回車“
MOV AH,2
INT 21H
MOV DX,OFFSET CT
;DOS功能模塊,顯示字符串,提示從鍵盤輸入
MOV AH,9
INT 21H
MOV DX,OFFSET BUFFER
MOV AH,10
;DOS功能模塊,從鍵盤輸入字符串到緩沖區
INT 21H
MOV BX,OFFSET BUFFER+2
CALL TRAN1
;將輸入的ASCII碼轉換為BCD碼
INC BX
INC BX
CALL TRAN1
INC BX
INC BX
CALL TRAN1
MOV BX,OFFSET BUFFER+2
MOV AL,[BX]
CALL MUL10
;將BCD碼轉換為壓縮的BCD碼
MOV CH,AL
INC BX
INC BX
MOV AL,[BX]
CALL MUL10
MOV DH,AL
INC BX
INC BX
MOV AL,[BX]
CALL MUL10
MOV DL,AL AGAIN: PUSH CX
MOV CX,18
STI
;開中斷 W:
CMP CX,0
JNE W
CLI
POP CX
MOV AL,DL
ADD AL,1
;”秒“加1
DAA
MOV DL,AL
CMP AL,60H
;”秒“與60比較
JNE DISPY
;小于60S,轉顯示程序
MOV DL,0
;等于60S, ”秒“值為0,”分“+1
MOV AL,DH
ADD AL,1
DAA
MOV DH,AL
CMP AL,60H
;”分“于60比較
JNE DISPY
MOV DH,0
MOV AL,CH
ADD AL,1
DAA
MOV CH,AL
MOV AL, SR
CMP AL,32H
JNE NEXT
JMP DISPY NEXT: MOV AL,CH
MOV HOUR,CH
CMP AL,24H
JNE DISPY
MOV CH,0
DISPY: CALL IOCLR
CALL IOSET1
CALL STAR
CALL IOSET2
CALL STAR
CALL IOSET
MOV BX,OFFSET BUFFER
MOV AL,SR
CMP AL,32H
JNE NEXT2
CALL AD12
MOV AL,HOUR
JMP NEXT1 NEXT2: MOV AL,CH
;”時“值轉換成ASCII碼
NEXT1: CALL TRAN2
;將壓縮BCD碼轉換成ASCII碼
INC BX
MOV AL,':'
MOV [BX],AL
INC BX
MOV AL,DH
;”分“值轉換成ASCII碼
CALL TRAN2
INC BX
MOV AL,':'
MOV [BX],AL
INC BX
MOV AL,DL
;”秒“值轉換成ASCII碼
CALL TRAN2
INC BX
MOV AL,'$'
;顯示字符串結束碼
MOV [BX],AL
PUSH BX
PUSH CX
PUSH DX
MOV DX,OFFSET BUFFER
MOV AH,9
;DOS功能模塊,顯示字符串
INT 21H
POP DX
POP CX
POP BX
JMP AGAIN
CLI
PUSH DS
MOV DX,KEEPIP
MOV AX,KEEPCS
MOV DS,AX
MOV AH,25H
MOV AL,1CH
INT 21H
POP DS
STI
RET START ENDP MUL10 PROC
;將BCD碼轉換為壓縮的BCD碼
ADD AL,AL
DAA
MOV CL,AL
ADD AL,AL
DAA
ADD AL,AL
DAA
ADD AL,CL
DAA
MOV CL,AL
INC BX
MOV AL,[BX]
ADD AL,CL
RET MUL10 ENDP TRAN1 PROC
MOV AL,[BX]
AND AL,0FH
MOV [BX],AL
INC BX
MOV AL,[BX]
AND AL,0FH
MOV [BX],AL
RET TRAN1 ENDP TRAN2 PROC
MOV CL,AL
SHR AL,1
SHR AL,1
SHR AL,1
SHR AL,1
OR AL,30H
MOV [BX],AL
INC BX
MOV AL,CL
AND AL,0FH
OR AL,30H
MOV [BX],AL
RET TRAN2 ENDP IOCLR PROC
PUSH CX
PUSH DX
PUSH BX
PUSH AX
MOV AX,0600H
MOV BH,02
SUB CX,CX
MOV DX,184FH
INT 10H
;ASCII碼轉換成BCD碼
;將壓縮BCD碼轉換成ASCII碼;調用BIOS,清除全屏幕
POP AX
POP BX
POP DX
POP CX
RET IOCLR ENDP TIME
PROC
DEC CX
IRET TIME
ENDP
PUSH DX PUSH BX PUSH AX MOV AH,02 SUB BH,BH MOV DX, 0C23H INT 10H POP AX POP BX POP DX RET IOSET ENDP IOSET1 PROC PUSH AX PUSH BX PUSH DX MOV DX,0A1AH MOV BH,00 MOV AH,02 INT 10H POP DX POP BX POP AX RET IOSET1 ENDP IOSET2 PROC PUSH AX PUSH BX PUSH DX MOV DX,0E1AH MOV BH,00 MOV AH,02 INT 10H
調用BIOS,設置屏幕光標在中央
;POP DX POP BX POP AX RET IOSET2 ENDP STAR PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,3DH MOV BH,0 MOV BL,0CH CMP HOUR,24H JNZ X MOV HOUR,0H X: MOV CX,WORD PTR HOUR INT 10H POP DX POP CX POP BX POP AX RET STAR ENDP AD12 PROC PUSH DX MOV HOUR,CH MOV AL,SR CMP AL,32H JNE ZH MOV AL,HOUR CMP AL,24H JNE NEXT3 MOV CH,0 MOV HOUR,CH JMP S12 NEXT3: CMP AL,12H JBE S12 MOV DX,OFFSET PM MOV AH,9 INT 21H MOV AL,HOUR MOV DH,12H SUB AL,DH DAS MOV HOUR,AL JMP ZH S12: CMP AL,12H JNE Z MOV DX,OFFSET PM MOV AH,9 INT 21H JMP ZH Z: MOV DX,OFFSET AM MOV AH,9 INT 21H ZH: POP DX RET AD12 ENDP COD ENDS END STAR
6設計時遇到的問題及解決方法
在課程設計中遇到的最大的困難是如何利用軟、硬件配合的方式產生中斷,對中斷向量表的裝載還比較模糊,對中斷的初始化、具體設置、中斷返回還不是很清楚,程序設計一度陷入停滯狀態,不知如何是好.于是我又重新翻閱了我們的學習課本,也就是電子工業出版社的《微機原理與接口技術(基于16位機)》,重點研究了第9章《中斷》,通過對這一章的學習,我終于對中斷有了詳細的認識,在設計程序時也容易了很多。
設中斷服務程序入口地址為TIME,則相應的程序如下:
??
KEEPIP DW 0
;設置內存緩沖區,用于暫存 KEEPCS DW 0
;DOS的中斷矢量
??
;在主程序的初始化部分,先取出DOS的中斷矢量并加以保存,然后裝入需要的中斷矢量
MOV AH,35H
;取出DOS的中斷矢量,并送ES:BX
MOV AL,1CH
INT 21H
MOV KEEPIP,BX
;保存DOS的中斷矢量
MOV KEEPCS,ES
PUSH DS;保護DS
MOV DX,OFFSET TIME
;將中斷矢量取代
MOV AX,SEG TIME
;DOS的中斷矢量
MOV DS,AX
MOV AL,1CH
MOV AH,25H
;設置中斷功能調用
INT 21H
POP DS
;恢復DS ??
AGAIN: PUSH CX
MOV CX,18
STI
;開中斷 W:
CMP CX,0
JNE W
CLI ??
TIME
PROC
DEC CX
IRET TIME
ENDP ??
;在程序結尾處,用以下程序恢復DOS的中斷矢量 CLI
PUSH DS
MOV DX,KEEPIP
MOV AX,KEEPCS
MOV DS,AX
MOV AH,25H
MOV AL,1CH
INT 21H
POP DS
STI 7新增功能及實現方法
7.112時制時顯示AM或PM
??
AD12 PROC PUSH DX MOV HOUR,CH MOV AL,SR CMP AL,32H JNE ZH MOV AL,HOUR CMP AL,24H JNE NEXT3 MOV CH,0 MOV HOUR,CH JMP S12 NEXT3: CMP AL,12H JBE S12 MOV DX,OFFSET PM MOV AH,9 INT 21H MOV AL,HOUR MOV DH,12H SUB AL,DH DAS MOV HOUR,AL JMP ZH S12: CMP AL,12H JNE Z MOV DX,OFFSET PM MOV AH,9 INT 21H JMP ZH Z: MOV DX,OFFSET AM MOV AH,9 INT 21H ZH: POP DX RET AD12 ENDP ??
7.2綠色顯示時間
??
IOSET PROC PUSH DX PUSH BX PUSH AX MOV AH,02 SUB BH,BH MOV DX,0C23H INT 10H POP AX POP BX POP DX RET IOSET ENDP ??
7.3在數字上下方各顯示一行個數同小時數的”=“ ??
IOSET1 PROC PUSH AX PUSH BX PUSH DX MOV DX,0A1AH MOV BH,00 MOV AH,02 INT 10H POP DX POP BX POP AX RET IOSET1 ENDP IOSET2 PROC PUSH AX PUSH BX PUSH DX MOV DX,0E1AH MOV BH,00 MOV AH,02 INT 10H POP DX POP BX POP AX RET IOSET2 ENDP STAR PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,3DH MOV BH,0 MOV BL,0CH CMP HOUR,24H JNZ X MOV HOUR,0H X: MOV CX,WORD PTR HOUR INT 10H POP DX POP CX POP BX POP AX RET STAR ENDP ?? 8心得體會
這是我第一次用匯編語言來設計一個小程序,歷時一周終于完成,其間有不少感觸。首先就是借鑒.魯迅先生曾說過要”拿來“,對,在這次課程設計中,就要”拿來"不少子程序,比如將ASCII碼轉換成BCD碼,將BCD碼轉換成壓縮BCD碼,將壓縮BCD碼轉換成ASCII碼等,這些子程序的設計是固定的,因此可以直接從指導資料中調用,至于設置光標的子程序,只需要修改幾個參數就可以,這大大方便了我的設計,為我節省了很多的時間。還有就是指導老師提供的資料很重要.這次課程設計的大部分程序,都可以在李老師提供的資料中找到,這對我的程序設計很有幫助,從這些資料中,我可以看出這個時鐘程序的基本流程,修改一些程序就可以實現這個時鐘的基本功能,添加一些程序就可以實現這個時鐘的附加功能,可以說,如果沒有李老師提供的源程序,我將面臨很大的困難。文章引用自:
第三篇:微機原理課程設計(電子密碼鎖)
一、設計目的
通過課程設計掌握控制系統設計的一般步驟,掌握系統總體控制方案的設計方法、8086微型計算機的應用方法、控制算法的設計及硬件設計方法。復習并學習用軟件編程控制硬件。了解和掌握8086微機應用系統的軟硬件設計過程、方法及實現,為以后設計實現8086微機應用系統打下良好的基礎。
二、設計任務與要求
(1)密碼鎖在輸入密碼正確時控制電控鎖開啟,同時顯示00字樣;當輸入密碼錯誤時,發出錯誤警告,并顯示FF字樣;當3次誤碼輸入時,產生報警;具有密碼修改的功能。
(2)選用8086和適當的存儲器及接口芯片完成相應的功能,用LED顯示器顯示電子鎖的當前狀態;畫出詳細的硬件連接圖;給出程序設計思路、畫出軟件流程圖;給出所有程序清單并加上必要注釋;完成設計說明書(包括封面、目錄、設計任務書、硬件設計思路、硬件原理圖、軟件設計思路、程序流程框圖、程序清單、所用器件型號、總結體會、參考文獻等)。
三、整體功能描述
本設計為多功能密碼鎖,使用存儲器保存密碼防止斷電后密碼丟失。工作時按下按鍵蜂鳴器會發出聲音提示按鍵有效并在數碼管有“--”閃爍字樣,若相隔1分鐘無按鍵按下,則清零。在輸入密碼正確的條件下輸出開鎖電平,控制電控鎖開啟,同時顯示OPEN字樣。開鎖后可按下“復位/修改密碼鍵”實現修改密碼功能的轉入,之后先輸入密碼再輸入同樣的密碼確認才可成功修改,修改成功后蜂鳴器會發出三聲,數碼管“00”閃爍三次提示修改密碼成功。當輸入密碼錯誤時,發出錯誤警告聲音,同時顯示CLOSE字樣,當輸入密碼錯誤次數累積夠3次后,蜂鳴器會產生90秒的報警聲響進行報警。
四、總體設計方案
根據本次設計的設計目的及設計要求,可有下列兩種方案: 4.1 方案一
在本次設計中,因為密碼鎖的基本功能使可以判斷密碼是否正確,以及完成對密碼的修改,所以需要用到輸入設備以及CPU的接口電路以及相關存儲設備;因為有報警提示功能,所以要用到相關的輸出設備以及接口電路。因為要完成邏輯運算功能,所以必須要有CPU,CPU就選用我們最常用也最熟悉的8086,考慮到8255的端口兼具輸入輸出功能,靈活方便,所以選用一片8255作為輸入輸出設備與8086間的借口;采用0到9數字按鍵以及相關功能選擇的輸入;輸出設備方面,采用兩位數碼管實現題目的狀態提示要求,用一個蜂鳴器作為相關的警報,提示的聲音輸出。另外,為簡化編程,采用8259中斷控制器來觸發中斷實現密碼鎖工作模式的轉換,其中的密碼輸入及判斷功能與密碼修改功能分別用兩個外部中斷來觸發中斷服務程序來實現。本設計的密碼位數為6位。4.2 方案二
第1頁
用匯編語言編寫程序實現應用程序的功能,從而實現簡易計算器匯編程序的設計與實現。4.2.1使用設備
含有Windows匯編編譯環境的MASM軟件及Office 2003軟件的計算機一臺。4.2.2匯編程序編寫
匯編程序編寫,根據設計要求編寫實現該功能的源程序代碼。4.2.3使用方法
在masm環境下運行本程序,按提示輸入正確密碼,則在屏幕上顯示00字樣,否則顯示FF字樣。
五、硬件設計
本設計使用了8086、8259A、8255、8253、2764、74LS138、74LS148、地址鎖存器、數碼管以及74系列邏輯門、蜂鳴器、開關等芯片與元器件,實現了鍵盤輸入、中斷控制、計時、按鍵響應、開鎖及報警等功能模塊,其硬件連接框圖如圖1所示。
圖1 硬件連接框圖
5.1 鍵盤
本設計8255A的A口與兩片級聯的74LS148組合接用于輸入鍵盤,實現對輸入鍵號的讀入。工作時,8086通過程序掃描鍵盤,當無鍵盤按下時,74LS148工作于無輸入狀態,GS口輸出高電平,接到PA4作為識別有無按鍵按下信號,PA口輸入為10H;當有按鍵輸入時,74LS148輸入口接到低電平,輸入有效,經編碼后鍵號轉換為相應二進制編碼送到PA口,成為能為CPU識別的代表鍵值的有效信號。讀入的按鍵信號經8086判斷后,根據不同的功能,輸出不同的按鍵響
第2頁
應,并轉移到相對應的功能服務程序。
本設計總共用到11位按鍵,包括10位數碼輸入按鍵及一位“復位/修改密碼”按鍵,電路設計總共可用按鍵有16位,供升級功能使用。鍵盤電路如下圖2所示:
5.2 中斷控制
用一片8259A芯片作為中斷控制接口電路。其中IR0與IR1中斷開放,單片工作于非緩沖方式,電平觸發,優先級是普通全嵌套方式。可通過編程開中斷,通過編程或者8253計時器關中斷。電路連接如圖3所示:
圖2 鍵盤連接圖
5.3 計時
采用8253計時器控制中斷的關斷,實現單次輸入密碼超時則退出輸入密碼中斷子程序、報警器響鈴時間控制等功能。電路如圖3所示。
第3頁
圖3 中斷控制器連接圖
5.4 輸入輸出接口
輸入輸出接口采用可編程的8255A,8255A是Intel系列的并行接口芯片,常作為微機系統與外部設備接口。在連接電路時8255 的PC0、PC1接到數碼管片選,電路連接如圖3所示。同時用8255A的B口控制數碼管的顯示,C口片PC0、PC1選數碼管,PC2用來驅動SPEAK發出報警電路如圖4所示。
圖4 按鍵響應、報警、開鎖功能電路
第4頁
5.5.儲存器及片選電路
存儲器及片選電路采用一片2764存儲器和一片74LS138,連接電路如圖5所示:
圖5 片選及存儲器電路
5.6 整機電路圖:見附錄一
六、軟件設計
6.1 程序流程圖
第5頁
開始程序初始化8255.8259初始化從RAM存儲器中讀出密碼 定義DI.SI指針開中斷data2與data3數據串比較相等?N錯誤計數器加1開鎖,并顯示00掃描鍵盤,有修改密碼鍵?Y定義SI,DI指針開中斷,實現密碼輸入轉存到data2有修改密碼鍵輸入?開中斷,重新輸入密碼比較是否為首次輸入密碼?N轉存密碼到RAM 鈴聲確認修改密碼成功掃描鍵盤是否有修改密碼鍵輸入Y保持開鎖狀態結束錯誤累積超過6次?YN報警響鈴,輸出顯示FF保持關鎖N結束Y
圖6 程序流程圖
6.2 程序清單:見附錄二
七、設計總結與體會
通過本次課程設計,我對 8255,8253,8259等芯片的各引腳的功能、名稱、第6頁
工作方式、內部結構有了更深層次的掌握,對這三種芯片的編程從陌生轉向熟練。通過這次的微機課程設計,對書本所學的知識有了進一步的鞏固,并且對三種芯片各自的功能、工作方式有了明確性的區分。在設計過程中遇到問題時,遇到含糊不清或者看不懂的地方及時翻閱相關課本知識。有時看課本也沒有結果時就和組員互相探討。在設計過程中,才發現自己遺漏許多課本的相關知識,對各芯片的功能及其工作方式掌握的不夠清楚。這說明在實踐中才能真正的掌握從課本中所學的知識。這次的課程設計讓我為一年后的畢業設計打下了基礎。
八、參考資料
九、附錄
附錄一:電路基本連接圖
第7頁
附錄二:程序清單
(一)DATA SEGMENT;以下代碼寫入RAM
第8頁
CODEIN DB 6 DUP(?);輸入的密碼保存的地址 CODECH DB 6 DUP(?);修改后的密碼的保存地址 CODEOR DB 0,0,0,0,0,0;初始密碼
ORG 01000H;下面的代碼寫入ROM DTABLE DB 80H,02H,10H,3FH,79H,71H,60H,5BH DATA ENDS
STACKS SEGMENT STA DB 20 DUP(?)STACKS ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKS START: MOV SI,OFFSET CODEIN MOV DI,OFFSET CODEOR MOV BP,OFFSET DTABLE
MOV AL,09H;(鍵盤輸入中斷)設定密碼輸入的中斷向量(即IR0的中斷向量)MOV AH,25H INT 21H PUSH BX PUSH DS MOV DX,SEG INPUT MOV DS,DX MOV DX,OFFSET INPUT INT 21H
MOV AL,09H;(鍵盤輸入中斷)設定密碼修改的中斷向量(即IR1的中斷向量)MOV AH,25H INT 21H PUSH BX PUSH DS MOV DX,SEG CHANGE MOV DS,DX MOV DX,OFFSET CHANGE INT 21H
MOV AL,1BH;初始化8259 OUT 10H,AL;單片工作,高電平有效 MOV AL,08H OUT 11H,AL MOV AL,03H OUT 11H,AL
第9頁
MOV AL,0FCH OUT 11H,AL;開放IR0,IR1 MOV AL,20H OUT 10H,AL MOV AL,68H OUT 10H,AL
MOV AL,82H;初始化8255 A口方式0輸出,B口方式0輸入,C口輸出 OUT 06H,AL AA: STI MOV AL,00H OUT 04H,AL;
INPUT:;CLI MOV DL,00H IN1: CMP DL,06H;JNZ IN2;
MOV CX,03FFH;R1: MOV DH,3FH MOV AL,02H OUT 00H,AL;R2: DEC DH CMP DH,00H JNZ R2 LOOP R1
JMP IN4;IN2:;MOV AL,[BP+4] OUT 04H,AL;MOV BX,0H MOV CX,03H;IN3: MOV BP,OFFSET DTABLE MOV AL,[BP] OUT 04H,AL;輸出低電平使數碼管熄滅 密碼輸入程序 判斷是否連續6次輸入錯誤密碼 若不是這繼續輸入 使蜂鳴器長鳴報警(通過延時實現)輸出高電平使蜂鳴器發聲 報警完畢,跳至中斷返回 輸入密碼 數碼管顯示‘--’提示輸入密碼 設置循環次數 數碼管提示輸入位數
第10頁
CALL CCSCAN;調用鍵盤掃描程序 CMP AL,0BH;判斷是否按下返回鍵 JZ IN4 MOV [BX+SI],AL;保存輸入密碼 INC BX INC BP LOOP IN3
MOV BP,OFFSET DTABLE;判斷密碼是否正確 CLD MOV CX,03 MOV SI,OFFSET CODEIN MOV DI,OFFSET CODEOR REPZ CMPSB;JNZ WRO;MOV AL,[BP+3] OUT 04H,AL;MOV AL,04H OUT 00H,AL;XOR DL,AL JMP IN4
WRO:;INC DL MOV AL,[BP+5];OUT 04H,AL MOV CX,03H;W1: MOV AL,02H;OUT 00H,AL
W2:;MOV BL,3FH DEC BL CMP BL,00H JNZ W2 XOR AL,AL;OUT 00H,AL
W3:;MOV BL,3FH DEC BL CMP BL,00H JNZ W3
判斷密碼是否正確 若錯誤就報警 若正確數碼管就顯示‘00‘且給LED高電平使其點亮 出錯報警部分 數碼管顯示’FF‘提示錯誤設定蜂鳴器響的次數 使蜂鳴器發聲 延時 輸出低電平關蜂鳴器 延時 第11頁
LOOP W1 JMP IN1;中斷返回 IN4: STI IRET
CHANGE:;密碼修改程序 CLI MOV DL,00H INP1: CMP DL,06H JNZ INP2 MOV CX,03FFH RR1: MOV DH,3FH MOV AL,02H OUT 00H,AL RR2: DEC DH
CMP DH,00H JNZ RR2 LOOP RR1 JMP C4 INP2: MOV AL,[BP+4] OUT 04H,AL MOV BX,0000H MOV CX,03H INP3: MOV BP,OFFSET DTABLE MOV AL,[BP] OUT 04H,AL CALL CCSCAN CMP AL,0BH JZ IN4 MOV [BX+SI],AL INC BX INC BP LOOP INP3 MOV BP,OFFSET DTABLE CLD MOV CX,03
第12頁
MOV SI,OFFSET CODEIN MOV DI,OFFSET CODEOR REPZ CMPSB JNZ WRRO MOV AL,[BP+3] OUT 04H,AL XOR DL,DL JMP CHANGE WRRO: INC DL MOV AL,[BP+5] OUT 04H,AL MOV CX,03H WW1: MOV AL,02H OUT 00H,AL WW2: MOV BL,3FH DEC BL CMP BL,00H JNZ WW2 XOR AL,AL OUT 00H,AL WW3: MOV BL,3FH DEC BL CMP BL,00H JNZ WW3 LOOP WW1 JMP INP1;
CHAN:;MOV SI,OFFSET CODEIN MOV DI,OFFSET CODECH
MOV AL,[BP+6];OUT 04H,AL MOV CX,03FFH Y1: LOOP Y1
MOV BP,OFFSET DTABLE MOV BX,0H MOV CX,03H
當密碼輸入正確時,轉入密碼修改部分修改密碼部分 數碼管提示第一次輸入 第13頁
C1: MOV AL,[BP] OUT 04H,AL CALL CCSCAN CMP AL,0BH JZ C4 MOV [BX+SI],AL;存放在輸入密碼緩沖區 INC BX INC BP LOOP C1
MOV BP,OFFSET DTABLE MOV AL,[BP+7] OUT 04H,AL;MOV CX,03FFH Y2: LOOP Y2 MOV BP,OFFSET DTABLE MOV BX,0H MOV CX,03H C2: MOV AL,[BP] OUT 04H,AL CALL CCSCAN CMP AL,0BH JZ C4 MOV [BX+DI],AL;INC BX INC BP LOOP C2
MOV BP,OFFSET DTABLE REPZ CMPSB JNZ CHAN;MOV DI,OFFSET CODEOR MOV CX,03H CLD REP MOVSB;MOV AL,02H;OUT 00H,AL MOV CX,03FFH C3: LOOP C3 XOR AL,AL OUT 00H,AL;數碼管提示第二次輸入 存放在修改密碼緩沖區 判斷兩次輸入的密碼是否一致若是相等那就保存密碼 且蜂鳴器響一下提示修改成功中斷返回
第14頁
C4: STI IRET
CCSCAN PROC NEAR;鍵盤掃描子程序 MOV AL,00H OUT 00H,AL IN AL,02H NOT AL AND AL,0FH CMP AL,00H;JNZ K1 JMP CCSCAN K1: MOV CX,0EFFH;LOOP K1
IN AL,02H CMP AL,00H JZ CCSCAN MOV AH,60H;K2: MOV AL,AH OUT 00H,AL IN AL,02H NOT AL AND AL,0FH CMP AL,00H;JNZ K3 OR AH,01H ROR AH,1;AND AH,0FH JMP K2 K3: ADD AL,AH RET CCSCAN ENDP CODE ENDS END START
程序清單
(二)利用DOS調用顯示DATA SEGMENT TABLE DB '888'
判斷是否有鍵按下延時 掃描第一列 判斷是否有鍵按下掃描下一列 第15頁
STRING1 DB 'Please enter a passward:',0DH,0AH,'$' STRING2 DB 'Wrong!',0DH,0AH,'$' STRING3 DB 'OPEN!','$' STRING4 DB 'CLOSE!','$' BUFFER DB 40,?,40 DUP(0)TAB_LEN EQU 26 DATA ENDS;STACK SEGMENT DB 100 DUP(0)STACK ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:MOV AX,DATA MOV DS,AX MOV ES,AX LEA DX,STRING1 MOV AH,09H INT 21H LEA DX,BUFFER
MOV AH,0AH INT 21H MOV SI,DX INC SI MOV BL,[SI] MOV BH,0 INC SI LEA DI,TABLE MOV CX,TAB_LEN CMP CX,BX JNC GOON LEA DX,STRING2 JMP EXIT GOON: CLD MOV AL,[SI] SCAN:REPNZ SCASB JZ MATCH ERROR: LEA DX,STRING4 JMP EXIT MATCH: INC CX CMP CX,BX
第16頁
JC ERROR PUSH CX PUSH SI PUSH DI MOV CX,BX DEC DI REPZ CMPSB POP DI POP SI POP CX JZ FOUND JCXZ ERROR JMP SCAN FOUND: DEC DI LEA DX,STRING3 EXIT:MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START
第17頁
第四篇:微機原理課程設計
電子信息科學與技術《微機原理》課程設計
一、本次課程設計的目的和意義
學習和掌握計算機中常用接口電路的應用和設計技術,充分認識理論知識對應用技術的指導性作用,進一步加強理論知識與應用相結合的實踐和鍛煉。通過這次設計實踐能夠進一步加深對專業知識和理論知識學習的認識和理解,使自己的設計水平和對所學的知識的應用能力以及分析問題解決問題的能力得到全面提高。
二、設計時間、基本要求
(一)、設計時間:二周(二)、基本要求:
a.每題2人;b.設計出完整的接口電路;c.編寫出全部程序;d.在實驗系統上調試通過。
三、設計選題與要求
選題一:多路模擬數據采集系統設計
要求:設計一個2路以上的模擬數據采集系統。
1、用按鍵選擇那一路;
2、用LED顯示轉換結果(十進制數);
3、將每一路采集的100個數據存放到各自的存儲區中。
選題二:溫度測控系統的設計
要求:利用ADC0809設計一個溫度測控系統,在LED數碼顯示器上顯示溫度值,并對溫度進行測試和控制,當檢測溫度到達溫度上限60℃時開風扇(即開啟電動機,或以一個燈的亮滅表示),低于下限30℃時關閉風扇,LED上的顯示內容為:XX ℃(采用十進制顯示)。
選題三:函數發生器的設計(一)要求:利用DAC0832設計一個函數發生器,并利用按鍵選擇輸出波形,能分別產生三角波、階梯波(每階梯1V)、正向鋸齒波、負向鋸齒波和方波。并利用按鍵(自行定義)進行輸出波形選擇,同時將當前輸出波形代號顯示在LED上(左邊位):0為方波、1為正向鋸齒波、2為負向鋸齒波、3 為三角波、4為階梯波。
選題四:函數發生器的設計(二)要求:設計一個三角波發生器,可利用鍵盤改變其輸出波形的幅值。例如,可利用1-5這5個數字鍵改變其輸出波形的幅值,當按下1-5數字鍵時使D/A輸出幅值從1V增加到5V。
選題五:電子音樂播放器
要求:設計要求:利用8253作為音階頻率發生器,應先對“2008年奧運會主題歌”進行編碼后存入音符表,并建立好音階表(只建立一個8度即可),音符長度不能少于60個,連續播放3遍后停止。
選題六:鍵盤電子樂器
要求:利用并行接口8155作為鍵盤接口,設計一個具有2個八度音階的鍵盤樂器,音階鍵不少于16個,采用掃描方式管理鍵盤,音域范圍自行定義。
選題七:電子時鐘設計
要求:利用8253定時器設計一個具有時、分、秒顯示的電子時鐘,并定義一個啟動鍵,當按下該
鍵時時鐘從當前設定值(可在顯示緩沖區中予置)開始走時。
選題八:壓力測控系統的設計(一)要求:對壓力傳感器的信號進行檢測并在LED數碼顯示器上顯示壓力值,當壓力低于30pa時,黃燈閃爍,閃爍周期為1秒。當壓力高于150pa時,紅燈閃爍。LED的顯示內容為P=XXX。X為測試值。
選題九:可變輸出頻率方波發生器設計
要求:設計一個輸出方波頻率可利用按鍵改變的方波信號發生器(可以使用D/A也可以直接使用8253產生方波),利用鍵盤選擇方波發生器的輸出頻率并驅動喇叭。輸出頻率=鍵號*100HZ
選題十:直流電機速度控制器設計
要求:利用D/A轉換器和按鍵設計一個直流電動機轉速控制器。按鍵定義如下:0 停止,1-1/10轉速,2-2/10轉速?? 9 最高速(D/A輸出滿量程),鍵號每加1,D/A輸出增加0.5V
選題十一:可任意啟動/停止的電子秒表設計
要求:6位LED數碼顯示,計時單位為1/100秒。利用功能鍵進行啟/停控制。其功能為:上電后計時器清0,當第一次(或奇數次)按下啟/停鍵時開始計數。第2次(或偶數次)按下該鍵時停止計時,再一次按啟/停鍵時清零后重新開始計時??
選題十二:溫度測試系統設計
要求:利用溫度傳感器和ADC0809設計一個溫度測試系統,將測試結果(十進制)在LED上顯示出來,并定義一個保持按鍵,當按下該鍵時,將當前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。(可以每隔0.3秒測量一次)
選題十三:壓力測試系統設計(二)要求:利用壓力傳感器和ADC0809設計一個壓力測試系統,并將測試結果(十進制)在LED上顯示出來,并定義一個測試最大值按鍵,當按下該鍵時,可進行最大值測量(按鍵不動作時為正常測量顯示),即:只有當當前測量值大于上次測量值時才刷新顯示,顯示格式為:P=XXX。可以每隔0.3秒測量一次。
選題十四:簡易計算器系統設計
要求:設計一個可以進行2位數四則運算的計算器。
1、用按鍵輸入數和運算符號;
2、用LED顯示運算過程和結果(十進制數);
3、可以表示出當前的運算類型;
4、具有清零和復位功能;
5、具有連續運算功能。
選題十五:交通燈控制系統
要求:按照時間控制原則,利用并行接口和定時器,設計一套十字路口的交通燈管理系統,通行時間(或禁止時間)30秒,準備時間3秒,在準備時間里黃燈閃爍3次,閃爍頻率為0.5秒,周而復始。可利用8255、8253等接口電路。
選題十六:計件系統設計
要求:利用8253計數,對外界脈沖技術,并將計數值在數碼管上顯示,可通過鍵盤控制重新計數。
四、設計任務及要求
1、接口設計:根據所選題目和所用的接口電路芯片設計出完整的接口電路,并在實驗系統上完成電路的連接和調試通過。
2、程序設計:要求畫出程序框圖,設計出全部程序并給出程序設計說明和程序注釋。
3、課程設計報告:(1)設計題目;
(2)系統的主要功能、作用以及主要技術性能指標;
(3)總體設計方案、工作和組成原理(框圖)或設計說明、采用的技術路線等;
(4)系統設計:接口電路設計,程序設計(程序框圖和程序清單及注釋)其他有關的理論分析和計算;
(5)設計總結:對整個設計工作過程進行歸納和綜合,對設計中所存在的問題和不足進行分析和總結,提出解決的方法、措施、建議和對這次設計實踐的認識、收獲和提高。
第五篇:微機原理課程設計
匯編程序設計題
題目一 密碼設置模擬
該程序可以進行密碼的設置(第一次)和修改(已設置密碼)。要求輸入的密碼不顯示。題目二 計算器
編輯程序可以實現鍵盤輸入數據與運算符,進行“加減乘除”運算。(提示:先輸入數據與運算符,保存,再按照運算符選擇對應的子程序;輸入的數據是用字符表示的,需要轉換;要有良好的界面(提示信息))
題目三工作周期判斷程序
輸入年、月、日,能夠判斷當日的星期數,并進行輸出。(以校歷為依照,可設某日為起點,根據相差的天數與7的關系進行判斷)。
題目四 PC揚聲器發聲
利用8253驅動PC機內揚聲器發聲,PC結構參考相關文獻資料。題目五 樂曲播放
利用PC機內8253實現樂曲播放。題目六 按鍵選擇樂曲播放
利用按鍵選擇播放不同樂曲。(★)(自制交互界面實現按鍵選擇★★)題目七 實現閃爍文字效果 編程提示:
提示信息于屏幕中央顯示出來,用光標定位子程序將光標定位于80*25顯示方式的第8行第10列,然后輸出一條提示信息,接著調用屏幕上卷子程序上卷一行,接著再定位光標,然后顯示下一條提示信息,直到所有信息顯示完畢,對于閃爍的信息,同樣是定位光標,然后用BIOS功能調用13H來顯示閃爍信息,當BL的高位為1時,字符閃爍。mov ah,00h mov al,03h ;設置顯示方式為80*25,16色文本 int 10h 題目八
數字秒表
設計可以顯示1~60秒的無存儲功能的秒表,最小單位為毫秒。題目九
倒計時牌
設計日期倒計時牌界面,可輸入設定日期,顯示當前日期的統計天數,如奧運計時牌。題目十
數字時鐘
編程實現時鐘功能,按秒刷新,要求定位在屏幕右上角。
硬件設計題
總體要求:根據題意自行設計電路,編寫相關匯編程序。題目一
交通燈控制系統
1.利用8253定時,8259中斷及8255設計電路,實現十字路口交通燈模擬控制。2.實現能自動控制和手動應急控制。
3.實現能隨時可以調整自動模式的綠燈和紅燈時間。題目二 實現特定功能的鍵盤及LED顯示
了解鍵盤及LED顯示接口原理,設計實驗電路圖完成以下功能: 1.按1鍵顯示年; 2.按2鍵顯示月日; 3.按3鍵顯示GOOD ;
4.按4鍵數碼管由左到右字符“0”循環顯示。5.自行設計特效顯示功能。題目三
LED七段數碼管數字鐘
設計并完成LED七段數碼管數字鐘電路,數字鐘顯示格式為:HH:MM:SS。要求:具有通過鍵盤能夠調整時、分、秒的功能。題目四
閃爍燈
利用8253和LED燈相結合實現閃爍燈效果。題目五
電子鐘
利用8253定時器設計一個電子鐘,并定義一個啟動鍵。當按下該鍵時電子時鐘從當前設定值開始走時。
附錄:實驗箱功能模塊電路圖