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

مشخصات فنی

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

جزئیات ماژول رابط I2C

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

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

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

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

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

گروه سوم: (پشت نبردها جامپر نصب شده بود)
VCC:
نمای LCD:

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

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

ارتباط:
ابتدا ماژول 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(); // فعال کردن نور پس زمینه از ردیف 1 lcd .print("Hello, world" // نمایش داده شده lcd.setCursor(0,1) مکان نما را در ردیف دوم قرار داد lcd.print("www.site"); متن نمایش داده شده) void loop( ) ( )

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


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

در Aliexpress خرید کنید

احتمالا یکی از محبوب ترین صفحه نمایش های موجود در بازار است. انتخاب های کنترلر محبوب HD44780U. نام مدل نشان می دهد که صفحه نمایش از دو ردیف 16 کاراکتری تشکیل شده است. این مدل خاص هیچ تأثیری از زبان روسی ندارد.

گذرگاه داده sh2s به شما این امکان را می دهد که تا 127 دستگاه را به دو صورت و همزمان وصل کنید. این پیاده سازی های I2C بر اساس تراشه های PCF8574T هستند.

نمودار اتصال:

چیز آبی یک پشتیبانی قابل تغییر است که به شما امکان می دهد کنتراست صفحه را تنظیم کنید.

بلوز شیطانی - نور پس زمینه صفحه را نشان می دهد.

یک بلوک با 4 مخاطب به صورت زیر به آردوینو متصل می شود:

GND - GND
VCC - 5 ولت
SDA - A4 (مانند آردوینو MEGA، سپس تا D20)
SCL - A5 (Arduino MEGA، سپس تا D21)

کتابخانه

طرح

نمایشگر ممکن است یک آدرس IIC متفاوت داشته باشد، به جای 0x27، ممکن است 0x3F ظاهر شود. برای تعیین دقیق آدرس، می توانید به سرعت دستگاه های i2c را با یک اسکنر اسکن کنید.

#عبارتند از #عبارتند از // آدرس صفحه LCD را روی 0x27، 16 کاراکتر، 2 ردیف تنظیم کنیدال سی دی LiquidCrystal_I2C (0x27, 16, 2); void setup()(lcd.init(); //صفحه را مقدار دهی اولیه می کند //نور پس زمینه را روشن کنید lcd.backlight(); //موقعیت نمایش متن را تنظیم کنید. lcd.setCursor(2, 0); //نمایش ردیف 1 lcd.print ("سلام، جهان!"); // سطر دیگری به همین ترتیب نمایش داده می شود lcd.setCursor(1, 1); lcd.print ("www.site"); ) حلقه خالی () ( )

با افزودن اینجا به فروشگاه مواد غذایی، Chip Resistor یک دستگاه کرم برای نصب و رکود در دستگاه های قهوه ای است. این دستگاه برای استفاده با نمایشگر LCD تحت کنترلر HD44780 در حالت 4 بیت طراحی شده است. برای این منظور یک میکرو مدار روی برد نصب شده است که گذرگاه I2C را به پورت 8 بیتی موازی تبدیل می کند.

این برد به گونه ای سیم کشی شده است که می توان آن را بلافاصله با نمایشگر PK ترکیب کرد. خط زنده I2C به ورودی عرضه می شود. این برد مجهز به مقاومت های pull-up در خطوط SCL و SDA، یک پتانسیومتر برای تنظیم کنتراست و طول عمر خود نمایشگر است.

جامپر سمت راست چشمک می زند/چشمک می زند. سپس، با استفاده از تستر، یک علامت تا شد. پس از نصب ماژول مشخص شد که P3به شمع ها اهمیت می دهد به عنوان یک جامپر، 1 نور پس زمینه را روشن می کند و 0 خاموش می شود. هنگامی که جامپر خارج می شود، سوئیچ همیشه خاموش می شود. در مرحله بعد، تصمیم به تکمیل کتابخانه axlib با عملکردهایی برای عملکرد با یک گذرگاه I2C (اجرای نرم افزار) و عملکردهایی برای منبع تغذیه با ریز مدار PCF8574 گرفته شد. در دو کلمه نحوه کار ماژول. برای خروجی موازی یک بایت، که برای آن باید آدرس ریز مدار را به گذرگاه I2C ارسال کنید (به طور پیش فرض 0x4E است. همچنین می توانید با لحیم کردن یک جامپر روی برد و تغییر مقادیر، آدرس را تغییر دهید. از سه آدرس بیت مرتبه پایین)، سپس پس از رد شدن ACK، بایت داده ارسال می شود. پس از پاسخ ریز مدار با ACK، بایت در پورت موازی ریزمدار ظاهر می شود. برای کنترل صفحه نمایش PK، توابعی را از کتابخانه axlib گرفتم و کمی آنها را برای کار با گذرگاه I2C تغییر دادم. #عبارتند از #عبارتند از #عبارتند از #عبارتند از #define ADD 0x4E // آدرس های ریز مدار /* تراشه LCD RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 یک چراغ به پایین P3 متصل است. 1 در، 0 vik. */ // ادای احترام Videdennya com | = 0x04; // E به یک pcf8574_byte_out(com, ADD); // ادای احترام Videdennya com &= 0xFB; // Є به صفر pcf8574_byte_out(com, ADD); // ادای احترام Videdennya) void init (void) (_delay_ms (30); com (0x30); _delay_us(40); com (0x30); // انتقال به حالت 4 بیتی _delay_us(40); // برش به دستور Vikonannya com (0x30); // انتقال به حالت 4 بیتی _delay_us(40); // برش به دستور Vikonannya com (0x20); // انتقال به حالت 4 بیتی _delay_us(40); // برش به دستور Vikonannya com (0x20); // تنظیم پارامترها com (0x80); // تنظیم پارامترها com (0x00); // نمایشگر قابل مشاهده com (0x80); // نمایشگر قابل مشاهده com (0x00); // صفحه نمایش را پاک کنید com (0x10); // صفحه نمایش را پاک کنید com (0x00); com (0x60); // حالت ورود داده را تنظیم کنید com (0x00); com (0xC0)؛ // صفحه نمایش را با مکان نما انتخاب شده روشن کنید) void char_out(BYTE data) (BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // انتقال مهم ترین 4 بیت data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // بالاترین 4 بیت را انتقال دهید // بالاترین 4 بیت را انتقال دهید // انتقال 4 بیت جوانتر // انتقال 4 بیت جوانتر // انتقال 4 بیت جوانتر) void str_out(BYTE *str) ( while((*str) != "\0") (char_out(*str); str++; ) ) int main(void) (init(); str_out("ЁPҐBET MҐP!" ؛ در حالی که (1) ( ) )ولاسنا اینجا چه خبره؟ از این پس می توانیم کتابخانه های I2C و PCF8574 را به هم متصل کنیم. که قبلاً در مورد I2C نوشته‌ام، دوباره در مورد آن به شما خواهم گفت و در مورد محور در PCF8574.h به شما خواهم گفت. تنها سه عملکرد به انبار کتابخانه اضافه شده است.
BYTE pcf8574_test(BYTE add) (BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add)؛ i2c_stop(؛ Return ask; )اولین تابع برای تأیید وجود دستگاه در اتوبوس نوشته شد. در اصل، می توان از آنها برای یافتن هر وسیله ای که در اتوبوس است استفاده کرد. تابع آدرس دستگاه را می پذیرد و اگر مطابقت داشته باشد صفر می شود. اگر دستگاهی با چنین آدرسی در اتوبوس وجود ندارد، یکی را بچرخانید.
BYTE pcf8574_byte_out (BYTE داده، BYTE add) (BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add)؛ if(!ask) ask = i2c_send_byte(data)؛ )این عملکرد قبلاً برای این ریز مدار تنظیم شده است. به عنوان یک آرگومان، یک بایت به گذرگاه به آدرس ریز مدار ارسال می شود. تابع این است که ابتدا ریز مدار را برای آدرس درخواست می کند و سپس بایت را پیدا می کند. اگر ریزمدار یک بایت دریافت کرد و یک ACK ارسال کرد، آنگاه عملکرد با ریز مدار کار خود را به پایان می‌رساند و صفر را برمی‌گرداند، همانطور که یک بایت ارسال کرده است. و میکرو مدار اکنون این بایت را به پورت موازی خود خروجی می دهد. در غیر این صورت، NACK رد می شود و سپس به یک باز می گردد، انتقال ناموفق است.
BYTE pcf8574_str_out (BYTE *data, BYTE col, BYTE add) (BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); for(BYTE i=0; i این تابع برای آزمایش در نظر گرفته شده است. نشانگر آرایه ای از داده های تک بایتی، تعداد بایت ها و آدرس ریزمدار را دریافت می کند. لطفاً سعی کنید همه داده ها را در یک جلسه انتقال دهید و نه یک بایت در هر جلسه. عملکرد کار می کند، اما برای صفحه نمایش PK مناسب نیست. حالا برگردیم به برنامه اصلی. پس از اتصال کتابخانه ها، آدرس ریز مدار را بنویسید. در مرحله بعد، سه تابع مشابه lcd.h ایجاد می کنیم. اصل انتقال از اهمیت کمتری برخوردار است.
void com (BYTE com) (com | = 0x08; // P3 به یک، به طوری که سوئیچ بسوزد pcf8574_byte_out(com, ADD); // ادای احترام Videdennya com | = 0x04; // E به یک pcf8574_byte_out(com, ADD); // ادای احترام Videdennya com &= 0xFB; // Є به صفر pcf8574_byte_out(com, ADD); // ادای احترام Videdennya } این تابع فقط دستورات را به نمایشگر منتقل می کند. ردیف اول از اضافات منطقی دستور از 0x08 ظاهر شد. این از طریق این واقعیت ضروری است که ما بایت را مستقیماً به پورت نمایشگر RK منتقل نمی کنیم، بلکه از طریق تکرار کننده خود. اگر یک بایت ارسال کرده‌ایم، و سپس باید فقط یک بیت خروجی داشته باشیم، لطفاً بیت مورد نیاز را تا آخرین بایت بپذیرید و دوباره آن را به پورت ارسال کنید. مشکل همین است. با اضافه کردن از 0x08 لازم است واحد را به طور دائم به دسته سوم کاهش دهیم. آیا از نور شمع به یاد دارید؟ خود محور اضافه شده و شامل روشنایی می شود. پس از این، تابع انتقال یک بایت به اتوبوس فراخوانی می شود. در مورد او بسیار نوشته شده است. سپس بایت از طریق گذرگاه به ریز مدار منتقل می شود. سپس trace را در واحد E قرار دهید که با جمع منطقی بایت از 0x04 انجام می شود. پس از پاک کردن E. به این ترتیب می توانید دستوری را بدون ارسال خود فرمان به عنوان آرگومان به نمایشگر ارسال کنید. void init(void) (_delay_ms(30); // بعد از سرو غذا مکث کنید com (0x30); // انتقال به حالت 4 بیتی _delay_us(40); // برش به دستور Vikonannya com (0x30); // انتقال به حالت 4 بیتی _delay_us(40); // برش به دستور Vikonannya com (0x30); // انتقال به حالت 4 بیتی _delay_us(40); // برش به دستور Vikonannya com (0x20); // انتقال به حالت 4 بیتی _delay_us(40); // برش به دستور Vikonannya com (0x20); // تنظیم پارامترها com (0x80); // تنظیم پارامترها com (0x00); // نمایشگر قابل مشاهده com (0x80); // نمایشگر قابل مشاهده com (0x00); // صفحه نمایش را پاک کنید com (0x10); // صفحه نمایش را پاک کنید com (0x00); // حالت ورود داده را تنظیم کنید com (0x60); // حالت ورود داده را تنظیم کنید com (0x00); // صفحه نمایش را با مکان نما انتخاب شده روشن کنید com (0xC0)؛ // صفحه نمایش را با مکان نما انتخاب شده روشن کنید } این تابع کاری بیش از مقداردهی اولیه نمایشگر انجام نمی دهد. دنباله دستورات از دیتاشیت روی صفحه نمایش RK گرفته شده است. void char_out(BYTE data) (BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // انتقال مهم ترین 4 بیت data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // بالاترین 4 بیت را انتقال دهید data_h &= 0xF9; pcf8574_byte_out(data_h، ADD)؛ // بالاترین 4 بیت را انتقال دهید pcf8574_byte_out(data_l، ADD)؛ // انتقال 4 بیت جوانتر data_l | = 0x04; pcf8574_byte_out(data_l، ADD)؛ // انتقال 4 بیت جوانتر data_l &= 0xF9; pcf8574_byte_out(data_l، ADD)؛ // انتقال 4 بیت جوانتر } این تابع داده های RC را به نمایشگر منتقل می کند. به نظر می رسد مانند دستورات پشت این واقعیت که بایت ابتدا با بایت قدیمی تر و سپس با بایت کوچکتر منتقل می شود. و رشتا همینطور. void str_out(BYTE *str) ( while((*str) != "\0") (char_out(*str); str++; ))خوب، این عملکرد صرفاً برای انتقال ردیف به صفحه نمایش است. ولاسنا تا زمان ما، آنهایی که صد سنت نمی گیرند.

پروژه برای AtmelStudio 6.2

باسواد 01.08.15 17:11

کما از دست رفت. درست است: "سلام، سوییت!" این لوازم جانبی فقط برای HD44780 نیست. مقاومت های کششی در کنار استاد قرار می گیرند. با توجه به مشخصات، داده ها توسط کنترل کننده LCD به دنبال کاهش E ثبت می شود. اولین تابع نوشته می شود: void com (BYTE com) (com | = 0x08; // switching pcf8574_byte_out (com | 0x04, ADD); // داده های نمایش داده شده pcf8574_byte_out , ADD);// E به صفر) همین کار را کمتر می توان انجام داد. به عنوان مثال، void char_out (BYTE data) تنها به دو کلیک نیاز دارد و به خصوص بدون تغییرات اضافی. راه اندازی ال سی دی به دلیل خرابی مشخصات زمان غیرفعال شده است.

Oleksiy 02.08.15 19:11

از طریق عدم وجود کما، صفحه نمایش تحت تأثیر قرار نمی گیرد. این دستگاه با کنترلر مشابه یا مشابه زیر نمایشگر قرار دارد. و محور ریز مدار خود واقعاً یک گسترش ساده پورت است. خوب، من به اندازه کافی خوب هستم. تغییرات اضافی لازم است. اگر آرگومان را با استفاده از منطق به یک تابع ارسال کنید، ممکن است اشکالاتی ظاهر شوند. من قبلا اینجوری گیر کردم مقداردهی اولیه بدون ایجاد اختلال در زمان بندی به پایان می رسد. مستندات می گوید که یک مکث 40 میکروثانیه بین دستورات قرار می گیرد. از آنجایی که انتقال از طریق گذرگاه i2c انجام می شود و به روش خود برنامه ریزی شده است، پس باید بیش از حد نگران باشید. اگر هنوز تنبل نیستید، پس نسخه خود را بنویسید و برای من ارسال کنید. منتشرش میکنم Zreshtoyu این سایت از قرار ملاقات برای مخاطبان آماتور و پوست، هر کسی که شما می خواهید، می تواند افکار و ایده های خود را برای زندگی MK بیان کند.

Oleksiy 06.08.15 09:14

افزودن زمان‌بندی هنگام راه‌اندازی نمایشگر به احترام «صاحب‌دار»

Dmitro 06/14/16 21:57

ظهر بخیر Oleksiy. می توانید یک کتابخانه برای روبات ها با PCF8574 به تولید کننده کد اضافه کنید.

Oleksiy 06/14/16 22:32

فکر خواهم کرد.))

ruslan 12/21/16 19:54
Oleksiy 12/21/16 21:53

اوه پس. به خصوص کد در ASMI. مهندسان آردوین دوباره از آن قدردانی خواهند کرد)))

پی سی
خوب، در ASM تعجب نکنید، برنامه آنجا برای کنترلر PIC نوشته شده است. آیا این اطلاعات "حتی بیشتر" برای متخصصان AVR مفید است؟ مخصوصاً برای افراد مبتدی))) من مخالف PIC نیستم، اما حقیقت این است که PIC و AVR متفاوت هستند. و از درایو جزئیات عملکرد صفحه نمایش RC وجود دارد، می توانید نگاهی بیندازید))) درست است، من همچنین زیر CVAVR و تمام دستورات برای مرتب سازی و مرتب سازی در قفسه ها نوشتم. اگر مورد اضطراری قرار گرفتید، باید خودتان ببینید چه چیزی به این وضوح نوشته شده است))) نویسنده می نویسد، خواننده جمع می کند.

GeK 01/04/17 12:52

"آدرس های I2C ریز مدارها (به طور پیش فرض 0x4E است")

بالاترین 4 بیت آدرس ثابت است،
پیشوند PCF8574 0100 است و PCF8574A 0111 است
3 بیت جوانتر در ورودی ریزمدارهای A2-A0 قرار دارند. هنگام اتصال، هر 3 جامپر باز هستند، نشان دهنده آدرس ریز مدار، مقدار 0111111 نمایش داده می شود.
// A2 A1 A0 PCF8574 PCF8574A
// 1 1 1 0x20 0x38
// 1 1 0 0x21 0x39
// 1 0 1 0x22 0x3A
// 1 0 0 0x23 0x3B
// 0 1 1 0x24 0x3C
// 0 1 0 0x25 0x3D
// 0 0 1 0x26 0x3E
// 0 0 0 0x27 0x3F

Oleksiy 04.01.17 14:27

خب گیج شدی
Vityag با مستندات برای میکرو مدار

0b01001110 ce 0x4E
پس اینجا همه چیز درست است. و اگر نیاز به تغییر آدرس دارید، فقط باید آن را در Define تغییر دهید.

یوری 12/14/17 21:26

روز خوبی داشته باشید! و همچنین می توانید کد عملکردهای lcdgotoxy و lcdclear را برای کار با آداپتور PCF8574 پیدا کنید.

Oleksandr 05/20/18 18:14

روز خوبی داشته باشید! چگونه متن روسی را خروجی می گیرید؟

Oleksiy 05.20.18 23:04

این یک نمایشگر کاملاً جدید است که توسط MELT ساخته شده است. او الفبای سیریلیک را در حافظه خود دارد.

Oleksandr 05/21/18 04:55

روز خوبی داشته باشید! من می نویسم که شما یک پروژه برای AtmelStudio 6.2 "ЁPҐBET MҐP!" دارید. سپس دیدن آن طبیعی است
و اگر بنویسید "HELLO SWIT!" انواع مزخرفات را بیرون بیاور من دوتا دارم
انواع نمایشگرها در یکی به خط سیریلیک نوشته شده اند. چینی دیگر

Oleksiy 21.05.18 09:22

من ترجیح می دهم یک برنامه آزمایشی بنویسم. با نمایش نمادها و آدرس آنها در تمام حافظه تکرار می شود. و سپس متوجه خواهیم شد که مشکل چیست. مهمتر از همه، جدول نمادها با جدول ascii مطابقت ندارد.

آندری 03.09.18 08:32

روز خوب!

میشه یه نمودار مدار پروتئوس برام بفرستید؟

Andriy 03.09.18 10:22

آیا کسی را در Proteuse بررسی کرده اید؟

Andriy 03.09.18 10:56

Rozіbravsya main_init

پاولو 05/30/19 23:35

Tsikava rich، آدرس های نمایشگر 0x4E هستند و اگر همان نمایشگر را به آردوینو وصل کنید، آدرس ها 0x27 هستند.

پاولو 05/31/19 11:04

بابت کارتان از شما تشکر میکنیم! قطع کل اینترنت از برنامه های هدفمند به جز برنامه های شما بدون کسب درآمد انتظار می رود. یک چیز، در تابع پروژه بایگانی شده تابع مقداردهی اولیه نمایش، تاخیر _delay_ ثبت نمی شود و بنابراین کار نمی کند.

Oleksiy 06/01/19 09:52

خب، این بیشتر یک پروژه نمایشی است. خوب است که کتابخانه axlib نیاز به بازنویسی دارد، اما با توجه به اینکه STM32 و STM8 با جهش در حال فروپاشی هستند، حس در AVR در حال حاضر ساکت است.

پاولو 06/05/19 12:57

STM به بسته‌های DIP نیاز ندارد و استفاده از بردهای دیگر را آسان‌تر می‌کند. برای پروژه های من، AVR از انبار خارج می شود

Oleksiy 05.06.19 15:20

پس Atmega8 و stm8s003 چقدر هزینه دارد)))

Dmitro 06/07/19 00:41

سلام، اولکسیا.
لطفا به من بگویید چگونه باید از pcf8574 تا پورت را خواند؟
من می خواهم یک بلوک خارجی، 8 GPIO از طریق گذرگاه i2c ایجاد کنم - همین.

Dmitro 06/07/19 17:56

دارم به خودم میگم
تابع بایت - پورت پورت ریز مدار را می چرخاند
uint8_t pcf8574_byte_rcv(uint8_t addr)
{
uint8_t ask = ACK;
افزودن | = 0b01; //خواندن
uint8_t data=0;
i2c_start();
ask = i2c_send_byte(addr);
if(!ask) data = i2c_read_byte(NACK);
i2c_stop();

برگرداندن داده ها؛
}

پاولو 06/07/19 20:37

هزینه آن چقدر است، 150 روبل، به قیمت یک چوب)، و چگونه برای STM پرداخت می کنید؟ LUT غیر قابل اعتماد است، روتر CNC کار نمی کند، چه چیزی می توانم بگیرم (بدون امتحان)

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

صفحه نمایش کریستال مایع LCD 1602این اولین انتخاب برای نمایش ردیف هایی از نمادها در پروژه های مختلف است. این ارزان است، با تغییرات مختلف با رنگ های مختلف نور پس زمینه، می توانید به راحتی کتابخانه های آماده برای طرح آردوینو ایجاد کنید. Ale توسط تسوگو اکران کوتاه مدت که نخورده است، این واقعیت، نمایش 16 مه از digiribrus از Visnovkiv، با Yakikovi -Min -Mini حداقل 6. Vicoristan از tso -ekran بدون i2c به آردوینو سریک شده است. UNO Poen Nano. اگر هیچ مخاطبی وجود ندارد، باید یک برد آردوینو مگا بخرید یا از مخاطبین محافظت کنید، از جمله برای اتصال نمایشگر از طریق i2c.

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

بیایید نگاهی دقیق تر به فناوری LCD1602 بیندازیم:

پوست درخت انگور معنای خاص خود را دارد:

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

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

  1. پشتیبانی به علاوه؛
  2. منهای روشنایی

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

  • نوع نمایش نمادین - امکان معرفی نمادها.
  • نور پس زمینه LED؛
  • کنترلر HD44780;
  • ولتاژ زنده 5 ولت؛
  • قالب بندی کاراکترهای 16x2;
  • محدوده دمای عملیاتی: -20 ° C تا +70 ° C، محدوده دمای ذخیره سازی: -30 ° C تا +80 ° C.
  • بگذارید 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، مناسب برای آردوینو
نمایش با سوئیچ های RGB! LCD 16×2 + صفحه کلید + Buzzer Shield برای آردوینو شیلد برای آردوینو با دکمه ها و صفحه نمایش LCD1602 LCD 1602 صفحه نمایش LCD برای چاپگر سه بعدی (کنترل کننده هوشمند برای RAMPS 1.4، Text LCD 20×4)، ماژول کارت خوان SD و MicroSD

شرح پروتکل I2C

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

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

ساده ترین مدار I2C می تواند یک دستگاه سیمی (معمولاً یک میکروکنترلر آردوینو) و بسیاری از دستگاه ها (مثلاً یک صفحه نمایش LCD) را در خود جای دهد. هر دستگاه دارای یک آدرس در محدوده 7 تا 127 است. لازم نیست دو دستگاه با آدرس یکسان در یک مدار باشند.

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

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

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

ندولیکی:

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

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

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

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


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

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

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

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

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


یک مانیتور RCD با پشتیبانی از i2c قبل از پرداخت هزینه چهار دارت اضافی متصل می شود - دو دارت برای داده، دو دارت مادام العمر.

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

همین! شبکه های طولانی سفر که در آن گم شدن آسان است. در این صورت به سادگی می توانیم تمام پیچیدگی اجرای پروتکل i2C را به کتابخانه ها بسپاریم.

کتابخانه هایی برای ربات ها با نمایشگر LCD i2c

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

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

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

#عبارتند از #عبارتند از // اتصالات کتابخانه //#include // اتصال یک کتابخانه جایگزین LiquidCrystal_I2C lcd(0x27,16,2); // آدرس Pokazum I2C (Night -Shine)، من پارامتر Ekran هستم (در LCD 1602 - 2 ردیف از نمادهای 16 در پوسته // Liquidcrystal_pf8574 LCD (0x27)؛ // Wareant for Blacks PCF8574 VOOID setup (LCD .init ( ); // راه اندازی صفحه نمایش lcd.backlight()؛ // صفحه نمایش را وصل کنید lcd.setCursor(0,0)؛ // مکان نما را روی سر ردیف اول قرار دهید lcd.print("Hello ")؛ .setCursor(0,1)؛ // مکان نما را روی سر یک ردیف دیگر قرار دهید lcd.print("ArduinoMaster")؛ // متن را در ردیف دیگری تایپ کنید ) void loop() ( )

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

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

کتابخانه جایگزین برای روبات ها با نمایشگر i2c

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

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

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

اول از همه، می توانید کنتراست مانیتور را افزایش یا تغییر دهید. اغلب کاراکترها از طریق حالت های کنتراست و نور قابل مشاهده نیستند.

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

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

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

ویسنووک

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

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

مشخصات فنی

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

جزئیات ماژول رابط I2C

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

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

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

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

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

گروه سوم: (پشت نبردها جامپر نصب شده بود)
VCC:
نمای LCD:

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

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

ارتباط:
ابتدا ماژول 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(); // فعال کردن نور پس زمینه از 1st row lcd .print("Hello, world" // متن نمایش داده شده lcd.setCursor(0,1) // مکان نما را در ردیف دوم قرار داد lcd.print("www.robotchip.ru"); // متن نمایش داده شده) void loop() ()

برنامه را سرگرم کنید

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


پوسیلانیا
کتابخانه LiquidCrystal_I2C را مسحور کنید
مستندات تراشه PCF8574T
مستندات تا LCD1602A

در Aliexpress خرید کنید