ישנם סוגים רבים של מסכי LCD המשמשים בפרויקטים אלקטרוניים. השתמשנו כבר ב- 16X2 LCD ברבים מהפרויקטים שלנו והשתמשנו גם ב- TFT LCD עם Arduino. תוכל למצוא את כל הפרויקטים הקשורים ל- LCD 16X2 LCD על ידי קישור זה, כולל ממשק עם 8051, AVR, Arduino ורבים אחרים.
ה- LCD הגרפי ST9720 שונה לחלוטין מה- LCD הרגיל. LCD רגיל יכול להדפיס רק טקסט פשוט או מספרים בגודל קבוע. אבל במסכי LCD גרפיים יש לנו 128 * 64 ששווה ל 8192 נקודות או 8192/8 = 1024 פיקסלים, כך שמלבד התו, אנו יכולים להציג כל תמונה גרפית ב- GLCD זה.
ממשקנו כבר GLCD עם 8051, היום נתממש LCD גרפי עם ארדואינו כדי להציג עליו טקסט ותמונות.
חומר נדרש
- ארדואינו UNO
- 128 * 64 גרפי LCD ST9720
- פוטנציומטר -10k
- חוטי חיבור
- קרש לחם
תרשים מעגל
128 * 64 LCD גרפי
LCD גרפי זה הוא בעל צריכת חשמל נמוכה ומתאים גם למכשיר נייד עם הסוללה. יש לו טווח מתח הפעלה רחב 2.2V עד 5.5V ותומך בתקשורת מקבילה סדרתית וגם 8/4 סיביות ומגיע עם בקר LCD ST7290 / IC IC של הנהג. ניתן לעבור בין מצב תקשורת ממשק בין מקביל וטורי באמצעות PSB PIN 15. LCD גרפי זה כולל הפעלה אוטומטית של הפעלת איפוס וניתן לשלוט בו בקלות על ידי MCU כגון 8051, AVR, ARM, Arduino ו- Raspberry Pi.
תוכל לעבור עם גליון הנתונים למידע מפורט על ST7290 128 * 64 גרפי LCD
תצורת סיכה
מספר סיכה |
שם סיכה |
תיאור |
1 |
Gnd |
מסוף קרקע |
2 |
Vcc |
מתח אספקת כניסה (2.7 וולט עד 5.5 וולט) |
3 |
וו |
ניגודיות LCD |
4 |
RS |
בחר הרשמה RS = 0: רישום הוראות RS = 1: רישום נתונים |
5 |
R / W |
בקרת קריאה / כתיבה |
6 |
ה |
לְאַפשֵׁר |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
סיכות נתונים (משמשות במצב תקשורת מקביל 8 / 4bit) |
15 |
PSB |
בחירת ממשק: נמוך (0) למצב תקשורת טורית גבוה (1) למצב אוטובוס מקביל של 8/4 סיביות. |
16 |
NC |
לא מחובר |
17 |
RST |
אפס את הסיכה |
18 |
Vout |
פלט מתח כפול LCD. VOUT ≦ 7V. |
19 |
BLA |
אספקה חיובית בתאורה אחורית |
20 |
BLK |
תאורה אחורית אספקה שלילית |
יישומים
- מכשיר תעשייתי
- מערכות מוטמעות
- בִּטָחוֹן
- רְפוּאִי
- ציוד כף יד
המרת תמונה לקוד Hex:
כדי להציג תמונה כלשהי ב- LCD גרפי, אנו זקוקים לקוד HEX של תמונה זו, לכן הנה כמה צעדים להמרת תמונה לקוד HEX. לפני כן עליך לוודא שגודל התמונה לא יעלה על 128 * 64.
שלב 1: הקטן את גודל התמונה הרגילה ל 128 * 64 ומטה, שתוכל לעשות באמצעות כל תוכנת עריכת תמונות כמו צבע MS.
כפי שמוצג בתמונה לעיל, אנו מגדירים את רוחב התמונה וגובהה 128 * 64.
שלב 2: אז עליך לשמור את התמונה בתבנית "image_name .bmp ".
בחר את הפורמט שמוצג בתמונה לעיל ושמור את הקובץ להמשך התהליך.
שלב 3: לאחר שמירתו בתבנית ".bmp" עליכם להמיר את התמונה לקוד hex להדפסה. לשם כך אני משתמש בתוכנה בשם GIMP 2, אשר ממירה קובץ Bmp לקוד hex.
כפי שמוצג בתמונה לעיל, פתחנו את קובץ הפורמט ".bmp" בתוכנת GIMP 2.
שלב 4: לאחר הורדת התוכנה, פתח את קובץ התמונה בפורמט BMP שברצונך להדפיס ואז שמור בתבנית " .xbm " (X BitMap). לאחר שמירתו פתח את הקובץ באמצעות פנקס רשימות ותקבל את קוד ה- Hex של התמונה.
כפי שמוצג בתמונה למטה, בחר באפשרות ייצוא לשמירת הקובץ בפורמט xbm :
בחר את הפורמט שמוצג בתמונה למטה וייצא את קובץ התמונה.
לאחר ייצוא הקובץ, תקבל את הקובץ בתבנית ".xbm". פתח את קובץ xbm באמצעות פנקס רשימות ותקבל את קוד HEX כפי שמוצג בתמונה למטה.
קוד ארדואינו והסבר עבודה
כדי לממשק LCD גרפי עם Arduino, ראשית עלינו להגדיר את הספרייה המשמשת את ה- LCD הגרפי. ל- Arduino אין את הספרייה הזו, אתה צריך להוריד ולהתקין את הספרייה הזו מקישור זה. אז אתה יכול לכלול את הספרייה כמו להלן:
# כלול "U8glib.h"
כאן, ' u8g (10) ' מגדיר את החיבור של סיכת RS (Register Select) של LCD גרפי עם הסיכה העשירית של UNO Arduino. סיכת RS משמשת כ'בחירת שבב 'ו'הרשמת בחירה' כאשר משתמשים במצב סידורי ומקביל בהתאמה. לכן, אנו משתמשים במצב הסידורי ובסיכה RS מוגדרת כ- High (1) עבור שבב מופעל ו- Low (0) עבור שבבים מושבתים.
U8GLIB_ST7920_128X64_4X u8g (10);
כעת, לצורך הדפסת התמונה עלינו למקם את קוד ה- Hex של התמונה בקוד שלמטה. אתה יכול להדפיס כל תמונה אחרת כל מה שאתה רק צריך לעשות זה להדביק את קוד ה- hex של התמונה.
const uint8_t rook_bitmap U8G_PROGMEM = { הדבק כאן את קוד ה- Hex של התמונה };
בדוק את קוד הארדואינו המלא בסוף מאמר זה.
הפונקציה שלהלן משמשת להדפסת תמונה, הפקודה המשמשת להדפסה היא "u8g.drawXBMP (x, y, רוחב התמונה, גובה התמונה)" . איפה, X ו- Y הוא המיקום ההתחלתי של התמונה על גבי LCD ואנחנו צריכים לכתוב גם את גודל התמונה שלא יעלה על 128 * 64 ובטיעון הסופי קראנו לפונקציה בה מיקמנו את קוד HEX של התמונה.
תמונה ריק (בטל) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
עשינו שתי פונקציות שנקרא "לצייר" ו "הבא", שבו קוד להדפסת תוכן כתוב באמצעות הפקודה "u8g.drawStr (x, y," אבגד")". כאן, x ו- y הם המיקום ב- LCD שבו התוכן יודפס ו ' abcd ' הוא התוכן שיש להדפיס.
ציור בטל (בטל) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "CIRCUIT DIGEST"); } בטל הבא (בטל) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "ממשק"); u8g.drawStr (0, 35, "LCD גרפי"); u8g.drawStr (0, 55, "עם Arduino"); }
פונקצית clearLCD () מיועדת לניקוי LCD על ידי מתן ערך null בלבד לפונקציה.
בטל clearLCD () {u8g.firstPage (); לעשות {} תוך (u8g.nextPage ()); }
הגדרת פיקסל, צבע ועוצמה באמצעות הקוד שלמטה
הגדרת חלל (בטל) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // לבן} אחר אם (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // עוצמה מקסימלית} אחרת אם (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // פיקסל ב-} אחר אם (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
הלולאה הריקה ממשיכה להדפיס את הטקסט ותמונה לאחר עיכוב המסוים. ראשית, הדפסנו את "מעגל העיכול " באמצעות פונקציית ציור ולאחר 2 שניות. של עיכוב פינינו את המסך באמצעות פונקציית clearLCD ואז הדפסנו " ממשק LCD גרפי באמצעות Arduino " באמצעות הפונקציה הבאה . לאחר מכן הדפסנו את התמונה באמצעות פונקציית תמונה () שתישאר על המסך למשך 3 שניות. פעולה זו תמשיך עד להפעלת אספקת החשמל.
לולאה בטלה (בטלה) {u8g.firstPage (); לעשות {לצייר (); } בעוד (u8g.nextPage ()); עיכוב (2000); clearLCD (); u8g.firstPage (); תעשה את הבא(); } בעוד (u8g.nextPage ()); עיכוב (2000); clearLCD (); u8g.firstPage (); לעשות {תמונה (); } בעוד (u8g.nextPage ()); עיכוב (3000); clearLCD (); עיכוב (50); }
לאחר תכנות הארדואינו באמצעות הקוד הנתון, חבר את ה- LCD הגרפי לפי דיאגרמת המעגל עם הארדואינו וספק את הארדואינו באמצעות מתאם או USB. אתה, תקבל תוכן ותמונה מודפסים על גבי LCD הגרפי, כפי שמוצג בסרטון המופיע להלן.
בדוק גם את הממשק של Nokia 5110 גרפי LCD עם Arduino,