- בקר LCD LCD 16x2 נקודה IC HD44780:
- הצגת דמות מותאמת אישית על צג 16x2 LCD:
- הסבר על תכנות ועבודה:
- חיבורי מעגל ובדיקה:
במדריך הקודם למדנו כיצד לממשק 16 * 2 LCD עם מיקרו-בקר PIC. אנו ממליצים לך לעבור על כך לפני שתמשיך הלאה, אם אתה מתחיל במיקרו-בקר PIC. בעבר למדנו גם את היסודות של PIC באמצעות תכנית מהבהבת LED וטיימרים במיקרו-בקר PIC. תוכלו לבדוק כאן את כל המדריכים בנושא למידת PIC מיקרו-בקרים באמצעות מהדר MPLABX ו- XC8.
במדריך זה, בואו נעשה את זה יותר מעניין על ידי יצירת תווים מותאמים אישית משלנו והצגתם על גבי מסך ה- LCD שלנו באמצעות PIC16F877A PIC מיקרו-בקר. כמו כן ישנם כמה תווים מותאמים אישית שהוגדרו מראש בשימוש, הניתנים על ידי IC IC44447A עצמו, אנו נראה גם כיצד אנו יכולים להשתמש בהם. כפי שהוסבר בהדרכה הקודמת שלנו LCD כולל בקר Hitachi HD44780 המוטבע שעוזר לנו להציג תווים. כל תו שאנחנו מציגים כבר מוגדר מראש בתוך ה- ROM של ה- HD44780 IC. נלמד על בקר LCD IC HD44780, לפני שנציג אופי על גבי LCD.
בקר LCD LCD 16x2 נקודה IC HD44780:
על מנת להציג דמות מותאמת אישית, עלינו לומר איכשהו ל- IC כי כיצד תראה הדמות המותאמת אישית. לשם כך עלינו לדעת על שלושת סוגי הזיכרונות הקיימים בתוך בקר HD44780 LCD LCD:
ROM Generator Character (CGROM): זהו הזיכרון לקריאה בלבד אשר, כאמור קודם, מכיל את כל הדפוסים של התווים שהוגדרו מראש בתוכו. ROM זה ישתנה מכל סוג של ממשק IC, ולחלקם עשוי להיות אופי מותאם אישית מוגדר מראש.
זיכרון RAM לתצוגה (DDRAM): זהו זיכרון גישה אקראית. בכל פעם שאנחנו מציגים דמות התבנית שלה תובא מה- CGROM ותועבר ל- DDRAM ואז תוצב על המסך. במילים פשוטות, ל- DDRAM יהיו הדפוסים של כל התווים המוצגים כעת על גבי מסך ה- LCD. בדרך זו עבור כל מחזור ה- IC לא צריך להביא נתונים מ- CGROM ומסייע בקבלת תדירות עדכון קצרה
מחולל תווים RAM (CGRAM): זהו גם זיכרון גישה אקראי, כך שנוכל לכתוב ולקרוא נתונים ממנו. כפי שהשם מרמז זיכרון זה יהיה זה שיכול לשמש ליצירת הדמות המותאמת אישית. עלינו ליצור תבנית לדמות ולכתוב אותה ב- CGRAM, ניתן לקרוא ולהציג אותה על המסך בעת הצורך.
כעת, מאחר שקיבלנו הבנה בסיסית לגבי סוגי הזיכרון הקיימים בממשק IC HD44780. בואו נסתכל בגליון הנתונים שלו כדי להבין קצת יותר.
כפי שמשתמע מגליון הנתונים, ה- IC IC444480 סיפק כ- 8 מיקומים לאחסון הדפוסים המותאמים אישית שלנו ב- CGRAM, וגם בצד ימין אנו יכולים לראות כי ישנם כמה תווים שהוגדרו מראש אשר יכולים להיות מוצגים גם על מסך ה- LCD שלנו. בואו נראה איך אנחנו יכולים לעשות את זה.
הצגת דמות מותאמת אישית על צג 16x2 LCD:
כדי להציג דמות מותאמת אישית עלינו ליצור תחילה תבנית עבורה ואז לשמור אותה ב- CGRAM. מכיוון שיש לנו כבר את פונקציות הספרייה, יהיה קל לעשות זאת בכמה פקודות פשוטות. הנה הספרייה לפונקציות LCD, אך כאן הדבקנו את כל פונקציות הספרייה בתוכנית עצמה, כך שאין צורך לכלול את קובץ הכותרת הזה בתוכנית שלנו. בדוק גם במאמר זה לגבי עבודות LCD בסיסיות ופינאוטים שלו.
הצעד הראשון הוא ליצור דפוס או תו מותאם אישית. כידוע כל תו הוא שילוב של 5 * 8 נקודות. עלינו לבחור איזו נקודה (פיקסל) צריכה להיות גבוהה ואיזה צריכה להישאר נמוכה. כל שעליך לעשות הוא לצייר תיבה כמו למטה ולהצל על האזורים על פי האופי שלך. הדמות שלי כאן היא איש מקל (מקווה שזה נראה כמו אחד). לאחר הצללה, פשוט כתוב את הערך הבינארי המקביל של כל בייט כמוצג להלן.
כל שעליך לעשות הוא לשים '1' על האזור המוצלל ו- '0' על האזור הלא מוצלל עבור כל בייט, וזהו התבנית המותאמת אישית שלנו מוכנה. באופן דומה הכנתי 8 קודי תבניות מותאמים אישית עבור 8 חללי הזיכרון שלנו מציגים את זה CGROM. הם מפורטים בטבלה שלהלן.
S.NO: |
אופי מותאם אישית |
קוד תבנית |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
הערה: אין חובה לטעון את כל 8 הרווחים המסופקים ב- CGRAM.
הסבר על תכנות ועבודה:
עכשיו קודי התבנית שלנו מוכנים, אנחנו רק צריכים להעמיס אותם ל- CGRAM של LCD ולהציג אותם באמצעות מיקרו-בקר PIC. כדי לטעון אותם ל- CGRAM נוכל ליצור מערך 5 * 8 של אלמנטים ולהעמיס כל בייט באמצעות ' for loop '. מערך קוד התבנית מוצג להלן:
const לא חתום קצר Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // קוד למרחב זיכרון CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00, שטח זיכרון CGRAM 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // קוד עבור שטח זיכרון CGRAM 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00AM, // קוד עבור זיכרון CG רווח 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // קוד למרחב זיכרון CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // קוד לזיכרון CGRAM 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // קוד למרחב זיכרון CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // קוד למרחב זיכרון CGRAM 8};
כל חלל זיכרון טעון בתבנית האופי המכובדת שלו. כדי לטעון דפוס זה ל- HD44780 IC, יש להפנות את גליון הנתונים של HD44780, אך רק שורות פקודה יכולות לשמש להגדרת כתובת CGRAM.
// *** טען תו מותאם אישית ל- CGROM *** ////// Lcd_Cmd (0x04); // הגדר כתובת CGRAM Lcd_Cmd (0x00); //.. הגדר כתובת CGRAM עבור (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // חזור לבית Lcd_Cmd (2); //.. חזור לבית // *** טעינת Char char custom הושלמה *** //////
כאן, בתוך ' עבור לולאה' כל ערך בינארי נטען ב- CGROM. לאחר טעינת התבנית, ניתן להציג את התווים המותאמים אישית על ידי התקשרות פשוט למיקום התבנית באמצעות הפונקציה Lcd_Print_Char (נתוני char) הריק כמוצג להלן.
Lcd_Print_Char (0); // הצג תו מותאם אישית 0 Lcd_Print_Char (1); // הצג תו מותאם אישית 1 Lcd_Print_Char (2); // הצג תו מותאם אישית 2 Lcd_Print_Char (3); // הצג תו מותאם אישית 3 Lcd_Print_Char (4); // הצג תו מותאם אישית 4 Lcd_Print_Char (5); // הצג תו מותאם אישית 5 Lcd_Print_Char (6); // הצג תו מותאם אישית 6 Lcd_Print_Char (7); // הצג תו מותאם אישית 7
הדפסת תו מיוחד מוגדר מראש:
ל- HD44780 IC יש כמה תווים מיוחדים שהוגדרו מראש המאוחסנים ב- DDROM. ניתן להדפיס תווים אלה ישירות על גבי המסך על ידי התייחסות לערכם הבינארי בגליון הנתונים.
לדוגמא: הערך הבינארי של התו "ALPHA" הוא 0b11100000. כיצד ניתן להשיג זאת ניתן להבין מהאיור להלן, כמו כן ניתן לקבל ערך לכל תו מיוחד המוגדר מראש ב- IC.
לאחר שהערך הבינארי ידוע, ניתן להדפיס את התו המתאים למסך על ידי שימוש בפונקציה Lcd_Print_Char (char data) הריקנית כמוצג להלן, Lcd_Print_Char (0b11100000); // ערך בינארי של אלפא מגליון הנתונים
הקוד המלא של הפרויקט הזה הוא כדלקמן בסעיף קוד, גם לבדוק את פירוט וידאו ההסבר בסוף המדריך זה.
חיבורי מעגל ובדיקה:
לפרויקט זה אין דרישות חומרה נוספות, פשוט השתמשנו באותם חיבורים מההדרכה הקודמת לממשקי LCD והשתמשנו באותו הלוח שיצרנו בהדרכה מהבהבת LED. כמו תמיד בואו לדמות את התוכנית באמצעות Proteus כדי לאמת את התפוקה שלנו.
לאחר שהסימולציה פועלת כצפוי, מאפשרת לצרוב את הקוד ישירות במערך החומרה שלנו. הפלט של התוכנית אמור להיות משהו כזה:
אז ככה תוכלו להציג כל תו מותאם אישית על גבי 16x2 LCD באמצעות מיקרו-בקר PIC עם מהדר MPLABX ו- XC8. בדוק גם כאן את סדרת הלמידה המלאה של PIC Microcontroller.