目录
一、本节介绍
在本实验中,您将学习如何使用74HC595驱动7段显示。
通常,驱动单个7段显示器有两种方法。一个是将其8个引脚直接连接到Arduino Uno板上的八个端口,这是我们以前完成的。另一个是将74HC595连接到Arduino Uno板的三个端口,并将7段显示器连接到74HC595。在这个实验中,我们将使用后者。这样可以节省五个端口。考虑到Arduino Uno板的有限端口,这是非常重要的。
二、材料准备
- 8 *电阻(220Ω)
- 1 * 74HC595
- 1 * Arduino Uno板
- 杜邦线
- 1 *面包板
- 1 * USB数据线
- 1 * 数码管
三、原理讲解
74HC595
74HC595由8位移位寄存器和具有三态并行输出的存储寄存器组成。它将串行输入转换为并行输出,以便可以保存MCU的IO端口。74HC595广泛用于指示多路径LED和驱动多位分段显示。“三态”是指将输出引脚设置为高电平,低电平或“高阻抗”的事实。通过数据锁定,即时输出在移位期间不受影响; 通过数据输出,您可以更轻松地级联74HC595s。
74HC595和它们的功能:
Q0-Q7:8位并行数据输出引脚,可直接控制8段LED或8段显示8针。
Q7:串行输出引脚,连接到另一个74HC595的DS,以连接多个74HC595s
MR:复位引脚,低电平有效; 这里直接连接到5V。
SH:移位寄存器的时序输入。在上升沿,移位寄存器中的数据依次移动一位,即Q1中的数据移动到Q2,等等。在下降沿,移位寄存器中的数据保持不变。
ST:存储寄存器的时序输入。在上升沿,移位寄存器中的数据移入存储器寄存器。
OE:输出使能引脚,低电平有效,连接到GND。
Ds:串行数据输入引脚
VCC:正电源电压
GND:接地
这里使用shiftout()函数,它与Arduino IDE一起使用。只需输入介于0和255之间的数字,存储寄存器就可以将其转换为8位二进制数并行输出。这允许您轻松控制7段显示的8个引脚,并创建任何所需的模式。
四、实验步骤
步骤1:建立电路
原理图
步骤2:编写程序
步骤3:编译程序
步骤4:将程序烧写到Arduino Uno板中
您现在应该看到从0到F的7段显示周期。
本节程序:
[scu name=”arduino-ide-post” platform=”arduino:avr:uno”]
/******************************/
//通过74HC595使用三根线控制数码管
//2017.10.17
/******************************/
int latchPin = 5;
int clockPin = 12;
int dataPin = 11; //定义的几个引脚连接74hc573
void setup ()
{
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT); //设置三个脚都是输出状态
}
void loop()
{
for (int a = 0; a < 256; a++) //这个循环的意思是让a这个变量+1一直加到到256,每次循环都进行下面的活动
{
digitalWrite(latchPin, LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
shiftOut(dataPin, clockPin, MSBFIRST, a);
//这个就是用MSBFIRST参数让0-7个针脚以高电平输出(LSBFIRST 低电平)是dataPin的参数,
//clockPin的参数是变量a,前面我们说了这个变量会一次从1+1+到256,是个十进制数,
// 输入到芯片后会产生8个二进制数,达到开关的作用
digitalWrite(latchPin, HIGH); //将ST_CP这个针脚恢复到高电平
delay(1000); //暂停1秒钟让你看到效果
}
}
[/scu]
厉害
老铁加油