فهرست مطالب:
- اهداف
- تجربه و مهارت
- سلب مسئولیت و اعتبار
- مرحله 1: قطعات
- فهرست قطعات
- قطعات عمومی
- قطعات خاص مورد استفاده در اینجا
- نکاتی در مورد قطعات
- مرحله 2: ماتریس
- ملاحظات ساختمانی
- ساخت ماتریس
- مهم
- مرحله 3: سخت افزار کنترل
- ساخت سخت افزار کنترل
- مرحله 4: نرم افزار
- حیله
- Shift Registers: How To
- آدرس دهی به صفحه نمایش
- برنامه نويسي
- در عمل
- مرحله 5: مفاهیم مدولار
- ریاضی
- Cascading Shift Registers
- رانندگان چند ردیف
- مثلا
- مرحله 6: نتیجه گیری
- اضافات احتمالی
- مرحله 7: پیگیری کنید
- ویژگی های برد مدار
- مونتاژ
تصویری: ماتریس LED با استفاده از Shift Registers: 7 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:58
این دستورالعمل به منظور توضیح کاملتر از سایر موارد موجود در اینترنت است. قابل ذکر است ، این توضیح سخت افزاری بیشتری نسبت به آنچه در LED Marquee که توسط led555 قابل آموزش است ارائه می دهد.
اهداف
این دستورالعمل مفاهیم مربوط به ثبت نام های شیفت و درایورهای جانبی بالا را ارائه می دهد. امیدوارم با نشان دادن این مفاهیم با یک ماتریس LED 8x8 ، ابزارهای لازم برای سازگاری و گسترش اندازه و طرح مورد نیاز پروژه را در اختیار شما قرار دهم.
تجربه و مهارت
من این پروژه را با مشکل متوسط ارزیابی می کنم:
- اگر قبلاً تجربه برنامه نویسی میکروکنترلرها و کار با LED ها را داشته اید ، تکمیل و مقیاس بندی آرایه های بزرگتر از چراغ ها برای شما بسیار آسان است.
- اگر تازه در حال کار با میکروکنترلرها هستید و یک یا دو LED را روشن کرده اید ، باید بتوانید این پروژه را با کمک گوگل گوگل انجام دهید.
- اگر تجربه کمی در زمینه برنامه نویسی میکروکنترلر یا برنامه نویسی دارید ، احتمالاً فراتر از آن چیزی است که باید در آن مشغول باشید. چند پروژه مبتدی دیگر را امتحان کنید و وقتی تجربه بیشتری در نوشتن برنامه برای میکروکنترلرها داشتید ، بازگردید.
سلب مسئولیت و اعتبار
اولا ، من مهندس برق نیستم. اگر چیزی را مشاهده کردید که اشتباه است یا بهترین عمل نیست ، لطفاً به من اطلاع دهید و من اصلاح را انجام دهم. این کار را با مسئولیت خود انجام دهید! شما باید بدانید که چه می کنید یا می توانید به کامپیوتر ، میکروکنترلر و حتی خودتان آسیب برسانید. من از اینترنت ، به ویژه از انجمن ها در اینترنت ، چیزهای زیادی آموخته ام: https://www.avrfreaks.net مجموعه ای از قلم ها که به همراه کتابخانه C جهانی ks0108 ارائه شده است. آن را در اینجا بررسی کنید:
مرحله 1: قطعات
فهرست قطعات
قطعات عمومی
برای ایجاد یک شبکه LED 8x8 و کنترل آنها به موارد زیر نیاز دارید:
- 64 LED به انتخاب شما
- 8 مقاومت برای LED ها
- 1 Shift Register برای ستون ها
- 1 آرایه درایور برای ردیف ها
- 8 مقاومت برای تغییر آرایه درایور
- 1 عدد میکروکنترلر
- 1 منبع ساعت برای میکروکنترلر
- 1 تخته نمونه سازی
- 1 منبع تغذیه
- سیم قلاب
قطعات خاص مورد استفاده در اینجا
برای این دستورالعمل از موارد زیر استفاده کردم:
- 64 LED سبز (بخش موزر #604-WP7113GD)
- 8 مقاومت 220 اهم 1/4 وات برای LED ها (بخش موزر #660-CFS1/4CT52R221J)
- 1 راننده LED HEF4794 با ثبت نام شیفت (قسمت Mouser #771-HEF4794BPN)
- 1 mic2981 High-Voltage High-High Source Driver Array (Digikey قسمت #576-1158-ND)
- 8 مقاومت 3.3kohm 1/4 وات برای تغییر آرایه راننده (قسمت Shack Radio #271-1328)
- 1 میکروکنترلر ATmel ATmega8 (بخش موس #556-ATMEGA8-16PU)
- 1 کریستال 12 مگاهرتز برای منبع ساعت میکروکنترلر (بخش موزر #815-AB-12-B2)
- 1 تخته نمونه اولیه 2200 سوراخ (قسمت Shack Radio #276-147)
- منبع تغذیه تبدیل ATX: این دستورالعمل را ببینید
- سیم متصل به هسته 22-awg (قسمت Shack Radio #278-1221)
- تخته نان بدون سرب (قسمت Radio Shack قسمت 276-169 (دیگر موجود نیست ، سعی کنید: 276-002)
- AVR Dragon (بخش موش #556-ATAVRDRAGON)
- Dragon Rider 500 توسط Ecros Technologies: این دستورالعمل را ببینید
نکاتی در مورد قطعات
رانندگان سطر و ستون: احتمالاً سخت ترین قسمت این پروژه انتخاب رانندگان سطر و ستون است. در وهله اول ، من فکر نمی کنم یک شیفت رجیستر استاندارد 74HC595 ایده خوبی در اینجا باشد زیرا آنها نمی توانند نوع جریانی را که می خواهیم از طریق LED ها ارسال کنیم ، اداره کنند. به همین دلیل است که من راننده HEF4794 را انتخاب کردم زیرا به راحتی می تواند جریان فعلی را غرق کند وقتی همه 8 led در یک ردیف روشن هستند. ثبت نام شیفت در سمت پایین (پین زمینی led ها) وجود دارد. ما به یک راننده ردیف نیاز داریم که بتواند جریان کافی را برای اتصال چند ستون به یکدیگر ایجاد کند. mic2981 می تواند حداکثر 500mA را تامین کند. تنها قسمت دیگری که من این کار را انجام می دهم UDN2981 (قسمت digikey #620-1120-ND) است که همان قسمت یک سازنده متفاوت است. لطفاً اگر درایورهای دیگری را می شناسید که در این برنامه خوب کار می کنند ، پیامی برای من ارسال کنید. ماتریس LED: این ماتریس 8x8 است زیرا رانندگان سطر و ستون هریک 8 پین دارند. یک آرایه LED بزرگتر ممکن است با اتصال چندین ماتریس به یکدیگر ساخته شود و در مرحله "مفاهیم مدولار" مورد بحث قرار گیرد. اگر می خواهید یک آرایه بزرگ داشته باشید ، همه قطعات مورد نیاز را همزمان سفارش دهید. ماتریس LED 8x8 ، 5x7 و 5x8 در یک بسته مناسب موجود است. اینها باید به راحتی جایگزین ماتریس diy شوند. Ebay منبع خوبی برای این موارد است. موس دارای برخی از واحدهای 5x7 مانند قسمت #604-TA12-11GWA است. من از LED های سبز ارزان استفاده کردم زیرا فقط در حال بازی و تفریح هستم. هزینه بیشتر برای LED های با روشنایی بالا و راندمان بالا می تواند به شما این امکان را بدهد که یک صفحه نمایش بسیار دیدنی تر ایجاد کنید … هر چند این برای من خوب است! سخت افزار کنترل: ماتریس توسط میکروکنترلر Atmel AVR کنترل می شود. برای این کار به یک برنامه نویس نیاز دارید. از آنجا که در حال نمونه سازی اولیه هستم ، از Dragon Rider 500 استفاده می کنم که برای آن هم دستورالعمل های مونتاژ و هم استفاده را نوشته ام. این یک ابزار آسان برای نمونه سازی است و من آن را بسیار توصیه می کنم.
مرحله 2: ماتریس
من ماتریس LED خود را برای این پروژه با استفاده از LED های 5 میلی متری و یک تابلوی نمونه از Radio Shack می سازم. لازم به ذکر است که می توانید ماژول های LED ماتریس 8x8 نقطه را از چندین منبع ، از جمله ebay خریداری کنید. آنها باید با این دستورالعمل خوب کار کنند.
ملاحظات ساختمانی
LEDS باید تراز شود تا جهت آنها در یک زاویه یکسان باشد. به نظر من ساده ترین گزینه برای من این بود که بدنه LED را روی تخته بگذارم و آن را با یک تکه کوچک پلکسی گلاس و یک گیره در آنجا نگه دارم. من چند LED را در محل مورد نظر قرار دادم تا مطمئن شوم پلکسی با صفحه نمونه اولیه موازی است. سطرها و ستونها ما باید برای هر سطر و همچنین هر ستون یک اتصال مشترک داشته باشیم. به دلیل انتخاب راننده ردیف و ستون ، ما باید آند (سرب مثبت LED) را با ردیف و کاتد (سربی منفی LED) را با ستون متصل کنیم. برای این نمونه اولیه ، من از سیم اتصال قوی (تک هادی) استفاده می کنم. رابط کاربری با یک تخته نان بدون لحیم بسیار آسان خواهد بود. با خیال راحت از نوع اتصال متفاوتی برای پروژه خود استفاده کنید.
ساخت ماتریس
1. اولین ستون LEDS را در برد نمونه سازی قرار دهید. دوبار بررسی کنید که قطبیت شما برای هر LED درست است ، اگر بعداً متوجه شوید رفع آن بسیار مشکل خواهد بود. هر دو لامپ LED را به برد لحیم کنید. بررسی کنید که آیا آنها به درستی تراز شده اند (نه در زوایای عجیب) و سیم های کاتد را جدا کنید. اطمینان حاصل کنید که سرب آند را برش نمی دهید ، بعداً به آن نیاز داریم ، بنابراین فقط آن را به سمت بالا بگذارید. عایق را از یک تکه سیم جامد جدا کنید. این قطعه سیم را به هر کاتد درست در سطح تخته بچسبانید.
- من این را در هر انتها قرار دادم ، سپس برگشتم و در هر محل اتصال کمی لحیم کاری اضافه کردم.
- این سیم باید از آخرین LED شما عبور کند تا هنگامی که سیم های کنترل را اضافه می کنیم ، رابط کاربری راحتی ایجاد شود.
5. قسمتهای 1-4 را تکرار کنید تا زمانی که همه LED ها را در جای خود قرار داده و همه اتوبوسهای ستون را لحیم کنید. برای ایجاد گذرگاه ردیفی ، چندین سرنشین آند را با زاویه 90 درجه خم کنید تا دیگر آندهای آند را در همان ردیف لمس کنند.
- تصاویر مفصلی از این مورد در زیر وجود دارد.
- مراقب باشید که اینها با اتوبوسهای ستون در تماس نباشند و باعث ایجاد اتصال کوتاه شود.
7. سیم ها را در هر محل اتصال لحیم کرده و سیم های اضافی آند را جدا کنید.
آخرین آند را کنار LED نهایی بگذارید. این مورد برای اتصال سیمهای کنترل راننده ردیف استفاده می شود
8. قسمتهای 6 و 7 را تکرار کنید تا همه اتوبوسهای ردیف لحیم شوند. سیم های کنترل را وصل کنید.
- برای ردیف ها از سیم جامد قرمز قرمز و برای ستون ها استفاده کردم.
- برای هر ستون یک سیم و برای هر ردیف یک سیم متصل کنید. این را می توان به راحتی در انتهای هر اتوبوس انجام داد.
مهم
این ماتریس LED هیچ مقاومت محدود کننده فعلی ندارد. اگر این را بدون مقاومت آزمایش کنید ، احتمالاً LED های خود را می سوزانید و تمام این کار بی نتیجه خواهد بود.
مرحله 3: سخت افزار کنترل
ما باید ستون ها و سطرهای ماتریس LED خود را کنترل کنیم. ماتریس به گونه ای ساخته شده است که آندها (سمت ولتاژ LED) ردیف ها را تشکیل می دهند و کاتدها (سمت زمین LED) ستون ها را تشکیل می دهند. این بدان معناست که راننده سطر ما باید منبع فعلی را تهیه کند و راننده ستون ما باید آن را غرق کند. به منظور صرفه جویی در پین ها ، من از یک shift shift برای کنترل ستون ها استفاده می کنم. به این ترتیب می توانم تعداد تقریباً نامحدودی از ستون ها را فقط با چهار پین میکروکنترلر کنترل کنم. اگر پین Enable Output مستقیماً به ولتاژ وصل باشد ، فقط می توان از سه مورد استفاده کرد. من درایور LED HEF4794 با رجیستر شیفت را انتخاب کرده ام. این یک گزینه بهتر از 74HC595 استاندارد است زیرا می تواند به راحتی جریان فعلی را هنگامی که همه 8 LED روشن هستند ، غرق کند. در سمت بالا (منبع فعلی برای ردیف ها) از mic2981 استفاده می کنم. شماتیک یک UDN2981 را نشان می دهد ، من معتقدم این دو قابل تعویض هستند. این درایور می تواند حداکثر 500 میلی آمپر جریان را تأمین کند. از آنجا که ما فقط 1 ردیف رانندگی می کنیم ، این فرصت زیادی برای توسعه ، تا 33 ستون برای این تراشه (در مرحله "مفاهیم مدولار") فراهم می کند.
ساخت سخت افزار کنترل
برای این دستورالعمل ، من به تازگی این مدار را وارد کرده ام. برای یک راه حل دائمی تر ، می خواهید مدار مدار خود را بچسبانید یا از برد نمونه سازی استفاده کنید. راننده ردیف
- mic2981 (یا UDN2981) را در تخته نان قرار دهید
- پین 9 را به ولتاژ وصل کنید (این در شماتیک گیج کننده است)
- پین 10 را به زمین وصل کنید (این در شماتیک گیج کننده است)
- مقاومتهای 3k3 متصل به پین های 1-8 را وارد کنید
- از بندر D ATmega8 (PD0-PD8) به 8 مقاومت وصل شوید
- سیم های کنترل 8 ردیفه ماتریس LED را به پین های 11-18 وصل کنید (توجه داشته باشید که من پایین ترین ردیف LED ها را به پین 18 و بالاترین ردیف را به پین 11 وصل کرده ام).
2. راننده ستون
- hef4794 را در تخته نان قرار دهید
- پین 16 را به ولتاژ وصل کنید
- پین 8 را به زمین وصل کنید
- مقاومت های 220 اهمی را به پین های 4-7 و 11-14 وصل کنید.
- سیمهای کنترل ستون 8 را از ماتریس LED به 8 مقاومتی که تازه متصل کرده اید وصل کنید.
- Pin1 (Latch) را به PC0 ATmega8 وصل کنید
- Pin2 (Data) را به PC1 ATmega8 وصل کنید
- Pin3 (ساعت) را به PC2 ATmega8 وصل کنید
- Pin15 (فعال کردن خروجی) را به PC3 ATmega8 وصل کنید
3. ساعت کریستال
کریستال 12 مگاهرتز و خازن های بار را همانطور که در شکل نشان داده شده است ، وصل کنید
4. ISP
سربرگ برنامه نویسی را همانطور که در شماتیک نشان داده شده است وصل کنید
5. فیلتر کردن خازن و مقاومت کششی
- بهتر است ولتاژ ارائه شده به ATmega8 را فیلتر کنید. از یک خازن 0.1uf بین پین 7 و 8 ATmega8 استفاده کنید
- پین تنظیم مجدد نباید شناور بماند زیرا می تواند باعث تنظیم مجدد تصادفی شود. از یک مقاومت برای اتصال آن به ولتاژ استفاده کنید ، هر چیزی در حدود 1k باید خوب باشد. من از یک مقاومت 10k در شماتیک استفاده کرده ام.
6. مطمئن شوید که از قدرت تنظیم شده +5 ولت استفاده می کنید. این به عهده شماست که تنظیم کننده را طراحی کنید.
مرحله 4: نرم افزار
حیله
بله ، مانند همه چیز ، یک ترفند وجود دارد. ترفند این است که هرگز بیش از 8 LED در یک زمان روشن نمی شوند. برای اینکه این کار به خوبی انجام شود ، کمی برنامه نویسی ماهر نیاز است. مفهومی که من انتخاب کرده ام استفاده از وقفه زمان سنج است. در اینجا نحوه عملکرد وقفه نمایش به زبان انگلیسی ساده است:
- زمان رسیدن تا زمان مشخصی شمارش می شود ، هنگامی که به سرویس وقفه برسید ، برنامه معمول سرویس اجرا می شود.
- این روال تعیین می کند که کدام ردیف بعدی نمایش داده شود.
- اطلاعات ردیف بعدی از یک بافر جستجو شده و به درایور ستون منتقل می شود (این اطلاعات "چسبیده" نیستند ، بنابراین هنوز نمایش داده نمی شوند).
- راننده ردیف خاموش است ، در حال حاضر هیچ LED روشن نیست.
- درایور ستون در اطلاعاتی که در دو مرحله قبل جابجا کردیم اطلاعات فعلی "قفل شده" است.
- سپس راننده ردیف جریان فعلی ردیف جدیدی را که در حال نمایش آن هستیم ارائه می دهد.
- روال سرویس وقفه پایان می یابد و برنامه تا وقفه بعدی به جریان عادی باز می گردد.
این خیلی خیلی سریع اتفاق می افتد. وقفه هر 1 mSec پرتاب می شود. این بدان معناست که ما تقریباً هر 8 mSec یک بار کل صفحه را تازه می کنیم. این بدان معناست که نرخ نمایش حدود 125 هرتز است. نگرانی هایی در مورد روشنایی وجود دارد زیرا ما در واقع LED ها را در یک چرخه 1/8 کار می کنیم (آنها 7/8 زمان خاموش هستند). در مورد من ، یک صفحه نمایش به اندازه کافی روشن بدون چشمک زدن قابل مشاهده است. صفحه نمایش کامل LED در یک آرایه ترسیم شده است. در بین وقفه ها می توان آرایه را تغییر داد (در مورد اتمی بودن توجه داشته باشید) و در وقفه بعدی روی صفحه نمایش داده می شود. مشخصات نوشتن کد برای میکروکنترلر AVR و نحوه نوشتن کد برای صحبت با شیفت رجیسترها از حوصله خارج است از این دستورالعمل من کد منبع (نوشته شده با C و کامپایل شده با AVR-GCC) و همچنین فایل شش ضلعی را برای برنامه ریزی مستقیم وارد کرده ام. من تمام کد ها را توضیح دادم ، بنابراین باید بتوانید از آن برای روشن کردن هرگونه س questionsال در مورد نحوه وارد کردن داده ها به شیفت رجیستر و نحوه عملکرد تازه سازی سطر استفاده کنید. لطفاً توجه داشته باشید که من از یک فایل فونت همراه با کتابخانه C جهانی ks0108. آن کتابخانه را می توانید در اینجا پیدا کنید:
Shift Registers: How To
من تصمیم گرفته ام کمی در مورد نحوه برنامه نویسی با شیفت رجیسترها اضافه کنم. امیدوارم این کار مواردی را برای کسانی که قبلاً با آنها کار نکرده اند روشن کند. آنچه انجام می دهند در این مورد ، یک سیم داده وجود دارد که داده ها را دریافت می کند و 8 پین بسته به داده ای که دریافت شده است ، کنترل می شوند. برای بهتر شدن کار ، یک خروجی برای هر شیفت رجیستر وجود دارد که می تواند به پین ورودی یک شیفت رجیستر دیگر متصل شود. به این cascading گفته می شود و پتانسیل توسعه را تقریباً نامحدود می کند. ثبت کننده Control PinsShift دارای 4 پین کنترل است:
- Latch - این پین به شیفت رجیستر می گوید که زمان تغییر وضعیت به داده های تازه وارد شده فرا رسیده است
- داده ها - 1 و 0 به shift shift می گویند که چه پینی در این پین دریافت شود.
- ساعت - این یک پالس ارسال شده از میکروکنترلر است که به شیفت رجیستر می گوید که داده ها را خوانده و به مرحله بعدی در فرآیند ارتباط منتقل شود.
- فعال کردن خروجی - این یک کلید روشن/خاموش ، بالا = روشن ، کم = خاموش است
انجام این کار به شما پیشنهاد می دهد: در اینجا یک دوره خرابی در عملکرد پین های کنترل بالا آمده است: مرحله 1: تنظیم Latch ، Data و Clock low
تنظیم پایین Latch به shift shift می گوید که قصد داریم برای آن بنویسیم
مرحله 2: تنظیم پین داده بر روی مقدار منطقی که می خواهید به Shift Register ارسال کنید مرحله 3: پین ساعت را بالا قرار دهید ، به Shift Register بگویید که مقدار پین داده فعلی را بخواند
همه مقادیر دیگر موجود در Shift Register 1 مکان بیشتر حرکت می کنند و فضای منطقی فعلی پین Data را باز می کند
مرحله 4: پین Clock Low را تنظیم کرده و مراحل 2 و 3 را تکرار کنید تا همه داده ها به شیفت رجیستر ارسال شوند.
قبل از تغییر به مقدار داده بعدی ، پین ساعت باید کم تنظیم شود. جابجایی این پین بین بالا و پایین چیزی است که "نبض ساعت" را ایجاد می کند که ثبت کننده شیفت باید بداند چه زمانی باید به مرحله بعدی روند حرکت کند
مرحله 5: Latch را بالا تنظیم کنید
این به رجیستر شیفت می گوید که تمام داده های منتقل شده را گرفته و از آنها برای فعال کردن پین های خروجی استفاده کند. این بدان معناست که شما در حال تغییر داده ها نیستید. تا زمانی که Latch بالا قرار نگیرد هیچ تغییری در پایه های خروجی ایجاد نمی شود
مرحله 6: Enable Output را بالا تنظیم کنید
- تا زمانی که Enable Output روی بالا تنظیم نشده باشد خروجی پین وجود نخواهد داشت ، مهم نیست که در سه پین کنترل دیگر چه اتفاقی می افتد.
- در صورت تمایل می توانید این پین را همیشه بالا بگذارید
دو پین وجود دارد که می توانید برای آبشار استفاده کنید ، Os و Os1. Os برای ساعتهای با سرعت بالا و Os1 برای ساعتهای با سرعت بالا است. این پین را به پین داده رجیستر شیفت بعدی وصل کنید و سرریز از این تراشه در بعدی وارد می شود. پایان به روز رسانی
آدرس دهی به صفحه نمایش
در برنامه مثال ، من یک آرایه از 8 بایت به نام row_buffer ایجاد کرده ام. هر بایت مربوط به یک ردیف از صفحه نمایش 8x8 است ، ردیف 0 پایین و ردیف 7 بالا است. کمترین مقدار هر ردیف در سمت راست و مهمترین بیت در سمت چپ است. تغییر صفحه نمایش به سادگی نوشتن یک مقدار جدید در آن آرایه داده است ، روال سرویس وقفه از طراوت صفحه مراقبت می کند.
برنامه نويسي
برنامه نویسی در اینجا به تفصیل مورد بحث قرار نخواهد گرفت. من به شما هشدار می دهم که از کابل برنامه نویسی DAPA استفاده نکنید زیرا معتقدم که هنگامی که تراشه با فرکانس 12 مگاهرتز کار می کند ، قادر به برنامه نویسی آن نخواهید بود. همه برنامه نویسان استاندارد دیگر باید کار کنند (STK500 ، MKII ، Dragon ، Parallel/Serial programmers و غیره). فیوزها: مطمئن شوید که فیوزها را برای استفاده از کریستال 12 مگاهرتز برنامه ریزی می کنید: 0xC9
در عمل
هنگامی که تراشه را برنامه ریزی می کنید ، صفحه نمایش باید روی "Hello World!" حرکت کند. در اینجا ویدئویی از ماتریس LED در حال انجام است. کیفیت ویدئو بسیار پایین است زیرا این را با ویژگی فیلمبرداری دوربین دیجیتال خود تهیه کردم و نه یک ویدئو یا وب کم مناسب.
مرحله 5: مفاهیم مدولار
این پروژه مقیاس پذیر است. تنها عامل محدودکننده این خواهد بود که منبع تغذیه شما چقدر جریان دارد. (واقعیت دیگر این است که چقدر LED و تغییر دهنده ثبت نام در دسترس دارید).
ریاضی
من LED ها را در حدود 15mA (5V-1.8vDrop/220ohms = 14.5mA) رانندگی می کنم. این بدان معناست که من می توانم تا 33 ستون با درایور mic2981 رانندگی کنم (500mA/15mA = 33.3). تقسیم بر 8 می بینیم که این به ما اجازه می دهد 4 رجیستر شیفت را به هم متصل کنیم. همچنین در نظر داشته باشید که نیازی نیست همه 32 ستون از چپ به راست کشیده شوند. در عوض می توانید یک آرایه 16x16 ایجاد کنید که به همان شیوه ای است که با یک آرایه 8x32 سیم کشی می کنید. با تغییر در 4 بایت این مشکل حل می شود…. دو مورد اول تا ردیف نهم به سمت led تغییر می کند ، دو بایت دوم به ردیف اول تغییر می کند. منبع هر دو ردیف یک پین درایور ردیف است.
Cascading Shift Registers
شیفت رجیسترهای مورد استفاده بصورت آبشاری شیفت رجیستر می باشند. این بدان معناست که هنگام تغییر داده ها ، سرریز روی پین OS ظاهر می شود. بسیار مفید است زیرا مجموعه ای از رجیسترهای شیفت می توانند به یکدیگر متصل شوند ، پین Os به پین داده و 8 ستون با هر تراشه جدید اضافه شود. همه رجیسترهای شیفت به پین های Latch ، Clock و Enput Output یکسان متصل می شوند. میکروکنترلر اثر "آبشاری" هنگامی ایجاد می شود که Os ثبت اول شیفت به پین داده دوم متصل شود. برنامه نویسی باید تغییر کند تا تعداد ستون ها را افزایش دهد. هم بافری که اطلاعات را ذخیره می کند و هم عملکردی که اطلاعات را در هر ستون جابجا می کند باید به روز شود تا تعداد واقعی ستون ها را منعکس کند. شماتیک آن در زیر به عنوان مثال آورده شده است.
رانندگان چند ردیف
راننده ردیف (mic2981) می تواند جریان کافی را برای رانندگی 32 ستون ایجاد کند. اگر بیش از 32 ستون بخواهید چطور؟ باید بتوان از چندین درایور ردیف بدون استفاده از پین های میکروکنترلر بیشتر استفاده کرد. ما به درایورهای ردیف نیاز داریم تا جریان کافی را برای روشن کردن LED ها ایجاد کنند.اگر از ستون های بیشتری نسبت به نور ممکن استفاده می کنید ، رانندگان ردیف اضافی می توانند جریان مورد نیاز را تأمین کنند. از پین های ورودی میکروکنترلر استفاده می شود ، بنابراین نیازی به تغییر اسکن ردیف ها نیست. به عبارت دیگر ، هر راننده ردیف های یک بلوک 8x32 را کنترل می کند. اگرچه 64 ستون ممکن است محل قرارگیری سطرهای فیزیکی یکسانی داشته باشند ، ما گذرگاههای ردیف را به دو قسمت تقسیم می کنیم ، از یک راننده برای 8 ردیف 32 ستون اول و از راننده دوم برای 8 ردیف از ستونهای 32 و غیره استفاده می کنیم. یک طرح کلی از این به عنوان مثال در زیر آورده شده است. اشتباهات احتمالی: 1. از رانندگان چند سطری با تعداد ستون های یکسان استفاده نکنید. انجام این کار به این معنی است که هر پین رجیستر شیفت در یک زمان بیش از یک LED را هدایت می کند. شما باید مجموعه ای از 8 مقاومت (3k3) برای هر راننده ردیف داشته باشید ، یک مجموعه برای چند راننده ردیف کار نمی کند زیرا جریان لازم برای تعویض دروازه ها را فراهم نمی کند.
مثلا
تصمیم گرفتم ماتریسی را که قبلاً ساخته بودم گسترش دهم. من 7 ردیف دیگر در مجموع 15 اضافه کردم زیرا این تنها چیزی است که می توانم روی این صفحه اصلی قرار دهم. من همچنین در مورد مسابقه ای که Instructables با نام "اجازه دهید درخشان شود" انجام می دهد ، پی بردم. در اینجا یک ویدیو از برداشت من در مورد آن وجود دارد. بار دیگر ، دوربین دیجیتالی که برای فیلمبرداری استفاده می کردم ، عدالت را رعایت نمی کند. این برای چشم انسان عالی به نظر می رسد ، به ویژه در جایی که همه LED ها چشمک می زنند ، اما در ویدیو تقریباً خوب به نظر نمی رسد. لذت ببرید: کد منبع این صفحه نمایش بزرگتر در زیر آمده است.
مرحله 6: نتیجه گیری
اضافات احتمالی
I2CI پین های دو سیم رابط (I2C) را در این طرح بدون استفاده رها کرده است. چندین چشم انداز جالب وجود دارد که می توانند از این دو پین استفاده کنند. افزودن I2C EEPROM امکان ذخیره پیامهای بسیار بزرگتر را می دهد. همچنین چشم انداز طراحی برنامه نویسی برای تبدیل mega8 به درایور صفحه نمایش سازگار با I2C وجود دارد. این امر امکان داشتن یک دستگاه USB فعال برای نمایش داده ها در آرایه LED شما را با عبور از گذرگاه I2C باز می کند. ورودی تعداد زیادی پین باقی مانده است که می تواند برای دکمه ها یا گیرنده IR استفاده شود. این به برنامه ها اجازه می دهد تا از طریق یک سیستم منو برنامه ریزی شوند. یکی فقط کاراکترها را روی صفحه می نویسد ، دیگری کاراکترها را روی صفحه می چرخاند. نکته مهمی که باید به خاطر داشته باشید این است که آنچه در چراغ ها مشاهده می کنید در یک آرایه داده نشان داده شده است. اگر روشهای تمیزتری برای تغییر آرایه داده ها ارائه دهید ، چراغها نیز به همان شیوه تغییر می کنند. برخی از فرصتهای جذاب می تواند شامل ایجاد یک متر نمودار از ستون ها باشد. این می تواند به عنوان آنالیز سیگنال با استریو استفاده شود. پیمایش را می توان از بالا به پایین یا پایین به بالا ، حتی از چپ به راست اجرا کرد. موفق باشی، خوش بگذره!
مرحله 7: پیگیری کنید
پس از آنکه اجازه دادم مدار کنترل کننده ماه ها در نان بورد بنشیند ، سرانجام چند تخته مدار طراحی و حک کردم تا این نمونه اولیه را کنار هم قرار دهم. همه چیز عالی پیش رفت ، فکر نمی کنم کاری باشد که متفاوت انجام می دادم.
ویژگی های برد مدار
- شیفت رجیسترها روی تخته های جداگانه ای قرار دارند که می توان آنها را به هم متصل کرد تا اندازه صفحه نمایش را افزایش دهند.
- برد کنترل دارای تنظیم کننده قدرت خود است ، بنابراین می توان آن را توسط هر منبع تغذیه ای که 7v-30v را تأمین می کند اجرا کرد (باتری 9 ولت یا نیمکت 12 ولت هر دو برای من خوب کار می کند).
- هدر ISP 6 پین گنجانده شده است تا میکروکنترلر بدون حذف آن از روی صفحه برنامه ریزی مجدد شود.
- هدر 4 پین برای استفاده در آینده از گذرگاه I2C در دسترس است. این می تواند برای eeprom برای ذخیره پیام های بیشتر یا حتی برای تبدیل این دستگاه به یک دستگاه برده توسط میکروکنترلر دیگر استفاده شود (RSS کسی را تیکت می کند؟)
- 3 دکمه فشاری لحظه ای در طراحی گنجانده شده است. ممکن است در آینده سیستم عامل را تغییر دهم و از این دکمه ها استفاده کنم.
مونتاژ
پلکسی گلاس ، براکت زاویه دار ، پیچ 6x32 دستگاه ، مهره و واشر ، و همچنین یک شیر برای سوراخ های نخ به من بدهید و من می توانم هر چیزی را ایجاد کنم.
جایزه دوم در Let It Glow!
توصیه شده:
استفاده از 2 Shift Registers (74HC595) برای رانندگی 16 LED: 9 مرحله
استفاده از 2 Shift Registers (74HC595) برای رانندگی 16 LED: در این مدار از 2 رجیستر شیفت (74HC595) استفاده می شود. شیفت رجیسترها به عنوان خروجی 16 LED کار می کنند. هر شیفت رجیستر 8 LED را هدایت می کند. شیفت رجیسترها به گونه ای سیم دار هستند که خروجی های هر شیفت رجیستر شبیه یک کپی دیگر باشد
استفاده از ماتریس LED به عنوان اسکنر: 8 مرحله (همراه با تصاویر)
استفاده از ماتریس LED به عنوان اسکنر: دوربین های دیجیتال معمولی با استفاده از طیف وسیعی از حسگرهای نور ، نور را هنگام بازتاب از یک جسم جذب می کنند. در این آزمایش ، می خواستم ببینم آیا می توانم یک دوربین عقب بسازم یا نه: من به جای داشتن مجموعه ای از حسگرهای نور ، من
4 پروژه در 1 با استفاده از DFRobot FireBeetle ESP32 و LED پوشش ماتریس: 11 مرحله (همراه با تصاویر)
4 پروژه در 1 با استفاده از DFRobot FireBeetle ESP32 & LED Matrix Cover: من در مورد انجام هر یک از این پروژه ها یک برنامه آموزشی فکر کردم - اما در نهایت تصمیم گرفتم که واقعاً بزرگترین تفاوت در نرم افزار هر پروژه است که فکر می کردم بهتر است فقط آن را ایجاد کنم یک دستورالعمل بزرگ! سخت افزار برای ea یکسان است
48 X 8 Scrolling LED Matrix Display با استفاده از Arduino و Shift Registers .: 6 مرحله (همراه با تصاویر)
48 X 8 Scrolling LED Matrix Display با استفاده از Arduino و Shift Registers .: سلام به همه! این اولین دستورالعمل من است و همه چیز در مورد ساخت یک ماتریس LED با قابلیت برنامه نویسی 48 * 8 با استفاده از رجیسترهای شیفت Arduino Uno و 74HC595 است. این اولین پروژه من با برد توسعه آردوینو بود. این چالشی بود که به م
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register: 5 مرحله
استفاده از LED ماتریس نقطه ای با ثبت Arduino و Shift: LED ماتریس نقطه DLO7135 زیمنس یکی از قطعات شگفت انگیز اپتوالکترونیک است. این صفحه نمایش به عنوان نمایشگر هوشمند ماتریس نقطه ای 5x7 (r) با حافظه/رمزگشایی/درایور محاسبه می شود. همراه با حافظه ، دارای صفحه نمایش 96 کاراکتری ASCII با بالا و پایین است