Arduino与Proteus仿真实例-74HC573锁存器驱动仿真

74HC573锁存器驱动仿真

74HC573 是具有 3 态输出的 8 位 D 型透明锁存器。 该器件具有锁存使能 (LE) 和输出使能 (OE) 输入。

当 LE 为高电平时,输入端的数据进入锁存器, 在这种情况下,锁存器是透明的,每次相应的 D 输入发生变化时,锁存器输出都会发生变化。

当 LE 为低电平时,锁存器存储在 LE 高电平到低电平转换之前的设置时间出现在输入端的信息。 OE 上的高电平会导致输出呈现高阻抗关断状态。 OE 输入的操作不会影响锁存器的状态。 输入包括钳位二极管,这使得可以使用限流
将输入接口连接到超过 Vcc 的电压的电阻器。

在前面的文章中,对74HC573做了详细的介绍,请参考:

1、仿真电路原理图

在这里插入图片描述

2、仿真代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

const int aSegLED = 2;
const int bSegLED = 3;
const int cSegLED = 4;
const int dSegLED = 5;
const int eSegLED = 6;
const int fSegLED = 7;
const int gSegLED = 8;
const int pSegLED = 9;

const int lePin = 10;
const int oePin = 11;

int holdPinTouch = 50;
int delayBetweenDigits = 300;

void setup()
{
pinMode (aSegLED, OUTPUT);
pinMode (bSegLED, OUTPUT);
pinMode (cSegLED, OUTPUT);
pinMode (dSegLED, OUTPUT);
pinMode (eSegLED, OUTPUT);
pinMode (fSegLED, OUTPUT);
pinMode (gSegLED, OUTPUT);
pinMode (pSegLED, OUTPUT);

pinMode (lePin, OUTPUT);
pinMode (oePin, OUTPUT);
}

void loop()
{
// Display Digit "."
clearDigit();
digitalWrite (pSegLED, HIGH);
displayDigit();

// Display Digit "0"
clearDigit();
digitalWrite (aSegLED, HIGH);
digitalWrite (bSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
digitalWrite (dSegLED, HIGH);
digitalWrite (eSegLED, HIGH);
digitalWrite (fSegLED, HIGH);
displayDigit();

// Display Digit "1"
clearDigit();
digitalWrite (bSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
displayDigit();

// Display Digit "2"
clearDigit();
digitalWrite (aSegLED, HIGH);
digitalWrite (bSegLED, HIGH);
digitalWrite (dSegLED, HIGH);
digitalWrite (eSegLED, HIGH);
digitalWrite (gSegLED, HIGH);
displayDigit();

// Display Digit "3"
clearDigit();
digitalWrite (aSegLED, HIGH);
digitalWrite (bSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
digitalWrite (dSegLED, HIGH);
digitalWrite (gSegLED, HIGH);
displayDigit();

// Display Digit "4"
clearDigit();
digitalWrite (bSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
digitalWrite (fSegLED, HIGH);
digitalWrite (gSegLED, HIGH);
displayDigit();

// Display Digit "5"
clearDigit();
digitalWrite (aSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
digitalWrite (dSegLED, HIGH);
digitalWrite (fSegLED, HIGH);
digitalWrite (gSegLED, HIGH);
displayDigit();

// Display Digit "6"
clearDigit();
digitalWrite (cSegLED, HIGH);
digitalWrite (dSegLED, HIGH);
digitalWrite (eSegLED, HIGH);
digitalWrite (fSegLED, HIGH);
digitalWrite (gSegLED, HIGH);
displayDigit();

// Display Digit "7"
clearDigit();
digitalWrite (aSegLED, HIGH);
digitalWrite (bSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
displayDigit();

// Display Digit "8"
clearDigit();
digitalWrite (aSegLED, HIGH);
digitalWrite (bSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
digitalWrite (dSegLED, HIGH);
digitalWrite (eSegLED, HIGH);
digitalWrite (fSegLED, HIGH);
digitalWrite (gSegLED, HIGH);
displayDigit();

// Display Digit "9"
clearDigit();
digitalWrite (aSegLED, HIGH);
digitalWrite (bSegLED, HIGH);
digitalWrite (cSegLED, HIGH);
digitalWrite (fSegLED, HIGH);
digitalWrite (gSegLED, HIGH);
displayDigit();
}

void clearDigit()
{
digitalWrite (aSegLED, LOW);
digitalWrite (bSegLED, LOW);
digitalWrite (cSegLED, LOW);
digitalWrite (dSegLED, LOW);
digitalWrite (eSegLED, LOW);
digitalWrite (fSegLED, LOW);
digitalWrite (gSegLED, LOW);
digitalWrite (pSegLED, LOW);
}

void displayDigit()
{

digitalWrite (lePin, HIGH);
digitalWrite (oePin, LOW);
delay(delayBetweenDigits);
}

3、仿真结果

在这里插入图片描述

文章来源: https://iotsmart.blog.csdn.net/article/details/121347953