دمج الوحدات · الدرس 3.2

مسجل الإزاحة (74HC595 IC) والشاشة سباعية المقاطع (1 Digit 7-Segment Display)

العودة إلى الدروس

التعرف على الشاشة

ستتحكم بشاشة سباعية المقاطع (1 Digit 7-Segment Display) عبر 74HC595 لعرض الأرقام 0–9.

المكونات المطلوبة

مخطط أطراف الشاشة وأسماء المقاطع
مخطط أطراف الشاشة وأسماء المقاطع

أنماط الأرقام

ينطبق الجدول على المهبط المشترك. للمصعد المشترك بدّل كل 1 إلى 0 وكل 0 إلى 1. dp للنقطة العشرية والمقاطع من a إلى g.

الرقمdpabcdefg
001111110
100110000
201101101
301111001
400110011
501011011
601011111
701110000
801111111
901111011

توصيل الدائرة

مخطط 74HC595 والشاشة
مخطط 74HC595 والشاشة
توصيل الشاشة على لوحة التجارب (Breadboard)
توصيل الشاشة على لوحة التجارب (Breadboard)

خطوات التوصيل والبرنامج

الخطوة الأولى: 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طرف الشاشة والمقطع
Q07،‏ A
Q16،‏ B
Q24،‏ C
Q32،‏ D
Q41،‏ E
Q59،‏ F
Q610،‏ G
Q75،‏ 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);
}

ملفات الدرس والمكتبات

ملفات الدرس

100%

عرض الصورة

استخدم + و− للتكبير والتصغير، أو اضغط Esc للإغلاق.