چگونگی راهاندازی LCD کاراکتری برای نمایش خروجی آردوینو
آشنایی با LCD کاراکتری
صفحه نمایشگر LCD کاراکتری خروجی آردوینو را نمایش میدهد، از اینرو نیازی به اتصال آردوینو به نمایشگر کامپیوتر یا لپتاپ نیست. یک LCD کاراکتری 4×16 با یک کنترلر HD44780 میتواند چهار ردیف شامل 16 کاراکتر را در هر ردیف نمایش دهد، هر کاراکتر توسط یک آرایه 8×5 پیکسلی تعریف میشود. LCDها اندازههای متفاوتی همانند 4×16، 2×16، 2×20 و 4×20 دارند. یک LCD کاراکتری 2× 16 دارای 16 پایه است، اگر از پایین به صفحه نمایشگر نگاه کنید این پایهها از چپ به راست 1 تا 16 شمارهگذاری شدهاند. برخی LCDها بلک لایت ندارند، بنابراین پایههای 15 و 16 متصل نمیشوند. کنتراست صفحه نمایش LCD با یک پتانسیومتر 10 کیلواهمی کنترل میشود. جزییات عملکرد پایههای LCD در جدول 1 بیان شدهاند.
آردوینو | توضیح | پایه |
GND | زمین | 1 VSS |
5V | منبع تغذیه 5V | 2 VDD |
پایه سیگنال پتانسیومتر | تنظیم کنتراست LCD | 3 V0 |
پایه 2 | انتخاب رجیستر: رجیستر داده یا دستور برای کنترلر LCD | 4 RS |
GND برای نوشتن بر روی LCD | مد خواندن/ نوشتن | 5 RW |
پایه 3 | فعالساز انتقال داده | 6 E |
بدون اتصال | 7-10 D0-D3 | |
پایه 4-7 | بدون اتصال | 11-14 D4-D7 |
5 V برای نور صفحه نمایشگر | آند LED صفحه نمایشگر | 15 آند یا پایه مثبت LED |
GND برای نور صفحه نمایشگر | کاتد LED صفحه نمایشگر | 16 کاتد یا پایه منفی LED |
جدول 1. توضیح پایههای LCD کاراکتری
کتابخانه LCD کاراکتری توسط Adafruit در IDE آردوینو ایجادشده و نیاز به بارگذاری آن نیست. خطوط داده و کنترل LCD با دستور LiquidCrystal lcd(RS, E, D4, D5, D6, D7) به پایههای آردوینو نگاشته میشوند، که در آن RS, E و D4 تا D7 پایههای آردوینو متصل به LCD هستند. برای مثال، اگر پایههای 6،5،4،3،2 و 7 آردوینو به پایههای RS,E, و D4تاLCD D7 متصل شوند، دستور تعریف پایه بصورت زیر میباشد:
LiquidCrystal lcd(2, 3, 4, 5, 6, 7) );
یا
int RS = 2;
int E = 3;
int D4 = 4;
int D5 = 5;
int D6 = 6;
int D7 = 7;
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
کدها در IDE آردوینو
در کدهای نوشته شده در IDE آردوینو ثانیههایی که کد اجرا میشود و دمای خواندهشده از سنسور دمای LM35DZ برروی LCD کاراکتری نمایش داده میشود (شکل.1 را مشاهده کنید). تابع () void setup ابعاد صفحه نمایش LCD و متن را برای نمایش مداوم مشخص میکند، بنابراین در حین اجرای تابع ()void loop فقط دما و زمان به روزشده برروی LCD نمایش داده میشوند. نقطه مرجع LCD برای قرار دادن یک کاراکتر در گوشه بالای سمت چپ مکان (0,0) است. برای مثال، مکان ستون پنجم و سطر دوم (4,1) است. اتصالات شکل 1 در جدول 2 بیان شدهاند.
اتصال به | قطعه |
GND آردوینو | GND LM35DZ |
پایه A0 آردوینو | پایه OUT LM35DZ |
5V آردوینو | VCC LM35DZ |
GND آردوینو | GND پتانسیومتر |
پایه 3 LCD | سیگنال پتانسیومتر |
5V آردوینو | VCC پتانسیومتر |
جدول 2. اتصالات LCD کاراکتری و سنسور دما
کدهای زیر مدت زمان نمایش دمای خوانده شده توسط سنسور دمای LM35 را بر روی LCD بیان میکنند:
#include // include the LiquidCrystal library
int LCDcol = 16; // number of LCD columns
int LCDrow = 4; // number of LCD rows
// associate lcd with LiquidCrystal library
LiquidCrystal lcd (2,3,4,5,6,7); // define LCD pins RS, E and D4 to D7
int tempPin = A0; // LM35DZ temperature sensor pin
int time = 0;
int reading;
float temp;
void setup()
{
lcd.begin(LCDcol, LCDrow); // define LCD dimensions
lcd.setCursor(0,0); // move cursor to start of first row
lcd.print("LCD to display"); // print first row "LCD to display"
lcd.setCursor(0,1); // move cursor to start of second row
lcd.print("time and temp"); // print second row "time and temp"
lcd.setCursor(3,2); // move cursor to insert "secs" on third row
lcd.print(" secs");
lcd.setCursor(5,3); // move cursor to insert "C" in fourth row
lcd.print(" C");
analogReference(INTERNAL); // set ADC voltage to 1.1V rather than 5V
}
void loop()
{
lcd.setCursor(0,2); // move cursor to start of third row
if(time < 100) lcd.print(" "); // spacing for 10s < time <100s
if(time < 10) lcd.print(" "); // spacing for time < 10s
lcd.print(time); // print time (s)
time++; // increment time
reading = analogRead(tempPin); // read temperature from sensor
temp = (reading * 110.0)/1023; // convert to Celsius given 1.1V range
lcd.setCursor(0,3); // move cursor to start of fourth row
lcd.print(temp); // print temperature
if(time>999) time = 0; // reset time to zero
delay (1000); // delay 1000ms
}
در مقالات بعدی میبینیم : نمایشگر کریستال مایع (LCD) دادههای سنسور را نمایش میدهد. کنتراست LCD توسط یک پتاسیومتر یا یک پالس PWM با یک خازن کنترل میشود. پیامهای متنی بهجای ثابت بودن در عرض LCD میتوانند جابجا شوند . یک باس I2C برای ارتباط بین LCD و آردوینو بکاربرده میشود. مجموعه کاراکترها و موقعیتیابی مکاننما یا cursor یک ال سی دی 4×16 پیکسلی با استفاده از نمایش کاراکترهای جدید بیان خواهند شد. برنامهنویسی برای تجزیه و تحلیل دادههای متنی واردشده از صفحه کلید از طریق بافر مانیتور سریال نیز انجام خواهد شد.
قطعات موردنیاز
- آردوینو UNO و برد بورد
- نمایشگر ال سی دی : 4×16 پیکسلی
- باس I2C برای LCD
- پتانسیومتر: 10 کیلواهم
- خازن: 10 میکروفاراد
- سنسورهای دما: LM35DZ و BMP280
- مبدل سطح منطقی
تیم ردرونیک (redronic) مجموعه ای از آموزش ها و پروژه های مرتبط با آردوینو را برای شما علاقمندان به الکترونیک و برنامه نویسی فراهم کرده است. جهت مشاهده این پروژه ها اینجا کلیک کنید.