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