در یکی از مقاله های قبلی ، ما به طور خلاصه در مورد استفاده از ثبت شیفت ، به ویژه 74HC595 صحبت کردیم. بیایید نگاهی دقیق به قابلیت ها و روش کار با این میکرو مدار بیندازیم.
ضروری است
- - آردوینو ؛
- - ثبت نام تغییر 74HC595 ؛
- - اتصال سیم ها
دستورالعمل ها
مرحله 1
Shift Register 74HC595 و موارد مشابه به عنوان دستگاه هایی برای تبدیل داده های سریال به موازی استفاده می شوند ، و همچنین می توانند به عنوان "قفل" برای داده ها ، نگه داشتن حالت انتقال یافته استفاده شوند.
pinout (pinout) در شکل سمت چپ نشان داده شده است. هدف آنها به شرح زیر است.
Q0… Q7 - خروجی داده های موازی ؛
GND - زمین (0 ولت)
Q7 '- خروجی داده های سریال ؛
^ MR - تنظیم مجدد اصلی (فعال کم)
SHcp - ورودی ساعت ثبت تغییر
STcp - ورودی پالس ساعت "قفل" ؛
^ OE - خروجی را فعال کنید (کم فعال است) ؛
Ds - ورودی داده های سریال ؛
Vcc - منبع تغذیه +5 ولت
از نظر ساختاری ، میکرو مدار در چندین نوع موارد ساخته می شود. من از آنچه در شکل سمت راست نشان داده شده است استفاده می کنم - خروجی - زیرا استفاده از آن با تخته نان راحت تر است.
گام 2
بگذارید به طور خلاصه رابط سریال SPI را بیاد بیاورم ، که از آن برای انتقال داده ها به رجیستر شیفت استفاده خواهیم کرد.
SPI یک رابط سریال دو سیمه چهار سیمه است که در آن یک ارباب و یک برده شرکت می کنند. استاد در مورد ما Arduino خواهد بود ، برده 74HC595 ثبت خواهد شد.
محیط توسعه برای آردوینو دارای یک کتابخانه داخلی برای کار بر روی رابط SPI است. هنگام استفاده از آن ، از نتیجه گیری استفاده می شود که در شکل مشخص شده است:
SCLK - خروجی ساعت SPI ؛
MOSI - داده از استاد به برده ؛
MISO - داده از بنده به استاد ؛
SS - انتخاب برده.
مرحله 3
بیایید مدار را مانند تصویر کنار هم قرار دهیم.
من همچنین یک تجزیه و تحلیل منطقی را به تمام پایه های میکرو مدار شیفت رجیستر متصل می کنم. با کمک آن ، خواهیم دید که در سطح فیزیکی چه اتفاقی می افتد ، چه سیگنالهایی به کجا می روند و معنی آنها را خواهیم فهمید. باید چیزی شبیه به عکس باشد.
مرحله 4
بیایید طرحی مانند این را بنویسیم و آن را در حافظه آردوینو بارگذاری کنیم.
متغیر PIN_SPI_SS یک ثابت استاندارد داخلی است که با پین "10" آردوینو مطابقت دارد وقتی که به عنوان اصلی رابط SPI استفاده می شود. در اصل ، ما می توانیم از هر پین دیجیتال دیگری در Arduino استفاده کنیم. پس باید آن را اعلام کرده و حالت عملکرد آن را تنظیم کنیم.
با تغذیه پایین این پین ، ما ثبت شیفت خود را برای انتقال / دریافت فعال می کنیم. پس از انتقال ، دوباره ولتاژ را به HIGH می رسانیم و مبادله پایان می یابد.
مرحله 5
بیایید مدار خود را به کار تبدیل کنیم و ببینیم تحلیلگر منطق چه چیزی را به ما نشان می دهد. نمای کلی نمودار زمان بندی در شکل نشان داده شده است.
خط تیره آبی 4 خط SPI ، خط تیره قرمز 8 کانال داده موازی رجیستر شیفت را نشان می دهد.
نقطه A در مقیاس زمانی لحظه ای است که عدد "210" به ثبت شیفت منتقل می شود ، B لحظه ای است که عدد "0" نوشته می شود ، C چرخه ای است که از ابتدا تکرار می شود.
همانطور که می بینید ، از A تا B - 10.03 میلی ثانیه و از B به C - 90.12 میلی ثانیه ، تقریبا همانطور که در طرح پرسیدیم. مقدار اضافی 0 ، 03 و 0 ، 12 میلی ثانیه زمان انتقال داده های سریال از Arduino است ، بنابراین ما در اینجا دقیقاً 10 و 90 میلی ثانیه نداریم.
مرحله 6
بیایید نگاهی دقیق تر به بخش A بیندازیم.
در بالای آن یک پالس طولانی قرار دارد که Arduino با آن انتقال را روی خط SPI-ENABLE آغاز می کند - انتخاب برده. در این زمان ، پالس های ساعت SPI-CLOCK شروع به تولید می کنند (خط دوم از بالا) ، 8 قطعه (برای انتقال 1 بایت).
خط بعدی از بالا SPI-MOSI است - داده ای که ما از آردوینو به رجیستر شیفت منتقل می کنیم. این عدد "210" ما در باینری است - "11010010".
پس از اتمام انتقال ، در انتهای پالس SPI-ENABLE ، می بینیم که رجیستر شیفت همان مقدار را در 8 پایه خود تنظیم کرده است. من این را با یک خط نقطه ای آبی مشخص کرده و مقادیر وضوح را برچسب زده ام.
مرحله 7
حال بیایید توجه خود را به بخش B معطوف کنیم.
باز هم ، همه چیز با انتخاب یک برده و تولید 8 پالس ساعت شروع می شود.
داده های موجود در خط SPI-MOSI اکنون "0" هستند.یعنی در این لحظه شماره "0" را در رجیستر می نویسیم.
اما تا زمان انتقال کامل ، رجیستری مقدار "11010010" را ذخیره می کند. این خروجی به پایه های موازی Q0.. Q7 صادر می شود و هنگامی که در خط از خروجی موازی Q7 'به خط SPI-MISO پالس های ساعت وجود دارد ، که در اینجا می بینیم ، پالس های ساعت وجود دارد.
مرحله 8
بنابراین ، ما به طور دقیق موضوع تبادل اطلاعات بین دستگاه اصلی ، که Arduino بود ، و رجیستر شیفت 74HC595 را مطالعه کرده ایم. ما یاد گرفتیم که چگونه یک ثبت شیفت را متصل کنیم ، داده ها را در آن بنویسیم و داده ها را از آن بخوانیم.