اتصال ال سی دی آردوینو nano i2c. اتصال صفحه نمایش LCD LCM1602 با I2C به آردوینو. برنامه ای برای ایجاد آسان نمادها

ماژول LCD I2C به شما این امکان را می دهد که فقط با دو سیم سیگنال یک نمایشگر کاراکتر را به برد آردوینو متصل کنید.

قطعات مورد استفاده (خرید از چین):

. برد کنترل

. سیم های اتصال

مشخصات فنی اصلی:

نمایشگر: کاراکتر 16x02 یا 20x04
. روشنایی: آبی با کاراکترهای سفید
. کنتراست: قابل تنظیم توسط پتانسیومتر
. ولتاژ تغذیه: 5 ولت
. رابط: I2C
. آدرس I2C: 0x27
. ابعاد: 82mm x 35mm x 18mm

اتصال به آردوینو

این ماژول به یک کانکتور 2.54 میلی متری چهار پین مجهز شده است

SCL: خط ساعت سریال (ساعت سریال)

SDA: خط داده سریال (داده سریال)

VCC: قدرت "+".

GND: "-" قدرت

پین های مسئول رابط I2C در بردهای آردوینو بر اساس کنترلرهای مختلف متفاوت است

برای کار با این ماژول، باید کتابخانه LiquidCrystal_I2C1602V1 را نصب کنید.

دانلود کنید، بسته بندی کنید و در پوشه libraries در پوشه آردوینو رها کنید. اگر در زمان افزودن کتابخانه، Arduino IDE باز بود، محیط را مجددا راه اندازی کنید.

بیایید مستقیماً برویم سراغ طرح. AT این مثالخروجی استاندارد "سلام، جهان!" و برای آدرس جامعه ما.

نمونه کد:

#عبارتند از #عبارتند از ال سی دی LiquidCrystal_I2C (0x27,16,2); /* آدرس و اندازه نمایشگر را تنظیم کنید. هنگام استفاده از ماژول LCD I2C با صفحه نمایش 20x04، هیچ چیزی در کد نیاز به تغییر ندارد، فقط باید ابعاد صحیح را تنظیم کنید */خالی برپایی() (lcd.init(); // ال سی دی را مقداردهی کنید lcd.backlight(); // نور پس زمینه را روشن کنید // مکان نما در ابتدای خط 1 قرار دارد lcd.print ("سلام، دنیا!"); // نمایش متن lcd. setCursor (0, 1); // مکان نما را در ابتدای خط 2 قرار دهید lcd.print("سایت"); // نمایش متن ) void حلقه () { }

ایجاد نمادهای خود

خروجی متن را فهمیدیم، حروف الفبای انگلیسی در حافظه کنترلر داخل نمایشگر دوخته شده و هیچ مشکلی برای آنها وجود ندارد. اما اگر کاراکتر مورد نظر در حافظه کنترلر نباشد چه باید کرد؟

مهم نیست، کاراکتر مورد نیاز را می توان به صورت دستی ساخت. این روشتا حدی محدودیت 7 کاراکتری به حل مشکل خروجی کمک می کند.

سلول، در نمایشگرهای مورد نظر ما، دارای وضوح 5x8 پیکسل است. تمام وظیفه ایجاد یک نماد به نوشتن یک ماسک بیت و قرار دادن یک ها در آن در مکان هایی که نقطه ها باید بسوزند و صفرها در جایی که نمی سوزند، خلاصه می شود.

در مثال زیر، بیایید یک صورتک بکشیم.

نمونه کد:

//بر روی Arduino IDE 1.0.5 تست شده است // کتابخانه های مورد نیاز را اضافه کنید#عبارتند از #عبارتند از // بیت ماسک نماد لبخندبایت لبخند = ( B00010، B00001، B11001، B00001، B11001، B00001، B00010، ); ال سی دی LiquidCrystal_I2C (0x27,20,4); // آدرس و اندازه نمایشگر را تنظیم کنید.خالی برپایی() (lcd.init(); // ال سی دی را مقداردهی کنید lcd.backlight(); // نور پس زمینه را روشن کنید // نماد شماره 0 را ایجاد کنید lcd.createChar(1، لبخند); lcd.setCursor(0, 0); // مکان نما را در ابتدای خط 1 قرار دهید lcd.print("\1"); // نمایش شکلک (شخصیت شماره 1) - "\1") خالی حلقه () { }

برنامه ای برای ایجاد آسان نمادها

در نظرات، یکی از اعضای انجمن پیوندی به یک تولید کننده کاراکتر انداخت

  • ماژول FC-113 مبتنی بر تراشه PCF8574T است که یک رجیستر شیفت 8 بیتی است - یک توسعه دهنده I/O برای اتوبوس سریال I2C. در شکل، ریز مدار DD1 تعیین شده است.
  • R1 - صاف کننده برای تنظیم کنتراست صفحه نمایش LCD.
  • Jumper J1 برای روشن کردن نور پس زمینه نمایشگر استفاده می شود.
  • برای اتصال ماژول به پین ​​های نمایشگر LCD از پین های 1…16 استفاده می شود.
  • برای تغییر آدرس I2C دستگاه به پدهای تماس A1 ... A3 نیاز است. با لحیم کاری جامپرهای مناسب می توانید آدرس دستگاه را تغییر دهید. جدول مطابقت بین آدرس ها و جامپرها را نشان می دهد: "0" مربوط به یک مدار باز است، "1" - یک بلوز نصب شده است. به طور پیش فرض، هر 3 جامپر و آدرس دستگاه باز هستند 0x27.

2 نمودار سیم کشی صفحه نمایش LCD به آردوینواز طریق پروتکل I2C

ماژول به طور استاندارد برای گذرگاه I2C به آردوینو متصل می شود: خروجی SDA ماژول به پورت آنالوگ A4 و خروجی SCL به پورت آنالوگ A5 آردوینو متصل است. این ماژول با +5 ولت از آردوینو تغذیه می شود. خود ماژول توسط پین های 1…16 به پین ​​های مربوطه 1…16 در صفحه نمایش LCD متصل می شود.


3 کتابخانه برای کاراز طریق پروتکل I2C

اکنون به یک کتابخانه برای کار با LCD از طریق رابط I2C نیاز داریم. برای مثال می توانید از این (لینک در خط "دانلود نمونه کد و کتابخانه") استفاده کنید.

بایگانی دانلود شد LiquidCrystal_I2Cv1-1.rarاز حالت فشرده در یک پوشه خارج کنید \ کتابخانه ها، که در فهرست Arduino IDE قرار دارد.

این کتابخانه مجموعه ای از عملکردهای استاندارد را برای صفحه نمایش LCD پشتیبانی می کند:

عملکردهدف
کریستال مایع() یک متغیر از نوع LiquidCrystal ایجاد می کند و پارامترهای اتصال صفحه نمایش (اعداد پین) را می پذیرد.
شروع() مقداردهی اولیه نمایشگر LCD، تنظیم پارامترها (تعداد خطوط و نمادها)؛
واضح () پاک کردن صفحه نمایش و برگرداندن مکان نما به موقعیت اصلی خود؛
خانه () بازگشت مکان نما به موقعیت اولیه؛
setCursor() تنظیم مکان نما در یک موقعیت مشخص؛
نوشتن() کاراکتر را روی صفحه LCD نمایش می دهد.
چاپ() متن را روی صفحه LCD نمایش می دهد.
مکان نما () مکان نما را نشان می دهد، یعنی. زیر خط کشیدن زیر کاراکتر بعدی؛
noCursor() مکان نما را پنهان می کند.
چشمک زدن () چشمک زدن مکان نما؛
noBlink() لغو چشمک زدن؛
noDisplay() خاموش کردن صفحه نمایش در حین ذخیره تمام اطلاعات نمایش داده شده؛
نمایش دادن() روشن کردن صفحه نمایش در حین ذخیره تمام اطلاعات نمایش داده شده؛
scrollDisplayLeft() پیمایش محتویات صفحه نمایش 1 موقعیت به سمت چپ.
scrollDisplayRight() پیمایش محتویات صفحه نمایش 1 موقعیت به سمت راست.
اسکرول خودکار() فعال کردن پیمایش خودکار؛
noAutoscroll() اسکرول خودکار را خاموش کنید.
چپ به راست() جهت متن را از چپ به راست تنظیم می کند.
راست به چپ() جهت متن از راست به چپ؛
createChar() یک نماد سفارشی برای صفحه LCD ایجاد می کند.

4 طرحی برای خروجی متنبه صفحه LCD از طریق گذرگاه I2C

بیایید نمونه را باز کنیم: نمونه فایل LiquidCrystal_I2C CustomCharsو بیایید کمی آن را تغییر دهیم. بیایید پیامی را نمایش دهیم که در انتهای آن یک کاراکتر چشمک زن وجود دارد. تمام تفاوت های ظریف طرح در نظرات به کد توضیح داده شده است.

#عبارتند از // شامل کتابخانه Wire #include باشد // اتصال کتابخانه LCD #define printByte(args) write(args); // uint8_t قلب = (0x0,0xa,0x1f,0x1f,0xe,0x4,0x0); // بیت ماسک نماد "قلب" LiquidCrystal_I2C lcd(0x27, 16, 2); // آدرس 0x27 را برای نمایشگر LCD 16x2 تنظیم کنید void setup()( lcd.init(); // مقداردهی اولیه ال سی دی lcd.backlight(); // روشن کردن نور پس زمینه صفحه نمایش lcd.createChar(3, heart); // ایجاد یک نماد قلب در محل حافظه 3 lcd.home(); // مکان نما را در گوشه بالا سمت چپ، در موقعیت (0,0) lcd قرار دهید!"؛ // یک خط متن را چاپ کنید lcd.setCursor(0, 1)؛ // مکان نما را به خط 2 حرکت دهید، کاراکتر 1 lcd.print( "i"); // چاپ پیام در خط 2 lcd.printByte(3)؛ // چاپ کاراکتر قلب واقع در سلول سوم lcd.print("Arduino"); } حلقه خالی() (// چشمک زدن آخرین کاراکتر lcd setCursor(13, 1); // مکان نما را به خط 2، کاراکتر 1 حرکت دهید lcd.print("\t"); تاخیر (500); lcd.setCursor(13, 1); // مکان نما را به خط 2، کاراکتر 1 حرکت دهید lcd.print(" "); تاخیر (500); }

به هر حال، شخصیت های نوشته شده توسط دستور lcd.createChar();حتی پس از قطع برق در حافظه نمایشگر باقی بماند. روی رام نمایشگر 1602 نوشته شده اند.

5 ایجاد نمادهای خودبرای نمایشگر LCD

بیایید نگاهی دقیق‌تر به موضوع ایجاد نمادهای خود برای صفحه‌های LCD داشته باشیم. هر کاراکتر روی صفحه از 35 نقطه تشکیل شده است: 5 نقطه عریض و 7 نقطه بالا (+1 خط اضافی برای خط کشی). در خط 6 طرح بالا، آرایه ای از 7 عدد تعریف می کنیم: (0x0، 0xa، 0x1f، 0x1f، 0xe، 0x4، 0x0). بیایید اعداد هگزادسیمال را به باینری تبدیل کنیم: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . این اعداد چیزی نیستند جز ماسک های بیتی برای هر یک از 7 خط کاراکتر، که در آن "0" یک نقطه روشن و "1" یک نقطه تاریک است. به عنوان مثال، نماد قلب که به عنوان بیت ماسک داده شده است، همانطور که در شکل نشان داده شده است، روی صفحه ظاهر می شود.

6 کنترل LCDاز طریق اتوبوس I2C

طرح را در آردوینو آپلود کنید. کتیبه ای که ما مشخص کردیم با یک مکان نما چشمک زن در انتها روی صفحه ظاهر می شود.


7 آنچه پشت سر استاتوبوس I2C

به عنوان یک امتیاز، نمودار زمان خروجی کاراکترهای لاتین "A" "B" و "C" را روی صفحه نمایش LCD در نظر بگیرید. این کاراکترها در رام نمایشگر ذخیره می شوند و به سادگی با ارسال آدرس خود به نمایشگر روی صفحه نمایش داده می شوند. نمودار از خروجی های RS، RW، E، D4، D5، D6 و D7 نمایشگر گرفته شده است، یعنی. در حال حاضر پس از مبدل FC-113 "I2C اتوبوس موازی". می توان گفت که کمی «عمیق تر» در «آهن» فرو می رویم.


نمودار زمان برای نمایش کاراکترهای لاتین "A" "B" و "C" در صفحه نمایش LCD 1602

نمودار نشان می دهد که کاراکترهایی که در ROM نمایشگر هستند (به صفحه 11 دیتاشیت، لینک زیر مراجعه کنید) در دو نوک پست منتقل می شوند که اولی شماره ستون جدول را تعیین می کند و دومی شماره خط را تعیین می کند. در این مورد، داده ها در امتداد لبه سیگنال روی خط "چفت" می شوند E(فعال) و خط RS(Register select, register selection) در حالت یک منطقی است که به معنای انتقال داده است. حالت پایین خط RS به معنای انتقال دستورالعمل هاست که قبل از ارسال هر کاراکتر شاهد آن هستیم. در این حالت کد دستورالعمل بازگشت کالسکه به موقعیت (0، 0) نمایشگر LCD مخابره می شود که با بررسی نیز می توان به آن پی برد. اطلاعات تکنیکینمایش دادن.

و یک مثال دیگر. این نمودار زمان نمایش نماد قلب را بر روی LCD نشان می دهد.


باز هم دو تکانه اول فعال کردندستورالعمل ها را رعایت کنید صفحه اصلی ()(0000 0010 2) - بازگشت کالسکه به موقعیت (0؛ 0) و دو خروجی به صفحه نمایش LCD ذخیره شده در سلول حافظه 3 10 (0000 0011 2) نماد "قلب" (دستورالعمل) lcd.createChar(3, heart);طرح).

صفحه نمایش ال سی دی- مهمان مکرر در پروژه های آردوینو. ولی در طرح های پیچیدهممکن است به دلیل نیاز به اتصال شیلدی که پین ​​های زیادی دارد، مشکل کمبود پورت های آردوینو داشته باشیم. راه خروج در این شرایط می تواند باشد I2C/IICآداپتوری که تقریباً استاندارد برای سپر آردوینوبردهای 1602 تا Uno، Nano یا Mega فقط با 4 پین. در این مقاله نحوه اتصال یک صفحه نمایش LCD با رابط I2C را خواهیم دید، از چه کتابخانه هایی می توان استفاده کرد، یک نمونه طرح کوتاه بنویسیم و خطاهای معمولی را تجزیه و تحلیل کنیم.

صفحه نمایش کریستال مایع LCD 1602است انتخاب خوببرای خروجی رشته کاراکترها در پروژه های مختلف. این ارزان است، تغییرات مختلفی با رنگ های مختلف نور پس زمینه وجود دارد، می توانید به راحتی کتابخانه های آماده برای طرح های آردوینو را دانلود کنید. اما عیب اصلی این صفحه نمایش این است که نمایشگر دارای 16 پین دیجیتال است که حداقل 6 عدد از آنها اجباری است.بنابراین با استفاده از این صفحه نمایش ال سی دیبدون i2c محدودیت های جدی به بردهای آردوینو یونو یا نانو اضافه می کند. اگر مخاطبین کافی وجود ندارد، باید یک برد آردوینو مگا بخرید یا مخاطبین را ذخیره کنید، از جمله با اتصال صفحه نمایش از طریق i2c.

شرح مختصری از پین های LCD 1602

بیایید نگاهی دقیق تر به پین ​​های LCD1602 بیندازیم:

هر یک از نتایج هدف خود را دارد:

  1. GND زمینی؛
  2. منبع تغذیه 5 ولت;
  3. تنظیم کنتراست مانیتور؛
  4. فرمان، داده؛
  5. نوشتن و خواندن داده ها؛
  6. فعال کردن

7-14. خطوط داده؛

  1. به علاوه نور پس زمینه؛
  2. منهای نور پس زمینه

مشخصات نمایشگر:

  • نوع نمایش نمادین، امکان بارگیری نمادها وجود دارد.
  • لامپ های ال ای دی؛
  • کنترلر HD44780;
  • ولتاژ تغذیه 5 ولت؛
  • قالب بندی کاراکترهای 16x2;
  • محدوده دمای عملیاتی از -20C تا +70C، محدوده دمای ذخیره سازی از -30C تا +80C؛
  • زاویه دید 180 درجه

نمودار سیم کشی برد LCD به آردوینو بدون i2C

طرح استاندارد برای اتصال مستقیم مانیتور به میکروکنترلر آردوینو بدون I2C به شرح زیر است.

به دلیل تعداد زیادی کنتاکت برای اتصال، ممکن است فضای کافی برای اتصال عناصر لازم وجود نداشته باشد. استفاده از I2C تعداد سیم ها را به 4 و پین های مشغول را به 2 کاهش می دهد.

صفحه نمایش LCD و شیلد برای آردوینو از کجا بخریم

صفحه نمایش LCD 1602 (و نسخه 2004) بسیار محبوب است، بنابراین می توانید آن را هم در فروشگاه های آنلاین داخلی و هم در سایت های خارجی به راحتی پیدا کنید. در اینجا چند پیوند به در دسترس ترین گزینه ها وجود دارد:

ماژول صفحه آبی LCD1602+I2C سازگار با آردوینو صفحه نمایش LCD1602 ساده (نور پس زمینه سبز) ارزان تر از 80 روبل صفحه نمایش بزرگ LCD2004 با I2C HD44780 برای آردوینو (نور پس زمینه آبی و سبز)
صفحه نمایش 1602 با آداپتور IIC و نور پس زمینه آبی نسخه دیگری از LCD1602 با ماژول I2C لحیم شده ماژول آداپتور پورت IIC/I2C/TWI/SPI برای 1602 Shield سازگار با آردوینو
صفحه نمایش با نور پس زمینه RGB! LCD 16×2 + صفحه کلید + Buzzer Shield برای آردوینو شیلد برای آردوینو با دکمه ها و صفحه نمایش LCD1602 LCD 1602 صفحه نمایش LCD برای چاپگر سه بعدی (کنترل کننده هوشمند برای RAMPS 1.4، Text LCD 20×4)، ماژول کارت خوان SD و MicroSD

شرح پروتکل I2C

قبل از بحث در مورد اتصال نمایشگر به آردوینو از طریق آداپتور i2c، اجازه دهید به طور خلاصه در مورد خود پروتکل i2C صحبت کنیم.

I2C / IIC(Inter-Integrated Circuit) پروتکلی است که در اصل برای ارتباط ایجاد شده است مدارهای یکپارچهداخل یک دستگاه الکترونیکی توسعه متعلق به فیلیپس است. پروتکل i2c مبتنی بر استفاده از یک گذرگاه 8 بیتی است که برای اتصال بلوک ها در الکترونیک کنترل لازم است و یک سیستم آدرس دهی که به لطف آن می توانید با چندین دستگاه از طریق یک سیم ارتباط برقرار کنید. ما به سادگی داده ها را به یک یا دستگاه دیگر منتقل می کنیم و شناسه عنصر مورد نظر را به بسته های داده اضافه می کنیم.

بیشترین مدار ساده I2C می تواند شامل یک Master (اغلب یک میکروکنترلر آردوینو) و چندین Slave (به عنوان مثال، یک صفحه نمایش LCD) باشد. هر دستگاه دارای یک آدرس در محدوده 7 تا 127 است. نباید دو دستگاه با آدرس یکسان در یک طرح وجود داشته باشد.

برد آردوینو از i2c در سخت افزار پشتیبانی می کند. برای اتصال دستگاه ها با استفاده از این پروتکل می توانید از پین های A4 و A5 استفاده کنید.

چندین مزیت برای کار با I2C وجود دارد:

  • فقط 2 خط برای عملیات مورد نیاز است - SDA (خط داده) و SCL (خط ساعت).
  • اتصال تعداد زیادی از دستگاه های پیشرو.
  • کاهش زمان توسعه
  • فقط یک میکروکنترلر برای کنترل کل مجموعه دستگاه ها مورد نیاز است.
  • تعداد ممکن ریز مدارهای متصل به یک اتوبوس فقط با حداکثر ظرفیت محدود می شود.
  • درجه بالایی از ایمنی داده ها به دلیل فیلتر ویژه مهار نوسانات تعبیه شده در مدارها.
  • روش ساده برای تشخیص خرابی های در حال ظهور، عیب یابی سریع.
  • این گذرگاه قبلاً در خود آردوینو ادغام شده است، بنابراین نیازی به توسعه رابط اتوبوس اضافی نیست.

ایرادات:

  • محدودیت خازنی در خط وجود دارد - 400 pF.
  • مشکل در برنامه نویسی کنترلر I2C اگر چندین دستگاه مختلف در اتوبوس وجود داشته باشد.
  • با تعداد زیادی دستگاه، اگر یکی از آنها به اشتباه وضعیت سطح پایین را تنظیم کند، بومی سازی یک خرابی دشوار می شود.

ماژول i2c برای LCD 1602 آردوینو

سریع ترین و راه راحتاستفاده از نمایشگر i2c در آردوینو، خرید یک صفحه نمایش آماده با پشتیبانی از پروتکل داخلی است. اما این صفحه نمایش ها خیلی زیاد نیستند و ارزان نیستند. اما تعداد زیادی صفحه نمایش استاندارد مختلف قبلاً منتشر شده است. بنابراین، امروزه مقرون به صرفه ترین و محبوب ترین گزینه خرید و استفاده از یک ماژول جداگانه I2C است - آداپتوری که به نظر می رسد:

در یک طرف ماژول، پین های i2c - زمین، پاور و 2 برای انتقال داده را می بینیم. در آداپتور دیگر ما کانکتورهای برق خارجی را می بینیم. و البته پین ​​های زیادی روی برد وجود دارد که با کمک آنها ماژول به پین ​​های صفحه نمایش استاندارد لحیم می شود.


برای اتصال به برد آردوینو از خروجی های I2c استفاده می شود. در صورت لزوم، منبع تغذیه خارجی را برای روشنایی وصل کنید. با صاف کننده داخلی می توانیم مقادیر کنتراست قابل تنظیم J را تنظیم کنیم

در بازار، می توانید ماژول های LCD 1602 را با آداپتورهای لحیم کاری شده پیدا کنید، استفاده از آنها حداکثر ساده شده است. اگر یک آداپتور جداگانه خریداری کرده اید، باید آن را از قبل به ماژول لحیم کنید.

اتصال صفحه LCD به آردوینو از طریق I2C

برای اتصال به خود برد آردوینو، صفحه نمایش، برد برد، سیم های اتصال و پتانسیومتر نیاز دارید.

اگر از یک آداپتور i2c جداگانه استفاده می کنید، ابتدا باید آن را به ماژول صفحه لحیم کنید. اشتباه کردن در آنجا دشوار است ، می توانید با چنین طرحی هدایت شوید.


یک مانیتور LCD مجهز به i2c با استفاده از چهار سیم - دو سیم برای داده و دو سیم برای برق - به برد متصل می شود.

  • پایه GND به GND روی برد متصل است.
  • پایه VCC 5 ولت است.
  • SCL به پایه A5 متصل است.
  • SDA به پین ​​A متصل است.

و این همه است! بدون تار عنکبوت از سیم، که در آن خیلی راحت گیج می شود. در عین حال، ما می توانیم به سادگی کل پیچیدگی اجرای پروتکل i2C را به کتابخانه ها بسپاریم.

کتابخانه هایی برای کار با صفحه نمایش LCD i2c

برای ارتباط آردوینو با LCD 1602 از طریق گذرگاه I2C، به حداقل دو کتابخانه نیاز دارید:

  • کتابخانه Wire.h برای کار با I2C در حال حاضر در دسترس است برنامه استانداردآردوینو IDE.
  • کتابخانه LiquidCrystal_I2C.h که شامل طیف گسترده ای از دستورات برای کنترل مانیتور از طریق گذرگاه I2C است و به شما امکان می دهد طرح را ساده تر و کوتاه تر کنید. باید کتابخانه را نیز نصب کنید پس از اتصال صفحه نمایش، باید کتابخانه LiquidCrystal_I2C.h را نیز نصب کنید.

پس از اتصال تمام کتابخانه های لازم به طرح، یک شی ایجاد می کنیم و می توانیم از تمام توابع آن استفاده کنیم. برای آزمایش، بیایید طرح استاندارد زیر را از مثال بارگذاری کنیم.

#عبارتند از #عبارتند از // اتصال کتابخانه //#include // اتصال کتابخانه جایگزین LiquidCrystal_I2C lcd(0x27,16,2); // آدرس I2C (متداول ترین مقدار) و همچنین پارامترهای صفحه نمایش (در مورد LCD 1602 - 2 خط 16 کاراکتری هر کدام //LiquidCrystal_PCF8574 lcd(0x27) را مشخص کنید؛ // نوع برای تنظیم خالی کتابخانه PCF8574 () ( lcd.init ()؛ // راه اندازی صفحه نمایش lcd.backlight(); // نور پس زمینه را وصل کنید lcd.setCursor(0,0)؛ // مکان نما را در ابتدای خط اول تنظیم کنید lcd.print( "سلام")؛ // متن را در خط اول تایپ کنید lcd.setCursor(0,1)؛ // مکان نما را در ابتدای خط دوم تنظیم کنید lcd.print("ArduinoMaster")؛ // متن را در خط دوم تایپ کنید خط ) void loop() ( )

شرح عملکردها و روش های کتابخانه LiquidCrystal_I2C:

  • home() و clear() - اولین تابع به شما امکان می دهد مکان نما را به ابتدای صفحه بازگردانید، دومی نیز، اما در عین حال همه چیزهایی را که قبلاً روی مانیتور بود حذف می کند.
  • Write(ch) - به شما امکان می دهد یک کاراکتر ch را روی صفحه چاپ کنید.
  • cursor() و noCursor() - نشانگر/مخفی کردن مکان نما روی صفحه.
  • blink() و noBlink() - مکان نما چشمک می زند/چشمک نمی زند (اگر نمایش آن قبلاً فعال شده باشد).
  • display() و noDisplay() - به شما امکان می دهد نمایشگر را فعال/غیرفعال کنید.
  • scrollDisplayLeft() و scrollDisplayRight() - صفحه را یک کاراکتر به چپ/راست اسکرول می کند.
  • autoscroll() و noAutoscroll() - به شما امکان می دهد حالت autoscroll را فعال/غیرفعال کنید. در این حالت هر کدام شخصیت جدیددر همان مکان ضبط می شود و جایگزین آنچه قبلاً روی صفحه نوشته شده بود.
  • leftToRight() و rightToLeft() - جهت متن نمایش داده شده را تنظیم می کند - از چپ به راست یا راست به چپ.
  • createChar(ch، bitmap) - یک کاراکتر با کد ch (0 - 7) با استفاده از آرایه ای از بیت مپ های بیت مپ برای ایجاد نقاط سیاه و سفید ایجاد می کند.

کتابخانه جایگزین برای کار با صفحه نمایش i2c

در برخی موارد، هنگام استفاده از کتابخانه مشخص شده با دستگاه های مجهز به کنترل کننده های PCF8574، ممکن است خطاهایی رخ دهد. در این مورد، کتابخانه LiquidCrystal_PCF8574.h می تواند به عنوان جایگزین ارائه شود. LiquidCrystal_I2C را گسترش می دهد، بنابراین نباید هیچ مشکلی در استفاده از آن وجود داشته باشد.

مشکلات اتصال صفحه نمایش ال سی دی i2c

اگر پس از آپلود طرح چیزی روی صفحه نمایش نمی بینید، مراحل زیر را امتحان کنید.

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

اگر این کمکی نکرد، اتصال صحیح مخاطبین را بررسی کنید، آیا نور پس زمینه روشن است یا خیر. اگر از آداپتور i2c جداگانه استفاده کردید، دوباره کیفیت لحیم کاری کنتاکت ها را بررسی کنید.

یکی دیگر از دلایل رایج کمبود متن روی صفحه نمایش می تواند آدرس اشتباه i2c باشد. ابتدا سعی کنید آدرس دستگاه را در طرح از 0x27 0x20 یا به 0x3F تغییر دهید. تولید کنندگان مختلف ممکن است آدرس های پیش فرض متفاوتی داشته باشند. اگر این کار کمکی نکرد، می‌توانید طرح اسکنر i2c را اجرا کنید، که تمام دستگاه‌های متصل را اسکن می‌کند و آدرس آنها را با زور بی‌رحمانه تعیین می‌کند. نمونه ای از طرح یک اسکنر i2c.

اگر صفحه نمایش باز هم کار نمی کند، سعی کنید آداپتور را از لحیم خارج کرده و LCD را به روش معمول وصل کنید.

نتیجه

در این مقاله به مسائل اصلی استفاده از صفحه نمایش LCD در پروژه های پیچیده آردوینو در مواقعی که نیاز به ذخیره پین ​​های رایگان روی برد داریم پرداخته ایم. یک آداپتور ساده و ارزان i2c به شما امکان می دهد یک صفحه نمایش LCD 1602 را با تنها 2 پین آنالوگ وصل کنید. در بسیاری از موقعیت ها این می تواند بسیار مهم باشد. قیمت برای راحتی نیاز به استفاده از یک ماژول اضافی - مبدل و کتابخانه است. به نظر ما این قیمت برای راحتی زیاد نیست و استفاده از این قابلیت را در پروژه ها به شدت توصیه می کنیم.

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

LCD 1602

در میان گزینه های بسیار در بین نمایشگرها، می خواهم به طور جداگانه به صفحه نمایش LCD1602 بر اساس کنترلر HD4478 اشاره کنم. این صفحه نمایش در دو رنگ وجود دارد: حروف سفید در پس زمینه آبی، حروف سیاه در پس زمینه زرد. اتصال LCD 1602 به آردوینو نیز مشکلی ایجاد نمی کند، زیرا یک کتابخانه داخلی وجود دارد و نیازی به دانلود چیز اضافی ندارید. نمایشگرها نه تنها از نظر قیمت، بلکه در اندازه نیز متفاوت هستند. اغلب آماتورهای رادیویی از 16 x 2 استفاده می کنند، یعنی 2 خط 16 کاراکتری. اما 20 × 4 نیز وجود دارد که در آن 4 خط 20 کاراکتری وجود دارد. ابعاد و رنگ در اتصال نمایشگر lcd 1602 به آردونو هیچ نقشی ندارند، به همین صورت به هم متصل می شوند. زاویه دید 35 درجه، زمان پاسخگویی نمایشگر 250 میلی ثانیه است. می تواند در دمای 20- تا 70 درجه سانتیگراد کار کند. در حین کار از 4 میلی آمپر برای صفحه نمایش و 120 میلی آمپر برای نور پس زمینه استفاده می کند.

کجا استفاده می شود؟

این نمایشگر نه تنها در بین آماتورهای رادیویی، بلکه در بین تولید کنندگان بزرگ نیز محبوبیت دارد. به عنوان مثال، چاپگرها، دستگاه های قهوه ساز نیز از LCD1602 استفاده می کنند. این به دلیل قیمت پایین آن است، این نمایشگر در سایت های چینی 200-300 روبل قیمت دارد. ارزش خرید از آنجا را دارد، زیرا در فروشگاه های ما حاشیه های این نمایشگر بسیار زیاد است.

اتصال به آردوینو

اتصال LCD 1602 به آردوینو نانو و یونو تفاوتی ندارد. شما می توانید با نمایشگر در دو حالت 4 بیتی و 8 بیتی کار کنید. هنگام کار با نمایشگر 8 بیتی، هر دو بیت پایین و بالاتر استفاده می شود و با 4 بیت فقط از بیت های پایین استفاده می شود. هیچ نکته خاصی در کار با 8 بیت وجود ندارد، زیرا 4 مخاطب دیگر برای اتصال اضافه می شود، که توصیه نمی شود، زیرا سرعت بالاتر نخواهد بود، محدودیت به روز رسانی صفحه نمایش 10 بار در ثانیه است. به طور کلی، سیم های زیادی برای اتصال ال سی دی 1602 به آردوینو استفاده می شود که باعث ایجاد ناراحتی می شود، اما محافظ های خاصی وجود دارد، اما بعداً در مورد آن صحبت خواهیم کرد. عکس اتصال صفحه نمایش به آردوینو Uno را نشان می دهد:

نمونه کد برنامه:

#عبارتند از // ال سی دی کتابخانه LiquidCrystal مورد نیاز را اضافه کنید (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup()( lcd.begin(16,2)؛ // تنظیم ابعاد صفحه نمایش lcd.setCursor(0,0)؛ // تنظیم مکان نما برای شروع 1 خطوط lcd.print("سلام، دنیا!")؛ // نمایش متن lcd.setCursor(0, 1)؛ // مکان نما را در ابتدای خط 2 تنظیم کنید lcd.print("سایت")؛ // نمایش متن ) حلقه خالی ()()

کد چه کاری انجام می دهد؟ اول از همه، کتابخانه کار با نمایشگر متصل است. همانطور که در بالا ذکر شد، این کتابخانه قبلاً در Arduino IDE گنجانده شده است و نیازی به دانلود و نصب اضافی آن ندارید. در مرحله بعد، کنتاکت هایی که به پین ​​ها متصل می شوند به ترتیب تعریف می شوند: RS، E، DB4، DB5، DB6، DB7. سپس اندازه صفحه نمایش تنظیم می شود. از آنجایی که ما با نسخه ای با 16 کاراکتر و 2 خط کار می کنیم، چنین مقادیری را می نویسیم. مکان نما را در ابتدای خط اول قرار می دهیم و اولین متن Hello World را نمایش می دهیم. سپس مکان نما را در خط دوم قرار دهید و نام سایت را نمایش دهید. همین! اتصال lcd 1602 به Arduino Uno در نظر گرفته شد.

I2C چیست و چرا لازم است؟

همانطور که در بالا ذکر شد، اتصال صفحه نمایش به تعداد زیادی پین نیاز دارد. به عنوان مثال، هنگام کار با چندین سنسور و صفحه نمایش LCD، 1602 مخاطب ممکن است به سادگی کافی نباشد. اغلب، آماتورهای رادیویی از نسخه های Uno یا Nano استفاده می کنند، جایی که مخاطبین زیادی وجود ندارد. سپس مردم با سپرهای مخصوص آمدند. برای مثال I2C. این امکان را به شما می دهد تا صفحه نمایش را تنها با 4 پین متصل کنید. این دو برابر کمتر است. ماژول I2C هر دو به صورت جداگانه فروخته می شود، جایی که باید خودتان آن را لحیم کنید، و قبلاً به صفحه نمایش LCD 1602 لحیم شده است.

اتصال با ماژول I2C

اتصال LCD 1602 به آردوینو نانو با I2C فضای کمی را اشغال می کند، فقط 4 پین: زمین، برق و 2 خروجی داده. ما برق و زمین را به ترتیب به 5 ولت و GND در آردوینو وصل می کنیم. دو کنتاکت باقیمانده: SCL و SDA به هر پین آنالوگ متصل هستند. در عکس نمونه ای از اتصال lcd 1602 به arduino با ماژول I2C را مشاهده می کنید:

کد برنامه

اگر برای کار با نمایشگر بدون ماژول، فقط از یک کتابخانه استفاده می شد، سپس برای کار با ماژول، به دو کتابخانه نیاز بود. یکی از آنها در حال حاضر در Arduino IDE - Wire است. کتابخانه دیگری به نام LiquidCrystal I2C باید جداگانه دانلود و نصب شود. برای نصب کتابخانه در آردوینو، محتویات آرشیو دانلود شده باید در پوشه ریشه Libraries آپلود شود. کد مثال با استفاده از I2C:

#عبارتند از #عبارتند از ال سی دی LiquidCrystal_I2C (0x27,16,2); // تنظیم نمایش void setup() ( lcd.init(); lcd.backlight();// روشن کردن نور پس زمینه نمایشگر lcd..setCursor(8,1); ( ) ( // مکان نما را روی خط دوم و کاراکتر تهی تنظیم کنید. lcd. setCursor(0, 1)؛ // نمایش تعداد ثانیه هایی از زمانی که آردوینو شروع به ال سی دی کرده است. print(millis()/1000)؛ )

همانطور که می بینید، کد تقریباً یکسان است.

چگونه نماد خود را اضافه کنیم؟

مشکل این نمایشگرها عدم پشتیبانی از سیریلیک و نمادها است. برای مثال، باید مقداری کاراکتر را در صفحه نمایش بارگذاری کنید تا بتواند آن را منعکس کند. برای انجام این کار، صفحه نمایش به شما اجازه می دهد تا حداکثر 7 کاراکتر خود را ایجاد کنید. یک جدول را تصور کنید:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

اگر 0 - چیزی وجود ندارد، اگر 1 - این یک منطقه سایه دار است. در مثال بالا می توانید ایجاد نماد "لبخند خندان" را مشاهده کنید. با استفاده از یک برنامه نمونه در آردوینو، به صورت زیر است:

#عبارتند از #عبارتند از // کتابخانه مورد نیاز را اضافه کنید // نماد لبخند بیت ماسک بایت لبخند = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); ال سی دی LiquidCrystal (7، 6، 5، 4، 3، 2); // (RS، E، DB4، DB5، DB6، DB7) void setup()( lcd.begin(16، 2)؛ // تنظیم اندازه صفحه lcd.createChar(1، لبخند)؛ // ایجاد کاراکتر 1 lcd. setCursor(0, 0); // مکان نما را روی ابتدای خط 1 تنظیم کنید lcd.print("\1")؛ // شکلک را نمایش دهید (شخصیت شماره 1) - "\1" ) void loop()( )

همانطور که می بینید بیت ماسک همانند جدول ایجاد شده است. پس از ایجاد، می توان آن را به عنوان یک متغیر به نمایشگر خروجی داد. به یاد داشته باشید که تنها 7 کاراکتر را می توان در حافظه ذخیره کرد. در اصل این کافی است. به عنوان مثال، اگر می خواهید نماد درجه را نشان دهید.

مشکلاتی که ممکن است نمایشگر در آنها کار نکند

مواقعی وجود دارد که صفحه نمایش کار نمی کند. به عنوان مثال، روشن می شود، اما شخصیت ها را نشان نمی دهد. یا اصلا روشن نمیشه ابتدا ببینید آیا مخاطبین را به درستی وصل کرده اید یا خیر. اگر قبلا lcd 1202 را بدون I2C به آردوینو وصل می کردید، گره خوردن در سیم ها بسیار آسان است که می تواند باعث شود کار نادرستنمایش دادن. همچنین باید مطمئن شوید که کنتراست نمایشگر افزایش یافته است، زیرا در حداقل کنتراست حتی روشن نیست یا خیر LCD 1602 قابل مشاهده نیست. اگر این کمکی نکرد، ممکن است مشکل در لحیم کاری مخاطبین باشد، این هنگام استفاده از ماژول I2C است. همچنین علت مشترککه نمایشگر ممکن است کار نکند، تنظیم نادرست آدرس I2C است. واقعیت این است که تولید کنندگان زیادی وجود دارد، و آنها می توانند آدرس متفاوتی را تعیین کنند، شما باید آن را در اینجا تعمیر کنید:

ال سی دی LiquidCrystal_I2C (0x27,16,2);

در براکت ها می توانید دو مقدار 0x27 و 16.2 را ببینید (16، 2 اندازه نمایشگر است و 0x27 فقط آدرس I2C است). به جای این مقادیر، می توانید سعی کنید 0x37 یا 0x3F را قرار دهید. خوب، دلیل دیگر فقط یک LCD 1602 معیوب است. با توجه به اینکه تقریباً همه چیز برای آردوینو ساخت چین است، نمی توانید 100٪ مطمئن باشید که محصول خریداری شده ازدواج نیست.

مزایا و معایب LCD 1602

مزایا و معایب نمایشگر LCD 1602 را در نظر بگیرید.

  • قیمت. این ماژول را می توان با قیمت بسیار مقرون به صرفه در فروشگاه های چین خریداری کرد. قیمت 200-300 روبل است. حتی گاهی اوقات همراه با یک ماژول I2C فروخته می شود.
  • اتصال آسان. احتمالاً این روزها هیچ کس LCD 1602 را بدون I2C وصل نمی کند. و با این ماژول، اتصال فقط 4 پین طول می کشد، هیچ "وب" سیم وجود نخواهد داشت.
  • برنامه نويسي. به لطف کتابخانه های آماده، کار با این ماژول آسان است، همه توابع قبلاً ثبت شده اند. و در صورت لزوم، اضافه کردن شخصیت خود را تنها چند دقیقه طول می کشد.
  • در طول استفاده توسط هزاران آماتور رادیویی، هیچ منفی بزرگی شناسایی نشده است، فقط مواردی از خرید ازدواج وجود دارد، زیرا از گزینه های نمایش چینی عمدتا استفاده می شود.

این مقاله به نحوه اتصال 1602 به آردوینو پرداخته و نمونه برنامه های کار با این نمایشگر را نیز ارائه کرده است. واقعاً یکی از بهترین ها در رده خود است، بی جهت نیست که هزاران آماتور رادیویی آن را برای پروژه های خود انتخاب می کنند!

در این مقاله نحوه استفاده از ماژول رابط I2C برای کنترل صفحه نمایش LCD (2x16 / 20x4) را به شما نشان خواهم داد. آردوینو. این ماژول به شما این امکان را می دهد که تعداد پین های کنترل کننده استفاده شده را کاهش دهید، به جای اتصال 8 یا 4 بیتی، فقط 2 پین (SDA و SCL) مورد نیاز است.

مشخصات فنی

پشتیبانی از نمایشگر: LCD 16×02 / 20×04
اختیاری: تنظیم کنتراست
ولتاژ تغذیه. 5 ولت
رابط: I2C
ابعاد: 54mm x 19mm x 15mm

اطلاعات کلی ماژول رابط I2C

از آنجایی که تعداد پین‌ها در کنترل‌کننده‌های آردوینو محدود است و اغلب هنگام استفاده از آن استفاده می‌شود سنسورهای مختلفو ماژول ها تمام می شوند، نیاز به ذخیره آنها وجود دارد، برای این موارد این ماژول توسعه یافته است، با کمک آن می توان انتقال را از طریق دو مخاطب (SDA و SCL) پیاده سازی کرد.

اکنون کمی در مورد خود ماژول، بر روی تراشه PCF8574T ساخته شده است. مقاومت‌های R8 (4.7 کیلو اهم) و R9 (4.7 کیلو اهم) برای بالا کشیدن خطوط SDA و SCL مورد نیاز هستند، در حالت ایده‌آل، هنگام اتصال دو یا چند دستگاه از طریق گذرگاه I2C، باید فقط در یک دستگاه از pull-up استفاده کنید. بعدا می نویسم چرا سه جامپر روی برد وجود دارد (نمودار نشان می دهد که خطوط A0، A1، A2 از طریق مقاومت های R4، R5، R6 به برق کشیده می شوند)، برای تغییر آدرس دهی دستگاه مورد نیاز است، در مجموع 8 گزینه وجود دارد. تغییر آدرس دهی به ما این امکان را می دهد که تا هشت دستگاه را از طریق گذرگاه IC2 با تراشه PCF8574T متصل کنیم، گزینه های آدرس در شکل نشان داده شده اند (آدرس پیش فرض دستگاه 0x27 است). همچنین این ماژول مجهز به پتانسیومتر R11 است که با آن می توانید کنتراست نمایشگر LCD را تغییر دهید.

سه گروه از مخاطبین در ماژول برای اتصال وجود دارد:

گروه اول:
SCL: خط ساعت (ساعت سریال)
SDA: خط داده (سریال Dfta)
VCC: قدرت "+".
GND: قدرت "-".

گروه دوم:
VSS: قدرت "-".
VDD: قدرت "+".
VO: خروجی کنترل کنتراست
RS: ثبت نام انتخاب
RW: خواندن/نوشتن (حالت نوشتن در صورت اتصال به زمین)
E: فعال کردن (افت بارق)
DB0-DB3: LSB های رابط
DB4-DB7: بیت های بالای رابط
A: قدرت نور پس زمینه "+".
K: "-" قدرت نور پس زمینه

گروه سوم: (جمپر به طور پیش فرض تنظیم شده است)
VCC:
پاسخ از LCD:

اتصال به آردوینو

جزئیات مورد نیاز:
آردوینو UNO R3 x 1pc
صفحه نمایش LCD 1602 آمپر (2×16، 5 ولت، آبی) x 1 عدد.
ماژول رابط I2C، IIC، TWI برای LCD x 1 عدد.
سیم DuPont، 2.54 میلی متر، 20 سانتی متر، F-M (مونث - نر) x 1 عدد.
کابل یو اس بی 2.0A-B x 1pc

ارتباط:
اول از همه، ماژول I2C را به صفحه نمایش LCD لحیم کنید، سپس باید نمایشگر را به Arduino UNO متصل کنید. برای این کار از سیم کشی DuPont استفاده می کنیم، مطابق جدول زیر وصل می کنیم.

برای وضوح، نمودار دیگری ارائه خواهم کرد.

برای این آزمایش، باید کتابخانه «LiquidCrystal_I2C» را دانلود و نصب کنید. سپس این نمونه کد را در پنجره برنامه Arduino IDE کپی کرده و در کنترلر آپلود کنید.

/* تست شده در Arduino IDE 1.6.11 تاریخ تست 1395/09/15. */ #عبارتند از #عبارتند از ال سی دی LiquidCrystal_I2C (0x27,16,2); // آدرس و اندازه نمایشگر void setup() را تنظیم کنید ( lcd.init(); // Initialize lcd lcd.backlight(); // نور پس زمینه را روشن کنید lcd.setCursor(0,0)؛ // تنظیم کنید مکان نما به ابتدای خط 1 lcd .print("Hello, world"); // متن را چاپ کنید lcd.setCursor(0,1); // مکان نما را در ابتدای خط 2 قرار دهید lcd.print("www .site"); // چاپ متن ) void loop( ) ( )

اگر همه کارها را به درستی انجام داده اید، اما هیچ علامتی روی نمایشگر وجود ندارد، کنتراست را با پتانسیومتر افزایش دهید.


پیوندها
دانلود کتابخانه
مستندات ریزتراشه
مستندات برای

در Aliexpress خرید کنید