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() {}


