دمج الوحدات · الدرس 3.2
مسجل الإزاحة (74HC595 IC) والشاشة سباعية المقاطع (1 Digit 7-Segment Display)
العودة إلى الدروسالتعرف على الشاشة
ستتحكم بشاشة سباعية المقاطع (1 Digit 7-Segment Display) عبر 74HC595 لعرض الأرقام 0–9.
المكونات المطلوبة
- لوحة أردوينو (ELEGOO UNO R3) ولوحة تجارب (Breadboard) 830 نقطة.
- مسجل الإزاحة (74HC595 IC) وشاشة سباعية المقاطع ذات خانة واحدة (1 Digit 7-Segment Display).
- ثماني مقاومات (Resistor) 220Ω وستة وعشرون سلكًا ذكر إلى ذكر (Male to Male Jumper Wires).

أنماط الأرقام
ينطبق الجدول على المهبط المشترك. للمصعد المشترك بدّل كل 1 إلى 0 وكل 0 إلى 1. dp للنقطة العشرية والمقاطع من a إلى g.
| الرقم | dp | a | b | c | d | e | f | g |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 3 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 4 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
| 6 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 7 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 9 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
توصيل الدائرة


خطوات التوصيل والبرنامج
الخطوة الأولى: 74HC595
وصّل VCC، الطرف 16، و MR، الطرف 10، إلى 5V. وصّل GND، الطرف 8، و OE، الطرف 13، إلى الأرضي.
وصّل DS، الطرف 14، إلى D2 بالسلك الأصفر؛ و ST_CP، الطرف 12 أو Latch، إلى D3 بالسلك الأزرق؛ و SH_CP، الطرف 11 أو Clock، إلى D4 بالسلك الأبيض.
الخطوة الثانية: الشاشة
وصّل طرفي 3 و 8 إلى GND للمهبط المشترك؛ وللمصعد المشترك إلى +5V. وصّل كل خرج إلى مقطعه عبر مقاومة 220Ω:
| خرج 74HC595 | طرف الشاشة والمقطع |
|---|---|
| Q0 | 7، A |
| Q1 | 6، B |
| Q2 | 4، C |
| Q3 | 2، D |
| Q4 | 1، E |
| Q5 | 9، F |
| Q6 | 10، G |
| Q7 | 5، DP |
افتح ملف البرنامج 74HC595_And_Segment_Display.ino من ملفات الدرس في بيئة Arduino IDE. بعد إتمام التوصيلات، وصّل لوحة أردوينو (UNO R3 Board) بالحاسوب بكابل توصيل (USB Cable)، ثم اضغط زر Upload (رفع) لنقل البرنامج إلى اللوحة وتشغيله عليها.
إذا تعذر نقل البرنامج إلى اللوحة، فراجع قسم «رفع البرنامج ومعالجة خطأ الاتصال» في الدرس 1.5 «وميض LED وإضافة المكتبات» للتحقق من اتصال USB واختيار نوع اللوحة والمنفذ التسلسلي في بيئة Arduino IDE.
الكود
74HC595_And_Segment_Display/74HC595_And_Segment_Display.ino
//www.elegoo.com
//2016.12.12
// define the LED digit patterns, from 0 - 9
// 1 = LED on, 0 = LED off, in this order:
// 74HC595 pin Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7
// Mapping to a,b,c,d,e,f,g of Seven-Segment LED
byte seven_seg_digits[10] = { B11111100, // = 0
B01100000, // = 1
B11011010, // = 2
B11110010, // = 3
B01100110, // = 4
B10110110, // = 5
B10111110, // = 6
B11100000, // = 7
B11111110, // = 8
B11100110 // = 9
};
// connect to the ST_CP of 74HC595 (pin 3,latch pin)
int latchPin = 3;
// connect to the SH_CP of 74HC595 (pin 4, clock pin)
int clockPin = 4;
// connect to the DS of 74HC595 (pin 2)
int dataPin = 2;
void setup() {
// Set latchPin, clockPin, dataPin as output
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
// display a number on the digital segment display
void sevenSegWrite(byte digit) {
// set the latchPin to low potential, before sending data
digitalWrite(latchPin, LOW);
// the original data (bit pattern)
shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]);
// set the latchPin to high potential, after sending data
digitalWrite(latchPin, HIGH);
}
void loop() {
// count from 9 to 0
for (byte digit = 10; digit > 0; --digit) {
delay(1000);
sevenSegWrite(digit - 1);
}
// suspend 4 seconds
delay(3000);
}