西電網信院微機原理實驗(六)
實驗六 74LS273擴充套件I/O口實驗
1、編寫程式,以74LS273作為I/O口,控制8個單色LED燈。I/O埠號為168H。
原理分析:
① 74LS273為鎖存器,可以作為I/O資料暫存器儲存CPU與外設之間的傳送資料。D0-D7是資料輸入埠,Q0-Q7是資料輸出埠,8個數據輸出可以分別連線8個單色LED燈。CPU通過控制D0-D7從而達到控制鎖存資料Q0-Q7輸出的目的。CPU輸出與8個LED狀態的關係見表1,8個LED的編號見圖1。
② I/O埠號為0168H,當地址線A15-A0為0000 0001 0110 1000時選中74LS273,此時D0-D7資料線上資料便可以輸出。譯碼電路的作用就是當A15-A0這16根地址線中的A3,A5,A6,A8為1,其餘為0時,允許資料輸出。
③ 8個LED燈採用共陽極接法,陽極通過電阻後接電源,陰極需要給低電平才能夠導通,這就對應了表1中的資料Q0-Q7輸出。LED燈接法見圖1:
④ 對於延時問題,採用程式迴圈方式實現:
MOV CX,0E000H
LOOP $
LOOP $ 的作用是一直執行當前指令(即LOOP指令),可以用來延時。每執行一次LOOP指令,CX自動減1。
電路連線圖:
彙編程式碼:
IO0 EQU 0168H CODE SEGMENT ASSUME CS:CODE START: MOV DX,IO0 MOV AL,0FEH OUT DX,AL MOV CX,0E000H LOOP $ MOV AL,0FDH OUT DX,AL MOV CX,0E000H LOOP $ MOV AL,0FBH OUT DX,AL MOV CX,0E000H LOOP $ MOV AL,0F7H OUT DX,AL MOV CX,0E000H LOOP $ MOV AL,0EFH OUT DX,AL MOV CX,0E000H LOOP $ MOV AL,0DFH OUT DX,AL MOV CX,0E000H LOOP $ MOV AL,0BFH OUT DX,AL MOV CX,0E000H LOOP $ MOV AL,07FH OUT DX,AL MOV CX,0E000H LOOP $ JMP START CODE ENDS END START
實驗部分過程截圖:
2、設計一七段LED數碼管顯示電路,編寫程式,實現在數碼管從0-9的迴圈顯示。(可使用74LS47作為LED的顯示譯碼)要求迴圈速度可調,即顯示間隔可變。
原理分析:
同第一部分,採用74LS273做I/O介面資料鎖存器,預設I/O介面地址為0168H。
74LS47的功能是將BCD碼數字直接轉化成七段數碼塊中的數字。74LS47引腳見圖2,七段數碼管見圖3。向74LS47的DCBA四個埠輸入0-9的二進位制數,QA-QG對應的輸出見表2,預設LT和BI為無效狀態。
數碼管採用共陽極接法,當a-g對應輸入埠輸入低電平時,對應的數碼管亮。反之,輸入為高電平時,對應的數碼管熄滅。
將74LS273的Q3-Q0分別連線到74LS47的DCBA,將74LS47的QA-QG分別連線數碼管。Q3-Q0從0000B到1001B變化,數碼管上就可以顯示0-9的數字。那麼,通過控制AL的值,從而控制D0-D7從00H到09H變化,即可完成題目要求。
顯示間隔採用控制程式迴圈次數實現:
MOV CX,0E000H
LOOP $
通過改變CX的值,從而改變顯示間隔。
電路連線圖:
彙編程式碼:
IO0 EQU 0168H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,IO0
MOV AL,00H ;數碼管顯示0
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,01H ;數碼管顯示1
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,02H ;數碼管顯示2
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,03H ;數碼管顯示3
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,04H ;數碼管顯示4
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,05H ;數碼管顯示5
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,06H ;數碼管顯示6
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,07H ;數碼管顯示7
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,08H ;數碼管顯示8
OUT DX,AL
MOV CX,0E000H
LOOP $
MOV AL,09H ;數碼管顯示9
OUT DX,AL
MOV CX,0E000H
LOOP $
JMP START
ENDLESS:
JMP ENDLESS
CODE ENDS
END START
實驗部分過程截圖: