Arduino与Proteus仿真实例-74HC148优先编码器驱动仿真

74HC148优先编码器驱动仿真

74HC148先级编码器接受 8 个输入请求行 0-7 并输出 3 个行 A0-A2。 优先编码确保仅对最高阶数据线进行编码。 提供级联电路(启用输入 EI 和启用输出 EO)以允许八进制扩展,而无需外部电路。 所有数据输入和输出均在低逻辑电平有效。所有输入均通过内部二极管钳位至 VCC 和接地而免受静电放电损坏。

在前面的实例中,对74HC148做了介绍,请参考:

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
int latchPin = 8; //Pin connected to ST\_CP of 74HC595
int clockPin = 6; //Pin connected to SH\_CP of 74HC595
int dataPin = 7; //Pin connected to DS of 74HC595
byte IA0 = 2;
byte IA1 = 3;
byte IA2 = 4;
byte IGS = 5;
byte dat1 = 0;
byte dat2 = 0;
byte dat3 = 0;
byte dat4 = 0;
byte dat;

void \_74hc595\_send\_data(byte dat){
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, dat);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, HIGH);
}

void setup(){
Serial.begin(9600);
pinMode(IA0,INPUT);
pinMode(IA1,INPUT);
pinMode(IA2,INPUT);
pinMode(IGS,INPUT);

pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop(){
dat1 = digitalRead(IA0);
dat2 = digitalRead(IA1);
dat3 = digitalRead(IA2);
dat4 = digitalRead(IGS);
Serial.print("dat1,dat2,dat3,dat4=");
Serial.print(dat1);
Serial.print(',');
Serial.print(dat2);
Serial.print(',');
Serial.print(dat3);
Serial.print(',');
Serial.print(dat4);
Serial.println();
dat = (((dat3 << 3) | (dat2 << 2) | (dat1 << 1) | (dat4 << 0)) & 0x0F);
Serial.print("dat=");
Serial.println(dat);
switch(dat){
case 0b1110:
Serial.println("0");
\_74hc595\_send\_data(1 << 0);
break;
case 0b1100:
Serial.println("1");
\_74hc595\_send\_data(1 << 1);
break;
case 0b1010:
Serial.println("2");
\_74hc595\_send\_data(1 << 2);
break;
case 0b1000:
Serial.println("3");
\_74hc595\_send\_data(1 << 3);
break;
case 0b0110:
Serial.println("4");
\_74hc595\_send\_data(1 << 4);
break;
case 0b0100:
Serial.println("5");
\_74hc595\_send\_data(1 << 5);
break;
case 0b0010:
Serial.println("6");
\_74hc595\_send\_data(1 << 6);
break;
case 0b0000:
Serial.println("7");
\_74hc595\_send\_data(1 << 7);
break;
case 0b1111:
Serial.println("none");
\_74hc595\_send\_data(0);
break;
}
delay(10);
}

3、仿真结果

在这里插入图片描述

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