74LS164扩展的8位LED串行显示接口电路

沈丹 发表于 2018-05-08 15:52:43 收藏 已收藏
赞(0) •  评论(0

74LS164扩展的8位LED串行显示接口电路

沈丹 发表于 2018-05-08 15:52:43

74LS164扩展的8位LED串行显示接口电路(一)

硬件部分包括89C52芯片、74LS164芯片、8位数码管、电阻、电容等。其中89C52芯片功能为:8K字节FLASH闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个全双工串行通讯口,振荡器及时钟电路;74LS164功能为:作八位串行入/并行输出移位寄存器用;数码管作用为:显示数字结果。

74LS164扩展的8位LED串行显示接口电路

本实验显示的结果是12345678。利用89C52和74LS164扩展8位LED数码管显示,74LS164是将串行输入转换成并行输出,用来选择数码管的段显示,89C51的P2口是用对数码管的位选,从而驱动数码管按照程序的指令进行显示。

流程图设计

74LS164扩展的8位LED串行显示接口电路

74LS164扩展的8位LED串行显示接口电路(二)

74LS164是串行输入并行输出的移位寄存器,每接一片74LS164可扩展一个8位并行输出口,可以作为LED显示器的8根段选线。实物如图3-1所示。系统总电路原理图如图3-2,为89C52单片机最小系统与8位数码管的连接图,分别用8个74LS164和8个LED数码管。部分硬件电路原理图如图3-3所示。

74LS164扩展的8位LED串行显示接口电路

图3-1 电路连接实物图

74LS164扩展的8位LED串行显示接口电路

图3-2 总电路原理图

74LS164扩展的8位LED串行显示接口电路

图3-3 部分硬件电路原理图

数码管中有8段LED数码管显示器由8个发光二极管组成。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。本次设计采用共阳极LED数码管。

在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。

89C52单片机外接8片74LS164作为8位LED数码管显示器的静态显示接口,把89C52的RXD作为数据输出线,TXD作为移位时钟脉冲。

流程图设计

74LS164扩展的8位LED串行显示接口电路

由流程图可知设置好串口的工作方式,用定时器T1产生波特率,依次传递30H到37H八个数依次传递到数码管。

程序

#include 《reg52.h》

#include 《absacc.h》

#define uchar unsigned char

#define uint unsigned int

#define a0 DBYTE[0X30]=0x02

#define a1 DBYTE[0X31]=0x00

#define a2 DBYTE[0X32]=0x01

#define a3 DBYTE[0X33]=0x06

#define a4 DBYTE[0X34]=0x00

#define a5 DBYTE[0X35]=0x06

#define a6 DBYTE[0X36]=0x03

#define a7 DBYTE[0X37]=0x00

uchar ledCode[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};

void delay(uint t)

{

uint j;

for(;t》0;t--)

for (j=6245;j》0;j--)

{;}

}

main()

{

SCON=0x00;

TMOD=0x10;

TH1=0x39;

TL1=0x16;

TR1=1;

ET1=1;

EA=1;

delay(50);

SBUF=ledCode[a0];

delay(50);

while(TI==0)

{

}

TI=0;

SBUF=ledCode[a1];

delay(50);

while(TI==0)

{

}

TI=0;

SBUF=ledCode[a2];

delay(50);

while(TI==0)

{

}

TI=0;

SBUF=ledCode[a3];

delay(50);

while(TI==0)

{

}

TI=0;

SBUF=ledCode[a4];

while(TI==0)

{

}

TI=0;

delay(50);

SBUF=ledCode[a5];

while(TI==0)

{

}

TI=0;

delay(50);

SBUF=ledCode[a6];

while(TI==0)

{

}

TI=0;

delay(50);

SBUF=ledCode[a7];

while(TI==0)

{

}

TI=0;

delay(50);

}

实验结果如图,30H-37H单元的八位数据为20160630。

74LS164扩展的8位LED串行显示接口电路
#p#

8位LED串行显示接口电路(三)

#e#

74LS164扩展的8位LED串行显示接口电路(三)

74LS164是串行输入并行输出的移位寄存器,每接一片74LS164可扩展一个8位并行输出口,可以作为LED显示器的8根段选线。

下图中扩展了8位LED显示器,分别用4个74LS164作为4个LED的段选输入。

74LS164扩展的8位LED串行显示接口电路

使用说明

8段LED数码管显示器由8个发光二极管组成。其中7个长条形的发光管排列成“日”字形,另一个点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。

在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。能供给单独锁存的I/O接口电路很多,这里是常用的串并转换电路74LS164,介绍常用的静态共阴极显示电路。

80C51单片机外接4片74LS164作为8位LED数码管显示器的静态显示接口,把80C51的RXD作为数据输出线,TXD作为移位时钟脉冲。74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个管脚按逻辑与运算规律输入信号,公用一个输入信号时可并接。T(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1…Q8(第3-6和10-13管脚)并行输出端分别接LED数码管显示器各段对应的管脚上。在74LS164获得时钟脉冲的瞬间,如果数据输入端(第1,2管脚)是高电平,则就会有一个1进入到74LS164的内部,如果数据输入端是低电平,则就会有一个0进入其内部。在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,然后再来一个脉冲,第一个脉冲就会从最高位移出。

对于电路,4片7LS164首尾相串,而时钟端则接在一起,这样,当输入1个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第2个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第4个脉冲完成后,首次送出的数据被送到了最后面的74LS164中,其他数据依次出现在第一、二、三片74LS164中。在第一个脉冲到来时,除了第一片74LS164中接收数据外,其他的也在接收数据,因为它们的时钟端都是被接在一起的。

流程图设计

74LS164扩展的8位LED串行显示接口电路

收藏

相关话题
文章来源栏目

评论(0)

加载更多评论

参与评论

相关文章

分享到

QQ空间 QQ好友 微博
取消