#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit dula1=P2^0;
sbit dula2=P2^1;
uchar tt,shi,ge;
uchar aa;
void display();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
// dula1=1;
// dula2=1;
TMOD=0x10;//设置定时器1为工作方式1
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;//开总中断
ET1=1;//开定时器1中断
TR1=1;//启动定时器1
aa=0;
while(1)
{
if(tt==5)
{
tt=0;
aa++;
if(aa==100)
{
aa=0;
}
shi=aa/10;
ge=aa%10;
}
display();
}
}
void display()
{
dula1=1;
//dula2=1;
P0=tab[ge];
dula1=0;
delay(2);
// dula1=1;
dula2=1;
P0=tab[shi];
dula2=0;
delay(2);
}
void exter0() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
tt++;
}
1、没有人会在数码发光二极管中用可调电阻当作限流电阻。。因为可调电阻在功率电流长时间工作时候很容易坏和接触不良。
要查看数码管参数,然后算工作电流。。一般微型pcb板焊接数码显示管,只要有几毫安就已经很亮了,所以单元显示基本上直接选择1k固定电阻就可以。
2、你这数码显示是4个单元,而下面驱动才能满足一个单元的驱动,是不行的。。
一般都选用功率输出74hc595芯片驱动最好,即可以节省输出口,又可以保证输出安全稳定。
3、并且,每个单元7段数码管显示都必须有独立的单独编号,不能这样直接并联输出,等于没有意义的都输出重复同样信息,无法单独显示。。这样接法等于是短路接法,是设计所不允许的。