74LS164扩展的8位LED串行显示接口电路(一)
本实验显示的结果是12345678。利用89C52和74LS164扩展8位LED数码管显示,74LS164是将串行输入转换成并行输出,用来选择数码管的段显示,89C51的P2口是用对数码管的位选,从而驱动数码管按照程序的指令进行显示。
流程图设计
74LS164扩展的8位LED串行显示接口电路(二)
74LS164是串行输入并行输出的移位寄存器,每接一片74LS164可扩展一个8位并行输出口,可以作为LED显示器的8根段选线。实物如图3-1所示。系统总电路原理图如图3-2,为89C52单片机最小系统与8位数码管的连接图,分别用8个74LS164和8个LED数码管。部分硬件电路原理图如图3-3所示。
图3-1 电路连接实物图
图3-2 总电路原理图
图3-3 部分硬件电路原理图
数码管中有8段LED数码管显示器由8个发光二极管组成。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。本次设计采用共阳极LED数码管。
在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。
89C52单片机外接8片74LS164作为8位LED数码管显示器的静态显示接口,把89C52的RXD作为数据输出线,TXD作为移位时钟脉冲。
流程图设计
由流程图可知设置好串口的工作方式,用定时器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串行显示接口电路(三)
74LS164是串行输入并行输出的移位寄存器,每接一片74LS164可扩展一个8位并行输出口,可以作为LED显示器的8根段选线。
下图中扩展了8位LED显示器,分别用4个74LS164作为4个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中接收数据外,其他的也在接收数据,因为它们的时钟端都是被接在一起的。
流程图设计