[51 Mikrocontroller-Serie] 74HC595 realisiert die Steuerung der LED-Punktmatrix

In diesem Artikel geht es um die Verwendung einer LED-Punktmatrix, wobei das Modul 74HC595 zur Steuerung der LED-Punktmatrix verwendet wird.

1. Das Prinzip der 8x8 LED-Punktmatrix

1.1 Prinzip der LED-Punktmatrixanzeige

LED-Punktmatrix ist ein Anzeigegerät, das aus einer Anordnung lichtemittierender Dioden besteht und häufig in Auto-Stoppanzeigen, Werbebildschirmen usw. verwendet wird. Wie folgt:

Bild-20231208092451292

Das 8x8-Gitter in Proteus ist wie folgt:

LED-Punktmatrix in PROTEUS

Am häufigsten wird die 8x8-Punktmatrix verwendet. Mehrere 8x8-Punktmatrizen können verwendet werden, um LED-Punktmatrixanzeigen mit unterschiedlichen Auflösungen zu bilden. Eine 16x16-Punktmatrix kann beispielsweise aus vier 8x8-Punktmatrizen bestehen.

1.2 Internes Strukturdiagramm der LED-Punktmatrix

Das interne Strukturdiagramm der 8x8LED-Punktmatrix sieht wie folgt aus. Die beiden Bilder haben nur unterschiedliche Verbindungsmethoden. Um die LED zum Leuchten zu bringen, müssen die Zeilen links auf einen hohen Pegel und die Spalten auf einen niedrigen Pegel eingestellt werden. Rechts Im Bild müssen die Zeilen auf niedrig eingestellt werden. Die Spalte ist auf hoch eingestellt.

Internes Strukturdiagramm der 8x8LED-Punktmatrix

Die 8x8-Punktmatrix besteht aus insgesamt 64 Leuchtdioden, und jede Leuchtdiode wird am Schnittpunkt der Zeilenlinie und der Spaltenlinie platziert. Wenn eine entsprechende Zeile auf einen hohen Pegel und eine bestimmte Spalte eingestellt ist auf Low-Pegel, die entsprechende Diode leuchtet auf.

Wenn Sie beispielsweise im Bild links den ersten Punkt aufleuchten möchten, verbinden Sie Pin 9 der ersten Reihe mit dem hohen Pegel und Pin 13 der ersten Spalte mit dem niedrigen Pegel, und der erste Punkt leuchtet auf; Wann Die erste Reihe leuchtet, der ⑨-Pin der ersten Reihe ist mit High-Pegel verbunden und alle Spalten (Pins 13, 3, 4, 10, 6, 11, 15, 16) sind mit Low-Pegel verbunden, und die erste Reihe leuchtet auf. Ein; wenn Sie die erste Spalte aufleuchten lassen möchten, verbinden Sie Pin 13 der ersten Spalte mit Low-Pegel und verbinden Sie alle Reihen (Pins 9, 14, 8, 12, 1, 7, 2 und 5). auf hohes Niveau. Die Spalten leuchten auf; wenn Sie die diagonale Linie beleuchten möchten, können Sie diese dynamisch anzeigen. Beleuchten Sie zuerst den ersten Punkt, dann beleuchten Sie den Punkt in der 2. Reihe und 2. Spalte... In diesem Auf diese Weise kann die diagonale Linie in einem Beleuchtungszyklus dargestellt werden. Linienpunkte.

Wenn Sie Zahlen oder Zeichen anzeigen möchten, leuchten Sie diese an der gewünschten Position auf, z. B. bei der Anzeige einer 0 (wie unten gezeigt), und Sie können die LEDs an den folgenden Positionen in einem Zyklus aufleuchten lassen.

LED-Punktmatrix zeigt 0 an

1.3 Schematische Darstellung der LED-Punktmatrix auf der Entwicklungsplatine

Die Entwicklungsplatine verwendet den 74HC595-Chip, um eine Seriell-Parallel-Konvertierung zu realisieren, und verbindet ihn mit dem LED-Punktmatrixmodul. Das schematische Diagramm lautet wie folgt:

Schematische Darstellung der LED-Punktmatrix

74HC595 hat die Funktion, IO-Ports zu erweitern. Aus dem schematischen Diagramm können Sie ersehen, dass 74HC595 3 IO-Port-Eingänge verwendet und 8 IO-Port-Ausgänge hat. Diese 8 IO-Ports steuern die Zeilen der LED-Punktmatrix (von der ersten bis zur letzten Zeile bzw. D7-D0) und verwenden den P0-Port zur Steuerung der Spalten der LED-Punktmatrix (von der ersten bis zur letzten Zeile). letzte Spalte bzw. P07-P00).

Wenn Sie beispielsweise, wie im linken Bild des obigen Strukturdiagramms gezeigt, die erste LED aufleuchten lassen möchten, sollte der P0-Port auf 0x7f und D7-D0 auf 0x80 eingestellt werden.

1,4 74HC595-Chip

Der 74HC595-Chip verfügt über 8 Schieberegister mit seriellem Eingang/Ausgang oder parallelem Ausgang mit dreistufigem Ausgang (hoher Pegel, niedriger Pegel, hoher Widerstandszustand). Ist ein busgesteuerter Parallelausgang. Wird normalerweise für die Datenkonvertierung vom seriellen Eingang zum parallelen Ausgang verwendet.

Die Pinbeschreibung des 74HC595 lautet wie folgt:

Symbol Stift beschreiben
Q0…Q7(QA…QH) 15,1-7 Parallele Datenausgabe
GND 8 logisch
Q7' 9 Serielle Datenausgabe
/MR(/SRCLR) 10 Master-Reset (aktiver Low-Pegel), er befindet sich im Reset-Zustand, wenn er an GND angeschlossen ist, und er befindet sich im High-Pegel-Zustand, wenn er an die Stromversorgung angeschlossen ist
SHCP(SRCLK) 11 Takteingang des Schieberegisters
STCP(RCLK) 12 Speicherregister-Takteingang
/OE 13 Der Ausgang ist gültig (aktiv bei niedrigem Pegel). Auf der Entwicklungsplatine befindet sich ein Anschluss. Wenn Sie den Ausgang gültig machen möchten, schließen Sie ihn mit GND kurz. Wenn Sie den Ausgang ungültig machen möchten, schließen Sie ihn mit VCC kurz. Es kann zur Steuerung auch an einen IO-Port angeschlossen werden. Bei der Durchführung von LED-Punktmatrix-Experimenten sollte dieser mit Masse kurzgeschlossen werden, um den Ausgang wirksam zu machen.
DS(SER) 14 Bei der seriellen Dateneingabe werden die Eingabedaten vom 74HC595-Chip in einen Parallelport-Ausgang umgewandelt
VCC 16 Stromversorgung

Die Funktionen von 74HC595 sind wie folgt: H = hoher Pegel, L = niedriger Pegel, ↑ = steigende Flanke, ↓ = fallende Flanke, Z = hoher Widerstandszustand, NC = keine Änderung, X = ungültig

eingeben eingeben eingeben eingeben eingeben Ausgabe Ausgabe Funktion
SHCP STCP OE HERR DS Q7' Qn
X X L X L NC Wenn MR niedrig ist, wirkt es sich nur auf das Schieberegister aus
X L L X L L Schieberegister in Ausgaberegister, die steigende Flanke von STCP gibt die Daten aus
X X H L X L Z Löschen Sie das Schieberegister und stellen Sie den Parallelausgang auf hohe Impedanz ein.
X L H H Q6' NC Ein logisch hoher Pegel wird in den Schieberegisterzustand 0 verschoben, einschließlich aller verschobenen Schieberegisterzustände
X L H X NC Qn Der Inhalt des Schieberegisters gelangt in das Speicherregister und wird vom Parallelport ausgegeben
L H X Q6' Qn' Der Inhalt des Schieberegisters wird eingeschoben und der Inhalt des vorherigen Schieberegisters gelangt in das Speicherregister und wird ausgegeben

Aus der obigen Tabelle können wir erkennen, dass die Daten bei der steigenden Flanke von SHCP in das Schieberegister gelangen und bei der steigenden Flanke von an den Parallelport ausgegeben werden, wenn der Master-Reset-MR auf hohem Pegel und die Ausgangsfreigabe OE auf niedrigem Pegel liegt STCP.

Datenterminal von 74HC595:

Q0-Q7: Acht-Bit-Parallelausgangsanschlüsse, die die 8 Segmente der digitalen Röhre direkt steuern können.

Q7': Der Kaskadenausgangsanschluss kann mit dem SER-Anschluss des nächsten 595 verbunden werden.

SER: Serieller Dateneingangsanschluss.

Beschreibung der Konsole 74HC595

  • /SCLR (Pin 10): Haupt-Reset-Pin, löscht das Schieberegister, wenn der Pegel niedrig ist, normalerweise verbunden mit VCC.
  • SCK (Pin 11): Das Datenregister mit steigender Flanke wird verschoben und die Daten des Schieberegisters mit fallender Flanke bleiben unverändert.
  • RCK (Pin 12): Die Daten im Schieberegister gelangen bei der steigenden Flanke in das Speicherregister und bei der fallenden Flanke bleiben die Daten im Speicherregister unverändert.
  • /OE (Pin 13): Ausgang ist aktiviert, Ausgang ist deaktiviert, wenn der Pegel hoch ist.

2. Verwenden Sie das Modul 74HC595, um den Effekt von fließendem Wasserlicht zu erzielen

Das Hardware-Design in Proteus ist wie folgt. Die implementierte Funktion besteht darin, den 74HC595-Chip zu verwenden, um den fließenden Lichteffekt zu erzielen.

74HC595 erzielt den Effekt von fließendem Wasserlicht

Gemäß der obigen Einführung in den 74HC595 stellt der DS-Pin die seriellen Eingangsdaten dar. Die steigende Flanke von SHCP führt den Schiebevorgang des Schieberegisters durch. Die steigende Flanke von STCP gibt die Daten an den parallelen Port aus.

Der Softwarecode lautet wie folgt:

/*
	实现功能:74HC595芯片控制LED点阵实现LED流水灯的效果
	[2023-12-08] zoya
*/
#include "reg52.h"
#include "intrins.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit DS = P3^4;  // 74HC595输入数据端口
sbit STCP = P3^5;  // 74HC595存储寄存器端口,上升沿时移位寄存器进入存储寄存器
sbit SHCP = P3^6;  // 74hc595移位寄存器端口,上升沿时移入数据

// 延时函数,i=1延时10us
void Delay(u16 i)
{
    
    
	while(i--);
}

// 74HC595芯片将输入的串行数据转换为并行数据输出
void HC595SendByte(u8 dat)
{
    
    
	u8 i;
	STCP = 1;  // 高电平时存储寄存器数据保持不变
	SHCP = 1;  // 高电平时移位寄存器数据保持不变
	for(i=0;i<8;i++)
	{
    
    
		DS = dat >> 7;  // 每次输入最高位数据
		dat <<= 1;  // 移位后将dat数据左移一位,保证下一次移入的数据在最高位
		// 实现移位寄存器的时序,需要SHCP有一个上升沿,所以先将SHCP置0,然后置1
		SHCP = 0;
		_nop_();  // 空指令,不做任何操作,当做延时使用
		_nop_();
		SHCP = 1;
	}
	
	// 数据已经在移位寄存器了,现在将移位寄存器的数据输出到存储寄存器
	// STCP上升沿时将数据从移位寄存器输出到存储寄存器
	STCP = 0;
	_nop_();
	_nop_();
	STCP = 1;
}


void main()
{
    
    
	u8 ledNum = ~0x01;  // 首先点亮D0
	// HC595SendByte(0xff);
	while(1)
	{
    
    
		HC595SendByte(ledNum);
		ledNum = _crol_(ledNum,1);  // 左移,逐个点亮D0-D7
		Delay(50000);
	}
}

Simulationsergebnisse:

74HC595 realisiert einen LED-Lichteffekt mit fließendem Wasser

3. Verwenden Sie das Modul 74HC595, um die diagonale Helligkeit der LED-Punktmatrix zu steuern

Entwerfen Sie die folgende LED-Punktmatrix in Proteus, um die Funktion der Verwendung von 74HC595 zur Steuerung der diagonalen Lichter der LED-Punktmatrix zu realisieren.

Bild-20231208151820036

Der Code ist wie folgt implementiert:

/*
	实现功能:74HC595芯片控制LED点阵实现对角线点亮
	[2023-12-08] zoya
*/
#include "reg52.h"
#include "intrins.h"

#define GPIO_LED P0  // LED点阵列控制IO口

typedef unsigned char u8;
typedef unsigned int u16;

sbit DS = P3^4;  // 74HC595输入数据端口
sbit STCP = P3^5;  // 74HC595存储寄存器端口,上升沿时移位寄存器进入存储寄存器
sbit SHCP = P3^6;  // 74hc595移位寄存器端口,上升沿时移入数据
u8 ledNum = 0x01;

// 延时函数,i=1时延时10us
void Delay(u16 i)
{
    
    
	while(i--);
}

// 74HC595芯片将输入的串行数据转换为并行数据输出
void HC595SendByte(u8 dat)
{
    
    
	u8 i;
	STCP = 1;  // 高电平时存储寄存器数据保持不变
	SHCP = 1;  // 高电平时移位寄存器数据保持不变
	for(i=0;i<8;i++)
	{
    
    
		DS = dat >> 7;  // 每次输入最高位数据
		dat <<= 1;  // 移位后将dat数据左移一位,保证下一次移入的数据在最高位
		// 实现移位寄存器的时序,需要SHCP有一个上升沿,所以先将SHCP置0,然后置1
		SHCP = 0;
		_nop_();  // 空指令,不做任何操作,当做延时使用
		_nop_();
		SHCP = 1;
	}
	
	// 数据已经在移位寄存器了,现在将移位寄存器的数据输出到存储寄存器
	// STCP上升沿时将数据从移位寄存器输出到存储寄存器
	STCP = 0;
	_nop_();
	_nop_();
	STCP = 1;
}

void main()
{
    
    
	// 点亮LED点阵的第一个灯,P00=0,其它为1
	u8 dNum = ~0x01;
	GPIO_LED = ledNum;
	while(1)
	{
    
    
		HC595SendByte(dNum);
		GPIO_LED = ledNum;
		Delay(200);
		dNum = _crol_(dNum,1);
		ledNum = _crol_(ledNum,1);
	}
}

Simulationsergebnisse:

74HC595 realisiert den diagonalen hellen Effekt der LED-Punktmatrix

Supongo que te gusta

Origin blog.csdn.net/sinat_41752325/article/details/134880037
Recomendado
Clasificación