في إحدى المقالات السابقة ، تطرقنا بالفعل لفترة وجيزة إلى استخدام سجل التحول ، على وجه الخصوص ، 74HC595. دعونا نلقي نظرة فاحصة على إمكانيات وإجراءات العمل مع هذه الدائرة المصغرة.
ضروري
- - اردوينو
- - سجل التحول 74HC595 ؛
- - توصيل الأسلاك.
تعليمات
الخطوة 1
يتم استخدام سجل التحول 74HC595 وما شابه كأجهزة لتحويل البيانات التسلسلية إلى متوازية ، ويمكن أيضًا استخدامها كـ "مزلاج" للبيانات ، مع الاحتفاظ بالحالة المنقولة.
يتم عرض pinout (pinout) في الشكل الموجود على اليسار. الغرض منها على النحو التالي.
Q0 … Q7 - نواتج البيانات المتوازية ؛
GND - الأرض (0 فولت) ؛
Q7 '- إخراج البيانات التسلسلية ؛
^ MR - إعادة الضبط الرئيسية (منخفضة نشطة) ؛
SHcp - إدخال ساعة تسجيل التحول ؛
STcp - إدخال نبض الساعة "مزلاج" ؛
^ OE - تمكين الإخراج (منخفض نشط) ؛
DS - إدخال البيانات التسلسلية ؛
Vcc - مصدر طاقة +5 فولت.
من الناحية الهيكلية ، يتم تصنيع الدائرة الدقيقة في عدة أنواع من الحالات ؛ سأستخدم الذي يظهر في الشكل على اليمين - الناتج - لأن من الأسهل استخدامه مع اللوح.
الخطوة 2
اسمحوا لي أن أذكر بإيجاز واجهة SPI التسلسلية ، والتي سنستخدمها لنقل البيانات إلى سجل الإزاحة.
SPI عبارة عن واجهة تسلسلية ثنائية الاتجاه بأربعة أسلاك يشارك فيها السيد والعبد. السيد في حالتنا سيكون Arduino ، سيتم تسجيل العبد 74HC595.
تحتوي بيئة التطوير الخاصة بـ Arduino على مكتبة مضمنة للعمل على واجهة SPI. عند تطبيقه ، يتم استخدام الاستنتاجات الموضحة في الشكل:
SCLK - خرج ساعة SPI ؛
MOSI - بيانات من السيد إلى العبد ؛
MISO - البيانات من العبد إلى السيد ؛
SS - اختيار الرقيق.
الخطوه 3
دعونا نجمع الدائرة كما في الصورة.
سأقوم أيضًا بتوصيل محلل منطقي بجميع دبابيس الدائرة الصغيرة لتسجيل التحول. بمساعدة ذلك ، سنرى ما يحدث على المستوى المادي ، وما هي الإشارات التي تتجه إلى أين ، وسنكتشف ما تعنيه. يجب أن تبدو مثل الصورة.
الخطوة 4
دعنا نكتب رسمًا مثل هذا ونحمّله في ذاكرة Arduino.
يعد PIN_SPI_SS المتغير ثابتًا قياسيًا داخليًا يتوافق مع رقم التعريف الشخصي "10" في Arduino عند استخدامه كسيد لواجهة SPI التي نستخدمها هنا. من حيث المبدأ ، يمكننا أيضًا استخدام أي دبوس رقمي آخر على Arduino ؛ ثم سيتعين علينا الإعلان عنها وتعيين وضع التشغيل الخاص بها.
من خلال تغذية هذا الدبوس LOW ، نقوم بتنشيط سجل التحول الخاص بنا للإرسال / الاستقبال. بعد النقل ، نرفع الجهد إلى HIGH مرة أخرى ، وينتهي التبادل.
الخطوة الخامسة
دعنا نحول دائرتنا إلى عمل ونرى ما يوضحه لنا المحلل المنطقي. يظهر العرض العام لمخطط التوقيت في الشكل.
يُظهر الخط الأزرق المتقطع 4 خطوط SPI ، بينما يُظهر الخط الأحمر المتقطع 8 قنوات من البيانات المتوازية لسجل الإزاحة.
النقطة A على مقياس الوقت هي اللحظة التي يتم فيها نقل الرقم "210" إلى سجل التحول ، B هي اللحظة التي يتم فيها كتابة الرقم "0" ، C هي الدورة التي تتكرر من البداية.
كما ترون ، من A إلى B - 10.03 مللي ثانية ، ومن B إلى C - 90.12 مللي ثانية تقريبًا كما طلبنا في الرسم التخطيطي. إضافة صغيرة في 0 و 03 و 0 ، 12 مللي ثانية هي وقت نقل البيانات التسلسلية من Arduino ، لذلك ليس لدينا بالضبط 10 و 90 مللي ثانية هنا.
الخطوة 6
دعنا نلقي نظرة فاحصة على القسم أ.
يوجد في الجزء العلوي نبضة طويلة يبدأ بها Arduino الإرسال على خط SPI-ENABLE - اختيار الرقيق. في هذا الوقت ، يبدأ إنشاء نبضات الساعة SPI-CLOCK (السطر الثاني من الأعلى) ، 8 قطع (لنقل 1 بايت).
السطر التالي من الأعلى هو SPI-MOSI - البيانات التي ننقلها من Arduino إلى سجل الإزاحة. هذا هو رقمنا "210" في النظام الثنائي - "11010010".
بعد اكتمال النقل ، في نهاية نبضة SPI-ENABLE ، نرى أن سجل الإزاحة قد قام بتعيين نفس القيمة على أرجله الثمانية. لقد أبرزت هذا بخط منقط أزرق وقمت بتسمية قيم الوضوح.
الخطوة 7
لننتقل الآن إلى القسم ب.
مرة أخرى ، كل شيء يبدأ باختيار عبد وتوليد 8 نبضات على مدار الساعة.
البيانات الموجودة على خط SPI-MOSI هي الآن "0".أي ، في هذه اللحظة نكتب الرقم "0" في السجل.
ولكن حتى اكتمال النقل ، يقوم السجل بتخزين القيمة "11010010". يتم إخراجها إلى المسامير المتوازية Q0.. Q7 ، ويتم إخراجها عندما تكون هناك نبضات على مدار الساعة في الخط من الإخراج الموازي Q7 'إلى خط SPI-MISO ، الذي نراه هنا.
الخطوة 8
وهكذا ، درسنا بالتفصيل مسألة تبادل المعلومات بين الجهاز الرئيسي ، وهو Arduino ، وسجل الإزاحة 74HC595. تعلمنا كيفية توصيل سجل التحول وكتابة البيانات فيه وقراءة البيانات منه.