- תצוגת LCD אלפאנומרית 16x2
- ספריית CCS LCD 16x2 ל- MSP430
- פונקציות LCD לתצוגת LCD בגודל 16x2 ב- MSP430
- תרשים מעגל לממשק LCD עם MSP430
- תכנות MSP430 באמצעות Code Composer Studio לתצוגת LCD
מאמר זה הוא המשך של סדרת ההדרכות שלנו בנושא תכנות MSP430 באמצעות Code Composer Studio. ההדרכה האחרונה התבססה על הפרעות חיצוניות ב- MSP430 באמצעות סיכות GPIO. הדרכה זו עוסקת בממשק תצוגה עם MSP430, בכל הנוגע להצגת תצוגת LCD 16 * 2, זו הבחירה הראשונה לכל חובב אלקטרוני. בעבר גם ממשקנו LCD עם MSP430 באמצעות Arduino IDE, במדריך זה נשתמש בפלטפורמת הסטודיו המקורית של Code Composer במקום להשתמש ב- Arduino IDE, בדרך זו כמעצב, אנו מקבלים יותר גמישות.
למידע נוסף על תצוגת LCD 16x2 ושימוש בה עם מיקרו-בקרים אחרים, עיין בהדרכות להלן.
- ממשק LCD עם ATmega16
- ממשק LCD עם פטל פטל
- ממשק LCD עם מיקרו-בקר PIC
- ממשק LCD עם ARM7-LPC2148
- ממשק LCD עם NodeMCU
- ממשק LCD עם STM32
- ממשק LCD עם MSP430G2
- ממשק LCD עם STM8
יש לו IC hd44780 מובנה שיכול לאחסן את הפקודה והנתונים המועברים אליו. למודול ה- LCD כ -16 פינים. 8 מהם סיכות נתונים, 4 מהן סיכות אספקה לתאורת LED האחורית ולכל מודול ה- LCD, 3 לבקרת הפעולה, וסיכה אחת להתאמת ניגודיות. ההדרכה מבוססת על הספרייה שיצר דניס אייכמן. קל מאוד להשתמש בספריה עם פונקציות נפרדות להדפסת סוגי נתונים שונים. כמו כן, יש הוראות להצגת הנתונים בצורות שונות עם אפסים מובילים, מחוסקים ונמחקים. זוהי ספרייה רחבה ומקיפה וניתנת להגדרה לחיבורים השונים. כאן, קובץ הכותרת שונה כך שיתאים לתצורה מקבילה של 8 פינים לתקשורת נתונים.
תצוגת LCD אלפאנומרית 16x2
לתצוגה כללית 16x2 יש hd44780 IC מובנה (שמוקף באדום למטה), שיכול לאחסן את הפקודה והנתונים המועברים אליו. למודול ה- LCD כ -16 פינים. 8 מהם סיכות נתונים, 4 מהן סיכות אספקה לתאורת LED האחורית ולכל מודול ה- LCD, 3 לבקרת הפעולה, וסיכה אחת להתאמת ניגודיות.
מודול LCD זה מוצג מעל תכליתי ומשתמש בסיכות מינימליות בהשוואה למסכי LCD מפולחים אחרים. אם אתה סקרן לדעת כיצד בדיוק כל זה עובד, עליך לבדוק את עבודתה של תצוגת LCD 16x2, שם כבר דנו כיצד פועל ה- LCD בפירוט.
פין RS: RS = 1 יאפשר את רישום הנתונים ב- LCD, המשמש לכתיבת הערכים לרישום הנתונים ב- LCD. RS = 0 יאפשר את רישום ההוראות של ה- LCD.
אפשר סיכה: קצה שלילי מופעל; כאשר הסיכה מתחלפת ממצב HIGH למצב LOW, LCD מתבקש לכתוב לסיכות הנתונים. קצה חיובי מופעל; כאשר הסיכה מתחלפת ממצב LOW למצב HIGH, LCD מתבקש לקרוא מסיכות הנתונים.
סיכה R / W: R / W = 0 יכתוב לרשם ההוראות או לרשום הנתונים לפי בחירת סיכת ה- RS. R / W = 1 יקרא מה- IR או DR בהתאם לבחירת סיכת ה- RS.
מבצע RS R / W
0 0 כתיבת IR כפעולה פנימית (תצוגה ברורה וכו ')
0 1 דגל קריאה תפוס (DB7) ומונה כתובות (DB0 ל- DB6)
1 0 כתיבת DR כפעולה פנימית (DR ל- DDRAM או CGRAM)
1 1 DR נקרא כפעולה פנימית (DDRAM או CGRAM ל- DR)
סיכות D0-D7: הנתונים מועברים אל הפיקוד ומרשמי הנתונים דרך הפינים האלה.
סיכות אספקה: V SS, V dd סיכות משמשות כוח מודול LCD. סיכות A, K יניעו את התאורה האחורית לד. סיכות V 0 משמשות לשליטה על הניגוד.
ספריית CCS LCD 16x2 ל- MSP430
ההדרכה מבוססת על הספרייה שיצר דניס אייכמן. קל מאוד להשתמש בספריה עם פונקציות נפרדות להדפסת סוגי נתונים שונים. כמו כן, יש הוראות להצגת הנתונים בצורות שונות עם אפסים מובילים, מחוסקים ונמחקים. זוהי ספרייה רחבה ומקיפה וניתנת להגדרה לחיבורים השונים. כאן, קובץ הכותרת שונה כך שיתאים לתצורה מקבילה של 8 פינים לתקשורת נתונים. ניתן להוריד את הספרייה מהקישור שלמטה, לאחר ההורדה יש לבצע את השלבים הבאים כדי להוסיף את הספרייה ל- CCS.
הורד 16x2 ספרייה ל- MSP430 - Studio Composer Code
שלב 1: יצירת קבצים ופרויקטים
פרויקט ברירת מחדל של CCS נוצר באמצעות תפריט הקובץ. בתיבת הדו-שיח צור פרויקט, בחר את ההתקן ותן hd44780 כשם הפרויקט. תחת סוג הפרויקט ושרשרת הכלים, בחר את סוג הפלט כספרייה סטטית וצור את הפרויקט.
בנתיב סייר הפרויקט (בצד שמאל), צור קובץ כותרת בתוך תיקיית הכללה ושמו בשם hd44780.h . לאחר מכן העתק את תוכן הקובץ hd44780.h שהורדת לקובץ זה שנוצר לאחרונה.
כעת צור את הפרויקט הראשי על ידי שינוי סוג הפלט להפעלה וצור פרויקט בשם CCS_LCD .
שלב 2: כלול את נתיבי החיפוש לפרויקט הראשי
בתיבת הדו-שיח מאפיינים של פרויקט hd44780 ובתוך אפשרויות הכלול עבור מהדר MSP430, הוסף את תיקיית הכלול בקובץ את נתיב החיפוש.
לאחר מכן, בנה פרויקט זה כדי ליצור את קבצי הקישור הדרושים כגון קבצי.lib . בניית זה תיצור קובץ hd44780.lib בתוך תיקיית הבאגים.
שלב 3: כלול את נתיבי החיפוש עבור מקשר
בתיבת הדו-שיח מאפיינים עבור פרויקט CCS_LCD ובנתיב חיפוש הקבצים של הכרטיסייה מקשר MSP430, כלול את hd44780.lib שנמצא בתוך תיקיית ניפוי האגים של פרויקט hd44780. תיקיית הבאגים כלולה גם בנתיב חיפוש הקבצים.
תיקיית הכלול מתווספת שוב לאפשרויות הכלול של מהדר MSP430 של פרויקט CCS_LCD .
הספרייה נערכה בהצלחה ונוספה לקישור של הפרויקט הראשי.
פונקציות LCD לתצוגת LCD בגודל 16x2 ב- MSP430
בטל hd44780_timer_isr (בטל): זה נקרא מעת לעת ב- ISR של הטיימר A. הטיימר A משמש מדי פעם לבצע את פונקציות ה- LCD כמו ניקוי המסך, הגדרת הסמן והצגת הנתונים. יש להשתמש בפונקציה ב- ISR. זה לא מחזיר כלום.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): זה יכתוב את המחרוזת שצוינה בטיעון הראשון.
char * ch__string: המחרוזת שתיכתב למאגר הנתונים (בתוך הפונקציה hd44780_timer_isr ). הנתונים יועתקו לרשם הנתונים ולרשם ההוראות של IC IC כאשר נקרא מדי פעם hd44780_timer_isr .
uint8_t u8__row: הוא מגדיר את השורה בה תיכתב המחרוזת.
uint8_t u8__column: הוא מגדיר את העמודה בה תיכתב המחרוזת.
uint8_t u8__cr_lf: אם הוא מוגדר 1, השורה תועבר לשורה הבאה. אם הוא 0, ההדפסה נעצרת באותה שורה.
void hd44780_clear_screen (void): פונקציה זו תנקה את כל המסך. זה לא מחזיר כלום.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): הפונקציה תציג את המיקום הרצוי של 16 סיביות ב- LCD.
uint16_t u16__value: המספר השלם שיוצג ניתן בארגומנט הראשון.
uint8_t u8__leading_zero_handling: אם 0 מועבר, יוצגו אפסים מובילים לערך המספר השלם. אם 1 יועבר, האפסים יימחקו. אם 2 מועבר כפרמטר, רק הספרות המשמעותיות יוצגו.
uint8_t u8__row: נבחרה השורה בה מוצג המספר השלם.
uint8_t u8__column: העמודה שתודפס נבחרה באמצעות הארגומנט.
uint8_t u8__cr_lf: אם הוא מוגדר 1, השורה תועבר לשורה הבאה. אם הוא 0, ההדפסה נעצרת באותה שורה.
תרשים מעגל לממשק LCD עם MSP430
תרשים המעגל השלם מתואר בתמונה למטה. כפי שאתה יכול לראות, חיבורי החומרה פשוטים מאוד והפעלנו את הלוח השלם באמצעות מתאם 5V.
החיבורים נעשים בהתאם לשרטוט לעיל. אנא עיין בטבלה שלהלן לקבלת החיבורים המפורטים.
Vss | קרקע של ספק כוח 5V |
Vdd | 5V |
V0 | פלט פוטנציומטר |
RS | P2.1 |
R / W | קרקע, אדמה |
ה | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | P1.6 |
D7 | P1.7 |
א | נגד 220 אוהם |
ק | קרקע, אדמה |
לא ניתן לחבר את האנודה של תאורת LED האחורית ישירות לאספקת 5 וולט. יש לחבר אותו להתנגדות כדי למזער את זרימת הזרם דרך מודול ה- LCD. ביצעתי את החיבורים שלי באמצעות לוח פרפ כדי להלחין את ה- LCD ואז השתמשתי בחוטי מגשר כדי לחבר את ה- LCD עם לוח MSP430, ההתקנה שלי נראית ככה למטה אבל אתה יכול גם פשוט להשתמש בלוח לחם כדי ליצור את החיבורים שלך.
תכנות MSP430 באמצעות Code Composer Studio לתצוגת LCD
הקוד השלם המשמש בפרויקט זה ניתן בתחתית עמוד זה. ההסבר לשימוש בקוד הוא כדלקמן. ראשית, פתח את קובץ הכותרת (hd44780.h) והכלל את מספר החלק של המיקרו-בקר בחלק הראשון של הקובץ.
# כלול "msp430g2553.h"
יש לעצור תחילה את טיימר כלב השמירה. רישומי הבקרה DCOCTL ו- BCSCTL1 משמשים לתצורת המתנד של המיקרו-בקר. השורות שלמטה יגדירו את ה- MCLK להיות 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
יש להזכיר את סיכות היציאה 1 כפלט, אשר ישמש לסיכות הנתונים. את הפין 0 ואת הפין 1 יש להזכיר גם כפלט ביציאה 2, שישמשו לסיכה RS ו- R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
נעשה שימוש בטיימר מובנה להצגת ערכים מעת לעת. טיימר A נבחר עם SMCLK (1MHZ) כמקור השעון ומצב רציף להיות אופן הפעולה.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
ההפרעות לערוצי השוואה 1 ו -2 ולהפרעת הצפת טיימר חולקות את אותו וקטור ההפרעה ( TIMER0_A1_VECTOR ) עם כתובות התחלה שונות. לכידת השוואה של ערוץ 1 (CCR1) משתמשת בכתובת 2 כמשמשת במקרה המתג.
#pragma vector = TIMER0_A1_VECTOR __ הפסקת זמן חלל ריק_0_a1_isr (בטל) { מתג (TA0IV) { מקרה 2: { hd44780_timer_isr (); לשבור; } } }
לאחר שרכיב את הקוד שלך, תוכל להעלות אותו ללוח MSP430, כפי שמוסבר בתחילת העבודה עם מדריך MSP430. אם הכל מתנהל כמצופה, אתה אמור לראות את תצוגת ה- LCD שלך בניגוד מסוים כפי שמוצג להלן.
אם הבדיקה שלך עמומה מאוד, אתה יכול לנסות להתאים את הפוטנציומטר כדי לקבל ניגודיות טובה יותר. את העבודה המלאה של הפרויקט ניתן למצוא גם בסרטון המקושר למטה. מקווה שנהניתם מהפרויקט ומצאתם שזה מעניין לבנות משלכם. אם יש לך שאלות, השאיר אותן בסעיף ההערות למטה. אתה יכול גם לכתוב את כל השאלות הטכניות שלך בפורומים כדי לענות עליהן או להתחיל דיון.