اینترنت پنجره ها اندروید

برنامه نویسی LCD شاخص I2C برای Arduino. اتصال ال سی دی LCD LCM1602 با I2C به Arduino

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

اتوبوس داده SH2S اجازه می دهد تا دو سیم برای اتصال به 127 دستگاه، و همزمان. این I2C در تراشه PCF8574T اجرا می شود.

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

چیزی آبی - مقاومت متغیر، به شما اجازه می دهد تا کنتراست صفحه را تنظیم کنید.

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

بلوک 4 تماس به Arduino متصل شده است بنابراین:

GND - GND.
VCC - 5V.
SDA - A4 (اگر Arduino مگا، سپس به D20)
SCL - A5 (اگر Arduino مگا، سپس به D21)

کتابخانه

طرح

صفحه نمایش ممکن است یک آدرس IIC دیگر داشته باشد، به جای 0x27 ممکن است 0x3f باشد. به طور دقیق آدرس را تعیین می کنید که می توانید از اسکنر دستگاه های i2c استفاده کنید.

#عبارتند از. #عبارتند از. // تنظیم آدرس LCD 0x27، 16 کاراکتر، 2 خط LiquidCrystal_i2c LCD (0x27، 16، 2)؛ void setup () (lcd.init ()؛ // صفحه را شروع کنید // نور پس زمینه را روشن کنید LCD.Backlight ()؛ // نصب موقعیت را که با آن متن نمایش داده می شود نصب کنید. LCD.SetCursor (2، 0)؛ // رشته 1 را بردارید LCD.Print ("سلام، جهان!")؛ // به طور مشابه رشته دوم را نمایش می دهد LCD.SETCURSOR (1، 1)؛ LCD.Print ("www.site")؛ ) حلقه خالی () ()

ماژول LCD I2C اجازه می دهد تا شما را به اتصال شخصیت شخصیت به هیئت مدیره Arduino از سراسر دو سیم سیگنال.

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

. هزینه مدیریت

. اتصال سیم

مشخصات اساسی:

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

اتصال به Arduino

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

SCL: ساعت سریال ساعت سریال

sda: خط داده متوالی (داده های سریال)

VCC: "+" قدرت

gnd: "-" قدرت

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

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

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

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

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

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

ایجاد شخصیت های خود را

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

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

سلول، در نمایش های مورد نظر، دارای رزولوشن 5x8 امتیاز است. همه چیز که وظیفه ایجاد یک نماد کاهش می یابد، برای نوشتن یک ماسک کمی کاهش می یابد و یک نفر را در آن قرار می دهد در مکان هایی که باید یک نقطه و noliki وجود داشته باشد که در آن وجود ندارد.

در مثال بالا، یک لبخند را بکشید.

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

// تست شده در Arduino IDE 1.0.5 // اضافه کردن کتابخانه های لازم #عبارتند از. #عبارتند از. // نماد ماسک لبخند لبخند بایت لبخند \u003d (B00010، B00001، B11001، B00001، B11001، B00001، B00010)؛ LiquidCrystal_i2c LCD (0x27،20.4)؛ // آدرس و ابعاد صفحه را تنظیم کنید. خالی. برپایی. () (lcd.init ()؛ // LIGD اولیه LCD.Backlight ()؛ // نور پس زمینه را روشن کنید // ایجاد یک شخصیت در شماره 0 lcd.createchar (1، لبخند)؛ LCD.SETCURSOR (0، 0)؛ // مکان نما را به بالا 1 خط تنظیم کنید LCD.Print ("\\ 1")؛ // شکلک های صفحه نمایش (نماد در شماره 1) - "\\ 1" ) خالی حلقه () { }

برنامه برای ایجاد آسان از شخصیت ها

در نظرات، شرکت کننده جامعه پیوند را به ژنراتور نماد انداخت

من اینجا بودم فروشگاه خوب دستگاه بعدی مقاومت تراشه برای مطالعه و برنامه های کاربردی دستگاه های مفید. این دستگاه به اندازه کافی برای مدیریت صفحه نمایش ال سی دی در حال اجرا کنترل کننده HD44780 در حالت 4 بیتی بود. برای این منظور، یک microcircuit بر روی هیئت مدیره نصب شده است، که مبدل اتوبوس I2C به یک پورت 8 بیتی موازی است.

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

بلوز در سمت راست روشن / قطع نور پس زمینه. بعد، مسلح با یک تستر، صفحه زیر را تهیه کرد. پس از مطالعه ماژول، آن را نشان داد. p3 مدیریت نور پس زمینه اگر بلوز تنظیم شده باشد، سپس 1 نور پس زمینه را روشن می کند، و 0 خاموش می شود. هنگامی که جهنده برداشته می شود، نور پس زمینه همیشه خاموش است. بعد تصمیم گرفتیم کتابخانه Axlib را برای کار با اتوبوس I2C (پیاده سازی نرم افزار) و توابع برای مدیریت میکروسیرک PCF8574 تکمیل کنیم. به طور خلاصه، چگونه ماژول کار می کند. به منظور نمایش بایت موازی، برای این که شما نیاز به ارسال یک آدرس microCircuit به اتوبوس I2C (آن برابر با 0x4e است. شما همچنین می توانید آدرس را با سوئیچینگ Jumpers در هیئت مدیره تغییر دهید و ارزش سه تخلیه آدرس جوانتر را تغییر دهید) سپس پس از دریافت ACK، بایت داده ارسال می شود. پس از تراشه با ACK پاسخ می دهد، بایت بر روی پورت موازی تراشه ظاهر می شود. برای کنترل صفحه نمایش ال سی دی، توابع را از کتابخانه AXLIB گرفتم و آنها را کمی برای کار با اتوبوس I2C انجام دادم. #عبارتند از. #عبارتند از. #عبارتند از. #عبارتند از. #define اضافه کردن 0x4e // آدرس microcircuit / * LCD MicroCircuit RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 در پای P3، نور پس زمینه را وصل کنید. 1 شامل، 0 خاموش * / // خروجی داده com | \u003d 0x04؛ // واحد واحد PCF8574_BYTE_OUT (COM، ADD)؛ // خروجی داده com & \u003d 0xfb؛ // e در صفر PCF8574_BYTE_OUT (COM، ADD)؛ // خروجی داده ) void init (void) (_delay_ms (30)؛ com (0x30)؛ _delay_us (40)؛ com (0x30)؛ // انتقال به حالت 4 بیتی _delay_us (40)؛ // تاخیر برای اجرای فرمان com (0x30)؛ // انتقال به حالت 4 بیتی _delay_us (40)؛ // تاخیر برای اجرای فرمان com (0x20)؛ // انتقال به حالت 4 بیتی _delay_us (40)؛ // تاخیر برای اجرای فرمان 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_h \u003d ((data & 0xf0) + 0x09)؛ byte data_l \u003d ((داده // انتقال قدیمی تر 4 بیت data_h | \u003d 0x04؛ pcf8574_byte_out (data_h، add)؛ // انتقال 4 بیت ارشد // انتقال 4 بیت ارشد // انتقال Junior 4 بیت // انتقال Junior 4 بیت // انتقال Junior 4 بیت ) void str_out ((* str)! \u003d "\\ 0") (char_out (* str)؛ str ++؛)) int main (void) (init ()؛ str_out ("epґbet mґp!")؛ در حالی که (1 ) ()) در واقع چه اتفاقی می افتد ابتدا کتابخانه ها را برای I2C و PCF8574 متصل کنید. من در مورد I2C در حال حاضر نوشتم، بنابراین بار دیگر قطع خواهد شد، اما من به شما در PCF8574.h می گویم. این کتابخانه تنها سه توابع را شامل می شود.
BYTE PCF8574_TEST (BYTE ADD) (BYTE ASK \u003d ACK؛ اضافه کردن & \u003d 0xFe؛ i2C_START ()؛ ASK \u003d i2C_SEND_BYTE (ADD)؛ I2C_STOP ()؛ بازگشت بپرسید؛ اولین تابع برای بررسی دسترسی به یک دستگاه در اتوبوس نوشته شده است. در اصل، می توان آن را برای جستجو برای هر دستگاه واقع در تایر استفاده کرد. این تابع آدرس دستگاه مورد نظر را می گیرد و اگر آن را پاسخ دهد، صفر را باز می کند. اگر هیچ وسیله ای با این آدرس در اتوبوس وجود ندارد، سپس واحد را بازگردانید.
BYTE PCF8574_BYTE_OUT (BYTE ASK \u003d ACK؛ اضافه کردن & \u003d 0xFe؛ i2C_START ()؛ ASK \u003d i2C_SEND_BYTE (ADD)؛ اگر (! بپرسید) ASK \u003d I2C_SEND_BYTE (داده ها)؛ بازگشت بپرسید؛ این ویژگی در حال حاضر بر اساس این تراشه تمیز شده است. به عنوان یک استدلال، بایت ها برای انتقال به تایر و آدرس microcircuit منتقل می شوند. این تابع ابتدا برای یک تراشه در آدرس درخواست می شود و سپس بایت ها را ارسال می کند. اگر تراشه دریافت بایت و پاسخ به ACK، تابع به پایان خواهد رسید کار با microcircuit و بازگشت صفر به عنوان یک بسته موفق بایت. یک تراشه در این زمان این بایت را در پورت موازی خود نمایش می دهد. در غیر این صورت، واحدهای NACK و بازپرداخت را دریافت می کنیم، انتقال شکست خورد.
بایت PCF8574_STR_OUT (بایت * داده ها، بایت COL، BYTE ADD) (بایت ASK \u003d ACK؛ اضافه کردن و \u003d 0xFe؛ i2C_START ()؛ ASK \u003d i2C_SEND_BYTE (ADD)؛ برای (BYTE I \u003d 0؛ I این ویژگی برای آزمایش ایجاد شده است. اشاره گر به مجموعه ای از داده های تک بایت، تعداد این بایت ها و آدرس microcircuit را می پذیرد. در واقع تلاش برای انتقال تمام داده ها توسط یک جلسه، و نه یک بایت برای جلسه. عملکرد کار می کند، اما برای صفحه نمایش LCD و مناسب نیست. و اکنون بیایید به برنامه اصلی بازگردیم. پس از اتصال کتابخانه ها، ما آدرس تراشه را تجویز می کنیم. بعد، سه توابع را به صورت مشابه با LCD.H ایجاد کنید. تفاوت تنها در اصل انتقال داده است.
void com (byte com) (com | \u003d 0x08؛ // P3 در هر واحد، به منظور جلوگیری از روشن شدن نور PCF8574_BYTE_OUT (COM، ADD)؛ // خروجی داده com | \u003d 0x04؛ // واحد واحد PCF8574_BYTE_OUT (COM، ADD)؛ // خروجی داده com & \u003d 0xfb؛ // e در صفر PCF8574_BYTE_OUT (COM، ADD)؛ // خروجی داده } این ویژگی تنها دستورات صفحه نمایش را انتقال می دهد. از اینجا یک خط اول با یک بار منطقی از دستور 0x08 وجود داشت. این Bjaka به دلیل این واقعیت است که ما بایت ها را به طور مستقیم به پورت صفحه نمایش ال سی دی منتقل می کنیم، بلکه از طریق تکرار کننده ما. به عبارت دیگر، اگر ما یک بایت را اجرا کنیم، و پس از آن ما باید تنها یک بیت را برداشتیم، سپس شما را به بایت قبلی اختصاص داده و دوباره به بندر ارسال کنید. در اینجا چنین سردرگمی است. علاوه بر این از 0x08 برای حفظ دائمی واحد در تخلیه سوم ضروری است. به یاد داشته باشید در مورد نور پس زمینه؟ این علاوه بر این است و روشن می شود نور پس زمینه. پس از تماس با تابع انتقال اتوبوس در اتوبوس تماس بگیرید. این نوشته شده است سپس ما بایت را با اتوبوس در Microcircuit منتقل می کنیم. بعد، باید در یک واحد قرار گیرد، در واقع، در واقع یک افزودن منطقی BYTEs با 0x04 درگیر است. پس از صفر کردن E. به این ترتیب، شما می توانید هر فرمان را به صفحه نمایش ارسال کنید تنها با عبور فرمان خود به عنوان یک استدلال. void init (void) (_delay_ms (30)؛ // مکث پس از منبع تغذیه com (0x30)؛ // انتقال به حالت 4 بیتی _delay_us (40)؛ // تاخیر برای اجرای فرمان com (0x30)؛ // انتقال به حالت 4 بیتی _delay_us (40)؛ // تاخیر برای اجرای فرمان com (0x30)؛ // انتقال به حالت 4 بیتی _delay_us (40)؛ // تاخیر برای اجرای فرمان com (0x20)؛ // انتقال به حالت 4 بیتی _delay_us (40)؛ // تاخیر برای اجرای فرمان com (0x20)؛ // تنظیم پارامترها com (0x80)؛ // تنظیم پارامترها com (0x00)؛ // صفحه نمایش را خاموش کن com (0x80)؛ // صفحه نمایش را خاموش کن com (0x00)؛ // تمیز کردن صفحه نمایش com (0x10)؛ // تمیز کردن صفحه نمایش com (0x00)؛ // حالت ورود اطلاعات را نصب کنید com (0x60)؛ // حالت ورود اطلاعات را نصب کنید com (0x00)؛ // صفحه نمایش را با مکان نما انتخاب شده روشن کنید com (0xc0)؛ // صفحه نمایش را با مکان نما انتخاب شده روشن کنید } این ویژگی فقط در ابتدای صفحه نمایش قرار دارد. دنباله ای از دستورات از یک dataRet در صفحه LCD گرفته شده است. void char_out (داده های بایت) (byte data_h \u003d ((data & 0xf0) + 0x09)؛ byte data_l \u003d ((data // انتقال 4 bits data_h | \u003d 0x04؛ pcf8574_byte_out (data_h، add)؛ // انتقال 4 بیت ارشد data_h & \u003d 0xf9؛ PCF8574_BYTE_OUT (DATA_H، ADD)؛ // انتقال 4 بیت ارشد PCF8574_BYTE_OUT (DATA_L، ADD)؛ // انتقال Junior 4 بیت data_l | \u003d 0x04؛ PCF8574_BYTE_OUT (DATA_L، ADD)؛ // انتقال Junior 4 بیت data_l & \u003d 0xf9؛ PCF8574_BYTE_OUT (DATA_L، ADD)؛ // انتقال Junior 4 بیت } این ویژگی داده های داده های LCD داده ها را انتقال می دهد. این به همان شیوه ای به عنوان دستورات انجام می شود، به جز اینکه انتقال بایت برای اولین بار توسط نیمه دوم ارشد، و سپس جوانتر می آید. و بقیه یکسان است. void str_out (byte * str) (در حالی که ((* str)! \u003d "\\ 0") (char_out (* str)؛ str ++؛)) خوب، این ویژگی تمیز برای انتقال رشته صفحه نمایش است. در واقع، هیچ ارتباطی با موضوع ما ندارد.

پروژه برای Atmelstudio 6.2

سواد 01.08.15 17:11

کاما از بین رفته است راست: "سلام، صلح!" و این دستگاه نه تنها برای HD44780 تیز شده است. مقاومت های سفتی در بخشی از جادوگر قرار می گیرند. با توجه به مشخصات، رکورد داده ها به کنترل کننده ال سی دی بر کاهش E. از اینجا می شود. از اینجا اولین تابع ساده شده است: void com (byte com) (com | \u003d 0x08؛ // روشنایی PCF8574_byte_out (com | 0x04، اضافه کردن) ؛ // خروجی داده PCF8574_BYTE_OUT (COM، ADD)؛ // e در صفر) و بقیه نیز به طور قابل توجهی کمتر از کمتر است. به عنوان مثال، void char_out (داده های بایت) تنها دو تماس و حتی بیشتر بدون متغیرهای اضافی خواهد بود. راه اندازی LCD با نقض مشخصات زمان بندی انجام می شود.

آلکسی 02.08.15 19:11

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

آلکسی 06.08.15 09:14

Tyamenga اضافه شده است زمانی که مقداردهی صفحه نمایش را با توجه به "صلاحیت" محترم

دیمیتری 06/14/16 21:57

سلام الکسی شما می توانید یک کتابخانه را برای کار با PCF8574 به ژنراتور کد اضافه کنید.

آلکسی 14.06.16 22:32

من در مورد آن فکر می کنم.))

ruslan 12/21/16 19:54
آلکسی 21.12.16 21:53

آه آره به خصوص کد در اسما. اردوگاه ها از کامل قدردانی خواهند شد))

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

GEK 04.01.17 12:52

"آدرس MicroCircuit I2C (به طور پیش فرض آن 0x4e است"

آدرس های ارشد 4 بیتی ثابت می شوند،
PCF8574 پیشوند 0100 و PCF8574A - 0111 است
3 بیت جوانتر به وضعیت ورودی تراشه A2-A0 وابسته است. به طور پیش فرض، تمام 3 jumpers به \u200b\u200bترتیب باز هستند، آدرس microcircuit مقدار 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 0X27 0X3F

آلکسی 04.01.17 14:27

چیزی که اشتباه گرفته اید
عصاره از مستندات برای microcircuit

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

یوری 14.12.17 21:26.

روز خوب! و شما هنوز هم می توانید تابع LCDGOTOXY و LCDCLEAR را برای کار با آداپتور در PCF8574 کدگذاری کنید.

الکساندر 20.05.18 18:14

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

آلکسی 20.05.18 23:04

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

الکساندر 21.05.18 04:55

روز خوب! من به عنوان شما در پروژه برای Atmelstudio 6.2 "ypґbet mґp!" که طبیعی است
و اگر شما "سلام جهان را بنویسید!" همه چیز را نشان می دهد. من دو نفر دارم
گزینه های نمایش از یک سلیقه سیریلیک. دوم چینی

آلکسی 21.05.18 09:22

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

Andrey 03.09.18 08:32

عصر بخیر!

و شما نمیتوانید یک طرح را برای پروتئوس پرتاب کنید؟

آندری 03.09.18 10:22

یا هیچ کس در پروتئین بررسی نشده است؟

Andrei 03.09.18 10:56.

استفاده از main_init

پل 30.05.19 23:35

چیز کنجکاو، آدرس نمایش 0x4e، و اگر صفحه نمایش مشابه به Arduux متصل شود، سپس آدرس 0x27

پل 31.05.19 11:04.

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

آلکسی 01.06.19 09:52

خوب، این پروژه تظاهرات بیشتر است. با توجه به یک خوب، کتابخانه Axlib این است که بازنویسی شود، اما با توجه به این واقعیت که STM32 و STM8 گام های هفت مایل را حرکت می دهند، هیچ معنایی در AVR دیگر ندارد.

پل 05.06.19 12:57

STM دارای محوطه های شیب دار نیست، برای ساخت تخته مدار چاپی مشکل تر است. برای پروژه های من، AVR به اندازه کافی با حاشیه، بر روی یک Atmega 8 شما می توانید بسیار مناسب است

آلکسی 05.06.19 15:20

بله، اما Atmega8 و STM8S003 چقدر است)))))

دیمیتری 07.06.19 00:41.

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

دیمیتری 07.06.19 17:56

من به خودم جواب می دهم
این تابع BYTES را باز می گرداند - وضعیت پورت های میکروسیرکات
uint8_t PCF8574_BYTE_RCV (uint8_t addr)
{
uint8_t بپرسید \u003d ACK؛
addr | \u003d 0b01؛ // خواندن.
uint8_t data \u003d 0؛
i2c_start ()؛
ask \u003d i2c_send_byte (addr)؛
اگر (! بپرسید) data \u003d i2c_read_byte (nack)؛
I2C_STOP ()؛

داده های بازگشت؛
}

پل 07.06.19 20:37

چقدر هزینه، 150 روبل، در قیمت Relyushka به طور کلی)، و چگونه شما هزینه های تحت STM را از بین ببرید؟ Lut غیر قابل اعتماد، CNC Freser مطمئن نیست که آن را (سعی نکنید)

  • ماژول FC-113 بر اساس تراشه PCF8574T ساخته شده است که یک تغییر 8 بیتی Shift است - "Expander" خروجی ها برای تایر سریال I2C. در شکل microcircuit dd1 تعیین شده است.
  • R1 یک مقاومت سریع برای تنظیم کنتراست صفحه نمایش ال سی دی است.
  • J1 Jumper برای روشن شدن نور پس زمینه نمایش استفاده می شود.
  • نتیجه گیری 1 ... 16 برای اتصال ماژول به خروجی های صفحه نمایش ال سی دی استفاده می شود.
  • برای تغییر آدرس I2C دستگاه، تماس با سیستم عامل های تماس A1 ... A3 مورد نیاز است. صندلی های مربوطه را صندلی کنید، می توانید آدرس دستگاه را تغییر دهید. جدول نشان دهنده انطباق آدرس ها و جابجایی است: "0" مربوط به پارگی زنجیره ای، "1" - بلوز قابل تنظیم است. به طور پیش فرض، تمام 3 jumpers باز و آدرس دستگاه 0x27.

2 طرح اتصال LCD Arduino LCDبا توجه به I2C.

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


3 کتابخانه برای کاربا توجه به I2C.

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

بایگانی دانلود شده liquidcrystal_i2cv1-1.rar. باز کردن در پوشه \\ کتابخانه ها \\که در دایرکتوری IDDUINO IDE واقع شده است.

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

تابعهدف
کریستال مایع () یک متغیر از نوع Liquidcrystal را ایجاد می کند و تنظیمات صفحه نمایش را می پذیرد (شماره پین)؛
شروع () مقداردهی اولیه صفحه نمایش ال سی دی، تنظیم پارامترها (تعداد ردیف ها و نمادها)؛
پاک کردن () تمیز کردن صفحه نمایش و بازگشت مکان نما به موقعیت اولیه؛
صفحه اصلی () مکان نما را به موقعیت اولیه بازگردانید
setcursor () نصب مکان نما به موقعیت مشخص شده؛
نوشتن () نماد روی صفحه LCD را نمایش می دهد؛
چاپ () متن را روی صفحه LCD نمایش می دهد؛
مکان نما () نشانگر مکان نما، I.E. ناتوانی در صندلی نماد بعدی؛
nocorsor () مکان نما را پنهان می کند
چشمک زدن () فلش مکان نما؛
noBlink () لغو چشمک زدن؛
nodisplay () هنگام ذخیره تمام اطلاعات نمایش داده شده، صفحه نمایش را خاموش کنید.
نمایش دادن () در حالی که تمام اطلاعات نمایش داده شده را ذخیره کنید، صفحه نمایش را روشن کنید؛
scrolldisplayleft () پیمایش محتویات صفحه نمایش در موقعیت اول به سمت چپ؛
scrolldisplayRight () پیمایش محتویات صفحه نمایش در 1 موقعیت به سمت راست؛
اسکرول خودکار () ورود به قرارداد خودکار؛
noautoscroll () خاموش کردن لوب خودکار؛
چپ به راست () جهت متن را از چپ به راست مشخص می کند؛
راست به چپ () جهت متن در سمت راست به سمت چپ؛
createChar () یک نماد سفارشی برای صفحه LCD ایجاد می کند.

4 طرح برای خروجی متنبر روی صفحه نمایش ال سی دی از طریق اتوبوس I2C

بیایید نمونه را باز کنیم: نمونه های فایل malialcrystal_i2c customchars و او کمی او را تغییر می دهد. ما یک پیام را در انتهای آن علامت فلاش می گیریم. در نظرات به کد، تمام تفاوت های نقاشی در نظر گرفته شده است.

#عبارتند از. // سیم کارت را وصل کنید // ما کتابخانه LCD #define printbyte را متصل می کنیم (args) نوشتن (args)؛ // uint8_t heart \u003d (0x0.0xa، 0x1f، 0x1f، 0xe، 0x4.0x0)؛ // نماد ماسک بیت "قلب" liquidcrystal_i2c ال سی دی (0x27، 16، 2)؛ // تنظیم آدرس 0x27 برای صفحه نمایش ال سی دی 16x2 void setup () ( lcd.init ()؛ // مقداردهی اولیه نمایش LCD LCD.Backlight ()؛ // روشن نور پس زمینه صفحه نمایش LCD.Createchar (3، قلب)؛ // ایجاد نماد قلب در 3 LCD.Home () سلول حافظه؛ // مکان نما را به گوشه بالا سمت چپ، به موقعیت (0.0) ال سی دی قرار دهید! ")؛ // چاپ رشته متن LCD.SetCursor (0، 1)؛ // انتقال یک مکان نما به رشته 2، یک نماد 1 lcd.print ("من")؛ // چاپ یک پیام در یک خط 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 ()؛، حتی پس از خاموش شدن، در صفحه نمایش باقی می ماند، زیرا ثبت شده در MFU 1602.

5 ایجاد شخصیت های خود رابرای صفحه نمایش ال سی دی

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

6 صفحه نمایش ال سی دیدر اتوبوس I2C

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


7 "برای"تایر I2C

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


نمودار موقت خروجی کاراکترهای لاتین "A"، "B" و "C" در صفحه نمایش ال سی دی 1602

نمودار نشان می دهد که کاراکترهایی که در DVLD ROM هستند (به صفحه 9.11 داده، مرجع زیر مراجعه کنید) توسط دو GHEE منتقل می شود، که اولین جدول ستون جدول را تعریف می کند و دوم شماره خط است. در همان زمان، داده ها "خرابکاری" در جلو جلو E. (فعال کردن)، و خط Rs (ثبت نام انتخاب، انتخاب ثبت نام) در حالت واحد منطقی است که به معنی انتقال داده است. وضعیت وضعیت پایین خط RS به معنای انتقال دستورالعمل هایی است که ما قبل از انتقال هر نماد می بینیم. در این مورد، کد دستورالعمل بازگشتی حمل و نقل به موقعیت (0، 0) LCD نمایش داده می شود، همانطور که می توانید با مطالعه توضیحات فنی صفحه نمایش پیدا کنید.

و یک مثال دیگر. در این زمان نمودار خروجی نماد "قلب" را در صفحه LCD نشان می دهد.


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

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

صفحه نمایش کریستال مایع (صفحه نمایش کریستال مایع) ال سی دی 1602. این یک انتخاب خوب برای نمایش خطوط شخصیت در پروژه های مختلف است. این ارزان است، تغییرات مختلفی با رنگ های مختلف نور پس زمینه وجود دارد، شما به راحتی می توانید کتابخانه های آماده برای طرح های Arduino را دانلود کنید. اما مهمترین ضرر این صفحه نمایش این واقعیت است که صفحه نمایش دارای 16 نتیجه دیجیتال است که حداقل 6 مورد اجباری است. بنابراین استفاده از این صفحه نمایش ال سی دی بدون I2C محدودیت های جدی برای Arduino Uno یا Nano Boards می افزاید. اگر مخاطبین از دست رفته اند، پس شما باید هزینه Arduino مگا را خریداری کنید یا مخاطبین را ذخیره کنید، از جمله اتصال صفحه نمایش از طریق I2C.

شرح مختصری پین های ال سی دی 1602

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

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

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

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

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

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

  • صفحه نمایش نماد، امکان بارگذاری شخصیت ها وجود دارد؛
  • چراغ نئون؛
  • کنترل کننده HD44780؛
  • ولتاژ عرضه 5V؛
  • فرمت 16x2 کاراکتر؛
  • محدوده دما از -20cd تا + 70C، محدوده دما ذخیره سازی از -30c تا +80 ثانیه؛
  • زاویه دید 180 درجه است.

مدار اتصال ال سی دی به هیئت مدیره Arduino بدون I2C

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

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

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

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

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

شرح پروتکل I2C

قبل از بحث در مورد صفحه نمایش Arduino از طریق آداپتور I2C، بیایید درباره پروتکل I2C صحبت کنیم.

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

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

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

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

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

معایب:

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

ماژول I2C برای LCD 1602 Arduino

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

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


خروجی I2C برای اتصال به هیئت مدیره Arduino استفاده می شود. اگر شما نیاز دارید، ما تغذیه خارجی را برای انقباض می کنیم. با استفاده از مقاومت در برابر پیرایش، ما می توانیم مقادیر کنتراست سفارشی را پیکربندی کنیم

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

اتصال صفحه LCD به Arduino از طریق I2C

Arduino، نمایش، کانال، اتصال سیم، و پتانسیومتر برای اتصال مورد نیاز است.

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


مانیتور کریستال مایع پشتیبانی I2C به هیئت مدیره با استفاده از چهار سیم - دو سیم برای داده ها، دو سیم برای منبع تغذیه متصل می شود.

  • خروجی GND به GND در هیئت مدیره متصل است.
  • خروجی VCC - در 5V.
  • SCL به پین \u200b\u200bA5 متصل می شود.
  • SDA به PINA A A متصل می شود

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

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

برای تعامل Arduino C LCD 1602 از طریق اتوبوس I2C، شما حداقل دو کتابخانه نیاز دارید:

  • کتابخانه Wire.H برای کار با I2C در حال حاضر در برنامه استاندارد Arduino IDE در دسترس است.
  • liquidcrystal_i2c.h کتابخانه، که شامل انواع مختلفی از دستورات برای کنترل مانیتور بر روی اتوبوس I2C و اجازه می دهد تا شما را به طرح ساده تر و کوتاه تر. شما باید علاوه بر این، کتابخانه را بعد از اتصال صفحه نمایش نصب کنید، باید علاوه بر این کتابخانه liquidcrystal_i2c.h را نصب کنید

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

#عبارتند از. #عبارتند از. // اتصال کتابخانه // # شامل // کتابخانه جایگزین liquidcrystal_i2c LCD (0x27،16،2) را وصل کنید. // آدرس I2C (شایع ترین مقدار)، و همچنین پارامترهای صفحه نمایش (در مورد ال سی دی 1602 - 2 خطوط 16 کاراکتر در هر // liquidcrystal_pCF8574 LCD (0x27)؛ // گزینه برای PCF8574 Void Setup Library () (LCD.init ()؛ // مقداردهی اولیه صفحه نمایش LCD.Backlight؛ // اتصال نور پس زمینه LCD.SetCursor (0،0)؛ / / تنظیم مکان نما به ابتدای خط LCD خط اول. چاپ ("سلام")؛ // مجموعه متن در ردیف اول LCD.SetCursor (0،1)؛ // نصب مکان نما به ابتدای خط دوم LCD.Print ("Arduinomaster")؛ // متن متن در خط دوم) حلقه void () ()

شرح توابع و روش های کتابخانه liquidcrystal_i2c:

  • صفحه اصلی () و Clear () - اولین تابع به شما اجازه می دهد تا مکان نما را به ابتدای صفحه بازگردانید، دوم نیز، اما در عین حال همه چیز را که قبلا در مانیتور بود حذف می کند.
  • نوشتن (CH) - به شما اجازه می دهد تا یک نماد CH را بر روی صفحه نمایش بگذارید.
  • مکان نما () و nocursor () - نشان می دهد / پنهان کردن مکان نما بر روی صفحه نمایش.
  • blink () و NoBlink () - مکان نما چشمک می زند / فلش نمی کند (اگر آن را به نمایش روشن است).
  • نمایش () و nodisplay () - به شما اجازه اتصال / غیر فعال کردن صفحه نمایش را می دهد.
  • scrolldisplayleft () و scrolldisplayRight () - صفحه را به یک علامت سمت چپ / راست حرکت می دهد.
  • autoscroll () و noautoscroll () - به شما اجازه می دهد تا حالت خودکار چرخش را فعال / غیرفعال کنید. در این حالت، هر شخصیت جدید در همان مکان نوشته شده است، جابجایی قبلا بر روی صفحه نوشته شده است.
  • lefttoright () و righttoleft () - تنظیم جهت متن خروجی - از چپ به راست یا راست سمت چپ.
  • createChar (CH، Bitmap) - یک نماد با کد CH (0 - 7) را با استفاده از آرایه Bitmap Bitmasse ایجاد می کند تا نقاط سیاه و سفید را ایجاد کند.

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

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

I2C LCD صفحه نمایش مشکلات اتصال

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

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

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

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

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

نتیجه

در این مقاله، مسائل اساسی استفاده از صفحه نمایش ال سی دی در پروژه های پیچیده Arduino، زمانی که ما نیاز به صرفه جویی در ضربه های آزاد در هیئت مدیره را بررسی کردیم. آداپتور I2C ساده و ارزان به شما این امکان را می دهد که صفحه نمایش ال سی دی 1602 را وصل کنید، تنها 2 پین آنالوگ را اشغال کنید. در بسیاری از موارد، می تواند بسیار مهم باشد. هزینه راحتی - نیاز به استفاده از یک ماژول اختیاری - مبدل و کتابخانه. به نظر ما، نه در تمام قیمت های بالا برای راحتی و ما بسیار توصیه می کنیم با استفاده از این فرصت در پروژه ها.