ال سی دی برای نمایش محتوا و داده ها در پروژه های الکترونیکی استفاده میشود. قطعا ال سی دی های تلفن های همراه نوکیا را به خاطر دارید. پس از اتمام خط تولید نوکیا، ال سی دی های استوک در بازار الکترونیک در سراسر دنیا مورد استفاده قرار گرفته است و با توجه به قیمت مناسب و کیفیت تصویر مطلوب یکی از انتخاب های تولیدکنندگان شده است. در ادامه روش راه اندازی ال سی دی گرافیکی Nokia5110 را با بردهای آردوینو بررسی میکنم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
معرفی ال سی دی گرافیکی Nokia5110
ال سی دی گرافیکی نوکیا مخصوص تلفن همراه نوکیا است که از طریق درایور میتوانید با انواع میکروکنترلر تست و راه اندازی کنید. قیمت ارزان، کیفیت تصویر مطلوب و راه اندازی ساده با درایور جای خود را در ساخت پروژه های DIY الکترونیکی باز کرده است. از نمایشگر نوکیا برای نمایش متن و BITMAP میتوان استفاده کرد. تراشه ی قدرتمند PCD8544 CMOS در ساختار ال سی دی به کار رفته است که به همین دلیل ارتباط با میکروکنترلرها جهت راه اندازی را بسیار ساده کرده است. توسط درایور PCD8544 میتواهنید نمایشگر با ۴۸X84 پیکسل را درایو و راه اندازی کنید. ارتباط بین نمایشگر و میکروکنترلر توسط پروتکل ارتباطی SPI شکل میگیرد. درایور PCD8544 بسیار کم مصرف است و در مدار جریانی بین ۶ تا ۷ میلی آمپر مصرف میکند. طبق اطلاعات درج شده در دیتاشیت از درایور PCD8544 برای راه اندازی و درایو ال سی دی LCD استفاده میشود. خروجی درایور پیکسل های ۴۸X84 است. درایور دارای پایه ریست RESET ورودی داخلی است و سرعت ارتباط سریال m 4.0 Mbits/s است. رنج ولتاژ راه اندازی درایور بین ۲٫۷ تا ۳٫۳ ولت است. برای استفاده در آردوینو از پایه ی ۳٫۳ ولت برای راه اندازی ال سی دی استفاده میکنیم. نمایشگر ال سی دی از یک GDDRAM داخلی با حافظه ۵۰۴ بیتی تشکیل شده است. هر حافظه مموری از ۶ بانک تشکیل شده است که از ۸۴ ستون ( سگمنت ) تشکیل شده است که هر ستون ۸ بیت دیتا را در خود ذخیره میکند. تکنولوژی به کار رفته برای ساخت ال سی دی دات ماتریس است و پروتکل ارتباطی MCU به صورت SPI است. سایز صفحه نمایش ۱٫۵ اینچ و رزولوشن تصویر ۸۴X48 پیکسل است. ولتاژ ورودی ۲٫۷ تا ۳٫۳ ولت و ماکزیمم جریان کاری ۵۰ میلی آمپر است. زاویه دید صفحه نمایش ۱۸۰ درجه است.
۶ banks x 84 segments x 8 bits of data = 4032 bits = 504 bytes
پایه های LCD NOKIA5110
ترتیب پایه های نمایشگر ال سی دی طبق اطلاعات چاپ شده بر روی ال سی دی به صورت زیر است.
- پایه RST : پایه RESET برای ریست کردن نمایشگر استفاده میشود.
- پایه CE: پایه CE مخفف CHIP ENABLE است که برای ارتباط با یکی از دیوایس هایی که از طریق پروتکل SPI با دستگاه اتصال دارد، استفاده میشود. این پایه به صورت پیشفرض ACTIVE LOW است.
- پایه D/C: مخفف DATA / COMMAND است که برای ال سی دی مشخص میکند دیتای ارسالی به صورت کامند و یا دیتای نمایشی است.
- پایه DIN: پایه دیتا سریال است که برای ارتباط SPI استفاده میشود.
- پایه CLK: پایه کلاک سریال است که برای ارتباط SPI استفاده میشود.
- پایه VCC: پایه تغذیه است که برای تامین ولتاژ کافی برای ارتباط با آردوینو استفاده میشود.
- پایه BL: مخفف BACKLIGHT است که برای کنترل بک لایت صفحه نمایش استفاده میشود و توسط یک پتانسیومتر میتوانید شدت نور صفحه را تنظیم کنید.
- پایه GND: پایه GND برای ارتباط با GND آردوینو استفاده میشود.
برای اتصال نمایشگر ال سی دی گرافیکی NOKIA5110 به آردوینو از جدول زیر استفاده کنید. در نظر داشته باشید برای اتصال BL یا همان BACKLIGHT میتوانید بین دو پایه VCC و BL اشتراک گرفته و سپس به پایه ۳٫۳ ولت آردوینو متصل کنید. از دیگر پایه های دیجیتال آردوینو برای اتصال میتوانید استفاده کنید اما بایستی در کد برنامه هر پایه را تعریف کنید.
نصب کتابخانه Adafruit PCD8544 Nokia 5110
برای راه اندازی ال سی دی گرافیکی Nokia5110 از کتابخانه ی Adafruit استفاده میکنیم. کتابخانه Adafruit pcd8544 توسط کمپانی آدافروت توسعه یافته است که به صورت پیش فرض در لیست کتابخانه نرم افزار آردوینو قرار دارد و با تایپ نام کتابخانه در منو نرم افزار نصب کتابخانه ها نمایش داده میشود. برای نصب کتابخانه از مسیر زیر اقدام کنید.
Arduino / Tools / Manage Libraries
نصب کتابخانه Adafruit GFX Library
برای نمایش نقطه، خط، دایره و مستطیل در نمایشگرها از کتابخانه Adafruit GFX استفاده میکنیم. کتابخانه را به روش زیر نصب کنید.
کد آردوینو نمایش متن ال سی دی Nokia5110
برای نمایش متن در ال سی دی گرافیکی Nokia5110 از کتابخانه ی PCD8544 Nokia 5110 استفاده میکنیم. در ابتدا دو کتابخانه را فراخوانی میکنیم. انتخاب پایه های آردوینو برای هر ال سی دی دلخواه است و فقط طبق پایه های چاپ شده بر روی برد اتصالات را مشخص و در متن کد وارد کنید.
#include <SPI.h> #include <Adafruit_GFX.h> // فراخوانی کتابخانه #include <Adafruit_PCD8544.h> // فراخوانی کتابخانه // معرفی پایه های ال سی دی برای ارتباط spi // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); // طبق ترتیب بالا پایه های متصل به آردوینو رامشخص کنید Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); int rotatetext = 1; void setup() { Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57); // پاک کردن حافظه بافر display.clearDisplay(); // نمایش متن display.setTextSize(2); // سایز نمایش محتوا display.setTextColor(BLACK); // رنگ متن display.setCursor(5,5); // مشخص کردن سطر و ستون display.println("ladypi"); // پیام مورد نظر display.display(); delay(2000); display.clearDisplay(); } void loop() {}
در شروع برنامه از سه کتابخانه استفاده شده است. برای نمایشگر ال سی دی از آبجکت استفاده میکنیم. آبچکت از ۵ پارامتر و مشخص کردن پایه های ال سی دی تشکیل شده است.
#include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> // Initialize LCD object for software SPI // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
در فانکشن void Setup، به ترتیب سریال مانیتور، دستور فعال شدن ال سی دی،تنظیم کنتراست نمایشگر انجام میشود.
Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57);
نمایش یک متن در نمایشگر LCD NOKIA5110
برای نمایش متن در نمایشگر دقیقا از دستورات OLED استفاده میکنیم. سایز نمایش متن، رنگ نمایش متن، انتخاب مکان نما مشخص میشود.
// نمایش متن display.setTextSize(2); // سایز نمایش محتوا display.setTextColor(BLACK); // رنگ متن display.setCursor(5,5); // مشخص کردن سطر و ستون display.println("ladypi"); // پیام مورد نظر display.display(); delay(2000); display.clearDisplay();
#include <SPI.h> #include <Adafruit_GFX.h> // فراخوانی کتابخانه #include <Adafruit_PCD8544.h> // فراخوانی کتابخانه // معرفی پایه های ال سی دی برای ارتباط spi // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); // طبق ترتیب بالا پایه های متصل به آردوینو رامشخص کنید Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); int rotatetext = 1; void setup() { Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57); // پاک کردن حافظه بافر display.clearDisplay(); // Scaling Font Size display.setTextColor(BLACK); display.setCursor(0,0); display.setTextSize(2); display.println("LADYPI"); display.display(); delay(2000); display.clearDisplay(); } void loop() {}
نمایش عدد در نمایشگر LCD NOKIA
برای نمایش عدد در نمایشگر LCD از کد زیر استفاده میکنیم.
// Display Numbers display.setTextSize(1); display.setCursor(0,0); display.println(123456789); display.display(); delay(2000); display.clearDisplay();
#include <SPI.h> #include <Adafruit_GFX.h> // فراخوانی کتابخانه #include <Adafruit_PCD8544.h> // فراخوانی کتابخانه // معرفی پایه های ال سی دی برای ارتباط spi // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); // طبق ترتیب بالا پایه های متصل به آردوینو رامشخص کنید Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); //int rotatetext = 1; void setup() { Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57); // پاک کردن حافظه بافر display.clearDisplay(); // Display Numbers display.setTextSize(1); display.setCursor(0,0); display.println(123456789); display.display(); delay(2000); display.clearDisplay(); } void loop() {}
چرخش متن در نمایشگر LCD NOKIA5110
برای چرخش متن در نمایشگر LCD از کد زیر استفاده میکنیم.
// Text Rotation while(1) { display.clearDisplay(); display.setRotation(rotatetext); display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println("Text Rotation"); display.display(); delay(1000); display.clearDisplay(); rotatetext++; }
#include <SPI.h> #include <Adafruit_GFX.h> // فراخوانی کتابخانه #include <Adafruit_PCD8544.h> // فراخوانی کتابخانه // معرفی پایه های ال سی دی برای ارتباط spi // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); // طبق ترتیب بالا پایه های متصل به آردوینو رامشخص کنید Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); int rotatetext = 1; void setup() { Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57); // پاک کردن حافظه بافر display.clearDisplay(); // Text Rotation while(1) { display.clearDisplay(); display.setRotation(rotatetext); display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println("Text Rotation"); display.display(); delay(1000); display.clearDisplay(); rotatetext++; } } void loop() {}
نمایش مستطیل در نمایشگر LCD NOKIA5110
برای نماش مستطیل در نمایشگر LCD از کد زیر استفاده میکنیم.
// Draw Rectangle display.drawRect(0, 0, 60, 40, BLACK); display.display(); delay(2000); display.clearDisplay(); //Draw Filled Rectangle display.fillRect(0, 0, 60, 40, BLACK); display.display(); delay(2000); display.clearDisplay();
#include <SPI.h> #include <Adafruit_GFX.h> // فراخوانی کتابخانه #include <Adafruit_PCD8544.h> // فراخوانی کتابخانه // معرفی پایه های ال سی دی برای ارتباط spi // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); // طبق ترتیب بالا پایه های متصل به آردوینو رامشخص کنید Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); int rotatetext = 1; void setup() { Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57); // پاک کردن حافظه بافر display.clearDisplay(); // Draw Rectangle display.drawRect(0, 0, 60, 40, BLACK); display.display(); delay(2000); display.clearDisplay(); //Draw Filled Rectangle display.fillRect(0, 0, 60, 40, BLACK); display.display(); delay(2000); display.clearDisplay(); } void loop() {}
نمایش دایره در نمایشگر LCD NOKIA5110
برای نماش دایره در نمایشگر LCD از کد زیر استفاده میکنیم.
//Draw Circle display.drawCircle(20, 20, 20, BLACK); display.display(); delay(2000); display.clearDisplay(); //Draw Filled Circle display.fillCircle(20, 20, 20, BLACK); display.display(); delay(2000); display.clearDisplay();
#include <SPI.h> #include <Adafruit_GFX.h> // فراخوانی کتابخانه #include <Adafruit_PCD8544.h> // فراخوانی کتابخانه // معرفی پایه های ال سی دی برای ارتباط spi // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); // طبق ترتیب بالا پایه های متصل به آردوینو رامشخص کنید Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); int rotatetext = 1; void setup() { Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57); // پاک کردن حافظه بافر display.clearDisplay(); //Draw Circle display.drawCircle(20, 20, 20, BLACK); display.display(); delay(2000); display.clearDisplay(); //Draw Filled Circle display.fillCircle(20, 20, 20, BLACK); display.display(); delay(2000); display.clearDisplay(); } void loop() {}
نمایش مثلث در نمایشگر LCD NOKIA5110
برای نماش مثلث در نمایشگر LCD از کد زیر استفاده میکنیم.
//Draw Triangle display.drawTriangle(20, 0, 0, 40, 40, 40, BLACK); display.display(); delay(2000); display.clearDisplay(); //Draw Filled Triangle display.fillTriangle(20, 0, 0, 40, 40, 40, BLACK); display.display(); delay(2000); display.clearDisplay();
#include <SPI.h> #include <Adafruit_GFX.h> // فراخوانی کتابخانه #include <Adafruit_PCD8544.h> // فراخوانی کتابخانه // معرفی پایه های ال سی دی برای ارتباط spi // Adafruit_PCD8544(CLK,DIN,D/C,CE,RST); // طبق ترتیب بالا پایه های متصل به آردوینو رامشخص کنید Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3); int rotatetext = 1; void setup() { Serial.begin(9600); // ارتباط سریال // معرفی نمایشگر display.begin(); // تنظیم کنترا display.setContrast(57); // پاک کردن حافظه بافر display.clearDisplay(); //Draw Triangle display.drawTriangle(20, 0, 0, 40, 40, 40, BLACK); display.display(); delay(2000); display.clearDisplay(); //Draw Filled Triangle display.fillTriangle(20, 0, 0, 40, 40, 40, BLACK); display.display(); delay(2000); display.clearDisplay(); } void loop() {}
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام این ال سی دی رو از دانشجوکیت خریدم و نتونستم با کدهای اینترنت ازش دیتا بگیرم الان با کد شما راه اندازی شد
پس از مدت ها دارم ازش استفاده میکنم سپاس فراوان
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم مفید واقع شده باشد.
با سلام
مهندس در این خط
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3)
میشه شماره پایه ها رو تغییر داد؟
با سلام
خیر بایستی از پایه های SPI استفاده کنید.
سلام
ممنون از سایت خوبتون من وقتی میخواهم کتابخانه را نصب کنم خطایFailed to install library: Adafruit PCD8544 Nokia 5110 LCD library:1.0.2.
Error: 13 INTERNAL: Library install failed: creating temp dir for extraction: mkdir C:\Users\Amirali\Documents\Arduino\libraries: The system cannot find the file specified. را میده من باید چه کار کنم؟
با سلام
ارور عدم نضب کتابخانه است. مجدد تلاش و نتیحه را اعلام کنید.
سلام وقت بخیر من کد رو کامل نوشتم و تمام کتاب خونه هارو دانلود کردم اما روی ال سی دی داخل برنامه پروتوس چیزی نشون نمیده
با سلام
این آموزش ارتباطی با پروتئوس ندارد.
با سلام
من میخواهم ورودی رو از کاربر بگیرم و متن رو در ال سی دی نمایش بدم لطفاً راهنمایی فرمایید
با سلام
کاربر گرامی امکان بررسی کد جدید در آموزش ها فراهم نیست. در صورت امکان آموزش داده خواهد شد.