עבור כל פרוייקט מיקרו-בקר, ממשק יחידת תצוגה עמה יקל על המשתמש והאינטראקציה של המשתמש. יחידת התצוגה הנפוצה ביותר עבור מיקרו-בקרים היא תצוגות אלפא מספרי 16 × 2. סוגים אלה של תצוגות לא רק שימושיים להצגת מידע חיוני למשתמש אלא גם יכולים לשמש ככלי ניפוי באגים בשלב ההתפתחות הראשוני של הפרויקט. לכן, במדריך זה נלמד כיצד נוכל לממשק צג LCD בגודל 16 × 2 עם לוח הפיתוח STM32F103C8T6 STM32 ולתכנת אותו באמצעות ה- Arduino IDE. עבור אנשים שמכירים את Arduino הדרכה זו תהיה רק טיול בעוגה מכיוון ששניהם דומים מאוד. כמו כן, כדי ללמוד עוד על לוח הגלולות הכחול STM32, עקוב אחר ההדרכה שלנו.
חומרים נדרשים
- המועצה לפיתוח גלולות כחולות STM32
- תצוגת LCD 16 × 2
- מתכנת FTDI
- חוטי חיבור
- LCD
מבוא קצר לתצוגת LCD 16 מטר 2 מטריקס
כפי שנאמר קודם לכן, Energia IDE מספקת ספרייה יפהפייה שהופכת את הממשק לחתיכת עוגה, ולכן אין חובה לדעת דבר על מודול התצוגה. אבל, האם לא יהיה מעניין להראות במה אנו משתמשים !!
השם 16 × 2 מרמז שהתצוגה כוללת 16 עמודות ו -2 שורות, שיחד (16 * 2) יוצרים 32 תיבות. תיבה אחת בודדת תיראה ככה בתמונה למטה
תיבה אחת כוללת 40 פיקסלים (נקודות) בסדר מטריצה של 5 שורות ו -8 עמודות, 40 הפיקסלים הללו יחד יוצרים תו אחד. באופן דומה, ניתן להציג 32 תווים באמצעות כל התיבות. עכשיו בואו נסתכל על הפינוסים.
LCD כולל סך של 16 סיכות, כפי שמוצג לעיל, ניתן לסווג אותם לארבע קבוצות כדלקמן
סיכות מקור (1, 2 ו -3): סיכות אלה מקורות את עוצמת העוצמה והניגודיות לתצוגה
סיכות בקרה (4, 5 ו -6): סיכות אלה מגדירות / שולטות ברשומות בממשק ה- LCD (ניתן למצוא קישור נוסף בהמשך)
סיכות נתונים / פקודה (7 עד 14): פינים אלה מספקים את הנתונים איזה מידע צריך להיות מוצג על גבי LCD.
פינים לד (15 ו -16): פינים אלה משמשים להאיר את התאורה האחורית של LCD במידת הצורך (אופציונלי).
מתוך כל 16 הסיכות הללו, רק 10 סיכות יש להשתמש חובה לעבודה תקינה של ה- LCD אם אתה רוצה לדעת יותר על תצוגת LCD אלה קפיצה למאמר זה 16x2 LCD.
תרשים מעגל וחיבור
תרשים המעגל לממשק 16 * 2 מטריקס LCD עם STM32F103C8T6 STM32 לוח גלולות כחול מוצג להלן. הוא מיוצר באמצעות תוכנת Fritzing.
כפי שניתן לראות החיבור המלא מתבצע מעל קרש לחם. אנו זקוקים ללוח FTDI כדי לתכנת את המיקרו בקר STM32. כך שבדומה להדרכה הקודמת שלנו, חיברנו את לוח FTDI ל STM32, ה- Vcc וסיכת הקרקע של מתכנת FDTI מחוברים לסיכה 5V ולסיכה הקרקעית של STM32 בהתאמה. זה משמש להפעלת לוח STM32 ו- LCD מכיוון ששניהם יכולים לקבל יכול +5V. סיכת Rx ו- Tx של לוח FTDI מחוברת לסיכה A9 ו- A10 של STM32 כדי שנוכל לתכנת את הלוח ישירות ללא מטעין האתחול.
בשלב הבא יש לחבר את ה- LCD ללוח STM32. אנו הולכים להשתמש ב- LCD במצב 4 סיביות, לכן עלינו לחבר את 4 פינים של סיביות נתונים (DB4 ל- DB7) ושני סיכות הבקרה (RS ו- EN) ללוח STM32 כפי שמוצג במעגל הממשק LCD STM32F103C8T6. תרשים לעיל. בהמשך הטבלה למטה תעזור לך ליצור את החיבור.
פין LCD מס ' |
שם פין LCD |
שם פין STM32 |
1 |
קרקע (GND) |
קרקע (G) |
2 |
VCC |
5V |
3 |
VEE |
קרקע (G) |
4 |
בחר הרשמה (RS) |
PB11 |
5 |
קריאה / כתיבה (RW) |
קרקע (G) |
6 |
הפעל (EN) |
PB10 |
7 |
נתונים נתונים 0 (DB0) |
אין חיבור (NC) |
8 |
נתונים ביט 1 (DB1) |
אין חיבור (NC) |
9 |
נתונים ביט 2 (DB2) |
אין חיבור (NC) |
10 |
נתונים ביט 3 (DB3) |
אין חיבור (NC) |
11 |
נתונים ביט 4 (DB4) |
PB0 |
12 |
נתונים ביט 5 (DB5) |
PB1 |
13 |
נתונים ביט 6 (DB6) |
PC13 |
14 |
נתונים ביט 7 (DB7) |
PC14 |
15 |
LED חיובי |
5V |
16 |
LED שלילי |
קרקע (G) |
לאחר סיום החיבורים נוכל לפתוח את ה- Arduino IDE ולהתחיל לתכנת אותו.
תכנות STM32 עבור LCD באמצעות Arduino
כפי שנאמר במדריך זה אנו נשתמש ב- Arduino IDE לתכנת המיקרו בקר STM32 שלנו. עם זאת, ל- Arduino IDE כברירת מחדל לא יותקן לוח STM32, ולכן עלינו להוריד חבילה ולהכין את ה- Arduino IDE לאותה. זה בדיוק מה שעשינו במדריך הקודם שלנו עם תחילת העבודה עם STM32F103C8T6 באמצעות Arduino IDE. אז אם לא התקנתם את החבילות הנדרשות חזרו למדריך זה ובצעו אותו לפני שתמשיכו כאן.
לאחר התקנת לוח STM32 ב- Arduino IDE, אנו יכולים להתחיל בתכנות. התוכנית דומה מאוד לזו של לוח ארדואינו, הדבר היחיד שישתנה הם שמות הסיכות שכן הסימנים שונים עבור STM32 וארדואינו. התוכנית המלאה מוצגת בסוף עמוד זה, אך כדי להסביר את התוכנית, פיצלתי אותה לקטעי מידע משמעותיים כמוצג להלן.
יתרון בולט אחד בשימוש בארדואינו לצורך תכנות המיקרו-בקרים שלנו הוא שארדואינו מכילה ספריות מוכנות כמעט לכל חיישנים ומפעילים מפורסמים. אז הנה אנו מתחילים את התוכנית שלנו על ידי הכללת ספריית LCD מה שמקל מאוד על התכנות.
#לִכלוֹל
בשורה הבאה עלינו לציין לאילו סיכות GPIO של STM32 חיברנו את בקרת תצוגת LCD וקווי הנתונים. לשם כך עלינו לבדוק את החומרה שלנו, לשם הקלות תוכלו גם להתייחס לטבלה המובאת בחלקה העליון המפרטת את שמות הסיכות של ה- LCD מול סיכת ה- GPIO של STM32. לאחר שהזכרנו את הפינים אנו יכולים לאתחל את ה- LCD באמצעות הפונקציה LiquidCrystal . אנו מכנים גם את ה- LCD שלנו כ- " lcd " כמוצג להלן.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // להזכיר את שמות הסיכות עם LCD מחובר ל- LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // אתחל את ה- LCD
בשלב הבא אנו נכנסים לפונקציית ההתקנה . כאן ראשית נזכיר איזה סוג LCD אנו משתמשים. מכיוון שמדובר על 16 * 2 LCD אנו משתמשים בקו lcd.begin (16,2). הקוד בתוך פונקציית הגדרת הריק מתבצע פעם אחת בלבד. אז אנו משתמשים בו כדי להציג טקסט מבוא שמגיע על המסך למשך 2 שניות ואז מנקה אותו. כדי להזכיר את המיקום שבו הטקסט צריך להופיע אנו משתמשים בפונקציה lcd.setcursor וכדי להדפיס את הטקסט אנו משתמשים בפונקציה lcd.print . למשל lcd.setCursor (0,0) יקבע את הסמן בשורה הראשונה ובעמודה הראשונה בה אנו מדפיסים את " ממשק LCD " ואת הפונקציה lcd.setCursor (0,1) מעביר את הסמן לעמודה הראשונה בשורה השנייה, שם אנו מדפיסים את השורה " CircuitDigest ".
התקנת חלל () {lcd.begin (16, 2); // אנו משתמשים ב- lcd.setCursor 16 * 2 LCD (0, 0); // בשורה הראשונה העמודה הראשונה lcd.print ("ממשק LCD"); // הדפס את lcd.setCursor זה (0, 1); // בשורה שנייה עמודה ראשונה lcd.print ("- CircuitDigest"); // הדפס עיכוב זה (2000); // המתן לשתי שניות lcd.clear (); // נקה את המסך}
לאחר הצגת טקסט המבוא אנו מחזיקים את התוכנית למשך 2 שניות על ידי יצירת עיכוב כך שהמשתמש יוכל לקרוא את הודעת המבוא. עיכוב זה נוצר על ידי עיכוב הקו (2000) כאשר 2000 הוא ערך העיכוב במיל שניות. לאחר העיכוב אנו מנקים את ה- LCD באמצעות הפונקציה lcd.clear () שמנקה את ה- LCD על ידי הסרת כל הטקסט ב- LCD.
לבסוף בתוך לולאת הריק, אנו מציגים "STM32 - גלולה כחולה" בשורה הראשונה וערך שניות בשורה השנייה. ניתן להשיג את הערך של השנייה מהפונקציה millis () . באלפיות השנייה () הוא טיימר אשר מקבל תקין הגדלת מרגע MCU מופעל. הערך הוא בצורה של מילי שניות ולכן אנו מחלקים אותו ל- 1000 לפני הצגתו על גבי LCD שלנו.
לולאה בטלה () { lcd.setCursor (0, 0); // בשורה הראשונה העמודה הראשונה lcd.print ("גלולה כחולה STM32"); // הדפס את lcd.setCursor זה (0, 1); // בשורה שנייה עמודה ראשונה lcd.print (מיליס () / 1000); // הדפס את ערך השניות }
העלאת התוכנית ל- STM32F103C8T6
כפי שנדון בפסקה לעיל אתה אמור להיות מסוגל להבחין בפלט ברגע שהקוד נטען. אך תוכנית זו לא תפעל בפעם הבאה שתפעיל את הלוח, מכיוון שהלוח עדיין במצב תכנות. אז לאחר העלאת התוכנית יש לשנות את המגשר באתחול 0 בחזרה ל -0 עמדות כפי שמוצג להלן. כמו כן, מכיוון שהתוכנית כבר הועלה ללוח STM32 כבר איננו זקוקים ללוח FTDI וההתקנה כולה יכולה להיות מופעלת על ידי יציאת מיקרו-USB של לוח STM32, כמו גם כמוצג להלן.
זהו רק פרויקט ממשק פשוט שיעזור להשתמש בתצוגת LCD עם לוח STM32, אך בהמשך תוכלו להשתמש בזה לבניית פרויקטים מגניבים. מקווה שהבנתם את המדריך ולמדתם ממנו משהו שימושי. אם נתקלת בבעיה כלשהי בהפעלתו, אנא השתמש בסעיף ההערות כדי לפרסם את הבעיה או השתמש בפורומים לשאלות טכניות אחרות. ניתן למצוא את העבודה המלאה של תצוגת LCD עם STM32 כסרטון המופיע להלן.