1. 程式人生 > 其它 >西電網信院微機原理實驗(六)

西電網信院微機原理實驗(六)

實驗六 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。

表1 CPU輸出與LED狀態對應表

  ② 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:

圖1 LED燈電路圖

  ④ 對於延時問題,採用程式迴圈方式實現:
             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對應輸入埠輸入低電平時,對應的數碼管亮。反之,輸入為高電平時,對應的數碼管熄滅。

表2 74LS47真值表

  將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

實驗部分過程截圖:

參考文獻:

74ls47中文資料彙總

Proteus電路模擬及應用(51微控制器系列)