💡 گیت منطقی XOR (XOR Gate (74HC86))
| اسم انگلیسی | XOR Gate (74HC86) |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 🔀 گیتهای منطقی |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
گیت منطقی XOR یا یای انحصاری (XOR Gate) فقط وقتی خروجی ۱ میدهد که دو ورودیاش با هم فرق داشته باشند: یکی ۰ و دیگری ۱. اگر هر دو ۰ یا هر دو ۱ باشند، خروجی ۰ است. آیسی 74HC86 چهار گیت XOR دوورودی دارد. XOR سه کاربرد معروف دارد: کلید تبدیل راهپله (هر کدام از دو کلید را بزنی، وضعیت چراغ عوض میشود)، بیت جمع در نیمجمعکننده (Half Adder)، و تشخیص «فرق داشتن» دو سیگنال، مثل بررسی توازن (Parity) داده.
گیت XOR در ووکوی (Wokwi)
ووکوی در بخش منطق (Logic) گیت XOR ساده را دارد. ولی تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را به شکل آیسی 74HC86 ندارد. در کد آردوینو XOR عملگر ^ است و برای مقایسهی دو بیت کافی است.
در تینکرکد فارسی گیت XOR در هر دو مود رایگان است؛ مدار گیت XOR، درس گیت XOR و درس چراغ راهپله را ببین که همین منطق را با دو کلید تبدیل و بدون آیسی میسازد.
سیمکشی با آردوینو
دو کلید کشویی سهپایه نقش دو کلید راهپله را دارند. پایهی وسط هر کلید بسته به جای دسته به 5V یا GND وصل میشود، پس ورودی گیت هیچوقت شناور نیست و مقاومت پولداون لازم نیست.
| پایهی قطعه | وصل به |
|---|---|
| کلید اول: پایهی وسط | پایهی ۱ آیسی (1A) و پین 5 |
| کلید اول: دو پایهی کناری | یکی 5V و دیگری GND |
| کلید دوم: پایهی وسط | پایهی ۲ آیسی (1B) و پین 6 |
| کلید دوم: دو پایهی کناری | یکی 5V و دیگری GND |
| پایهی ۳ (1Y) | پین 7، و از راه ۲۲۰ اهم به آند LED «چراغ راهپله» (کاتد به GND) |
| پایهی ۱۴ (VCC) و پایهی ۷ (GND) | 5V و GND |
| ورودیهای بیاستفاده (۴، ۵، ۹، ۱۰، ۱۲، ۱۳) | GND |
کد نمونه
اینجا آردوینو فقط تماشاگر است: هر بار یکی از کلیدها جابهجا شود، وضعیت دو کلید و چراغ را چاپ میکند و جواب گیت را با XOR نرمافزاری a ^ b مقایسه میکند. هر کدام از کلیدها را عوض کنی، چراغ باید وضعیتش را عوض کند.
// 74HC86 staircase light: watch both switches and the gate output.
const int PIN_A = 5;
const int PIN_B = 6;
const int PIN_Y = 7;
int lastState = -1;
void setup() {
Serial.begin(9600);
pinMode(PIN_A, INPUT);
pinMode(PIN_B, INPUT);
pinMode(PIN_Y, INPUT);
}
void loop() {
int a = digitalRead(PIN_A);
int b = digitalRead(PIN_B);
int y = digitalRead(PIN_Y);
int state = a * 4 + b * 2 + y;
if (state != lastState) { // print only when something changes
lastState = state;
Serial.print("A=");
Serial.print(a);
Serial.print(" B=");
Serial.print(b);
Serial.print(" -> lamp ");
Serial.print(y ? "ON " : "OFF");
Serial.println(y == (a ^ b) ? " ok" : " WRONG");
}
delay(20);
}
اشتباههای رایج
- اشتباه گرفتن XOR با OR: وقتی هر دو کلید روشناند، OR چراغ را روشن نگه میدارد ولی XOR خاموشش میکند. همین فرق است که کلید راهپله را ممکن میکند.
- XOR سهورودی: زنجیر کردن دو XOR «فرد بودن تعداد یکها» را میدهد، نه «فقط یکی روشن است». برای سه ورودی جدول درستی را دوباره بنویس.
- ورودیهای بیاستفادهی رها: مثل بقیهی آیسیهای 74HC، ورودی سه گیت دیگر را به GND ببند.
- کلید دوپایه بهجای سهپایه: کلید دوپایه فقط وصل و قطع میکند و در حالت قطع ورودی را شناور میگذارد. یا کلید سهپایه بگذار یا یک مقاومت پولداون اضافه کن.
آموزشهای مرتبط
- مدار منطقی و دیجیتال، با کد نیمجمعکننده
- گیت AND؛ همراه XOR یک نیمجمعکننده میسازد
- کلید کشویی در ووکوی
- کلید SPDT (کلید تبدیل)
سؤالهای رایج
XOR با OR چه فرقی دارد؟
وقتی هر دو ورودی ۱ باشند، OR خروجی ۱ میدهد ولی XOR خروجی ۰. یعنی XOR فقط وقتی روشن است که ورودیها با هم فرق داشته باشند.
کلید تبدیل راهپله چه ربطی به XOR دارد؟
در کلید راهپله، عوض کردن هر کدام از دو کلید وضعیت چراغ را برعکس میکند؛ این دقیقاً جدول درستی XOR است. با 74HC86 و دو کلید کشویی همین را منطقی میسازی.