首页 理论教育 移位寄存器方式-单片机原理与接口技术设计实训

移位寄存器方式-单片机原理与接口技术设计实训

时间:2023-11-16 理论教育 版权反馈
【摘要】:在图7-17中,单片机串行接口工作于方式0,作为移位寄存器,RXD用于输出字形码(段码),TXD用于输出移位脉冲。图7-17 串行接口与LED的连接电路例7-3:单片机工作于方式0,利用外接了一个串入并出移位寄存器74LS164扩展并行输出口,将串行数据扩展成并行数据,并实现8个LED由上向下循环点亮,产生流水灯效果。

移位寄存器方式-单片机原理与接口技术设计实训

1 将串行接口作为并行输入口使用

串行接口在方式0下,通过外接一个“并入串出”的8位移位寄存器(74LS165或CD4014),可以作为并行输入接口使用。例如,通过外接CD4014将8路开关状态从串行接口读入单片机的电路如图7-16所示。

CD4014是一个8位串入/并入串出移位寄存器,CP为同步移位脉冲输入端,P1~P8为并行输入端,Q8为串行输出端,P/¯S为控制端。若P/¯S=0,则CD4014为串行输入;若P/¯S=1,则CD4014为并行输入。开关KC用于提供控制信号,当KC闭合时,表示要求单片机读入开关量。只要在程序中对P1.1引脚进行查询,发现P1.1=0(即开关KC闭合),便通过P1.0使CD4014的P/¯S=1,然后再启动单片机串行接口方式0接收过程,即可将CD4014并行输入的开关状态通过串行接口输入到单片机中。

978-7-111-54295-7-Chapter07-37.jpg

图7-16 单片机与CD4014连接电路

具体程序如下:

ORG 0500H

CLR ES;关串行接口中断,使用查询方式控制

START:JB P1.1,$;若KC未闭合,则等待

SETB P1.0;若KC未闭合,令CD4014并行输入开关量

NOP;适当延时

NOP

CLR P1.0;令CD4014停止并行输入,准备串行输出

MOV SCON,#10H;设置串行接口为方式0、RI=0、REN=1、启动接收

JNB RI,$;若未接收完,则等待

CLR RI;接收完,清RI

MOV A,SBUF;将开关量读入单片机的A中,进行开关量处理

SJMP START;准备下一次读入开关量

END

2 将串行接口作为并行输出口使用

串行接口在方式0下,通过外接一个“串入并出”的8位移位寄存器74LS164(或CD4094),可以作为并行输出口使用。将应用项目中单片机通过8155与LED数码管连接的接口电路改为使用串行接口与LED数码管连接,如图7-17所示。

在图7-17中,单片机串行接口工作于方式0,作为移位寄存器,RXD用于输出字形码(段码),TXD用于输出移位脉冲。

978-7-111-54295-7-Chapter07-38.jpg

图7-17 串行接口与LED的连接电路

例7-3:单片机工作于方式0,利用外接了一个串入并出移位寄存器74LS164扩展并行输出口,将串行数据扩展成并行数据,并实现8个LED由上向下循环点亮,产生流水灯效果。电路如图7-18所示,74LS164寄存器芯片如图7-19所示。

978-7-111-54295-7-Chapter07-39.jpg

图7-18 74LS164扩展并行输出口循环点亮LED

978-7-111-54295-7-Chapter07-40.jpg

图7-19 74LS164寄存器芯片

解:(1)工作原理

1)清零端978-7-111-54295-7-Chapter07-41.jpg若为低电平,输出端都为0。

2)清零端978-7-111-54295-7-Chapter07-42.jpg若为高电平,且时钟端CP出现上升沿脉冲,则输出端Q锁存输入端D的电平。

3)串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据的输入,在时钟端脉冲CP上升沿作用下Q0为低电平。当A、B有一个高电平,则另一个就允许输入数据,并在上升沿作用下确定串行数据输入口的状态。

4)前级Q端与后级D端相连——移位作用,最先接收到的数将进入最高位。

(2)程序分析

1)串行接口初始化:SCON=0。方式0(SM0/SM1=00);中断请求标志位清0(RI=0,TI=0);禁止接收数据(REN=0)。

2)串行数据输出时,一组数据发送完成,TI会被置1。可以采用中断法或查询方式进行判别,满足条件,发送下一组数据,否则循环等待直到TI置1。

3)方式0发送串行输出低位在先,高位在后。而74LS164是先串入的数进入最高位。若需要实现指定效果(仅D1点亮为例),则74LS164应输出11111110B,发送端数据应为LED=01111111B;欲使LED由上向下点亮,发送端数据应右移且最高位置1。

程序设计如下:(www.xing528.com)

ORG 0000H

AJMP START

ORG 0030H

START:MOV SP,#5FH

MOV SCON,#00H;设置串行接口工作方式0

MOV A,#0FEH;首次发送的字节数据

LOOP:MOV SBUF,A

JNB TI,$;为发送完数据原地等待

CLR TI;清除发送标志

LCALL DELAY

RL A;准备下一次发送的数据

AJMP LOOP;循环发送

DELAY:MOV R5,#8

D1:MOV R6,#250

D2:MOV R7,#250

D3:DJNZ R7,D3

DJNZ R6,D2

DJNZ R5,D1

RET

END

例7-4:利用串行接口外接两片8位并行输入串行输出的寄存器74LS165扩展两个8位并行输入口。要求从16位扩展口读入10组共20B数据,并将其转存到内部RAM的30H开始的单元。S/L=0,并行接收数据;S/L=1,允许串行移位。其电路如图7-20所示。

978-7-111-54295-7-Chapter07-43.jpg

图7-20 外接两片8位并行输入串行输出的寄存器

解:程序段如下:

MOV R7,#10;设置读入数据组数

MOV R0,#30H;设置内部RAM数据区首地址

START:CLR P1.0;并行置入数据

SETB P1.0;允许串行移位

MOV R2,#02H;每组为2B

RXDATA:MOV SCON,#10H;串行接口工作在方式0,允许接收

WAIT:JNB RI,WAIT;未接收完一帧,则等待

CLR RI;RI标志清0,准备下次接收

MOV A,SBUF;读入数据

MOV @R0,A;送至片内RAM缓冲区

INC R0;指向下一个地址

DJNZ R2,RXDATA;未读完一组数据,则继续

DJNZ R7,START;10组数据未读完重新并行置数

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈