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
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!