السبت، 16 فبراير، 2013

7 Segment and Shift register

المقطعات السباعية Seven segment  و مسجل الإزاحة 74595




تحدثت في أخر تدوينة لي تحدثت عن المقطعات السباعية 7Segment و طريقة التحكم بها مباشرة من خلال بطاقة الأردوينو , و سنتابع اليوم طريقة توصيل المقطعات السباعية مع مسجل الإزاحة Shift register 74595 




لنبدأ بالفكرة , ما هي الفكرة التي يرتكز عليها نقل البيانات بين مسجل الإزاحة و المقطع السباعي Seven segment ؟

مسجل الإزاحة يحتوي في خرجه على 8bit أي يمكن التحكم بخانة واحدة من المقطع السباعيSeven segment بسهولة , كل ما سنفعله هو تفعيل مخرج مسجل HIGH الإزاحة لتضيئ الخانة المربوطة معه , أو تقوم بتعطيل مخرج مسجل الإزاحة LOW لإطفاء الخانة المربوطة معه .

في حالة استعملنا مقطع سباعي 7segment CC ذو سالب مشترك فإن العملية تكون معكوسة .

للتذكير : مسجل الإزاحة يعمل كمنبع للتيار Current source و ليس كمصرف للتيار Current sink و في حالة استخدامه 
 كمصرف للتيار Current sink يجب وضع ترانزستور معه . 

حسناً لنبدأ بالمعدات :


المعدات اللازمة لتبدأ التجربة هي :
1) بطاقة أردوينو  Arduino .
2) اسلاك توصيل Solderless Jumper 
3)مقطّع سُباعي 7segment " تغذية مشتركة CA أو سالب مشترك CC "
4) لوحة تعليمية مثقوبة BreadBoard .
5) مقاومات 150 أوم 
6) مسجل إزاحة Shift Register 74959
7) ترانزستور 2n2222 أو ما يكافئه. عدد 4




حسناً لننتقل للتوصيل .

مسجل الإزاحة كما نعرف له 8 ارجل خرج مرقمة من D0-D7 , كل ما سنقوم به هو ربط هذه الأرجل مع أرجل المقطع السباعي حسب الترتيب التالي :

و الرسم يوضح أكثر هذا التوصيل .






حسناً مسجل الإزاحة 74595 يتم توصيله مع الأردوينو بأربعة خطوط , بحسب البروتوكول SPI و هي موصولة كالآتي :


حسناً ننتقل الآن للسؤال الأهم ... كيف سننقل الأرقام ؟ أو بالأحرى كيف لنا أن نضيئ أي خانة نريدها في المقطع السباعي ؟ 

الجواب على هذا السؤال هو ...جدول الحقيقة Look up table

نقوم ببناء جدول , نضع فيها أرجل المقطع السباعي Seven segment في مُرتبة حسب المنزلة MSB  و الأرقام أو الرموز التي نريد إظهارها في الشق الثاني من الجدول , ثم نقوم بعبئة الجدول بالقيم الثنائية Binary code ثم نحسب مجموع الأرقام بالنظام العشري Decimal . 

الجدول التالي يوضح الفكرة و فيه قمت بعمل واحد مشابه .

نقوم بأخذ هذه القيم" القيم العشرية Decimal " و وضعها في البرنامج على شكل مصفوفة .

البرنامج  ادناه يقوم بنقل الأرقام من 0-9 .






كما ستلاحظون قمت بوضع قيم الأرقام بالمصفوفة N ثم قمت باستدعائها في البرنامج داخل جملة الLoop كلما احتجت لها .

بهكذا ننتهي من الجزء الأول الخاص بربط مقطع سُباعي واحد .

لو اردنا توصيل أكثر من مقطع سُباعي واحد Multi seven  segment , فماذا سنفعل ؟

الأمر سهل و بسيط , فقط علينا توصيل كل المقطعات السباعية بنفس الطريقة التي ربطنا فيها المقطع السباعي الواحد Single 7segment و فقط نقوم بربط المدخل المشترك Common بمسجل إزاحة آخر "لا تنسى طبعاً الترانزستور ".

المخطط التالي يوضح توصيل اكثر من خانة معاً 



الخانة الأولى تربط مع ترانزستور قاعدته Base مربوطة مع Q0 , و الخانة الثانية 
تربط مع ترانزستور قاعدته Base مربوطة مع Q1  و هكذا ...

هذا الكود لمسجل أزاحة مربوط مع مقطعين سُباعيين 2digit  مربوطتان مع حساس على المدخل A0
 









ملاحظة , أن هذا البرنامج يمكنك تعديله عن طريق تعديل خيار ال  map الموجود فيه و جعل القيمة بين 0-1023 بدلاً من 0-854 .



 و اخيراً هذا البرنامج يقوم بنفس الوظيفة السابقة مع زيادة خانتين , أي أن هذا البرنامج ل 4 خانات 4digit seven segment





















يمكنك تعديل الكود كما تريد , و حتى تغيير طريقة التوصيل و ابتكار طريقتك الخاصة بالتحكم بالمقطعات السباعية .


أنا تمكنت من بناء حتى 6 مقطعات سباعية معاً , و ربطها بواسطة مسجلي ازاحة فقط   2shift register

اتمنى أن يكون هذا الدرس مفيداً , تحياتي لكم أعزائي .

0 التعليقات :

إرسال تعليق

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.