java怎么拦截某个对象
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~