单片机如何驱动数码管?

核心提示#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x

#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段数码管显示都必须有独立的单独编号,不能这样直接并联输出,等于没有意义的都输出重复同样信息,无法单独显示。。这样接法等于是短路接法,是设计所不允许的。

 
友情链接
鄂ICP备19019357号-22