- المكونات مطلوبة
- عرض شرائح مكون من 7 أرقام
- 74HC595 التحول سجل IC
- وحدة DS3231 RTC
- مخطط الرسم البياني
- برمجة Arduino UNO لتعدد عرض سبعة أجزاء
أصبحت ساعات الحائط الرقمية أكثر شيوعًا الآن وهي أفضل من الساعة التناظرية لأنها توفر وقتًا دقيقًا بالساعات والدقائق والثواني ويسهل قراءة القيم. تحتوي بعض الساعات الرقمية أيضًا على العديد من المرافق مثل عرض درجة الحرارة والرطوبة وضبط العديد من الإنذارات وما إلى ذلك. تستخدم معظم الساعات الرقمية عرض سبعة أجزاء.
لقد قمنا سابقًا ببناء العديد من دوائر الساعات الرقمية إما باستخدام شاشات 7 مقاطع أو باستخدام شاشة LCD مقاس 16 × 2. هنا يمكنك تصميمات PCB الكاملة للساعة الرقمية القائمة على AVR. يدور هذا البرنامج التعليمي حول صنع ساعة رقمية عن طريق مضاعفة شاشات العرض المكونة من أربعة إلى سبعة مقاطع باستخدام Arduino UNO وعرض الوقت بتنسيق HH: MM.
المكونات مطلوبة
- عرض شرائح مكون من 7 أرقام
- 74HC595 إيك
- وحدة DS3231 RTC
- اردوينو UNO
- اللوح
- توصيل الأسلاك
عرض شرائح مكون من 7 أرقام
تحتوي شاشة العرض المكونة من 4 أرقام المكونة من 7 أجزاء على أربعة شاشات عرض من سبعة أجزاء متصلة ببعضها البعض أو يمكننا القول أنها متعددة الإرسال معًا. يتم استخدامها لعرض القيم العددية وكذلك بعض الحروف الهجائية ذات الكسور العشرية والنقطتين. يمكن استخدام العرض في كلا الاتجاهين. أربعة أرقام مفيدة لصنع ساعات رقمية أو مثل عد الأرقام من 0 إلى 9999. يوجد أدناه الرسم التخطيطي الداخلي لعرض 4-Digit 7 Segment.
يحتوي كل جزء على LED واحد مع تحكم LED فردي. هناك نوعان من سبع شاشات عرض مثل الأنود المشترك والكاثود المشترك. تُظهر الصورة أعلاه شاشة عرض مقاطع من نوع الأنود 7 المشترك.
الأنود المشترك
في الأنود المشترك ، يتم توصيل جميع الأطراف الموجبة (الأنودات) لجميع مصابيح LED الثمانية معًا ، والتي تسمى COM. ويتم ترك جميع الأطراف السالبة بمفردها أو متصلة بدبابيس الميكروكونترولر. باستخدام متحكم دقيق ، إذا تم تعيين المنطق LOW لإضاءة مقطع LED المعين وتعيين المنطق High لإيقاف تشغيل LED.
الكاثود المشترك
في الكاثود المشترك ، يتم توصيل جميع المحطات السلبية (الكاثود) لجميع المصابيح الثمانية معًا ، وتسمى باسم COM. ويتم ترك جميع الأطراف الموجبة بمفردها أو متصلة بدبابيس وحدة التحكم الدقيقة. باستخدام متحكم ، إذا تم تعيين المنطق HIGH لإضاءة مؤشر LED وتعيين LOW لإيقاف تشغيل LED.
تعرف على المزيد حول شاشات 7 مقاطع هنا وتحقق من كيفية تفاعلها مع ميكروكنترولر أخرى:
- عرض 7 قطاعات تتفاعل مع Arduino
- 7 واجهة عرض شرائح مع Raspberry Pi
- واجهة عرض ذات سبعة أجزاء مع ARM7-LPC2148
- عرض 7 قطاعات تتداخل مع متحكم PIC
- عرض 7 قطاعات مع متحكم 8051
74HC595 التحول سجل IC
يُعرف IC 74HC595 أيضًا باسم 8-Bit Serial IN - Parallel OUT Shift Register. يمكن أن يتلقى هذا IC إدخال البيانات بشكل تسلسلي ويمكنه التحكم في 8 دبابيس إخراج على التوازي. هذا مفيد في تقليل المسامير المستخدمة من الميكروكونترولر. يمكنك العثور على جميع مشاريع 74HC595 ذات الصلة بتسجيل التحول هنا.
عمل 74HC595 IC:
يستخدم هذا IC ثلاثة دبابيس مثل Clock و Data & Latch مع وحدة التحكم الدقيقة للتحكم في دبابيس الإخراج الثمانية الخاصة بـ IC. يتم استخدام الساعة لتوفير نبضات مستمرة من وحدة التحكم الدقيقة ويتم استخدام دبوس البيانات لإرسال البيانات مثل الإخراج الذي يجب تشغيله أو إيقاف تشغيله في وقت الساعة المعني.
Pinout:
الرقم السري |
اسم الدبوس |
وصف |
1،2،3،4،5،6،7 |
دبابيس الإخراج (Q1 إلى Q7) |
يحتوي 74HC595 على 8 دبابيس إخراج منها 7 دبابيس. يمكن التحكم فيها بشكل متسلسل |
8 |
أرض |
متصل بأرضي متحكم |
9 |
(Q7) إخراج المسلسل |
يستخدم هذا الدبوس لتوصيل أكثر من 74HC595 كتتالي |
10 |
(MR) إعادة تعيين رئيسي |
يعيد تعيين جميع المخرجات على أنها منخفضة. يجب أن يكون مرتفعًا للتشغيل العادي |
11 |
(SH_CP) الساعة |
هذا هو دبوس الساعة الذي يجب توفير إشارة الساعة إليه من MCU / MPU |
12 |
(ST_CP) مزلاج |
يتم استخدام دبوس المزلاج لتحديث البيانات إلى دبابيس الإخراج. انها نشطة عالية |
13 |
(OE) تمكين الإخراج |
يتم استخدام Output Enable لإيقاف تشغيل المخرجات. يجب أن يظل منخفضًا للتشغيل العادي |
14 |
(DS) البيانات التسلسلية |
هذا هو الدبوس الذي يتم إرسال البيانات إليه ، بناءً عليه يتم التحكم في المخرجات الثمانية |
15 |
(Q0) الإخراج |
أول دبوس الإخراج. |
16 |
Vcc |
يقوم هذا الدبوس بتشغيل IC ، وعادة ما يتم استخدام + 5V. |
وحدة DS3231 RTC
DS3231 هو وحدة نمطية RTC. RTC تعني Real Time Clock. تُستخدم هذه الوحدة لتذكر الوقت والتاريخ حتى عندما لا يتم تشغيل الدائرة. يحتوي على بطارية احتياطية CR2032 لتشغيل الوحدة في حالة عدم وجود طاقة خارجية. تتضمن هذه الوحدة أيضًا مستشعر درجة الحرارة. يمكن استخدام الوحدة في المشاريع المدمجة مثل صنع ساعة رقمية بمؤشر درجة الحرارة وما إلى ذلك ، فيما يلي بعض المشاريع المفيدة التي تستخدمها:
- تغذية تلقائية للحيوانات الأليفة باستخدام الأردوينو
- واجهة وحدة RTC (DS3231) مع متحكم PIC: ساعة رقمية
- واجهة وحدة RTC (DS3231) مع MSP430: ساعة رقمية
- ساعة الوقت الحقيقي ESP32 باستخدام وحدة DS3231
- ساعة حائط رقمية على PCB باستخدام متحكم AVR Atmega16 و DS3231 RTC
دبوس DS3231:
اسم الدبوس |
استعمال |
VCC |
متصل بمصدر طاقة إيجابي |
GND |
متصل بالأرض |
SDA |
دبوس البيانات التسلسلي (I2C) |
SCL |
دبوس الساعة التسلسلي (I2C) |
SQW |
دبوس خرج الموجة المربعة |
32 ك |
خرج مذبذب 32K |
الميزات والمواصفات:
- تحسب RTC الثواني والدقائق والساعات والسنة
- مستشعر درجة حرارة رقمي بدقة ± 3 درجة مئوية
- سجل لتقليم الشيخوخة
- واجهة 400 كيلو هرتز I2C
- استهلاك منخفض للطاقة
- بطارية احتياطية CR2032 بعمر يصل إلى سنتين إلى ثلاث سنوات
- جهد التشغيل: 2.3 إلى 5.5 فولت
مخطط الرسم البياني
اتصال الدائرة بين DS3231 RTC و Arduino UNO:
DS3231 |
اردوينو UNO |
VCC |
5 فولت |
GND |
GND |
SDA |
A4 |
SCL |
A4 |
توصيلات الدائرة بين 74HC595 IC و Arduino Uno:
74HC595 إيك |
اردوينو UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (بيانات) |
4 |
13-OE (مزلاج) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5 فولت |
16-VCC |
+ 5 فولت |
توصيلات الدائرة بين IC 74HC595 و 4-Digit Seven Segment & Arduino UNO:
4-DigitSevenSegment |
IC 74HC595 |
اردوينو UNO |
أ |
س 0 |
- |
ب |
س 1 |
- |
ج |
س 2 |
- |
د |
س 3 |
- |
ه |
س 4 |
- |
F |
س 5 |
- |
جي |
س 6 |
- |
D1 |
- |
10 |
د 2 |
- |
11 |
د 3 |
- |
12 |
د 4 |
- |
9 |
برمجة Arduino UNO لتعدد عرض سبعة أجزاء
تم إرفاق الكود الكامل وفيديو العمل في نهاية هذا البرنامج التعليمي. في قسم البرمجة ، سيتم شرح كيفية أخذ الوقت (الساعة والدقيقة) من وحدة RTC بتنسيق 24 ساعة ثم يتم تحويلها إلى تنسيق خاص لعرضها في شاشة العرض المكونة من 4 أرقام.
لربط وحدة DS3231 RTC مع Arduino UNO ، يتم استخدام ناقل I2C من Arduino UNO. مكتبة تسمى
في هذا المفهوم ، يتم أخذ الساعة والدقيقة أولاً من RTC ويتم دمجهما معًا مثل 0930 (09:30 مساءً) ثم يتم فصل الأرقام الفردية مثل ألف ومائة وعشرات والوحدة وتحويل الأرقام الفردية إلى تنسيق ثنائي مثل 0 إلى 63 (0111111). يتم إرسال هذا الرمز الثنائي إلى سجل التحول ثم من سجل التحول إلى المقطع السبعة ، حيث يتم عرض الرقم 0 بنجاح في عرض سبعة مقاطع. بهذه الطريقة ، يتم مضاعفة الأرقام الأربعة ويتم عرض الساعة والدقيقة.
في البداية ، يتم تضمين المكتبة الضرورية مثل مكتبة DS3231 ومكتبة Wire (مكتبة I2C).
#تضمن
يتم تحديد المسامير للتحكم في الأجزاء السبعة. ستلعب عناصر التحكم هذه دورًا مهمًا في تعدد إرسال الشاشة.
#define latchPin 5 #define clockPin 6 # تعريف البياناتPin 4 #define dot 2
يتم التصريح عن المتغيرات لتخزين النتيجة المحولة أو الأولية المأخوذة من RTC.
ح ح // المتغير المعلن للساعة int m ؛ // المتغير المعلن عن الدقيقة int آلاف مئات كثافة العمليات عشرات int وحدة int منطقي h24 ؛ منطقي PM ؛
بعد ذلك ، يتم الإعلان عن الكائن الخاص بالفئة DS3231 على أنه RTC لتبسيط الاستخدام في سطور أخرى.
DS3231 RTC ؛
حيث يتم ربط وحدة RTC مع Arduino باستخدام اتصال I2C. لذلك ، يتم استخدام wire.begin () لبدء اتصال I2C في العنوان الافتراضي لـ RTC حيث لا توجد وحدات I2C أخرى.
Wire.begin () ؛
يتم تحديد وضع الدبوس ، سواء كان GPIO سيتصرف كإخراج أو إدخال.
pinMode (9 ، الإخراج) ؛ pinMode (10 ، الإخراج) ؛ pinMode (11 ، الإخراج) ؛ pinMode (12 ، الإخراج) ؛ pinMode (latchPin ، الإخراج) ؛ pinMode (clockPin ، الإخراج) ؛ pinMode (dataPin ، الإخراج) ؛ pinMode (نقطة ، الإخراج) ؛
تعمل الحلقة بلا حدود وتستغرق الوقت بالساعة والدقيقة من الوحدة النمطية RTC DS3231. يشير "h24" إلى متغير تنسيق 24 ساعة.
int h = RTC.getHour (h24، PM) ؛ int m = RTC.getMinute () ؛
ثم يتم الجمع بين الساعة والدقيقة كرقم واحد (مثال إذا كانت الساعة 10 والدقيقة 60 ، فإن الرقم هو 10 * 100 = 1000 + 60 = 1060).
عدد int = h * 100 + m ؛
و يتم الحصول على الأرقام الفردية من عدد (على سبيل المثال 1060- 1 غير ألف، 0 وhundered (1)، هو العاشر و0 هو الرقم الأخير). لفصل الأرقام ، يتم استخدام عامل المعامل. على سبيل المثال ، في 1060 للحصول على 1 ثم 1060/1000 = 1.06٪ 10 = 1). لذلك يتم تخزين الأرقام المنفصلة في متغيرات منفصلة.
عدد الآلاف = عدد / 1000٪ 10 ؛ المئات كثافة العمليات = عدد / 100٪ 10 ؛ عشرات int = عدد / 10٪ 10 ؛ وحدة int = عدد٪ 10 ؛
بعد ذلك يتم تحديد بيان حالة التبديل لكل رقم فردي لتحويلها إلى تنسيق خاص (تنسيق ثنائي) وإرسالها عبر سجل التحول لعرضها في 7 مقاطع. على سبيل المثال (بالنسبة لرقم واحد يتم تغييره إلى 06 (0000 0110)). بحيث يتم إرسالها عبر التحول ويتم عرض رقم واحد في مقطع 7 (0 لـ LOW ، 1 لـ HIGH).
التبديل (t) { الحالة 0: الوحدة = 63 ؛ استراحة؛ الحالة 1: الوحدة = 06 ؛ استراحة؛ الحالة 2: الوحدة = 91 ؛ استراحة؛ الحالة 3: الوحدة = 79 ؛ استراحة؛ الحالة 4: الوحدة = 102 ؛ استراحة؛ الحالة 5: الوحدة = 109 ؛ استراحة؛ الحالة 6: الوحدة = 125 ؛ الحالة 7: الوحدة = 07 ؛ استراحة؛ الحالة 8: الوحدة = 127 ؛ استراحة؛ الحالة 9: الوحدة = 103 ؛ استراحة؛ }
ثم يتم إرسال الرقم الفردي بتنسيق ثنائي عبر وظيفة "shiftout" مع MSB أولاً ويتم جعل دبوس الرقم الخاص مرتفعًا ويكون دبوس المزلاج مرتفعًا.
digitalWrite (9 ، منخفض) ؛ digitalWrite (latchPin ، منخفض) ؛ shiftOut (dataPin ، clockPin ، MSBFIRST ، الآلاف) ؛ digitalWrite (latchPin ، عالية) ؛ digitalWrite (9 ، عالية) ؛ تأخير (5) ؛
هذا ينتهي من الكود الكامل. يتم تقديم معظم شرح الوظيفة في قسم التعليق على الكود بجوار سطر الكود. سيحدد تردد الساعة عرض الوقت وجودة مضاعفة الإرسال إذا تم استخدام ساعة منخفضة ، فيمكن رؤية الخفقان كما لو كانت سرعة الساعة عالية ، فلن يكون هناك مثل هذا الخفقان ويمكن رؤية وقت ثابت.
لاحظ أنه للوصول إلى وحدة RTC ، يجب الحفاظ على جهد ناقل I2C. لتقديم أي اقتراح أو إذا كان لديك أي شك ، يرجى التعليق أدناه.