LCD های گرافیکی کاربرد فراوانی در مدارات امبدد دارند . از این LCD های می توان برای نمایش پارامتر های مختلف و همچنین منو های تو در تو استفاده کرد . LCD گرافیکی موسوم به نوکیا 5110 یک LCD گرافیکی 48*84 پیکسلی است که در گوشی های نوکیا 5110 به کار می رفتند . راه اندازی ساده و ابعاد کوچک این LCD ، کاربرد دیگری بجز استفاده در گوشی های نوکیا 5110 برای آن پیدا کرد و آن هم استفاده در پروژه های امبدد بود . LCD نوکیا 5110 شامل یک LCD گرافیکی همراه با درایور PCD8544 است که امکان اره اندازی LCD از طریق رابط SPI را فراهم می سازد . به راحتی می توانید متن های مختلف یا تصاویر Bitmap را بر روی این LCD نمایش دهید . از آنجایی که این LCD یک LCD مونو کالر است ، لذا قابلیت راه اندازی از طریق کتابخانه های قویی مانند U8g2 را دارد . LCD های نوکیا 5110 در دو مدل برد قرمز و برد آبی موجود اند . تنها تفاوت این دو در راه اندازی مربوط به LED بکلایت آن ها است . هچنین مدل های برد آبی بیشتر به صورت استوک هستند (LCD گوشی های قدیمی بر روی این برد ها نصب شده است ) اما مدل برد قرمز آن کیفت بسیار بالاتری دارد . اگر تنها جهت تست می خواهید از این LCD ها استفاده کنید بهتر است از مدل با برد آبی استفاده کنید (قیمت آن پایین تر می باشد ) ولی در پروژه های عملی مدل با برد قرمز پیشنهاد می شود .
در تصویر زیر پین های این ماژول نشان داده شده اند :
1- پین RST پین ریست LCD می باشد .
2- CE پین فعال سازی ماژول برای ارتباط SPI می باشد .
3- پین نوع داده ارسال شده را تعیین می کند که جهت نمایش است یا کامند می باشد .
4- DIN پین ورودی دیتا .
5- پین ورودی پالس ساعت .
6- VCC تغذیه ماژول می باشد که باید به 5 ولت متصل شود .
7- پین BL برای کنترل بکلایت LCD می باشد که در مدل های با برد قرمز باید به GND متصل شود و در مدل های با برد آبی باید به VCC متصل شود .
8- GND پین زمین ماژول .
راه اندازی توسط آردوینو :
برای راه اندازی این نمایشگر کتابخانه های زیادی وجود دارد . در کد های زیر از کتابخانه Adafruit استفاده شده است اما می توانید آن را با کتابخانه U8g2 نیز راه اندازی کنید .
#include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> // Declare LCD object for software 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); //Initialize Display display.begin(); // you can change the contrast around to adapt the display for the best viewing! display.setContrast(57); // Clear the buffer. display.clearDisplay(); // Display Text display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println("Hello world!"); display.display(); delay(2000); display.clearDisplay(); // Display Inverted Text display.setTextColor(WHITE, BLACK); // 'inverted' text display.setCursor(0,0); display.println("Hello world!"); display.display(); delay(2000); display.clearDisplay(); // Scaling Font Size display.setTextColor(BLACK); display.setCursor(0,0); display.setTextSize(2); display.println("Hello!"); display.display(); delay(2000); display.clearDisplay(); // Display Numbers display.setTextSize(1); display.setCursor(0,0); display.println(123456789); display.display(); delay(2000); display.clearDisplay(); // Specifying Base For Numbers display.setCursor(0,0); display.print("0x"); display.print(0xFF, HEX); display.print("(HEX) = "); display.print(0xFF, DEC); display.println("(DEC)"); display.display(); delay(2000); display.clearDisplay(); // Display ASCII Characters display.setCursor(0,0); display.setTextSize(2); display.write(3); display.display(); delay(2000); display.clearDisplay(); // Text Rotation while(1) { display.clearDisplay(); display.setRotation(rotatetext); // rotate 90 degrees counter clockwise, can also use values of 2 and 3 to go further. display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println("Text Rotation"); display.display(); delay(1000); display.clearDisplay(); rotatetext++; } } void loop() {}