راه اندازی 8 عدد LED با استفاده از آیسی شیفت رجیستر 74HC595

راه اندازی 8 LED با استفاده از آیسی شيفت رجيستر

مقدمه

با سلام خدمت همه شما دوستان. در جلسه قصد داریم یه خورده آیسی شیفت رجیستر رو با هم بهتر بشناسیم و یاد بگیریم که چگونه میشه 8 عدد LED رو با استفاده از این آیسی راه اندازی کرد. پیشنهاد میکنم اگه با آردوینو اصلا آشنایی ندارید ، ابتدا یک نگاه به دوره آردوینو وبسایت بندازید. لینک این دوره در زیر آورده شده است :

سخت افزار پروژه:

آشنایی با شيفت رجيستر 74HC595

در جلسه قصد داریم با استفاده از شيفت رجيستر 74HC595 و 8 عدد ال ای دی را بدون استفاده از 8پایه آردوینو راه اندازی می کنیم. اگرچه ما می توانیم به راحتی از 8 پین آردوینو جهت روشن کردن ال ای دی ها استفاده کنیم ولی به دلیل اینکه بیشتر زمان ها قطعات دیگری مثل سنسورها، کلیدها و موتورها داریم با کمبود پایه مواجه می شویم پس بهتر است روش دیگری همانند استفاده از شيفت رجيستر 74HC595 را درپیش گیریم. در این روش ما از یک آي سي شيفت رجيستر بنام 74HC595 Serial to Parallel Converter استفاده می کنیم. این شيفت رجيستر 8تا خروجی داره و 3تا ورودی. برای توضیح دقیق تر در مورد این شیفت رجیستر میتونید از این آموزش که قبلا در سایت منتشر شده استفاده کنید:

مدار پروژه:ابتدا مدار زیر را که شامل 8عدد ال ای دی و 8عدد مقاومت می باشد بر روی بردبرد ببندید: (آسونتر اینه که اول آي سي شيفت رجيستر 74HC595 رو در جای خودش قرار دهید وبعد بقیه قطعات را متصل کنید. طوری اون رو در مدار قرار دهید که قسمت فرورفتگی U شکل روی آن به سمت بالای بردبرد باشد. پین 1 این چیپ در سمت چپ این فرورفتگی می باشد.)

شيفت رجيستر

پین 14 این چیپ به پین دیجیتال شماره 4 آردوینو وصل می شود.

پین 12 این چیپ به پین دیجیتال شماره 5 آردوینو وصل می شود.

پین 11 این چیپ به پین دیجیتال شماره 6 آردوینو وصل می شود.

بعد از جایگذاری این چیپ مقاومت ها را جایگزین کنید و دقت کنید که پایه های آن ها به هم متصل نشود و در آخر LED ها را روی برد نصب کنید.

نرم افزار

 ابتدا یک نگاه کلی به این کد بیندازید تا در ادامه اون رو به صورت دقیق توضیح بدیم:

قبل از این که کد رو توضیح بدیم ذکر این نکته لازم هست که آردوینو یک تابع اختصاصی دارد که مربوط به فرستادن داده به همین شیفت رجیسترهاست. اسم این تابع ShiftOut است.

توضیح خط به خط کد:

در سه خط اول که پایه هایی که قراره استفاده کنیم رو معرفی می کنیم. پایه 5آردوینو رو برای Latchpin معرفی می کنیم که کار نمایش داده های ورودی رو بصورت موازی انجام می داد.

پایه 6 رو برای پالس اعمالی موقع ارسال داده ها قرار می دهیم. پایه 4 هم برای ارسال داده می باشد.

در مرحله بعد یک متغیر با نام leds تعریف می کنیم.

این متغیر برای این استفاده می شود که بگوییم از کدام الگو برای روشن شدن ال ای دی ها استفاده کنیم.

نوع داده هم byte تعریف کردیم چون 8عدد ال ای دی بیشتر نداریم. هر بیت هم می تواند صفر باشد و هم یک باشد که نشان دهنده روشن خاموش بودن ال ای دی هاست.

تابع setup :

در تابع setup ما سه تا پایه آردوینو که در بالا معرفی کردیم رو خروجی قرار می دهیم و چون فقط یک بار اجرا می شوند آنها را در تابع setup قرار دادیم نه تابع loop.

حلقه loop :

در قسمت اول تمامی ال ای دی ها رو با کد leds=0 صفر می کنیم. وقتی همه بیت ها رو صفر کردیم با استفاده از تابع ‘updateShiftRegister’  این صفرها رو به 74hc595 می فرستیم تا همگی خاموش شوند. در کد بعدی در مورد تابع ‘updateShiftRegister’ به طور کامل توضیح می دهیم. سپس تابع loop به مدت 500 میلی ثانیه متوقف می شود و سپس وارد حلقه for می شود و از 0 تا 7 توسط متغیر i شروع به شمارش می کند. هر بار که شمارش می کند توسط تابع bitset این مقدار را درون متغیر leds قرار می دهد. مثلا i به عدد 1 که رسید تابع bitset این 1 را بر می دارد و درون متغیر leds که قبلا صفر بود قرار می دهد. سپس توسط تابع ‘updateShiftRegister’  مقدار درون متغیر leds را به ای سی 74hc595 منعکس می کنیم. 0.5 ثانیه هم صبر می کنیم و سپس خاموش می شود وعدد2 دورن leds قرار می گیرد و ال ای دی بعدی را روشن می کند و سپس خاموش می شود و عدد 3 درون leds قرار می گیرد و این کار تا عدد7تکرار می شود و همه ال ای دی ها را به این صورت خاموش روشن می کند.

 تابع updateShiftRegister :

 

تابع ‘updateShiftRegister’  ابتدا با استفاده از latchpin همه ال ای دی ها راخاموش می کند. سپس قبل از اینکه دوباره توسط تابع latchpin ال ای دی مورد نظر را روشن کنیم تابع ‘shiftOut’ که یکی از توابع مهم آردوینو است را فراخوانی می کنیم. این تابع 4 پارامتر ورودی دارد. پارامترهای های اول و دوم برای داده و کلاک است. پارامتر سوم مربوط به این است که از کدام داده می خواهید برای شروع شمارش استفاده کنید. مسلما هنگامی که i شروع به شمارش می کند ما باید مشخص کنیم که شروع روشن شدن از کدام ال ای دی باشد کار این پارامتر هم همین است. ما از بیت سمت راست یا همان ‘Least Significant Bit’ که به بیت کم ارزش معروف است شروع می کنیم. به طور مخفف LSB خوانده می شود. پارامتر چهارم هم دیتای واقعی است که شیفت داده می شود.

خوب دوستان. به پایان این جلسه هم رسیدیم. مثل همیشه میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید:

شاید دوست داشته باشید مطالب زیر را نیز بخوانید:

نوشتن نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اضافه کردن تصویر ( فقط فرمت jpg)