فهرست مطالب:

LCD 3-Wire HD44780 کمتر از 1 دلار: 5 مرحله
LCD 3-Wire HD44780 کمتر از 1 دلار: 5 مرحله

تصویری: LCD 3-Wire HD44780 کمتر از 1 دلار: 5 مرحله

تصویری: LCD 3-Wire HD44780 کمتر از 1 دلار: 5 مرحله
تصویری: 3 Wire HD44780 LCD interfacing 2024, جولای
Anonim
LCD 3-Wire HD44780 با قیمت کمتر از 1 دلار
LCD 3-Wire HD44780 با قیمت کمتر از 1 دلار

در این مقاله ما یاد می گیریم که چگونه می توان یک LCD را بر اساس چیپست HD44780 به باس SPI متصل کرده و آن را تنها با 3 سیم با قیمت کمتر از 1 دلار هدایت کرد. اگرچه در این آموزش روی صفحه نمایش الفبایی HD44780 تمرکز می کنم ، اما همین اصل برای هر LCD دیگری که از گذرگاه داده موازی 8 بیتی استفاده می کند تقریباً یکسان عمل می کند و می توان آن را به راحتی با نمایشگرهای با گذرگاه داده 16 بیتی سازگار کرد. به صفحه نمایش های الفبایی مبتنی بر HD44780 (و سازگار) معمولاً در پیکربندی 16x2 (2 خط شامل 16 کاراکتر) و پیکربندی 20x4 در دسترس هستند ، اما می توان آنها را در اشکال دیگر پیدا کرد. پیچیده ترین صفحه نمایش یک صفحه نمایش 40x4 خواهد بود ، این نوع صفحه نمایش خاص است زیرا دارای 2 کنترل HD44780 است ، یکی برای دو ردیف بالا و دیگری برای دو ردیف پایینی. برخی از LCD های گرافیکی دارای دو کنترلر نیز هستند. LCD های HD44780 عالی هستند ، بسیار ارزان ، قابل خواندن و کار با آنها بسیار آسان است. اما آنها معایبی نیز دارند ، این نمایشگرها هنگام اتصال به آردوینو تعداد زیادی پین I/O را اشغال می کنند. در پروژه های ساده این نگران کننده نیست ، اما وقتی پروژه ها بزرگ شوند ، با مقدار زیادی IO ، یا جایی که پین های خاصی برای مواردی مانند خواندن آنالوگ یا PWM مورد نیاز است ، این واقعیت که این LCD ها حداقل به 6 پین نیاز دارند می تواند تبدیل به یک پین شود. مسئله. اما ما می توانیم این مشکل را به روشی ارزان و جالب حل کنیم.

مرحله 1: دریافت اجزاء

من برای بیشتر قطعاتی که در این پروژه استفاده کردم از TaydaElectronics استفاده کردم. شما می توانید این قطعات را در ebay نیز دریافت کنید ، اما برای سهولت استفاده ، شما را به Tayda پیوند می دهم. لیست خرید 2 - بسته 74HC595 DIP161 - هدر مردانه عمومی - 2 پین. این مورد لازم نیست ، من از این به عنوان راهی برای غیرفعال کردن دائمی نور پس زمینه استفاده کردم. 3 - خازن سرامیکی - ظرفیت 0.1μF ؛ ولتاژ 50V1 - خازن الکترولیتی - خازن 10µF ؛ ولتاژ 35V1 - خازن سرامیکی - ظرفیت 220pF ؛ ولتاژ 50V1 - NPN -Transistor - قسمت # PN2222A* 1 - 1k Ω مقاومت 1 - پتانسیومتر تریمر - حداکثر مقاومت 5kΩ1 - مقاومت 470 Ω* با ترانزیستور NPN ، نور پس زمینه تا روشن شدن توسط نرم افزار خاموش می ماند. اگر می خواهید نور پس زمینه به طور پیش فرض روشن باشد ، از ترانزیستور نوع PNP استفاده کنید. هرچند باید در کد کتابخانه ارائه شده تغییرات ایجاد شود. مبلغ زیر برای این لیست 0.744 دلار است. هدر پین نیز مورد نیاز نیست ، بنابراین می توانید 15 سنت در همانجا ذخیره کنید و مجموع فرعی آن 0.6 دلار خواهد بود.

مرحله 2: سخت افزار شماره 1 خود را بشناسید

سخت افزار خود را بشناسید شماره 1
سخت افزار خود را بشناسید شماره 1

در اینجا یک پین استاندارد از LCD HD44780 وجود دارد ، همچنین بسیار شبیه به برخی از LCD های گرافیکی است. HD44780 می تواند در دو حالت کار کند: 1. حالت 4 بیتی ، که در آن هر بایت ارسال شده به LCD از 2 قسمت 4 بیتی تشکیل شده است. 2. حالت 8 بیتی ، که روی آن تمرکز می کنیم. LCD دارای 16 پین در کل ، 3 پین کنترل و 8 پین داده است: RS - کنترل می کند که آیا بخواهیم دستور یا داده ای به LCD ارسال کنیم. جایی که "high" به معنی داده (یک کاراکتر) و "low" به معنی یک بایت فرمان است. R/W - کنترل HD44780 به شما امکان می دهد از RAM آن بخوانید. هنگامی که این پین "بالا" است ، می توانیم داده ها را از پین های داده آن بخوانیم. وقتی "کم" است می توانیم داده ها را روی LCD بنویسیم. اگرچه گزینه خواندن از طریق LCD می تواند در برخی موارد مفید باشد ، اما ما در این آموزش به آن نمی پردازیم ، و ما به سادگی این پین را برای اطمینان از اینکه همیشه در حالت نوشتن است قرار می دهیم. E - E پین "Enable" است ، این پین "بالا" و "کم" را تغییر می دهد تا داده ها را در RAM خود بنویسد و در نهایت آنها را روی صفحه نمایش دهد. DB0-7 - این پین های داده هستند. در حالت 4 بیتی ما فقط از 4 بیت بالا DB4 -DB7 استفاده می کنیم و در حالت 8 بیتی از همه آنها استفاده می شود. VSS - این پین پایه است. VCC - این پین قدرت ، LCD از منبع تغذیه 5 ولت خاموش می شود ، ما به راحتی می توانیم آن را از پین + 5v Arduino تغذیه کنیم. Vo - این پینی است که به شما امکان می دهد سطح کنتراست را برای صفحه تنظیم کنید ، به پتانسیومتر نیاز دارد ، معمولاً از قابلمه 5K اهم استفاده می شود. LED + - این منبع تغذیه برای نور پس زمینه برخی از LCD ها دارای نور پس زمینه نیستند و فقط 14 پین دارند. در بیشتر موارد ، این پین همچنین به اتصال +5 ولت نیاز دارد. LED- این زمینه برای نور پس زمینه است. ** بررسی برگه اطلاعات صفحه نمایش یا بررسی PCB آن برای بررسی مقاومت نور پس زمینه ، اکثر LCD ها آنها را ساخته اند -در این صورت ، تنها کاری که باید انجام دهید این است که برق را به LED+ و زمین را به LED- اعمال کنید. اما در صورتی که LCD شما دارای مقاومت داخلی برای نور پس زمینه نباشد ، مهم است که آن را اضافه کنید ، در غیر این صورت نور پس زمینه انرژی زیادی مصرف می کند و در نهایت می سوزد. در بیشتر موارد نحوه اتصال این LCD به آردوینو استفاده از آن در حالت 4 بیتی و اتصال پین R/W است. به این ترتیب ما از پین های RS ، E و DB4-DB7 استفاده می کنیم. اجرای در حالت 4 بیتی دارای یک معایب کوچک دیگر است زیرا نوشتن اطلاعات روی صفحه دو برابر بیشتر از پیکربندی 8 بیتی طول می کشد. LCD زمان "ته نشینی" 37 میکروثانیه دارد ، این بدان معناست که قبل از ارسال دستور بعدی یا بایت داده به LCD باید 37 میکرو ثانیه منتظر بمانید. از آنجا که در حالت 4 بیتی ما باید داده ها را برای هر بایت دو بار ارسال کنیم ، کل زمان لازم برای نوشتن یک بایت به 74 میکرو ثانیه می رسد. این هنوز به اندازه کافی سریع است ، اما من می خواستم طراحی من بهترین نتایج ممکن را تولید کند. راه حل مشکل ما با تعداد پین های استفاده شده در مبدل سریال به موازی است…

مرحله 3: سخت افزار شماره 2 خود را بشناسید

سخت افزار خود را بشناسید شماره 2
سخت افزار خود را بشناسید شماره 2

کاری که ما انجام خواهیم داد این است که یک آداپتور بسازیم که یک نوع سریال ارتباطی را از Arduino بیرون می آورد و داده ها را به یک خروجی موازی تبدیل می کند که می تواند به LCD ما تغذیه شود. تراشه 74HC595 وارد بازار می شود. این یک شیفت شیفت بسیار ارزان و ساده است. در اصل کاری که انجام می دهد این است که یک ساعت و سیگنال های داده ای را که از آن برای پر کردن یک بافر داخلی 8 بیتی با 8 بیت اخیر "کلاک شده" استفاده می کند ، استفاده می کند. هنگامی که پین "Latch" (ST_CP) "بالا" آورده می شود ، این بیت ها را به 8 خروجی خود منتقل می کند. 595 دارای ویژگی بسیار خوبی است ، دارای پین خروجی داده های سریال (Q7 ') است ، از این پین می توان برای زنجیره 2 یا بیشتر 595 با هم استفاده کرد تا آداپتورهای سریال به موازی با عرض 16 یا بیشتر ایجاد شود. برای این پروژه به 2 عدد از این تراشه ها نیاز داریم. همچنین می توان شماتیک را تغییر داد تا با 595 واحد در حالت 4 بیتی کار کند ، اما این مورد در این آموزش پوشش داده نمی شود.

مرحله 4: سیم کشی همه چیز

سیم کشی همه چیز
سیم کشی همه چیز

اکنون که می دانیم سخت افزار ما چگونه کار می کند ، می توانیم همه چیز را سیم کشی کنیم. در شماتیک ما 2 595 تراشه دیزی را مشاهده می کنیم که به هم زنجیر شده و خروجی موازی 16 بیتی را تشکیل می دهند. تراشه پایینی در واقع اصلی ترین است و تراشه بالایی آن دیزی است که به آن زنجیر شده است. آنچه در اینجا مشاهده می کنیم این است که 595 پایین پین های داده LCD را با پیکربندی 8 بیتی هدایت می کند ، تراشه بالایی با روشن یا خاموش کردن ترانزیستور سیگنال RS و نور پس زمینه را کنترل می کند. یادداشت *در مورد نور پس زمینه LCD را در صفحه 1 سخت افزار خود بدانید به خاطر بسپارید ، در صورتی که LCD شما دارای مقاومت نور پس زمینه نیست ، فراموش نکنید که یکی را در مدار خود اضافه کنید. در مورد LCD هایی که قبلاً با یک مقاومت ساخته شده بودم ، بنابراین این مرحله را کنار گذاشتم. کنتراست از طریق یک قابلمه 5K اهم اعمال می شود ، یک پین به GND می رود ، دومی به VCC و پاک کننده به پین Vo روی LCD می رود. خازن های مورد استفاده در خطوط LCD و 595 VCC در حال جدا کردن خازن ها هستند ، آنها برای خلاص شدن از تداخل وجود دارند. اگر شما در حال کار روی یک تخته نان هستید ، لازم نیست ، اما باید در صورت ساخت نسخه خود از این مدار برای استفاده در خارج از "شرایط آزمایشگاه" مورد استفاده قرار گیرد. R5 و C9 با آن ترتیب خاص ، تأخیر RC ایجاد می کنند ، که اطمینان می دهد قبل از اینکه پین Enable روی LCD "بالا" تنظیم شود و داده ها را بخواند ، داده های خروجی 595 دارای زمان ثبات است. Q7 '595 پایینی وارد ورودی داده های سریال 595 در بالا می شود ، این یک زنجیره دیزی 595 و در نتیجه یک رابط 16 بیتی ایجاد می کند. اتصال به آردوینو آسان است. ما از پیکربندی 3 سیمه با استفاده از پین های SPI آردوینو استفاده می کنیم. این امکان انتقال سریع داده ها را فراهم می کند ، ارسال 2 بایت به LCD معمولاً حدود 8 میکروثانیه طول می کشد. این بسیار سریع است و در واقع بسیار سریعتر از زمانی است که LCD برای پردازش داده ها نیاز دارد ، بنابراین بین هر نوشتن 30 تا میکرو ثانیه تأخیر لازم است. یکی از مزایای بسیار زیاد استفاده از SPI این است که پین های D11 و D13 با سایر دستگاه های SPI به اشتراک گذاشته می شود. این بدان معناست که اگر قبلاً جزء دیگری دارید که از SPI استفاده می کند ، مانند شتاب سنج ، این راه حل فقط از یک پین اضافی برای سیگنال فعال استفاده می کند. در صفحه بعد نتیجه را می بینیم. من یک کوله پشتی روی یک تخته چوبی ساخته ام و تا اینجا برای من بسیار خوب کار کرده است.

مرحله 5: نتیجه + کتابخانه

نتیجه + کتابخانه
نتیجه + کتابخانه
نتیجه + کتابخانه
نتیجه + کتابخانه
نتیجه + کتابخانه
نتیجه + کتابخانه
نتیجه + کتابخانه
نتیجه + کتابخانه

"یک عکس ارزش هزار کلمه دارد" ، من با این جمله موافقم ، بنابراین در اینجا تصاویری از نتیجه نهایی این پروژه ارائه شده است. اینها تصاویری از محصول تکمیل شده هستند ، نمای PCB Fritzing طرح چوبی است که من برای ساخت کوله پشتی خود استفاده کردم. اگر می خواهید خود را بسازید ممکن است مفید باشد. من آن را بسیار دوست داشتم که با استفاده از DipTrace یک PCB طراحی کردم و دسته ای از 10 PCB سفارش دادم. من برای خودم به 2 یا 3 واحد نیاز دارم اما بقیه را با قیمت نمادین در اختیارم قرار می دهم. بنابراین اگر کسی علاقه مند است به من اطلاع دهد. * ویرایش: PCB ها اینجا هستند و کار می کنند. در اینجا گالری تصاویر کامل این پروژه ، از جمله PCB های واقعی است. https://imgur.com/a/mUkpw#0 البته من مهمترین چیز را فراموش نکردم ، کتابخانه ای که می توانم از این مدار با آن استفاده کنم. این کتابخانه با کتابخانه LiquidCrystal موجود با Arduino IDE سازگار است ، بنابراین می توانید به راحتی اظهارات را در بالای طرح خود جایگزین کنید و مجبور نباشید چیز دیگری را در طرح خود تغییر دهید. همچنین یک طرح نمونه وجود دارد که نحوه عملکرد هر یک از عملکردهای کتابخانه را نشان می دهد ، بنابراین آن را بررسی کنید.

توصیه شده: