قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-12-2019, 12:34 PM المشاركة 41   
افتراضي مسجلات الإزاحة Shift Registers ومسجل الإزاحة 74HC595 والربط مع الأردوينو



مسجلات الإزاحة Shift Registers ومسجل الإزاحة 74HC595 والربط مع الأردوينو
مسجلات الإزاحة Shift Registers :
مقدمة :




ما هو مسجل الإزاحة What is Shift Register :
مسجلات الإزاحة هي دوائر منطقية متسلسلة (متتابعة) sequential logic circuits ، قادرة على تخزين ونقل البيانات. وهي مكونة من قلابات (فليب فلوب) Flip Flops والتي ترتبط (تتصل) بطريقة تجعل خرج فليب فلوب بمثابة دخل فليب فلوب آخر ، اعتمادًا على نوع مسجلات الإزاحة التي يتم إنشاؤها.



D-Flip Flop shift Register

مسجلات الإزاحة هي في الأساس نوع من السجلات register التي لديها القدرة على نقل transfer ("إزاحة " shift ) البيانات. السجلات عبارة عن أجهزة تخزين عامة يتم إنشاؤها عن طريق توصيل عدد معين من الفليب فلوب معًا في سلسلة ، كما أن كمية البيانات (عدد البتات) التي يمكن تخزينها بواسطة السجل تتناسب دائمًا مع عدد الفليب فلوب ، حيث إن كل فليب فلوب قادر على تخزين بت واحد فقط في كل مرة. عندما يتم توصيل فليب فلوب في السجل بطريقة تجعل خرج فليب فلوب ، يصبح دخل لآخر ، عندئذ يتم إنشاء مسجل الإزاحة.


D Flip-Flop

الفليب فلوب (القلاب) Flip Flops هي أجهزة لها عمل مشابهة لعمل المزلاج latch . يمكن أن يشار إليها على أنها هزاز ثنائى الاتزان bistable vibrator والذي يمكن أن ينتقل بين حالتين (0 أو 1) ويكون قادرًا على تخزين البيانات بالبت. تتم قراءة البيانات الجديدة في الفليب فلوب مع كل دورة ساعة والبيانات السابقة ترسل إلى الخرج . ومع ذلك ، يعتمد هذا على نوع القلاب FF ، حيث تختلف العلاقة بين المدخلات والمخرجات ودورة الساعة باختلاف القلاب . هناك أنواع مختلفة القلابات ، ولكن الأكثر شيوعًا في إنشاء مسجلات الإزاحة هي القلابات D (Delay)-flip flops .
عمل القلابات D flip flops والذى يجعلها مرغوبة جدًا لمسجلات الإزاحة ، هو أنه كلما كان هناك تغيير في ساعة القلاب D (إما حافة صاعدة أو هابطة ، اعتمادًا على مواصفات flip flop) ، تصبح البيانات في الخرج "Q" هي نفس البيانات الموجودة في الدخل "D". سيبقى الخرج "Q" من القلاب عند هذه القيمة حتى دورة الساعة التالية ، حيث سيتغير مرة أخرى إلى القيمة (مرتفعة High أو منخفضة low ، 1 أو 0) عند الدخل .



D Flip Flop Truth Table

أنواع مسجلات الإزاحة Types of Shift Registers
يتم تصنيف مسجلات الإزاحة إلى أنواع بشكل رئيسي حسب طريقة تشغيلها ، سواء كانت متسلسلة serial أو متوازية parallel .
هناك ستة (6) أنواع أساسية من مسجلات الإزاحة مدرجة أدناه على الرغم من إمكانية تقسيم بعضها إضافيا على أساس اتجاه تدفق البيانات إما إزاحة إلى اليمين أو إزاحة إلى اليسار.
1. مسجل إزاحة "دخل تسلسلى خرج تسلسلى " Serial in – Serial out Shift Register (SISO)
2. مسجل إزاحة "دخل تسلسلى خرج متوازى " Serial In – Parallel out shift Register (SIPO)
3. مسجل إزاحة "دخل متوازى خرج متوازى " Parallel in – Parallel out Shift Register (PIPO)
4. مسجل إزاحة "دخل متوازى خرج متسلسل " Parallel in – Serial out Shift Register (PISO)
5. مسجل إزاحة ثنائى الاتجاه Bidirectional Shift Registers
6. عدادات Counters
سوف يقتصر الحديث على النوع الثانى الذى يندرج تحته مسجل الإزاحة 74HC595 .

مسجل الإزاحة "دخل متسلسل خرج متوازى" Serial in – Parallel out Shift Register
يستخدم هذا النوع من مسجلات الإزاحة لتحويل البيانات من بيانات تسلسلية إلى بيانات متوازية . تأتي البيانات في صورة بت واحدة تلو الأخرى في كل دورة ساعة ويمكن إما أن يتم إزاحتها واستبدالها أو قراءتها في كل خرج . هذا يعني أنه عند قراءة البيانات ، تصبح كل قراءة بت متاحة في وقت واحد على خط الخرج الخاص بها (Q0 - Q3 لمسجل إزاحة 4 بت الموضح أدناه).
مسلسل مكون من 4 بتات - سجل التحويل الموازي للخارج موضح في الصورة أدناه.


Serial in – Parallel out Shift Register
يظهر أدناه جدول يوضح كيف يتم نقل (إزاحة) البيانات فى مسجل إزاحة "دخل متسلسل خرج متوازى" 4 بت ، مع بيانات الدخل 1001.




مثل جيد لمسجل إزاحة دخل متسلسل خرج متوازى ، مسجل الإزاحة 74HC164 ، وهو مسجل إزاحة 8 بت.
يتميز مسجل الإزاحة هذا بأن له مدخلين للبيانات التسلسلية (DSA و DSB) ، وثمانية مخارج بيانات متوازية (Q0 إلى Q7). يتم إدخال البيانات بشكل تسلسلي من خلال DSA أو DSB ويمكن استخدام أي من المدخلين كتمكين نشط فى الحالة المرتفعة active HIGH enable من أجل المدخل الآخر . يتم نقل (إزاحة) البيانات عند التحول من الحالة المنخفضة إلى الحالة المرتفعة LOW-to-HIGH على دخل نبضة الساعة clock (CP) . تطبيق الحالة المنخفضة LOW على مدخل الإعادة الرئيسي (MR) (الدائرة الصغيرة تعنى أنه فعال فى الحالة المنخفضة) يمسح السجل ويجبر جميع المخارج على الحالة المنخفضة LOW ، بشكل مستقل عن المدخلات الأخرى. وتشمل المدخلات الثنائيات المشبك. وهذا يتيح استخدام مقاومات الحد الحالية لواجهة المدخلات إلى الفولتية التي تتجاوز VCC.



74HC164 Functional Diagram


اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-12-2019, 12:46 PM المشاركة 42   
افتراضي


مسجل الإزاحة 74HC595 :
مسجل إزاحة 8 بت ، دخل تسلسلى ، خرج تسلسلى أو متوازى ، مع مخارج بمزالج (اقفال) latches ، ثلاثية الحالة .
الدائرة المتكاملة 74HC595 عبارة عن مسجل إزاحة shift register 8- بت دخل تسلسلى ، خرج تسلسلى أو متوازى ، ومسجل تخزين storage register بمخارج ثلاثية الحالة . يحتوي كل من مسجل الإزاحة ومسجل التخزين على ساعات clocks منفصلة. يحتوي الجهاز على مدخل تسلسلي (DS) ومخرج تسلسلي (Q7S) لتمكين التوصيل المتتابع (المتتالى) cascading ومدخل إعادة رئيسى MR غير متزامن asynchronous . تطبيق الحالة المنخفضة LOW على الطرف MR ينتج عنه إعادة تعيين reset مسجل الإزاحة . يتم نقل (إزاحة) البيانات عند الانتقال (التحول) من الحالة المنخفضة إلى الحالة المرتفعة LOW-to-HIGH على دخل ساعة مسجل الإزاحة SHCP . يتم نقل البيانات الموجودة في مسجل الإزاحة إلى مسجل التخزين عند الانتقال من الحالة المنخفضة إلى الحالة المرتفعة LOW-to-HIGH على مدخل ساعة مسجل التخزين STCP. تظهر البيانات الموجودة في مسجل التخزين عند المخارج عندما يكون مدخل تمكين المخارج (OE) فى الحالة المنخفضة LOW . تؤدي الحالة المرتفعة HIGH على الطرف OE إلى ظهور المخرجات في حالة معاوقة مرتفعة ، حالة إيقاف OFF-state (الحالة الثالثة) . لا يؤثر عمل الدخل OE على حالة المسجلات.

المخطط الوظيفى Functional diagram:




الرمز المنطقى Logic symbol :


وصف الأطراف :
المداخل INPUTS:
• الطرف DS (Pin 14) : مدخل البيانات التسلسلية Serial Data Input .
يتم نقل (إزاحة) البيانات الموجودة على هذا الطرف إلى مسجل الإزاحة التسلسلي 8 بت .

مداخل التحكم CONTROL INPUTS:
• الطرف SHCP (Pin 11) : مدخل ساعة مسجل الإزاحة Shift Register Clock Input .
يؤدي الانتقال transition من الحالة المنخفضة إلى الحالة المرتفعة low− to−high على هذا المدخل إلى إزاحة البيانات الموجودة على طرف المدخل التسلسلي إلى داخل سجل الإزاحة ذي 8- بت.
• الطرف MR (Pin 10) : مدخل إعادة مسجل الإزاحة Shift Register Reset Input ، فعال فى الحالة المنخفضة Active−low ، غير متزامن Asynchronous .
الحالة المنخفضة lowعلى هذا الطرف تؤدى إلى إعادة تعيين جزء سجل الإزاحة فقط من هذا الجهاز . لا يتأثر جزء مسجل التخزين (المزلاج) 8 بت.
• الطرف STCP (Pin 12) : مدخل ساعة مزلاج التخزين Storage Latch Clock Input .
يؤدي الانتقال من الحالة المنخفضة إلى الحالة المرتفعة على هذا المدخل إلى إمساك latch بيانات مسجل الإزاحة (إخراج بيانات مسجل الإزاحة إلى أطراف الخرج) .
• الطرف OE (Pin 13) : مدخل تمكين الخرج . فعال فى الحالة المنخفضة Active−low .
الحالة المنخفضة low على هذا الدخل تسمح بعرض البيانات من المزالج latches إلى المخارج . تؤدي الحالة المرتفعة high على هذا الدخل إلى إجبار المخرجات (Q0 – Q7) إلى في حالة المعاوقة المرتفعة high−impedance state (الحالة الثالثة) . لا يتأثر الخرج التسلسلي بوحدة التحكم هذه.

المخارج OUTPUTS :
• الأطراف Q0 – Q7 (Pins 15, 1, 2, 3, 4, 5, 6, 7) : مخارج بمزلاج latch outputs ، لها 3- حالات 3−state ( منخفض – مرتفع – معاوقة مرتفعة ) ، غير معكوسة Noninverted .
• الطرف Q7S (Pin 9) : مخرج البيانات التسلسلية Serial Data Output ، غير معكوس .
هذا هو خرج المرحلة الثامنة من سجل الإزاحة 8- بت. هذا الخرج ليس له القدرة على الثلاث حالات.

المخطط المنطقى Logic diagram :



الوصف الوظيفى Functional description :



المخطط الزمنى (التوقيت) Timing diagram :




اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-12-2019, 02:05 PM المشاركة 43   
افتراضي


مسجل الإزاحة (74HC595) Shift Register وزيادة عدد مخارج الاردوينو :



مسجل الإزاحة هو دائرة متكاملة (IC) خارجية يمكن استخدامها لتوسيع (زيادة) عدد أطراف الخرج المتاحة لنا. بشكل أساسي ، يسمح لك بتحويل الدخل التسلسلي من طرف واحد (بت واحد تلو الآخر) إلى إشارات خرج متوازية متعددة (جميعها مرة واحدة على خطوط منفصلة).
مسجل الإزاحة المستخدم هو الدائرة المتكاملة الشهيرة 74HC595. وهى لديها 8 خطوط خرج والتي تسمح لك بمعالجة واستخدام بايت Byte للإخراج في التعليمات البرمجية الخاصة بك.



فكيف يعمل ؟ يتكون مسجل الإزاحة هذا من مسجلين (سجلين) registers ، وهى وحدات ذاكرة والتي يمكن أن تحفظ عدة قيم ثنائية مرتبة (8 بت لهذه الدائرة المتكاملة ). هذه المسجلات هى :
• مسجل (سجل) الإزاحة shift register ، الذي يحفظ 8 قيم قبل كتابتها إلى أطراف الخرج . يمكن "زحزحة " shift القيم خلال هذا المسجل من موضع إلى آخر ، بدءًا من الموضع “A” إلى الموضع “H” .
• مسجل (سجل) التخزين storage register ، الذي يأخذ القيم من سجل الإزاحة ويرسلها إلى خطوط إخراج البيانات ، المسماة QA إلى QH ( وهى نفسها المخارج Q0 إلى Q7 ) . على سبيل المثال ، المنطق 1 في الموضع "C" من سجل التخزين من شأنه أن يخلق إشارة مرتفعة HIGH على الخرج QC .
هناك ثلاثة أطراف على IC نستخدمها للتحكم فى الاردوينو . اثنان من هذه الأطراف عبارة عن نبضات توقيت ، ساعات clocks: وهى مدخلات خاصة تؤدي إلى تشغيل (قدح) IC لفعل شيء ما عندما تتلقى إشارة تتغير من LOW إلى HIGH (تُعرف أيضًا باسم نبضة pulse أو الحافة الصاعدة rising edge).
• الطرف SER (أو DS ) :
طرف البيانات التسلسلية Serial data pin ، وهو خط إدخال البيانات التسلسلية. عندما تطبيق الساعة التسلسلية أو ساعة مسجل الإزاحة (SRCLK) (أو SH_CP ) ، يتم تخزين الإشارة الموجودة على هذا الخط في الموضع الأول (“A”) من سجل الإزاحة.
• الطرف SRCLK (أو SH_CP ) :
طرف الساعة التسلسلية Serial clock ، عند تطبيق نبضة ، تقوم بإزاحة كل قيمة في مسجل الإزاحة للأمام بمقدار موضع واحد ، ثم تقوم بتحميل القيمة من الطرف SER إلى الوضع "A". لاحظ أن هذا لا يغير الإشارات على خطوط الإخراج حتى تقوم بتطبيق نبضة ساعة مسجل التخزين (الماسك Latch ) (RCLK).
• الطرف RCLK (أو ST_CP ):
طرف ساعة سجل التخزين أو طرف ساعة الماسك Register clock, “latch pin” ، عند تطبيق نبضة ، يتم تحديث سجل التخزين storage register بقيم جديدة من سجل الإزاحة shift register ، وإرسال مجموعة جديدة من الإشارات إلى أطراف الخرج الثمانية . يحدث هذا بسرعة بحيث يبدو أنهم جميعا يتغيرون في وقت واحد!
ضع في اعتبارك أن القيمة الأولى first التي ترسلها إلى سجل الإزاحة shift register سيتم إزاحتها نحو آخر last طرف خرج عند إرسال المزيد من البيانات.
دعنا نقول أننا نريد إرسال البتات التالية : 10101010. من البديهي ، أنه من الأسهل إرسال كل بت في الرقم من اليسار إلى اليمين كما لو كانت سلسلة . إرسالها بهذه الطريقة يعني أنه بعد أن نرسل الثمانية بتات ، سيتم نقل البت الأولى فعليًا إلى آخر خرج (QH) ، وسيتم إزاحة البت الثانية إلى الخرج الثاني قبل الأخير (QG) ) ، وهلم جرا حتى يتم عكس كل شيء! تُعرف طريقة إزاحة القيم هذه بالبت الأكثر أهمية (MSB) أولاً. كما يمكن إرسال بت أقصى اليمين أو الأقل أهمية (LSB) أولاً ، كما سنرى فى البرمجة .

مخطط الأطراف :
الشكل أدناه يبين مخطط أطراف 74HC595 :



على الجانب الأيمن من الشريحة ، يمكنك رؤية أطراف التحكم الثلاثة الموضحة أعلاه ، بالإضافة إلى الخرج الأول (QA). على الجانب الأيسر ، يمكنك رؤية المخرجات السبعة الأخرى (QB - QH).

التحكم فى مسجل الإزاحة :
إذن كيف يمكن السماح لنا بالتحكم في مخارج متعددة باستخدام طرف بيانات واحد؟ حسنًا ، دعنا نقول أن لدينا 8 ليدات متصلة بالمخارج ، ونريد تشغيل الليد الثانية والرابعة والثامنة مثل: 10001010 .
• فى البداية ، سنقوم بمسح مسجل الإزاحة بحيث يتم إيقاف تشغيل جميع الليدات من خلال كتابة ثمانية أصفار في سجل الإزاحة ، ثم تطبيق نبضة على طرف المزلاج latch لكتابة المخرجات على خطوط المخرجات . يتم ذلك عن طريق ضبط الطرف SER على الوضع LOW مع الاستمرار ، ثم تطبيق 8 مرات لنبضات ساعة على الطرف SRCLK ، ثم تطبيق نبضة واحدة على الطرف RCLK.
• لكل بت من الشكل 10001010 يتم :
1- تحديد طرف البيانات SER إلى القيمة HIGH أو LOW.
2- تطبيق نبضة ساعة مسجل الإزاحة SRCLK من LOW إلى HIGH (حافة صاعدة) لإزاحة القيمة من الطرف SER إلى مسجل الإزاحة .
نكرر الخطوتين السابقتين (على سبيل المثال ، باستخدام حلقة أو دالة مخصصة لهذا الغرض كما هو الحال مع الاردوينو ) حتى يتم إزاحة جميع القيم الثمانية. ثم نطبق نبضة ساعة على الطرف RCLK لكتابة هذه القيم في سجل التخزين وخطوط المخارج ، التي تعمل على تشغيل الليدات حسب الحالة .
وبهذه الطريقة ، يمكننا التحكم في ما يصل إلى 8 مخارج مختلفة باستخدام فقط 3 أطراف دخل / خرج .
إليك مخطط يبين ملخص ما وصفناه للتو.



تسلسل ديزي Daisy-Chaining
يمكن أيضًا ربط مسجلات الإزاحة في سلسلة مع بعضها البعض لتوسيع عدد خطوط البيانات (المخارج) التي يمكن التحكم فيها مرة واحدة. يمكننا القيام بذلك عن طريق استخدام الطرف QH (Q7S)(الخرج التسلسلى ) ، والذي يتم توصيله داخل سجل الإزاحة إلى آخر خرج QH.
ما عليك سوى توصيل الطرف SER (DS) الخاص بسجل إزاحة بالطرف QH (Q7S) (الخرج التسلسلى) بسجل إزاحة آخر ، وتوصيل الأطراف SRCLK و RCLK الخاصة بهم معًا. بهذه الطريقة ، عندما تقوم بتوصيل نبضة SRCLK ، ستقرأ الشريحة الثانية من آخر خرج للشريحة الأولى ، وعندما تقوم بتوصيل نبضة على RCLK ، ستقوم كلا الرقاقتين بتحديث خطوط الخرج الخاصة بها. هذا شيء عظيم لأن هذا لا يتطلب أي أطراف دخل / خرج إضافية من الاردوينو !
لقد قمت الآن بإنشاء مسجل إزاحة 16 بت ، ويمكنك تمديد السلسلة بشكل أكبر بإضافة المزيد من الرقائق بالطريقة نفسها المذكورة أعلاه. هذا هو المعروف باسم تسلسل ديزي daisy-chaining .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-12-2019, 02:42 PM المشاركة 44   
افتراضي


التدريب الأساسى :
كيف يعمل مسجل الإزاحة 74HC595 وربطه مع الاردوينو :
كيف يعمل مسجل الإزاحة 74HC595 ؟

يحتوي 595 على سجلين (مسجلين) (يمكن اعتبارهما "حاويات ذاكرة") ، يحتوي كل منها على 8 بتات فقط من البيانات. أول واحد يسمى سجل الإزاحة Shift Register . يقع سجل الإزاحة عميقًا داخل دوائر IC ، ويقبل الدخل بهدوء.

كلما طبقنا نبضة الساعة clock على 595 ، يحدث شيئان:
• تنتقل البتات الموجودة في Shift Register خطوة واحدة إلى اليسار. على سبيل المثال ، يقبل Bit 7 القيمة التي كانت موجودة سابقًا في bit 6 ، بينما تحصل bit 6 على قيمة bit 5 إلخ.
• تقبل البت bit 0 في مسجل الإزاحة Shift Register القيمة الحالية على طرف البيانات DATA. عند الحافة الصاعدة لنبضة الساعة ، إذا كان طرف البيانات فى الحالة المرتفعة high ، يتم دفع 1 في سجل الإزاحة. خلاف ذلك ، يكون 0.

عند تمكين طرف Latch (فى الحالة المنخفضة) ، يتم نسخ محتويات سجل الإزاحة Shift Register في السجل الثاني ، ويسمى سجل التخزين Storage أو سجل المزلاج Latch . كل بت من سجل التخزين متصل بأحد أطراف الخرج Q0-Q7 الخاصة بالدائرة المتكاملة ، ولذلك بشكل عام ، عندما تتغير القيمة في "سجل التخزين" ، تتغير المخرجات كذلك.
يمكنك فهم هذا بشكل أفضل مع الرسم التوضيحي الموضح أدناه.



برنامج إضاءة 8 ليد على التتابع ، ليد تلو الآخر :
الدائرة الكهربية :




البرنامج :


كود:
int latchPin = 5;	// Latch pin of 74HC595 is connected to Digital pin 5
int clockPin = 6;	// Clock pin of 74HC595 is connected to Digital pin 6
int dataPin = 4;	// Data pin of 74HC595 is connected to Digital pin 4

byte leds = 0;		// Variable to hold the pattern of which LEDs are currently turned on or off

void setup() 
{
  // Set all the pins of 74HC595 as OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}

void loop() 
{
  leds = 0;	// Initially turns all the LEDs off, by giving the variable 'leds' the value 0
  updateShiftRegister();
  delay(500);

  for (int i = 0; i < 8; i++)	// Turn all the LEDs ON one by one.
  {
    bitSet(leds, i);		// Set the bit that controls that LED in the variable 'leds'
    updateShiftRegister();
    delay(500);
  }
}

/*
 * updateShiftRegister() - This function sets the latchPin to low, then calls the Arduino function 'shiftOut' to shift out contents of variable 'leds' in the shift register before putting the 'latchPin' high again.
 */
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

شرح البرنامج :
أول شيء نقوم به هو تعريف 3 أطراف التحكم : latch و clock و data للدائرة المتكاملة 595 . سنقوم بتوصيلها بأطراف الاردوينو 5 و 6 و 4 على الترتيب .

كود:
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;

بعد ذلك ، يتم تعريف متغير يسمى ‘leds’ . سيتم استخدام هذا المتغير لحفظ النمط الذي يتم فيه تشغيل أو إيقاف تشغيل الليدات حاليًا. يمثل نوع البيانات ‘byte’ الأعداد التي تستخدم ثمانية بتات. يمكن تشغيل كل بت أو إيقاف تشغيلها ، لذلك فهو مثالي لتتبع أي من الليدات الثمانية الخاصة بنا تعمل on أو متوقفة off .

كود:
// Variable to hold the pattern of which LEDs are currently turned on or off
byte leds = 0;

في الدالة ‘setup‘ : نقوم ببساطة بتهيئة الأطراف الثلاثة لتكون مخارج رقمية.

كود:
void setup() 
{
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}
الدالة loop : في البداية تقوم بإيقاف تشغيل جميع الليدات ، عن طريق تعيين كل البتات الخاصة بالمتغير 'leds' على 0. ثم تقوم باستدعاء الدالة المعرفة بمعرفة المستخدم والتي تسمى updateShiftRegister() والتي سترسل نموذج 'leds' إلى سجل الإزاحة بحيث تكون جميع الليدات فى حالة إيقاف off . سنتعرف على كيفية عمل هذه الدالة لاحقًا.
يتوقف البرنامج لمدة نصف ثانية ، ثم يبدأ العد من 0 إلى 7 باستخدام حلقة "for" والمتغير "i". في كل مرة ، تستخدم الدالة bitSet() لتعيين set البت (جعله بواحد) الذي يتحكم في ليد معين في المتغير'leds'. ثم يتم إستدعاء الدالة updateShiftRegister() بحيث تتغير حالة الليدات وفقًا لما هو موجود في المتغير ‘leds’ .
ثم هناك تأخير لمدة نصف ثانية قبل زيادة "i" ويضيء الليد التالى .


كود:
void loop() 
{
  leds = 0;
  updateShiftRegister();
  delay(500);

  for (int i = 0; i < 8; i++)
  {
    bitSet(leds, i);
    updateShiftRegister();
    delay(500);
  }
}

تقوم الدالة updateShiftRegister() ، أولاً وقبل كل شيء بتعيين طرف المزلاج latch Pin على الحالة المنخفضة LOW ، ثم تستدعي الدالة shiftOut() قبل وضع طرف المزلاج على الحالة المرتفعة HIGH مرة أخرى.
لحسن الحظ ، يوفر الاردوينو Arduino دالة مساعدة خصيصًا لسجلات الإزاحة التي تسمى shiftOut() ، والتي تتيح لنا ببساطة إزاحة البتات في استدعاء واحد.
تأخذ الدالة shiftOut() أربعة بارامترات ؛ أول اثنين هما الأطراف المستخدمة فى البيانات Data والساعة Clock على التوالي. يحدد البارامتر الثالث نهاية البيانات التي تريد البدء بها. سنبدأ بالبايت أقصى اليمين ، والذي يشار إليه باسم "بت الأقل أهمية" (LSB).
البارامتر الأخير هو البيانات الفعلية المراد إزاحتها إلى سجل الإزاحة ، وهى في هذه الحالة ‘leds’ .


كود:
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

بمجرد تحميل الكود إلى Arduino ، سترى أن الإخراج يظهر كما يلي:





إذا كنت ترغب في إيقاف تشغيل أحد الليدات بدلاً من تشغيله ، يمكنك استدعاء دالة Arduino مماثلة وهى bitClear() للمتغير 'leds'. سيؤدي ذلك إلى تعيين هذا البت المعين من ‘leds’ على الصفر وستحتاج فقط إلى استدعاء الدالة updateShiftRegister() لتحديث الليدات الفعلية.


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-12-2019, 02:52 PM المشاركة 45   
افتراضي


التحكم فى السطوع Brightness باستخدام PWM
إليك مشروع آخر ، يستند إلى نفس الإعداد ولكن مع اختلاف بسيط ، حيث نتعامل مع طرف تحكم آخر على IC ، أي تمكين الخرج OE وبذلك ، يمكننا التحكم في سطوع ليدات المخارج .
لقد تعلمنا بالفعل أن الطرف OE (تمكين الخرج ) يعمل بمثابة مفتاح. عندما يتم تعيين هذا الطرف على الحالة المرتفعة HIGH ، يتم تعطيل disabled أطراف الخرج (فعال فى الحالة المنخفضة أى يعمل بالمنطق السالب ، تذكر؟). وعندما يحصل الطرف OE على الجهد المنخفض ، تعمل أطراف الخرج بشكل طبيعي.
في مثالنا السابق ، قمنا بتوصيل هذا الطرف توصيل دائم بالأرضى ، مما مكّن المخارج طوال الوقت. إذا قمنا بتوصيل هذا الطرف بأي من أطراف Arduino الرقمية وبرمجته لتبديل حالته ، فيمكننا الحصول على شيء كما هو موضح أدناه.



لكن بدلاً من القيام بذلك ، يمكننا استخدام هذا الطرف مع الدالة analogWrite() للتحكم في سطوع الليدات باستخدام PWM. لذلك ، يمكننا الحصول على نتيجة مثل تلك الموضحة أدناه.



في الواقع ستظل الأجزاء المرتفعة HIGH من إشارة PWM تتسبب في تعطيل الطرف OE مؤقتًا لجميع مخرجات IC. لكن هذا سيحدث ، بالطبع ، أسرع مما يمكن أن تراه أعيننا بشكل مباشر ، لكننا بالتأكيد سنشعر بوجود تباين في السطوع الكلي.
للقيام بذلك ، كل ما عليك القيام به ، هو تغيير توصيل الطرف 13 من 74HC595 . لذلك بدلاً من توصيله بالأرضى ، يمكنك توصيله بالطرف 3 من Arduino.
البرنامج التالى يقوم بإضاءة الليدات زاحد تلو الآخر حتى اضىء كلها ثم يحدث لها خفوت فى إضاءة جميع الليدات تدريجيا حتى التوقف off ويتكرر العمل .

كود:
int latchPin = 5;		// Latch pin of 74HC595 is connected to Digital pin 5
int clockPin = 6;		// Clock pin of 74HC595 is connected to Digital pin 6
int dataPin = 4;		// Data pin of 74HC595 is connected to Digital pin 4
int outputEnablePin = 3;	// OE pin of 74HC595 is connected to PWM pin 3

byte leds = 0;		// Variable to hold the pattern of which LEDs are currently turned on or off

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup() 
{
  // Set all the pins of 74HC595 as OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
  pinMode(outputEnablePin, OUTPUT); 
}

/*
 * loop() - this function runs over and over again
 */
void loop() 
{
  setBrightness(255);

  leds = 0;		// Initially turns all the LEDs off, by giving the variable 'leds' the value 0
  updateShiftRegister();
  delay(500);

  for (int i = 0; i < 8; i++)	// Turn all the LEDs ON one by one.
  {
    bitSet(leds, i);		// Set the bit that controls that LED in the variable 'leds'
    updateShiftRegister();
    delay(500);
  }
  for (byte b = 255; b > 0; b--)	// Gradually fade all the LEDs back to off
  {
    setBrightness(b);
    delay(50);
  }
}

/*
 * updateShiftRegister() - This function sets the latchPin to low, then calls the Arduino function 'shiftOut' to shift out contents of variable 'leds' in the shift register before putting the 'latchPin' high again.
 */
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

/*
 * setBrightness() - Generates PWM signal and writes it to OE pin.
 */
void setBrightness(byte brightness) // 0 to 255
{
  analogWrite(outputEnablePin, 255-brightness);
}

بمجرد تحميل الكود إلى Arduino ، سترى أن الإخراج يظهر كما يلي:




الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-12-2019, 03:09 PM المشاركة 46   
افتراضي


الدالة shiftOut() :
الوصف :

تنقل (تزحزح) Shift out بيانات بايت Byte ، بت Bit واحد في كل مرة. تبدأ من إما البت الأقصى أهمية MSB (أي أقصى اليسار) أوالبت الأدنى أهمية LSB (أقصى اليمين) . تتم كتابة كل بت فى دورها إلى طرف البيانات data pin ، وبعد ذلك يتم تفعيل طرف الساعة clock pin (يتم رفعه high ، ثم خفضه low) للإشارة إلى توفر البت.
ملاحظة - إذا كنت تتفاعل مع جهاز تزامنه (ساعته) بواسطة حواف صاعدة ، فستحتاج إلى التأكد من خفض طرف الساعة قبل استدعاء الدالة shiftOut() ، على سبيل المثال باستدعاء الدالة digitalWrite(clockPin, LOW) .

الصيغة :

كود:
shiftOut(dataPin, clockPin, bitOrder, value)

البارامترات :
البارامتر dataPin : الطرف pinالذى سوف يتم عليه إخراج كل بت ( نوع int).
البارامتر clockPin : الطرف يتم تبديله بمجرد تعيين طرف البيانات dataPin إلى القيمة الصحيحة (نوع int ) .
البارامتر bitOrder : ترتيب البتات المزاحة ، وهى إما "البت الأقصى أهمية أولا" MSBFIRST أو " البت الأدنى أهمية أولا" LSBFIRST .
البارامتر value : البيانات المراد إزاحتها (بايت byte ) .

العائد :
لا شىء .

مثال1 : إنشاء عداد رقمى ثنائى من 0 إلى 255 باستخدام 8 ليدات ، باستخدام مسجل إزاحة واحد لتوسعة مخارج الاردوينو

الدائرة الكهربية :



كود:
//**************************************************************//
//  Name    : shiftOutCode, Hello World                         //
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                            //
//****************************************************************

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;

void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  //count up routine
  for (int j = 0; j < 256; j++) {
    //ground latchPin and hold low for as long as you are transmitting
    digitalWrite(latchPin, LOW);

    shiftOut(dataPin, clockPin, LSBFIRST, j);

    //return the latch pin high to signal chip that it
    //no longer needs to listen for information
    digitalWrite(latchPin, HIGH);
    delay(1000);
  }
}

يجب بالفعل تهيئة (تكوين) كل من dataPin و clockPin كمخارج بواسطة استدعاء الدالة pinMode() .
تتم كتابة الدالة shiftOut لإخراج 1 بايت (8 بت) ، لذلك إخراج قيم أكبر من 255 يتطلب عملية من خطوتين (مرتين) ، كما يلى :

كود:
// Do this for MSBFIRST serial
int data = 500;
// shift out highbyte
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));
// shift out lowbyte
shiftOut(dataPin, clock, MSBFIRST, data);

// Or do this for LSBFIRST serial
data = 500;
// shift out lowbyte
shiftOut(dataPin, clock, LSBFIRST, data);
// shift out highbyte
shiftOut(dataPin, clock, LSBFIRST, (data >> 8));


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 12-12-2019, 03:27 PM المشاركة 47   
افتراضي


إضاءة متتابعة فى الاتجاهين 8 ليد :
يوضح هذا المثال كيفية تشغيل 74HC595 واحد باستخدام مخارج لتشغيل ليدات ، إضاءة ليد تلو الآخر . يتم التحكم في اتجاه التشغيل من خلال المتغير dir بينما يتم تعيين القيمة الفعلية إلى المتغير d. إذا تم اكتشاف بت مرتفعة high في أي من طرفي البايت عندئذ يتم تغيير الاتجاه. وبهذه الطريقة ، يتم السير يسارًا ويمينًا عبر البايت. بعد كل إزاحة يتم إخراج القيمة إلى 74HC595 باستخدام الدالة shiftOut ، و MSB أولاً.
ملاحظة: تعمل الدالة shiftOut على بايت واحد فقط.




كود:
// Demonstration code for 74HC595 8 bit output
int RCLKPin = 3;   // pin 12 on the 74hc595 latch ST_CP
int SRCLKPin = 6;  // pin 11 on the 74hc595 shift register clock – SH_CP
int SERPin = 4;    // pin 14 on the 74hc595 data - DS
unsigned int d;    // Data to be sent to the shift reg.
int dir =0;        // Direction of walking.

void setup() {
  pinMode(RCLKPin, OUTPUT);    // Set 595 control PIN sto output.
  pinMode(SRCLKPin, OUTPUT);
  pinMode(SERPin, OUTPUT);

  d=1;
}

void loop() {

    delay(100);
    digitalWrite(RCLKPin, LOW);//Latch Low 
    shiftOut(SERPin, SRCLKPin, MSBFIRST, 0x00ff & d);//Shift Out
    digitalWrite(RCLKPin, HIGH);//Latch High
    
    if (!dir) d<<=1; else d>>=1; // Shift

    if (d&0x80) dir=1;           // Set direction.
    if (d&0x01) dir=0;
}
إضاءة متتابعة فى الاتجاهين 16 ليد :
هذا المثال لبرنامج يوسع المثال السابق لتشغيل اثنين 74HC595 لإنشاء مسجل إزاحة 16 بت واستخدام المخارج لتشغيل ليدات . مرة أخرى ، يتم إنشاء مسير خطوة ، لكن في هذه المرة يستخدم الكود عددًا صحيحًا بدون إشارة unsigned integer لتخزين القيمة التي تتيح 16 بت من المخارج . لاحظ كيف يجب استخدام الدالة shiftOut مرتين لإخراج قيمة 16 بت (والتي يجب أيضًا تقسيمها إلى قطعتين باستخدام إزاحة البت bit shifting لأن shiftOut لا يمكنه التعامل إلا مع 8 بتات من البيانات في كل مرة).




كود:
 
// Demonstration code for 74HC595 16 bit output
int RCLKPin = 3;   // pin 12 on the 74hc595 latch - nSS
int SRCLKPin = 6;  // pin 11 on the 74hc595 shift register clock - SCK
int SERPin = 4;    // pin 14 on the 74hc595 data - MOSI
unsigned int d;    // Data to be sent to the shift reg.
int dir =0;        // Direction of walking 1.

void setup() {
  pinMode(RCLKPin, OUTPUT);    // Set 595 control PIN sto output.
  pinMode(SRCLKPin, OUTPUT);
  pinMode(SERPin, OUTPUT);

  d=1;
}

void loop() {

    delay(100);
    digitalWrite(RCLKPin, LOW);

    shiftOut(SERPin, SRCLKPin, MSBFIRST, (0xff00 & d)>>8); // shift out high byte
    shiftOut(SERPin, SRCLKPin, MSBFIRST, 0x00ff & d); // shift out low byte

    digitalWrite(RCLKPin, HIGH);

    if (!dir) d<<=1; else d>>=1; // Shift

    if (d&0x8000) dir=1;           // Set direction.
    if (d&0x0001) dir=0;
}

مسجل إزاحة 32 بت لتشغيل 16 ليد إضاءة متتابعة وتشغيل 2 سفن سيجمنت لعرض الأرقام من 0 إلى 99 :



هذا المثال لبرنامج يوسعالمثال السابق مع الحفاظ على التشغيل الأصلي ولكنه أيضا يقود وحدتى عرض سفن سيجمنت . وحدات العرض السفن سيجمنت هي مجرد ترتيبات (تنسيق) لليدات يتم استخدامها لعرض الأرقام. في الداتا شيت ، يتم تعيين حرف لكل ؛ هذه الأحرف هى "a" إلى "g" و "dp" (للفاصلة العشرية). لتسهيل عملية الترميز ، من الأفضل تعيين 'a'-'g' إلى b0-b6 من المخارج وتعيين dp إلى الخرج b7.
في هذا المثال ، يتم الاحتفاظ السير خطوة كما كان من قبل ولكن الآن يتم مزيد من إستدعاء دالة إزاحة 8 بت shiftOut . لاحظ كيف يتم إزاحة كل شيء بشكل صحيح للوصول إلى أدنى 8 بت من أجل الدالة shiftOut.
ملحوظة :
حتى بالنسبة إلى 32 خرج (أو أكثر) ، لا تزال بحاجة إلى 3 أطراف تحكم فقط!

كود:
// Demonstration code for 74HC595 16 bit output and 2x7 segment displays
int RCLKPin = 3;   // pin 12 on the 74hc595 latch - nSS
int SRCLKPin = 6;  // pin 11 on the 74hc595 shift register clock - SCK
int SERPin = 4;    // pin 14 on the 74hc595 data - MOSI
unsigned long d;   // Data to be sent to the shift reg.
int dir,num;       // Direction of walking 1, output number.

// Define an array to translate number to 7segment
char segment[10] = { // segment bit pos: dp g f e d c b a
  0x3f, // zero
  0x06, // one
  0x5b, // two
  0x4f, // three
  0x66, // four
  0x6d, // five
  0x7c, // six
  0x07, // seven
  0x7f, // eight
  0x67  // nine
};

void setup() {
  pinMode(RCLKPin, OUTPUT);    // Set 595 control PINs to output.
  pinMode(SRCLKPin, OUTPUT);
  pinMode(SERPin, OUTPUT);

  d=1;
  num = 0;
}

void loop() {
unsigned char lnum,rnum;

    if(num++>99) num=0;
    lnum = num / 10;
    rnum = num % 10;

    digitalWrite(RCLKPin, LOW);

    shiftOut(SERPin, SRCLKPin, MSBFIRST, segment[lnum]);
    shiftOut(SERPin, SRCLKPin, MSBFIRST, segment[rnum]);
    shiftOut(SERPin, SRCLKPin, MSBFIRST, (0xff00 & d)>>8);
    shiftOut(SERPin, SRCLKPin, MSBFIRST, 0x00ff & d);

    digitalWrite(RCLKPin, HIGH);

    if (!dir) d<<=1; else d>>=1; // Shift

    if (d&0x8000) dir=1;           // Set direction.
    if (d&0x1) dir=0;

    delay(200);
}


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 12-12-2019 الساعة 08:45 PM

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 19-12-2019, 12:09 AM المشاركة 48   
افتراضي وحدات العرض (شاشة) السفن سيجمنت (الشرائح السبعة) Seven Segment وربطها مع الاردوينو


وحدات العرض (شاشة) السفن سيجمنت (الشرائح السبعة) Seven Segment وربطها مع الاردوينو :
كم مرة شاهدت فيلمًا يحتاج فيه شخص ما لإيقاف عمل قنبلة؟ يشاهد البطل الشاشة والوقت يمر ، وكل ثانية تمر تكون أكثر قيمة من السابقة. حسنًا ، إذا لاحظت ، إن كل تلك القنابل في الأفلام بها شاشات عرض من سبعة شرائح seven-segment . يجب أن تكون موجودة ، وإلا ، كيف يمكن للبطل أن يعرف كم من الوقت بقي؟
ربما لا تبدو شاشات العرض المكونة من سبعة شرائح حديثة بدرجة كافية بالنسبة لك ، ولكنها أكثر الطرق عملية لعرض الأرقام. إنها سهلة الاستخدام وفعالة من حيث التكلفة وقابلة للقراءة للغاية ، سواء في ظروف الإضاءة المحدودة أو في ضوء الشمس القوي.
مثال على العالم الحقيقي الذي يستخدم شاشة العرض المكونة من سبعة شرائح هو ساعة العد التنازلي الشهيرة في كيب كانافيرال بولاية فلوريدا التي استخدمتها ناسا لإطلاق أبولو.



نظرة عامة على الأجهزة (الهاردوير) :
دعنا نناقش بإيجاز خصائص ووظائف شاشة العرض المكونة من 7 شرائح قبل توصيلها بأردوينو.
إن شاشات العرض المكونة من 7 شرائح هي في الحقيقة سبعة ليدات LED مصفوفة بنمط معين. في هذه الحالة ، شكل الرقم "8" الذي نعرفه جميعًا. يُطلق على كل ليد من الليدات السبعة مقطع أو شريحة segment لأنه عند إضاءة الشريحة فإنها تشكل جزءًا من رقم رقمي (عشري أو سداسى عشرى على حد سواء) ليتم عرضها. أحيانًا يتم استخدام ليد إضافي لبيان العلامة العشرية.


يتم منح كل واحد من الليدات السبعة في الشاشة شريحة موضعية مع إخراج أحد أطراف التوصيل الخاصة بها مباشرة من العبوة البلاستيكية المستطيلة. يتم تمييز (تسمية) أطراف الليد الفردية هذه من a إلى g لتمثل كل ليد بشكل فردي. يتم توصيل أطراف الليد معًا لتشكيل الطرف المشترك.
لتشغيل وإيقاف جزء معين من الشاشة ، يمكنك تعيين الطرف المناسب على الحالة المرتفعة HIGH أو الحالة المنخفضة LOW تمامًا كما تفعل مع الليد العادى . لذلك تكون بعض الشرائح مضاءة والبعض الآخر سيكون مظلمًا مما يسمح بنمط الأحرف المرغوب في الرقم الذي سيتم إنشاؤه على الشاشة. هذا يسمح لنا بعد ذلك بعرض كل من العشرة أرقام العشرية من 0 إلى 9 على نفس شاشة السبعة شرائح.

أطراف شاشة السفن سيجمنت :
الآن ، دعنا ننتقل إلى تهيئة الشريحة حتى نعرف أي الأطراف تضيء أي الشرائح . الشكل التالى يبين أطراف شاشة السفن سيجمنت :



• الأطراف a-g & DP ، من بين 10 أطراف ، الثمانى أطراف a, b, c, d, e, f, g و DP (النقطة العشرية decimal point ) تتصل داخليا بشرائح العرض وتتصل خارجيا بالأطراف الرقمية للاردوينو . عن طريق التحكم بكل ليد على شريحة يمكن عرض الأرقام .
• الأطراف COM (المشتركة Common ) هى الأطراف 3 و 8 ، متصلة داخليا لتشكيل الطرف المشترك . هذا الطرف يجب أن يتصل بالارضى GND ( الكاثود المشترك) أو بالجهد 5V (الأنود المشترك) بناء على نوع الشاشة .

الكاثود المشترك (CC) مقابل الأنود المشترك (CA) :
شاشات السفن سيجمنت نوعين: الكاثود المشترك (CC) والأنود المشترك (CA). البناء الداخلي لكلا النوعين هو نفسه تقريبا. الفرق هو قطبية الليدات والطرف المشترك. كما يوحي اسمها ، فإن الكاثود المشترك يحتوي على جميع الكاثودات الخاصة بالليدات في الشرائح السبعة متصلة ببعضها البعض ، ويحتوي الأنود المشترك على جميع أنودات الليدات بالشرائح السبعة متصلة ببعضها البعض.
في شاشة الكاثود المشترك ، يتم توصيل جميع وصلات الكاثود لشرائح الليدات إلى "المنطق 0" / GND. يتم بعد ذلك إضاءة الشرائح الفردية عن طريق تطبيق إشارة مرتفعة HIGH / 'المنطق 1' على أطراف الأنود الفردية (a-g).


Common Cathode 7 Segment Working
في شاشة الأنود المشترك ، يتم توصيل جميع وصلات الأنود لشرائح الليدات بالمنطق "1" HIGH . يتم إضاءة الشرائح الفردية عن طريق تطبيق إشارة الأرضى ،أى المنطق "0" أو "LOW" على الكاثود الخاص بشريحة معينة (a-g).



Common Anode 7 Segment Working

ملحوظة
بشكل عام ، تعد شاشات الأنود المشترك أكثر شيوعًا نظرًا لأن العديد من الدوائر المنطقية يمكن أن تعمل كمصب sink لتيار أكثر من عملها كمصدر للتيار source .
لاحظ أيضًا أن شاشة الكاثود المشترك ليست بديلاً مباشرًا في الدائرة لشاشة الأنود المشترك والعكس صحيح ، حيث إنها تشبه توصيل الليدات في الاتجاه المعاكس ، وبالتالي لن يحدث انبعاث للضوء.

كيف تعمل شاشة السفن سيجمنت ؟
اعتمادًا على الرقم العشري الذي سيتم عرضه ، يتم إضاءة مجموعة معينة من الليدات LEDs. على سبيل المثال ، لعرض الرقم العددى 4 ، سوف نحتاج إلى إضاءة أربعة من شرائح الليدات المقابلة وهى b و c و f و g. وبالتالي ، يمكن عرض الأرقام المختلفة من "0 إلى 9" والأحرف من "A إلى F" باستخدام شاشة السبعة شرائح كما هو موضح أدناه.



يظهر جدول الحقيقة أدناه الشرائح الفردية التي تحتاج إلى إضاءة من أجل إنتاج أرقام وأحرف. يرجى ملاحظة أن جدول الحقيقة لشاشة الانود المشترك عكس تمامًا مع شاشة الكاثود المشترك.





الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:56 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)