74LS164串轉并實驗
本實驗是用74LS164把輸入的串行數轉換成并行數輸出,74LS164為串行輸入并行輸出移位寄存器,其引腳圖及功能如下:
A、B:串行輸入端;
QA~QH:并行輸出端;
CLR:清零端,低電平有效;
CLK:時鐘脈沖輸入端,上升沿有效。
實驗采用單片機串行工作方式0和P1端口兩種方式串行輸出數據。串行口工作方式0時,數據為8位,從RXD端輸出,TXD端輸出移位信號,其波特率固定為Fosc/12。在CPU將數據寫入SBUF寄存器后,立即啟動發送。待8位數據輸完后,硬件將狀態寄存器的TI位置1,TI必須由軟件清零。
串行口工作方式0數據/時鐘是自動移位輸出,用P1端口輸出數據時,要編程位移數據,每輸出一個數據位,再輸出一個移位脈沖。
內容及步驟:
本實驗需要用到單片機最小系統(F1區)、十六位邏輯電平顯示(I4區)和74LS164(G3區)。
1、選用89C51單片機最小應用系統模塊,用八位數據線連接74LS164的并行輸出JD5G與十六位邏輯電平顯示模塊JD2I,將74LS164的串行輸入端A/B(1和2腳)接到RXD上,CLK接到TXD上,CLR接INT0。
2、用串行數據通信線連接計算機與仿真器,把仿真器插到模塊的鎖緊插座中,請注意仿真器的方向:缺口朝上。
3、打開KeiluVision2仿真軟件,首先建立本實驗的項目文件,接著添加“TH23_74164.ASM”源程序,進行編譯,直到編譯無誤。
4、全速運行程序,觀察發光二極管亮滅情況,先右移動兩次,再左移動兩次,然后閃爍兩次。
5、也可以把源程序編譯成可執行文件,用ISP燒錄器燒錄到89S52/89S51芯片中。
74LS164串進并出實驗及165并串轉換實驗
實驗內容
1、用74LS164芯片擴展并行輸出口,本實驗中我們用74LS164擴展兩個8位輸出口的接口顯示電路,兩位數碼管循環顯示00~99之間的數字。
2、利用實驗系統上的74LS165芯片,編程實現8位數據并行輸入,串行口串行接收,并將接收的數據存放在CPU內部存儲區50H~59H中,共10個數據。(并行輸入數據由P1口來送入)
編程指南
1、74LS164串進并出實驗。
(1)本實驗中MCS-51單片機串行口工作在方式0(移位寄存器方式,用于并行I/0口擴展)的發送狀態時,串行數據由P3.0(RXD)送出,移位時鐘由P3.1(TXD)送出。在移位時鐘的作用下,串行口發送緩沖器的數據一位一位地移入74LS164中。需要指出的是,由于741S164無并行輸出控制端,因而在串行輸入過程中,其輸出端的狀態會不斷變化,故在某些應用場合,在74LS164的輸出端應加接輸出三態門控制,以便保證串行輸入結束后再輸出數據。
(2)74LS164引腳功能表
2、165并串轉換實驗。
(1)74LS165芯片引腳圖
管腳說明:
D0throughD7--Parallelinputs
SI--Serialinput
Q7,/Q7--Dataoutputs
CLK--Clock
CKIN--Clockinhibit
S/L--(高有效)Shift/Parallel-loadcontrol(低有效)
(2)編程說明
74LS165是8位并行置入移位寄存器。當移位/置入端(S/L)由高到低跳變時,并行輸入端的數據被置入寄存器;當S/L=1,且時鐘禁止端(第15腳)為低電平時,允許時鐘輸入,這時在時鐘脈沖的作用下,數據由D0到D7方向移位。如下的電路原理圖中,TXD(P3.1)作為移位脈沖輸出端與所有74LS165的移位脈沖輸入端CP相連;RXD(P3.0)作為串行輸入端與74LS165的串行輸出端Q7相連;P3.2用來控制74LS165的移位與置入而同S/L相連;74LS165的時鐘禁止端(15腳)接地,表示允許時鐘輸入。當擴展多個8位并行輸入口時,兩芯片的首尾(Q7與Sin)相連。
實驗接線圖
1、74LS164串進并出實驗
2、165并串轉換實驗
實驗步驟
1、在74LS164串進并出實驗中,用雙頭線連接,P3.0接插孔A/B,P3.1接插孔CP,P1.0接插孔/CLR,調入程序運行,兩位數碼管上循環顯示數字00~99。下面是74LS164串進并出程序運行仿真的情況:
2、在165并串轉換實驗中,P1.0~P1.7接D7~D0,P3 .0接Q7,P3.1接CP,P3.2接S/L。調入程序165.ASM,編譯、裝載、運行。檢查CPU內部存儲器50H~59H中的數據是否為01H~0AH(注意刷新存儲器)。下面是165并串轉換程序仿真運行的情況:
程序
1、74LS164串進并出實驗程序
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV 30H,#00H ;給顯示緩沖區賦初值
MOV 31H,#00H
L0: SETB P1.0 ;164清零端‘CLR’置1(低電平有效)
INC 30H
MOV A,30H
CJNE A,#0AH,AA
MOV 30H,#00H
INC 31H
MOV A,31H
CJNE A,#0AH,AA
MOV 30H,#00H
MOV 31H,#00H ;使31H,30H單元內容在00~99循環變化
AA: MOV SCON,#00H ;設置串行口
MOV R7,#02H ;設置要發送的字節個數
MOV R0,#30H ;設置地址指針
MOV DPTR,#TAB
LOOP: MOV A,@R0
MOVC A,@A+DPTR ;取出字型碼
MOV SBUF,A ;發送
WAIT: JNB TI,WAIT ;等待一幀發關完畢
CLR TI
INC R0 ;指向下一個字形碼
DJNZ R7,LOOP
MOV R2,#30H ;調用延時子程序
LCALL DELYA
CLR P1.0 ;164清零端‘CLR’置0(低電平有效)
SJMP L0
TAB: DB 3FH,06H,5BH,04FH,66H,6DH,7DH,07H,7FH,6FH ;七段LED段選碼(共陰極)
DB 77H,7CH,39H,5EH,86H,8EH,0FFH,0F1H,0C6H,092H,0BFH
DELYA: PUSH 02H ;延時子程序
DELYB: PUSH 02H
DELYC: PUSH 02H
DELYD: DJNZ R2,DELYD
POP 02H
DJNZ R2,DELYC
POP 02H
DJNZ R2,DELYB
POP 02H
DJNZ R2,DELYA
RET
END
2、165并串轉換實驗程序
ORG 0000H
LJMP MAIN
ORG 0500H
MAIN: MOV R7,#10 ;設置并行讀入數據個數為10個
MOV R0,#50H ;設置內部RAM數據區首址,接收外部并行輸入數據
MOV 40H,#00H
START: INC 40H
MOV P1,40H ;將P1口輸出的數據作為74LS165的并行輸入
CLR P3.2 ;并行置入數據,S/L=0
SETB P3.2 ;允許串行移位,S/L=0
RXDATA: MOV SCON,#10H ;設串行口方式0,允許接收,啟動接收過程
WAIT: JNB RI,WAIT ;未接收完一幀,循環等待
CLR RI ;清RI標志,準備下次接收
MOV A,SBUF ;讀入數據
MOV @R0,A ;送至RAM緩沖區
INC R0 ;指向下一個地址
DJNZ R7,START ;10個數據未讀完重新并行置入
SJMP $ ;10個數據讀完,程序就地循環
END ;查看CPU內部存儲區50H~59H數據是否為01~0AH
評論