Arduino七段数码管显示方法二(移位寄存器)

Arduino七段数码管显示方法二(移位寄存器)

介绍移位寄存器

 

 

 

 

由于arduino uno引脚比较少,有时候会遇到引脚不够用。我的解决方案是 用74HC595来拓展。

接线图如下:

Arduino七段数码管显示方法二(移位寄存器)

74HC595芯片针脚分布图

Arduino七段数码管显示方法二(移位寄存器)

移位寄存器与Arduino连接

Arduino七段数码管显示方法二(移位寄存器)

七段数码管针脚分布图

Arduino七段数码管显示方法二(移位寄存器)

请点击此处输入图片描述

移位寄存器工作原理:

 

 

 

 

我们发送一个byte数据(8bits)到移位寄存器,移位寄存器将根据这个byte的数据来打开或关闭8个输出(Q0-Q7)。这个byte数据的bits和移位寄存器的输出针脚是匹配的(从高到低),所以最左边的bit代表着移位寄存器上的Q7,最右边的bit代表移位寄存器上的Q0输出。

举个例子:

 

 

 

 

如果我们发送B10000110到移位寄存器,那么它会将Q7,Q2,Q1三个输出口设置为HIGH,其他输出口设置为LOW,直到接收到下一个字节数据。

移位寄存器一共有16个引脚:

  • 针脚15和1到7是8个输出针脚(Q0~Q7)

  • Q7输出发送到移位寄存器的第一个bit,同理,Q0将输出最后一位bit。

  • 针脚8接地

  • 针脚9是数据输出针脚,用来输出数据给另外一个移位寄存器(如果存在的话),本例中只使用一个移位寄存器。

  • 针脚10接5V

  • 针脚11是时钟针脚

  • 针脚12称为锁存状态(latch)针脚

 

 

 

 

 

 

 

digitalWrite(latch, LOW);

//告诉74HC595准备接收数据

 

 

 

 

 

 

 

digitalWrite(latch, HIGH);

//告诉74HC595返回正常状态

  • 针脚13接地

  • 针脚14用来接收Arduino发送的数据,使用shiftOut函数

  • 针脚16接5V


将上面图片中的LED1~LED8换成7段数码管(A~G,DP)。

|

代码如下:

#define DATA 6//数字6号脚,连在移位寄存器的14号针脚上,通过arduino传输数据

#define LATCH 8//digital 8 to pin 12 on the 74HC595

#define CLOCK 10//digital 10 to pin 11 on the 74HC595 for clock

int number_LSB[]={252,96,218,242,102,182,190,224,254,246,238,62,156,122,158,142 };


void setup()
{

 

// put your setup code here, to run once:

pinMode(LATCH,OUTPUT);

pinMode(CLOCK,OUTPUT);

pinMode(DATA,OUTPUT);

}


void loop()
{

 

// put your main code here, to run repeatedly:

int i;

for(i=0;

i<16;

i++)

{

 

digitalWrite(LATCH,LOW);

 

shiftOut(DATA,CLOCK,LSBFIRST,number_LSB[i]+1);

//+1让小数点显示

 

digitalWrite(LATCH,HIGH);

 

delay(500);

 

}

}

数码管将从0~9A~F循环显示

这个例子中只用到了Arduino的三个针脚!!!!

喜欢文章,欢迎大家转发!!!

|