תצוגה היא החלק הדרוש בכל מכונה בין אם מדובר במכשיר ביתי או במכונות תעשייתיות. תצוגה לא רק מציגה את אפשרויות הבקרה להפעלת המכונה אלא גם מציגה את המצב והפלט של המשימה שבוצעה על ידי אותה מכונה. ישנם סוגים רבים של צגים המשמשים באלקטרוניקה כמו תצוגת 7 קטעים, תצוגת LCD 16x2, תצוגת מסך מגע TFT, תצוגת OLED וכו '.
תצוגת LCD 16x2 היא מודול התצוגה הבסיסי ביותר ומשמש גם בכמה ציוד אלקטרוניקה קטן כמו מחשבון, מד דיגיטלי וכו '. עשינו הרבה פרויקטים באמצעות LCD 16x2 כולל ממשק בסיסי למיקרו-בקרים אחרים:
- ממשק LCD עם מיקרו-בקר 8051
- ממשק LCD עם מיקרו-בקר ATmega32
- ממשק LCD עם מיקרו-בקר PIC
- ממשק 16x2 LCD עם Arduino
- ממשק LCD 16x2 עם פטל פי באמצעות פיתון
במדריך זה נראה כיצד לממשק LCD 16x2 עם מיקרו-בקרת Atmega16 AVR ולהציג הודעת קבלת פנים פשוטה.
רכיבים נדרשים
- אטמגה 16
- מודול LCD 16x2
- מגשרים
- קרש לחם
תרשים מעגל
תכנות Atmega16 לתצוגת LCD בגודל 16x2
תכנות אינו מצריך ספריות חיצוניות. כאן ה- Atmega16 מתוכנת באמצעות USBASP ו- Atmel Studio7.0. התוכנית המלאה וסרטון העבודה ניתנים בסוף הפרויקט, פשוט העלה את התוכנית ל- Atmega16 וסובב 10 K POT כדי להתאים את בהירות ה- LCD.בהתחלה הגדר את תדר המעבד וכולל את הספריות הדרושות המגיעות עם חבילת Atmel Studio כגון לגישה לסיכות IO ו
הגדר את סיכת ה- RS ו- EN של ה- LCD בתוכנית. סיכות ה- RS משמשות לבחירת רישום הנתונים והפקודות. סיכת ההפעלה תולה את הנתונים.
#define en PA3 #define rs PA2
הגדר גם את איזה PORT של Atmega16 ישמש לממשק LCD. כאן משתמשים ב- PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
השלב הבא הוא בניית פונקציה שתקבל פקודה על ידי העברת פרמטר. ישנן פקודות HEX רבות LCD. פקודות ה- Hex משמשות להגדרת הפונקציה של LCD. מכיוון שאנו משתמשים במצב 4 סיביות של LCD, הבייט (8 סיביות) יישלח בשתי חבילות. החבילות האחת יהיו Nibble Upper (4 סיביות) וחבילה אחרת תהיה Nibble Nibble (4 סיביות).
בטל lcdCommand (פקודות char לא חתומות) { lcdPort = (lcdPort & 0x0F) - (פקודות & 0xF0); lcdPort & = ~ (1 <
השלב הבא יהיה קבלת הדמויות ותפסתן לנמל ה- LCD. הדמויות שהתקבלו נשלחות לאחר מכן לנגיסי ה- LCD בכדי לנשנש. הפונקציה לוקחת את הדמות באמצעות פרמטר לעבור ולאחר מכן לוקחת את הכריש העליון והתחתון. סיכת 'rs' מוגדרת גבוהה עבור רישום נתונים ואז דופק עולה נשלח לתפס את הנתונים. באופן דומה הנשנוש התחתון שנשלח על ידי שינוי ערך ההפעלה ושליחת הדופק העולה לצורך הפעלה.
בטל lcdChar (מחרוזת char לא חתומה) { lcdPort = (lcdPort & 0x0F) - (מחרוזת & 0xF0); lcdPort - = (1 <
פונקציה זו פשוט ממירה את הדמות למחרוזת וניתן להשתמש בה בתוכנית מאוחר יותר שם יש צורך במחרוזת כתיבה.
בטל lcdString (char * str) { int j; עבור (j = 0; str! = 0; j ++) { lcdChar (str); } }
עכשיו נכתבת פונקציה רק כדי לנקות את המסך. אתה רק צריך לשלוח את הפקודה 01 ב- HEX ואז פשוט להגדיר את הסמן למצב התחלתי.
בטל lcdClear () { lcdCommand (0x01); _עכב_מס (2); lcdCommand (0x80); }
כעת בפונקציה הראשית, LCD מאותחל. הגדר בתחילה את כיוון ה PORT לממשק LCD. כאן, ה- PORT מוגדר כ- OUTPUT כך שנקבע FF.
lcdDirection = 0xFF; _עכב_מס (20)
ואז הגדר את ה- LCD למצב של 4 סיביות על ידי שליחת 02 ב- hex. שלח גם 28 ב- hex כדי להגדיר אותו בפיקסלים של 2 מטר, 15x7 מטריקס במצב 4 סיביות.
lcdCommand (0x02); lcdCommand (0x28);
0C פיקוד 06 משמש לשליטה מיקום הסמן. ולבסוף פשוט נקה את המסך על ידי שליחת 01 בהקס. פעולה זו תסיים את האתחול של LCD.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
לאחר סיום האתחול פשוט בדקו את ה- LCD על ידי שליחת מחרוזת. כאן אנו שולחים "מחרוזת LCD התממשקות " ב 1 st בשורה.
lcdString ("ממשק LCD");
לאחר מכן העבר את הסמן לשורה הבאה על ידי שליחת הפקודה c0 ב- hex. ולבסוף על עמדה זו, כתוב את המחרוזת "With Atmega1 6".
lcdCommand (0xC0); lcdString ("עם Atmega16");
זה מסיים את ההדרכה המלאה על ממשק LCD 16x2 עם Atmega16. שים לב שאם אינך מקבל תמונה או פיקסלים, בדוק את החיווט שלך בהתאם לקוד ודיאגרמת המעגל או שנה את ערך ה- POT המחובר לסיכת V0 של LCD. אם יש לך ספק או הצעה כלשהי, תוכל להגיע אלינו באמצעות כתיבה לפורום או הערה למטה.