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

网友投稿 476 2022-11-13

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 部分硬件电路原理图

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

流程图设计

程序

#include 《reg52.h》

#include 《absacc.h》

#define uchar unsigned char

#define uint unsigned int

#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);

{

}

SBUF=ledCode[a1];

delay(50);

{

}

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。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:用“泡妞”戏说云计算之PaaS,IaaS,SaaS
下一篇:Java实现4种微信抢红包算法(小结)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~