52单片机加两个74HC573,数码管动态显示,一个573连接段,一个连接位,求C程序。

如题所述

图画的不对,既然用了锁存器,就要节约IO端口,两个锁存器的输入应该共用一个端口P0或P2
假设为P0
每个锁存器有1个锁存信号L,需占用两条IO线,假设分别接 P1.6和P1.7
由于是动态扫描显示,所以显示函数调用时要放在WHILE或FOR循环中反复运行,才能看见结果
程序如下:
#include<reg52.h>
sbit dula=P1^6;//段锁存信号
sbit wela=P1^7;//位锁存信号
#define uchar unsigned char;
void delay(i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void display(uchar qian_c,uchar bai_c,uchar shi_c,uchar ge_c)//4位显示程序
{
P0=table[qian_c]; //显示千位
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delay(2);
P0=table[bai_c]; //显示百位
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(2);
P0=table[shi_c]; //显示十位
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(2);
P0=table[ge_c]; //显示个位
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay(2);
P0=xff; //显示完毕后关闭所有位显示,也可不要,但退出显示程序时会留尾巴,即最后一个数码管还在显示
wela=1;
wela=0;
}
void main( )
{
 .....//其它代码
 while(1)
  {
display(b1,b2,b3,b4); //调用显示函数
.....//其它代码,不能占用CPU太多时间,否则显示闪烁
  }
}追问

这么改吗

追答

对,还要注意是共阳码还是共阴码以及数码管对应的位置,若顺序不对,简单调整即可,若共阴或共阳弄反了,可以把共阳码和位置按位取反, 如P0=~table[shi_c]

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-31
有没有电子版的原理图
我会写的

求教关于74HC573锁存器控制数码管显示的问题!
74HC573有两个输出控制端口,一个是1脚(OE),为1时,输出为高阻,为0时,输出0或1。另一个是11脚(LE),为0时,输出不改变,为1时,输出随输入状态变化。像你说的这种情况,应该是这两个端口没有给对电位,所以数码管显示没有变化吧,所以程序里才有“wela=1”。不过这一句是否是控制74HC573的语句,要看到电路图和...

单片机连接74HC573驱动两位共阳数码管编程谁能发几个,我是51单片机初学...
1. 首先,单片机P0口负责发送abcdefgh段选信号。这部分代码用于控制每个段的点亮情况,以显示特定的数字或字符。2. 接着,使用74HC573锁存器将段选信号保存。锁存器在这一阶段起着关键作用,确保单片机发送的信号不会丢失,并保持稳定。3. 最后,单片机P0口再次发送位选信号。这一信号用于控制数码管的...

两片74hc573怎么连接在单片机上实现位和段的锁存
用74hc573的LE端控制,OE直接接地就行,LE为1时打开锁存器,这时候就可以输入数据到锁存器中,也就是说D0~D7到Q0~Q7导通;LE为0时,锁存器锁存,D0~D7的变化不会影响到Q0~Q7.

单片机,数码管动态扫描时用了两个hc573锁存器,一个控制段码一个控制...
(573是拉高为数据导通) 然后8位的io送位选数据,比如说是0x01,就是打开最低位的数码管,这个时候拉低573锁存段,数据锁存,这个时候io的变化不会影响位选输出端的结果,然后同样的,拉高段选锁存段,io送段选数据,

用两片74HC573锁存器控制4位共阴数码管动态显示的汇编程序 要汇编语 ...
数码管显示数据转换子程序 CJNE R5,#02H,BEI MOV A,24H AJMP JING BEI:MOV A,23H JING:MOV B,#64H DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV DISPBUF+2,A MOV A,B MOV B,#0AH DIV AB MOVC A,@A+DPTR MOV DISPBUF+1,A MOV A,B MOVC A,@A+DPTR MOV DISPBUF,A RET ...

请问51单片机P0口接74HC573驱动共阴极数码管时候,要在P0和573之间加上...
要加上阻,1,P0口本身内部是没的上拉的。2,573作为输入接口的也是没有上拉的。(这是对传统单片机来说,因为现在出的不同厂家的,不同牌子的单片机都点差异。或者载一份对应型号的单片机资料看看,不过如果是多加了也不会有什么不良影响。

求74hc573连接led与单片机电路图 最好详细一点,多一点
74HC573是拥有八路输出的锁存器。其真值表如下图所示。电路图如下。当P2.0口为低电平,P2.1口为高电平时,锁存器工作在跟随状态,与P0口状态一致。当P2.0口为低电平,P2.1口为低电平时,锁存器工作在保持状态,与前一次的P0口状态一致。当P2.0口为高电平,锁存器不工作。

51单片机显示八位数码管的C语言程序
1、最开始,我们先打开keil。2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。3、接着,我们加上一条循环语句。4、最后,我们把先前定义的延时语句delayms写好。5、最后,点击这里进行编译,生成一个hex文件。6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以...

...例如用74hc573驱动数码管。驱动工作原理怎么样?
74HC573是锁存器,用于数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。驱动数码管需要两个信号,一个是段选信号,一个是片选信号。段选信号是固定的8个(对于普通7段数码管),而片选信号数量是与数码管位数相同的。对于8位数码管的动态扫描来说,片选信号要8根线,这样仅仅驱动数码管就...

51单片机计算器(浮点数加减,数码管)
在这款51单片机计算器中,它专为实现浮点数加减运算而设计。基于最小系统,用户可以使用键盘输入1至5位的数字,包括小数,通过UP键(加)和DOWN键(减)进行运算。按下ENTER键则执行计算,BACK键用于清除显示并重新开始。显示结果通过两片74HC573驱动数码管显示。设计中,单片机的P2.0至P2.7连接到CON...

相似回答
大家正在搜