فهرست مطالب:

استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register: 5 مرحله
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register: 5 مرحله

تصویری: استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register: 5 مرحله

تصویری: استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register: 5 مرحله
تصویری: پروژه آردوینو - دزدگیر حساس به حرکت با آردوینو 2024, نوامبر
Anonim
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register
استفاده از LED ماتریس نقطه ای با آردوینو و Shift Register

LED ماتریس نقطه زیمنس DLO7135 یکی از قطعات شگفت انگیز اپتوالکترونیک است. این صفحه نمایش به عنوان نمایشگر هوشمند ماتریس نقطه ای 5x7 (r) با حافظه/رمزگشایی/درایور محاسبه می شود. همراه با حافظه ، دارای یک صفحه نمایش 96 کاراکتری ASCII با نویسه های بزرگ و کوچک ، یک ژنراتور و مولتی پلکسر داخلی ، چهار سطح شدت نور ، و همه آن با 5 ولت کار می کند. ، و با 16 دلار در هر پاپ ، قطعاً باید باشد. در حالی که نیمی از روز را در مغازه لوازم الکترونیکی مورد علاقه خود گذراندم ، سطل پر از آن را با قیمت هر قطعه 1.50 دلار پیدا کردم. با چند نفر از مغازه خارج شدم. این دستورالعمل نحوه اتصال به LED های ماتریس نقطه ای و نمایش کاراکترها با استفاده از آردوینو مبتنی بر AVR را به شما نشان می دهد. اگر هر یک از راهنماهای قبلی من را خوانده اید ، ممکن است این ایده را به دست آورید که من اغلب طرفدار ساده ترین راه حل هستم ، و شما در اشتباه نخواهید بود ، حتی اگر هر از گاهی از هدف کوتاه بیایم. به بنابراین ، من نیز یک گام دیگر در این دستورالعمل بر می دارم و به شما نشان می دهم که چگونه می توانید تعداد پورت های ورودی/خروجی مورد نیاز برای رانندگی این LED های بزرگ و ماتریس نقطه ای را کاهش دهید.

مرحله 1: کالاها را دریافت کنید…

دریافت کالاها…
دریافت کالاها…

برای این پروژه کوتاه کوتاه ، شما نیاز دارید:

  • یک میکروکنترلر مبتنی بر AVR مانند آردوینو یا هر یک از انواع مشابه آن. این دستورالعمل ها احتمالاً می توانند با MCU دلخواه شما سازگار شوند.
  • یک LED ماتریس نقطه DLO7135 یا سایر در همان خانواده
  • یک ثبت کننده شیفت 8 بیتی مانند 74LS164 ، 74C299 یا 74HC594
  • یک تخته نان
  • سیم اتصال ، سیم برش و غیره

آهن لحیم کاری لازم نیست ، اگرچه بعداً از آن استفاده می کنم. بدون آن می توانید کنار بیایید

مرحله 2: مستقیماً به صفحه نمایش LED متصل شوید

اتصال مستقیم به صفحه نمایش LED
اتصال مستقیم به صفحه نمایش LED
اتصال مستقیم به صفحه نمایش LED
اتصال مستقیم به صفحه نمایش LED
اتصال مستقیم به صفحه نمایش LED
اتصال مستقیم به صفحه نمایش LED

لیست کوچکی از قطعات خود را تنظیم کرده و LED را بگیرید. آن را روی تخته نان تا حدودی قرار داده و شیار خط میانی را کنار هم قرار دهید. قسمت اول اتصال همه در سمت چپ LED انجام می شود. پین شماره 1 در بالا سمت چپ قرار دارد همانطور که با مثلث/پیکان نشان داده شده است. هنگام خواندن یا اتصال LED خود ، عملکردهای پین را روی یک تصویر برای مرجع شما قرار می دهم.

سمت چپ

مثبت و منفی با شروع از بالا سمت چپ ، Vcc را به 5 ولت وصل کنید. شاید این ایده خوبی باشد که تا زمانی که تمام قسمت چپ را کامل نکنید ، از برد خود استفاده نکنید. اگر می خواهید سوراخ های کوچکی را مشاهده کنید تا در سیم ها ایجاد شوند ، LED می تواند روشن باشد. GND پایین سمت چپ را به زمین وصل کنید. تست لامپ ، فعال کردن تراشه و نوشتن 2 و 3 از بالا در سمت چپ عبارتند از Lamp Test و Chip Enable. اینها هر دو منطق منفی هستند ، به این معنی که آنها زمانی فعال می شوند که به جای 1 در 0 باشند ، تصویر من در زیر باید دارای نوار باشد ، اما من برای هیچکدام از آنها حاشیه نویسی نکردم. پین LT در صورت فعال بودن هر نقطه در ماتریس نقطه را با روشنایی 1/7 روشن می کند. این بیشتر یک تست پیکسل است ، اما نکته جالب در مورد پین LT این است که هیچ کاراکتری را که در حافظه است بازنویسی نمی کند ، بنابراین اگر چندین مورد از آنها را با هم بچسبانید (فاصله مشاهده آنها 20 فوت است) ، LT را نوازش کنید می تواند آن را مانند یک مکان نما به نظر برساند. برای اطمینان از غیرفعال بودن آن ، آن را به 5 ولت وصل کنید. پین های CE و WR نیز منطق منفی هستند و برای نوشتن این دستگاه هوشمند باید فعال شوند. شما می توانید این پین ها را با درگاه های ورودی/خروجی اضافی روی میکروکنترلر خود به صورت میکرومدت مدیریت کنید ، اما ما در اینجا مزاحم نمی شویم. فقط آنها را به زمین وصل کنید تا فعال باشند. سطوح روشنایی چهار سطح روشنایی قابل برنامه ریزی در خانواده LED های DLO وجود دارد:

  • جای خالی
  • 1/7 روشنایی
  • 1/2 روشنایی
  • روشنایی کامل

BL1 HIGH و BL0 LOW 1/2 روشنایی است. هر دو HIGH دارای روشنایی کامل هستند. آن را روی هر چیزی که دوست دارید تنظیم کنید. باز هم ، اگر پورت های ورودی/خروجی دارید و برای شما به اندازه کافی مهم است ، می توانید آن را توسط آردوینو نیز کنترل کنید. این قسمت سمت چپ را جمع می کند. اگر برق را به برد خود وارد می کنید ، باید چراغ LED را ببینید. اگر کنجکاو هستید با کنترل های روشنایی و آزمایش لامپ بازی کنید تا با آن آشنا شوید.

سمت راست

سمت راست کاملاً از پورت های داده تشکیل شده است. پایین سمت راست ، پین 8 یا D0 به طور دقیق ، نشان دهنده کمترین مقدار بیت در کاراکتر 7 بیتی است. بالا سمت راست ، پین 14 یا D6 نشان دهنده مهمترین بیت است. این به شما این امکان را می دهد که هنگام نوشتن روی LED ، بیت خود را به هم بزنید. وقتی پورت های ورودی داده ها را به هم متصل کردید ، هفت پورت دیجیتال ورودی/خروجی خالی را در Arduino یا AVR خود پیدا کرده و آنها را وصل کنید. احتمالاً می خواهید به یاد داشته باشید که کدام پورت خروجی داده در AVR شما به کدام پورت ورودی داده در LED می رود. حالا شما آماده هستید که برخی داده ها را به آن LED هوشمند منتقل کنید. آیا هنوز از هیجان می لرزید؟ میدانم که هستم…

مرحله 3: تعیین یک کاراکتر برای نمایش

تعیین یک کاراکتر برای نمایش
تعیین یک کاراکتر برای نمایش

مجموعه کاراکترهایی که در این LED CMOS استفاده می شود ASCII کارخانه شما است که از 0x20 (اعشار 32 ؛ فاصله) شروع می شود و به 0x7F ختم می شود (اعشاری 127 ؛ حذف ، اگرچه در LED به عنوان نمودار گرافیکی نشان داده شده است) به بنابراین ، داشتن یک کاراکتر LED نشانگر چیزی نیست جز فشار دادن منطق 1 یا 0 در پین های خروجی داده ها ، که معمولاً با یک نبض WR دنبال می شود ، اما من این را برای این تمرین ذکر کردم. بنابراین ، شما نوشتید یا به یاد دارید که چه پین هایی به چه پورت هایی می روند ، درست است؟ من PD [2..7] و PB0 (پین های دیجیتالی 2 تا 8 در آردوینو اسپیک) را انتخاب کردم. من معمولاً استفاده از PD [0..1] را پیشنهاد نمی کنم زیرا آن را به ارتباط سریالی خود به یک جعبه FreeBSD و Arduino's و همکاران اختصاص می دهم. این پین ها را به کانال ارتباطی USB FTDI خود ترسیم کنید ، و اگرچه "آنها" می گویند اگر شما ارتباط سریالی را آغاز نکنید ، پین 0 و 1 کار می کند ، من هرگز نتوانستم از آن پین ها به عنوان ورودی/خروجی دیجیتال معمولی استفاده کنم. در واقع ، وقتی سعی کردم از PD0 و PD1 استفاده کنم و متوجه شدم که آنها همیشه بالا هستند ، دو روز سعی کردم اشکال را برطرف کنم. * شانه بالا بیاندازید* احتمالاً خوب خواهد بود که نوعی ورودی خارجی داشته باشید ، مانند صفحه کلید ، چرخ دستی یا کلید انگشت شست ، یا شاید حتی ورودی از ترمینال (ArduinoTerm من هنوز برای زمان اصلی آماده نیست …). انتخاب باشماست. در حال حاضر ، من فقط قصد دارم نحوه دریافت کد را برای به دست آوردن کاراکتر مورد نظر خود در LED نشان دهم. یک فایل فشرده برای بارگیری شامل کد منبع و Makefile وجود دارد و همچنین یک فیلم کوتاه وجود دارد که نشان می دهد چاپگر LED مجموعه شخصیت های آن را چاپ می کند. با عرض پوزش بابت کیفیت بد ویدئو. کد زیر رشته "Welcome to my Instructable!" را چاپ می کند. سپس کل مجموعه کاراکترهایی را که LED پشتیبانی می کند دور می زند.

DDRD = 0xFF ؛ // خروجی DDRB = (1 << DDB0) ؛ char msg = "به آموزش من خوش آمدید!"؛ uint8_t i؛ for (؛؛) {for (i = 0؛ i <27؛ i ++) {Print2LED (msg )؛ _ delay_ms (150) ؛ } برای (i = 0x20؛ i <0x80؛ i ++) {Print2LED (i)؛ _ delay_ms (150) ؛ } Print2LED (& apos*& apos)؛}خروجی پورت در عملکرد () Print2Led مورد توجه قرار می گیرد

voidPrint2LED (uint8_t i) {PORTD = (i << 2)؛ if (i & 0b01000000) PORTB = (1 <

کد و Makefile در یک فایل زیپ در زیر گنجانده شده است.

مرحله 4: درگاه های ورودی/خروجی را با یک Shift Register ذخیره کنید

با یک Shift Register از درگاه های ورودی/خروجی محافظت کنید
با یک Shift Register از درگاه های ورودی/خروجی محافظت کنید
با یک Shift Register از پورت های ورودی/خروجی محافظت کنید
با یک Shift Register از پورت های ورودی/خروجی محافظت کنید
با یک Shift Register از درگاه های ورودی/خروجی محافظت کنید
با یک Shift Register از درگاه های ورودی/خروجی محافظت کنید

بنابراین در حال حاضر میکروکنترلر ما می تواند داده ها را به LED ماتریس نقطه ارسال کند اما از هشت پورت I/O استفاده می کند. این شامل استفاده از ATtiny در بسته DIP 8 پین نمی شود و حتی با آردوینو جدیدتر دارای ATmega328p است که تعداد زیادی پورت ورودی/خروجی برای یک LED دارد. با این حال ، ما می توانیم با استفاده از IC به نام shift shift این مشکل را حل کنیم. یک لحظه برای "جابجایی" دنده ها … یک شیفت رجیستر را می توان با تفکر در مورد دو کلمه ای که نام آن را تشکیل می دهند درک کرد: "shift" و "register". واژه shift به نحوه حرکت داده ها در رجیستر اشاره دارد. در اینجا (به طور کلی در آردوینو و میکروکنترلرهای ما) ثبت نام مکانی است که داده ها را در خود نگه می دارد. این کار را با پیاده سازی یک زنجیره خطی از مدارهای منطقی دیجیتالی به نام "فلیپ فلاپس" انجام می دهد که دارای دو حالت پایدار است که می تواند با 1 یا 0 نشان داده شود. بنابراین ، با قرار دادن هشت فلیپ فلاپ در کنار هم دستگاهی دارید که قادر به نگه داشتن آن است. و نشان دهنده یک بایت 8 بیتی است. همانطور که چندین نوع فلیپ فلاپ وجود دارد و چندین تنوع در موضوع شیفت رجیسترها وجود دارد (شمارنده های بالا/پایین و شمارنده جانسون را نیز در نظر بگیرید) ، چندین نوع رجیستر شیفت بر اساس نحوه داده ها وجود دارد. در رجیستر و نحوه خروجی آن داده ها قفل شده است. بر این اساس ، انواع شیفت رجیسترهای زیر را در نظر بگیرید:

  • سریال ورودی / خروجی موازی (SIPO)
  • سریال ورودی / خروجی سریال (SISO)
  • موازی/ خروجی سریال (PISO)
  • ورودی موازی / خروجی موازی (PIPO)

دو مورد از آنها SIPO و PISO هستند. ثبت های SIPO داده ها را به صورت سری ، یعنی یکی پس از دیگری ، می گیرند ، بیت ورودی قبلی را به فلیپ فلاپ بعدی منتقل می کنند و داده ها را به طور همزمان بر روی تمام ورودی ها ارسال می کنند. این یک مبدل سریال خوب به موازی می سازد. برعکس ، ثبت کننده های تغییر PISO ورودی های موازی دارند ، بنابراین همه بیت ها به طور همزمان وارد می شوند ، اما یک به یک خروجی می شوند. و حدس زده اید ، این باعث می شود یک مبدل موازی زیبا با سریال تبدیل شود. شیفت رجیستری که می خواهیم از آن برای کاهش تعداد پین های ورودی/خروجی استفاده کنیم به ما امکان می دهد آن 8 پین IO را که قبلاً استفاده کرده بودیم برداریم و آنها را به یک یا شاید فقط چند عدد کاهش دهیم. بیت ها بنابراین ، شیفت رجیستری که استفاده می کنیم Serial In / Parallel Out است. سیم کشی شیفت بین LED و آردوینو استفاده از شیفت رجیستر آسان است. سخت ترین بخش فقط تجسم پین های خروجی داده ها و چگونگی به پایان رسیدن رقم های دوتایی در IC و نحوه نمایش آنها در LED است. یک لحظه وقت بگذارید تا این کار را برنامه ریزی کنید. 1. 5V را به پین 14 (بالا سمت راست) وصل کنید و پین 7 (پایین سمت چپ) را به زمین بکشید. شیفت رجیستر دارای دو ورودی سریال است اما ما فقط از یکی استفاده می کنیم ، بنابراین پین دو را به 5V3 وصل کنید. ما از پین روشن (برای صفر کردن همه خروجی ها) استفاده نمی کنیم ، بنابراین آن را شناور بگذارید یا به 5V4 حمله کنید. یک پورت IO دیجیتالی را به پین یکی از shift shift متصل کنید. این پین ورودی سریال است. یک پورت IO دیجیتال را به پین 8 (پایین سمت راست) وصل کنید. این پین ساعت است. خطوط داده خود را از Q0 به Q6 متصل کنید. ما فقط از 7 بیت استفاده می کنیم زیرا مجموعه کاراکتر ASCII فقط از هفت بیت استفاده می کند. من از PD2 برای خروجی داده های سریال و PD3 برای سیگنال ساعت استفاده کردم. برای پین های داده ، Q0 را به D6 روی LED متصل کردم و این کار را ادامه دادم (Q1 تا D5 ، Q2 تا D4 و غیره). از آنجا که ما داده ها را به صورت سری ارسال می کنیم ، باید نمای دوتایی هر نویسه ای را که می خواهیم ارسال کنیم ، بررسی کنیم ، 1 و 0 را بررسی کرده و هر بیت را در خط سریال خروجی دهیم. من نسخه دوم منبع dotmatrixled.c را به همراه Makefile در زیر قرار داده ام. این مجموعه کاراکترها را دور می زند و همه کاراکترهای زوج را نمایش می دهد (اگر فکر می کنید که یک حرف می تواند فرد یا زوج باشد عجیب است ، برای لحظه ای به نمایش دوتایی فکر کنید). سعی کنید نحوه نمایش آن را از طریق نمایش همه کاراکترهای عجیب و غریب بیابید. می توانید اتصالات بین شیفت رجیستر ، LED ماتریس نقطه و آردوینو را آزمایش کنید. چندین ویژگی کنترل بین LED و رجیستر وجود دارد که می تواند به شما امکان تنظیم دقیق زمان نمایش داده ها را بدهد. بنابراین … ما از مجبور به استفاده از هشت درگاه ورودی/خروجی به دو استفاده کرده ایم!

مرحله 5: خلاصه

خلاصه
خلاصه
خلاصه
خلاصه

در این قسمت آموزشی ، من LED ماتریس نقطه DLO7135 و نحوه عملکرد آن را ارائه کرده ام. در ادامه ، نحوه کاهش تعداد پورت های ورودی/خروجی مورد نیاز از هشت به دو عدد با استفاده از یک shift shift را مورد بحث قرار دادم. LED ماتریس نقطه ای DLO7135 را می توان به هم وصل کرد تا خیمه های بسیار چشم نواز و جالبی ایجاد کند. امیدوارم از خواندن این مطلب آموزنده لذت برده باشید! اگر فکر می کنید من می توانم پیشرفت هایی داشته باشم یا پیشنهادهایی که می خواهید در مورد این یا هر یک از "من" ارائه دهید ، خوشحالم که آنها را می شنوم! AVR'ing مبارک!

توصیه شده: