- עבודה של צג LCD בגודל 16x2
- תרשים מעגלים לממשק LCD עם מיקרו-בקר STM8
- ספריית LCD STM8 - קובץ כותרת עבור STM8S103F3P6
- תוכנית LCD למיקרו-בקר STM8S
- STM8 עם LCD - עובד
תצוגת ה- LCD האלפאנומרית 16x2 היא התצוגה הנפוצה ביותר בקרב חובבים וחובבים. התצוגה שימושית מאוד כאשר ברצונך להציג מידע בסיסי למשתמש ויכולה גם לסייע בבדיקה או ניפוי באגים בקוד שלנו. מודול LCD 16x2 מסוים זה זמין בקלות והיה פופולרי במשך זמן רב. תוכל ללמוד עוד על היסודות של מודול ה- LCD 16x2 במאמר המקושר.
להמשך סדרת ההדרכות שלנו למיקרו-בקר STM8, במדריך זה נלמד כיצד לממשק LCD עם מיקרו-בקר STM8. בעבר ממשקנו 16x2 LCD עם מיקרו-בקרים רבים אחרים, המדריכים מפורטים להלן ותוכלו לבדוק אותם אם אתם מעוניינים בכך.
אם אתה חדש ב- STM8, בדוק את תחילת העבודה עם המאמר STM8 Microcontroller כדי להבין את היסודות של לוח הבקר וסביבת התכנות. לא נסקור את היסודות במדריך זה.
עבודה של צג LCD בגודל 16x2
כפי שהשם מרמז, LCD בגודל 16x2 יכלול 16 עמודות ו -2 שורות. כך שבסך הכל נוכל להציג 32 תווים בתצוגה זו ותווים אלה יכולים להיות אלפביתים או מספרים או אפילו סמלים. פינוי LCD פשוט 16x2 LCD בו אנו משתמשים במדריך זה מוצג להלן-
כפי שאתה יכול לראות, התצוגה כוללת 16 פינים ואנחנו יכולים לחלק אותה לחמש קטגוריות, סיכות חשמל, סיכת ניגודיות, סיכות בקרה, סיכות נתונים וסיכות תאורה אחורית כפי שמוצג בטבלה שלהלן. ניכנס לפרטים של כל סיכה כאשר נדון בתרשים המעגל של הדרכה זו.
קטגוריה | הצמד לא. | שם סיכה | פוּנקצִיָה |
סיכות חשמל | 1 | VSS | סיכת קרקע, מחוברת לקרקע |
2 | VDD או Vcc | פין מתח + 5 וולט | |
סיכת ניגודיות | 3 | V0 או VEE | הגדרת ניגודיות, מחוברת ל- Vcc באמצעות נגד משתנה. |
סיכות בקרה | 4 | RS | הרשמה בחרו הצמד, RS = 0 מצב פקודה, RS = 1 מצב נתונים |
5 | RW | סיכת קריאה / כתיבה, RW = 0 מצב כתיבה, RW = 1 מצב קריאה | |
6 | ה | אפשר, דופק גבוה עד נמוך צריך לאפשר את ה- LCD | |
סיכות נתונים | 7-14 | D0-D7 | נתונים סיכות, מאחסן את הנתונים שיוצגו על גבי LCD או את הוראות הפקודה |
סיכות תאורה אחורית | 15 | LED + או A. | להפעלת התאורה האחורית + 5 וולט |
16 | נורית LED או K | קרקע תאורה אחורית |
בצד האחורי של ה- LCD, כפי שמוצג בתמונה למטה, תוכלו למצוא שתי נקודות שחורות, שבתוכן יש לנו את מנהל ההתקן LCD HD44780 IC (מוקף באדום). המיקרו-בקר שלנו צריך לתקשר עם ה- IC הזה שבתורו ישלוט במה שמוצג על גבי ה- LCD. אם אתה סקרן לדעת איך בדיוק כל זה עובד, כדאי לבדוק את העבודה של תצוגת LCD 16x2, שם כבר דנו כיצד LCD עובד בפירוט.
במדריך זה נדון בתרשים המעגל ובקוד להצגת תווים אלפריים (אלפביתים ומספרים) בתצוגת LCD בגודל 16x2 באמצעות פקודות LCD_print _char ו- LCD_print_string פשוטות . ניתן להשתמש בפקודות אלה ישירות בתוכנית לאחר הכללת קובץ הכותרת שלנו. קובץ הכותרת עוסק בכל רוב הדברים בשבילך ולכן לא חובה לדעת כיצד פועלת התצוגה או מנהל ההתקן HD44780.
תרשים מעגלים לממשק LCD עם מיקרו-בקר STM8
את מעגל ה- STM8 LCD השלם ניתן למצוא בתמונה למטה. כפי שאתה יכול לראות החיבור לבקר STM8S103F3P6 עם LCD הוא פשוט מאוד, יש לנו את צג ה- LCD מחובר ישירות ללוח שלנו וקישור ה- ST מחובר גם לתכנת הלוח.
סיכות הכוח Vss ו- Vcc מחוברות לסיכה 5V בלוח STM8S, שים לב שמתח ההפעלה של LCD הוא 5V ומחובר להפעלה על 3.3V. אז למרות שמיקרו-בקר STM8S103F3P6 פועל על 3.3 וולט, חובה לספק אספקת 5 וולט עבור ה- LCD, אתה יכול להימנע מכך באמצעות בקר בקר טעינה, אך לא נדון בכך במדריך זה.
לאחר מכן, יש לנו את פין הניגודיות המשמש להגדרת הניגודיות של ה- LCD, חיברנו אותו לפוטנציומטר כדי שנוכל לשלוט על הניגודיות. השתמשנו בסיר 10k, אבל אתה יכול גם להשתמש בערכים סמוכים אחרים, הסיר משמש כמחלק פוטנציאלי כדי לספק 0-5 וולט לסיכת הניגודיות, בדרך כלל אתה יכול גם להשתמש ישירות נגד כדי לספק סביב 2.2V עבור ניגודיות סבירה. ערך. אז יש לנו איפוס (RS), קריאה / כתיבה (RW), והפעלת סיכות (E). סיכת הקריאה-כתיבה מקורקעת מכיוון שלא נקרא שום דבר מ- LCD נבצע רק פעולות כתיבה. שני סיכות הבקרה האחרות Rs ו- E מחוברות לסיכות PA1 ו- PA2 בהתאמה.
אז יש לנו את סיכות הנתונים DB0 ל- DB7. LCD 16x2 יכול לפעול בשני מצבים, האחד הוא מצב פעולה של 8 סיביות שבו עלינו להשתמש בכל 8 פינים הנתונים (DB0-DB7) על גבי LCD והשני הוא מצב ההפעלה של 4 סיביות בו אנו זקוקים רק ל -4 סיכות נתונים (DB4-DB7). בדרך כלל נעשה שימוש במצב 4 סיביות מכיוון שהוא דורש פחות סיכות GPIO מהבקר, לכן השתמשנו גם במצב 4 סיביות במדריך זה וחיברנו רק סיכות DB4, DB5, DB6 ו- DB7 לסיכות PD1, PD2, PD3 ו- PD4 בהתאמה.
שני הפינים האחרונים BLA ו- BLK משמשים להפעלת נורית התאורה האחורית הפנימית, השתמשנו בנגד 560 אוהם כנגד מגביל זרם. מתכנת ST-Link מחובר כמו תמיד כמו בהדרכה הקודמת שלנו. ביצעתי את החיבור המלא על לוח הלחם וההגדרה שלי נראית כך המוצגת בתמונה למטה.
ספריית LCD STM8 - קובץ כותרת עבור STM8S103F3P6
לפני שנמשיך בתרשים המעגל, בואו נקבל את קובץ הכותרת LCD STM8 מ- GitHub באמצעות הקישור הבא-
קובץ כותרת LCD STM8S 16x2
באפשרותך להוריד את החשבון המלא ולקבל את הקובץ stm8s103_LCD_16x2.h או פשוט לפשט את הקוד מהקישור לעיל. בעת הגדרת הפרויקט, הקפד לכלול את כל קבצי הכותרות הנדרשים בספריית inc יחד עם קובץ הכותרת הזה.
אם אינך בטוח כיצד להוסיף את קבצי הכותרת ולהרכיב את התוכנית, עקוב אחר הסרטון בתחתית דף זה. ואם אתה סקרן לגבי אופן הפעולה של הקוד בתוך קובץ הכותרת, אתה יכול לבדוק את ה- PIC באמצעות מדריך LCD. קובץ הכותרת המשמש בפרויקט זה דומה מאוד לזה שהוסבר שם, ולכן לא ניכנס לפרטים על כך.
תוכנית LCD למיקרו-בקר STM8S
לצורך ההדגמה, אנו נתכנת את בקר ה- STM8S שלנו כך שיציג מחרוזת פשוטה כמו "Circest Digest" ואז נעלה ערך "Test" לכל שנייה בשורה השנייה. את התוכנית המלאה תוכלו למצוא בתחתית עמוד זה. ההסבר הוא כדלקמן.
אנו מתחילים את התוכנית שלנו על ידי הגדרת הפינים והוספת קבצי הכותרת הנדרשים כמו תמיד. בתרשים המעגל שנדון לעיל, חיברנו LCD_RS ל- PA1 ולכן הגדרנו אותו כ- LCD_RS GPIOA, GPIO_PIN_1. באופן דומה, עשינו את אותו הדבר גם עבור סיכות אחרות. אם הם עוקבים אחר מעגל אחר, הקפד לשנות ערכים אלה בהתאם.
#define LCD_RS GPIOA, GPIO_PIN_1 #define LCD_EN GPIOA, GPIO_PIN_2 #define LCD_DB4 GPIOD, GPIO_PIN_1 #define LCD_DB5 GPIOD, GPIO_PIN_2 #define LCD_DB6 GPIOD, GPIO_PIN_3 #dip LC_d
הבא בתוכנה הראשית שלנו, הכרזנו על המשתנים הנדרשים עבור קוד לדוגמה זה. יש לנו משתנה בדיקה שנקרא test_var שמאותחל לאפס, נעלה את המשתנה ונציג אותו על גבי ה- LCD. התווים d1 עד d4 מייצגים את 4 הספרות של משתנה הבדיקה מכיוון שה- LCD שלנו לא יכול להציג ערך int באופן ישיר, עלינו להמיר אותם לתווים.
// הצהרות משתנות int test_var = 0; char d4, d3, d2, d1;
LCD_Begin () הפונקציה משמשת לאתחל את LCD. פונקציה זו תאתחל את כל סיכות ה- GPIO הנדרשות ותגדיר את ה- LCD במצב 16x2 LCD. ואז יש לנו את הפונקציה LCD_Clear () המשמשת לניקוי כל הערכים על גבי ה- LCD, זה ימחק הכל על LCD כך שיהיה נקי לכתוב ערכים חדשים. אז יש לנו את הפונקציה LCD_Set_Cursor (x, y) כאשר x ו- y הם המיקומים שבהם אנחנו צריכים לכתוב את הדמות החדשה שלנו. לדוגמא, (1,1) פירושו שורה ראשונה וקולום ראשון, באופן דומה (2,12) פירושו שורה 12 שנייה 12, באותה מידה. שים לב שיש לנו כאן שתי שורות ו -16 עמודות כפי שדנו קודם.
Lcd_Begin (); Lcd_Clear (); Lcd_Set_Cursor (1,1);
כעת, ה- LCD מוגדר, מנוקה, והסמן נמצא במקום. הדבר הבא הוא להדפיס משהו על המסך. אנו יכולים להשתמש ב- LCD_Print_String ("מחרוזת לדוגמא") כדי להדפיס מחרוזת ל- LCD ו- LCD_Print_Char (a) להדפסת ערך תו על ה- LCD. בתוכנית שלנו כאן הדפסנו את "STM8S103F3P3 LCD" ויצרנו עיכוב של 5 שניות באמצעות הקוד שלהלן.
Lcd_Print_String ("STM8S103F3P3 LCD"); עיכוב_מס (5000);
לאחר העיכוב של 5 שניות, אנו מנקים את ה- LCD שוב ומציגים את "Circest Digest" בשורה הראשונה ו- "Test:" אני בשורה השנייה.
Lcd_Clear (); Lcd_Set_Cursor (1,1); Lcd_Print_String ("עיכול מעגל"); Lcd_Set_Cursor (2,1); Lcd_Print_String ("מבחן:");
בתוך בעוד הלולאה, אנו נחלק את הערך על משתנה שלם test_var לתוך תווים בודדים, כך שהוא יכול להיות מוצג על LCD באמצעות מפעילי חטיבת מודולוס פשוט. הוספנו גם '0' כדי להמיר את ערך ASCII לדמות.
d4 = test_var% 10 + '0'; d3 = (test_var / 10)% 10 + '0'; d2 = (test_var / 100)% 10 + '0'; d1 = (test_var / 1000) + '0';
לאחר מכן הגדרנו את הסמן ל (2,6) מכיוון שכבר כתבנו "מבחן:" בשורה השנייה שהיא 6 תווים. אם נדרוס, הדמות הקיימת תוחלף בתו חדש ב- LCD. הוספנו גם עיכוב של שנייה אחת והגדלנו את המשתנה.
Lcd_Set_Cursor (2,6); Lcd_Print_Char (d1); Lcd_Print_Char (d2); Lcd_Print_Char (d3); Lcd_Print_Char (d4); delay_ms (1000); test_var ++;
STM8 עם LCD - עובד
כדי לבדוק את התוכנית שלנו, פשוט העלה את הקוד לבקר שלנו והפעל אותו באמצעות יציאת המיקרו USB. שים לב כי ה- LCD דורש 5 וולט לעבודה ולכן חובה להפעיל את הלוח מיציאת ה- USB. בעבר הדלקנו אותו ישירות מ- ST-link מכיוון שלא היינו זקוקים לאספקת 5V.
כפי שאתה יכול לראות, ה- LCD פועל כצפוי, כאשר ערך משתנה הבדיקה גדל לכל שנייה בערך. כמו כן, שים לב שלא השתמשנו בטיימרים והשתמשנו רק בפונקציית עיכוב כדי ליצור עיכוב זה ולכן אל תצפה שמשך העיכוב יהיה מדויק, נשתמש בטיימרים בהמשך במדריך אחר לשם כך.
את העבודה המלאה של הפרויקט ניתן למצוא בסרטון המקושר למטה. מקווה שנהנית מההדרכה ולמדת משהו שימושי. אם יש לך שאלות, השאיר אותן בסעיף ההערות או השתמש בפורומים שלנו לשאילתות טכניות אחרות.