כדי ליצור תקשורת טובה בין העולם האנושי לעולם המכונות, יחידות תצוגה ממלאות תפקיד חשוב. וכך הם חלק חשוב ממערכות משובצות. יחידות תצוגה - גדולות או קטנות, עובדות על אותו עיקרון בסיסי. מלבד יחידות תצוגה מורכבות כמו תצוגות גרפיות ותצוגות תלת מימד, צריך לדעת לעבוד עם תצוגות פשוטות כמו יחידות 16x1 ו -16 x 2. יחידת התצוגה 16x1 תכלול 16 תווים והיא בשורה אחת. ה LCD 16x2 יהיה 32 תווים בסה"כ 16in 1 st קו 16 עוד 2 ndקַו. כאן חייבים להבין שבכל תו ישנם 5x10 = 50 פיקסלים ולכן כדי להציג תו אחד כל 50 הפיקסלים חייבים לעבוד יחד. אבל אנחנו לא צריכים לדאוג לזה כי יש בקר אחר (HD44780) ביחידת התצוגה שעושה את העבודה בשליטה על הפיקסלים. (אתה יכול לראות את זה ביחידת LCD, זה העין השחורה מאחור).
רכיבים נדרשים
חוּמרָה:
מיקרו-בקרה ATmega32
ספק כוח (5V)
מתכנת AVR-ISP
JHD_162ALCD (16x2 LCD)
קבל 100uF.
תוֹכנָה:
סטודיו אטמל 6.1
פרוגיספ או קסם פלאש
תרשים מעגל והסבר
כפי שמוצג בממשק ה- LCD עם מעגל ATmega32, אתה יכול לראות ש- PORTA של ATMEGA32 מחובר ל- LCD של יציאת הנתונים. כאן צריך לזכור להשבית את תקשורת JTAG ב- PORTC של ATMEGA על ידי שינוי בתים הנתיכים, אם רוצים להשתמש ב- PORTC כיציאת תקשורת רגילה. ב- LCD 16x2 יש 16 פינים בכל מקום, אם יש תאורה אחורית, אם אין אור אחורי יהיו 14 פינים. אפשר להפעיל או להשאיר את סיכות התאורה האחורית. כעת ב -14 הפינים ישנם 8 פינים נתונים (7-14 או D0-D7), 2 פינים לאספקת חשמל (1 & 2 או VSS & VDD או GND & + 5V), סיכה שלישית 3 לבקרת ניגודיות (VEE- שולט עד כמה הדמויות צריכות להיות עבות מוצג), 3 סיכות בקרה (RS & RW & E)
במעגל הנ"ל לממשק 16x2 LCD עם מיקרו בקר AVR, אתה יכול לראות שלקחתי רק שתי סיכות בקרה. זה נותן את הגמישות של הבנה טובה יותר. ביט הניגודיות ו- READ / WRITE לא משמשים לעתים קרובות, כך שניתן לקצר אותם לקרקע. זה מציב את LCD במצב הניגודיות והקריאה הגבוה ביותר. אנחנו רק צריכים לשלוט בסיכות ENABLE ו- RS כדי לשלוח תווים ונתונים בהתאם.
החיבורים בין מיקרו-בקר ATmega32 ו- LCD 16x2 ניתנים להלן:
PIN1 או VSS - קרקע
PIN2 או VDD או VCC - כוח + 5v
PIN3 או VEE - קרקע (נותן ניגודיות מקסימאלית הטובה ביותר למתחילים)
PIN4 או RS (בחירת רישום) - PD6 של מיקרו-בקר
PIN5 או RW (קריאה / כתיבה) - קרקע (מכניס את LCD למצב קריאה מקל על התקשורת עבור המשתמש)
PIN6 או E (Enable) - PD5 של מיקרו-בקר
PIN7 או D0 - PA0 של מיקרו-בקר
PIN8 או D1 - PA1
PIN9 או D2 - PA2
PIN10 או D3 - PA3
PIN11 או D4 - PA4
PIN12 או D5 - PA5
PIN13 או D6 - PA6
PIN14 או D7 - PA7
במעגל אתה יכול לראות שהשתמשנו בתקשורת 8 ביט (D0-D7) אולם זה לא חובה ואנחנו יכולים גם להשתמש בתקשורת 4 ביט (D4-D7) אבל עם תוכנית תקשורת של 4 ביט הופכת להיות קצת מורכבת למתחילים אז פשוט הלכנו עם תקשורת 8 סיביות.
אז מהסתכלות בלבד מהטבלה לעיל אנו מחברים 10 פינים של LCD לבקר, בהם 8 פינים הם פינים של נתונים ו -2 פינים לבקרה.
עובד
עכשיו כדי להתחיל אתה חייב לדעת את הפונקציות של 10 פינים של 16x2 LCD (8 פינים נתונים + 2 סיכות בקרה). 8 סיכות הנתונים מיועדות לשליחת נתונים או פקודות ל LCD. בשתי סיכות בקרה:
1. סיכת ה- RS (בחר בחירת רישום) היא לספר ל- LCD אם אנו שולחים אליו נתונים או פקודה אליו.
לדוגמה:
בטבלה מעלה אחת עבור ערך יציאת נתונים (D7-D0) של "0b0010 1000 או 0x28" אומר ל- LCD להציג את הסמל "(". בטבלה השנייה אותו ערך של 0x28 אומר ל- LCD "אתה LCD עם 5x7 נקודות ו להתנהג כמו אחד ", אז עבור אותו ערך המשתמש יכול להגדיר שני דברים, עכשיו המצב הזה מנוטרל על ידי סיכת בחירת רישום, אם סיכת ה- RS מוגדרת נמוכה אז LCD מבין שאנחנו שולחים פקודה. אם הגדרנו את סיכת ה- RS גבוהה LCD מבין שאנחנו שולחים את הנתונים וכך בשני המקרים ה- LCD מכבד את ערך יציאת הנתונים על פי ערך הסיכה של ה- RS.
2. סיכת E (אפשר) היא פשוט להגיד "נורית חיווי כוח של מחשב", סיכה זו מוגדרת לגובה כדי לומר ל- LCD "לקבל יציאת נתונים של טופס נתונים של בקר". ברגע שהסיכה הזו נמוכה אחרי גבוהה, LCD מעבד את הנתונים שהתקבלו ומציג את התוצאה המתאימה. אז הסיכה הזו מוגדרת גבוה לפני שליחת נתונים ונמשכת לקרקע לאחר שליחת נתונים.
כעת לאחר חיבור החומרה, הפעל את Atmel studio והתחל פרוייקט חדש לכתיבת התוכנית, כעת פתח את מסך התכנות והתחל את תוכנית wrring. התוכנית צריכה לעקוב אחר ההצגה הבאה.
ראשית אנו אומרים לבקר באילו יציאות אנו משתמשים לנתונים ולבקרה על LCD. ואז אמור לבקר מתי לשלוח נתונים או פקודה בהתאם על ידי משחק עם סיכות RS ו- E.
הסבר קצר על המושגים המשמשים בתכנית:
1. E מוגדר גבוה (אומר ל- LCD לקבל נתונים) ו- RS מוגדר נמוך (אומר ל- LCD שאנחנו נותנים פקודה)
2. מתן ערך 0x01 ליציאת הנתונים כפקודה לניקוי מסך
3. E מוגדר גבוה (אומר ל- LCD לקבל נתונים) ו- RS מוגדר גבוה (אומר ל- LCD שאנחנו נותנים נתונים)
4. לקיחת מחרוזת תווים ששולחת כל תו במחרוזת אחת אחת.
5. E מוגדר נמוך (אומר ל- LCD שסיימנו לשלוח נתונים)
6. לאחר הפקודה האחרונה LCD מסיים את התקשורת ומעבד את הנתונים ומציג את מחרוזת הדמויות על המסך.
בתרחיש זה אנו נשלח את הדמויות בזו אחר זו. הדמויות ניתנות ל LCD על ידי קודי ASCII (קוד אמריקאי למחלף מידע).
טבלת קודי ASCII מוצגת לעיל. כאן כדי שה- LCD יציג תו "@" עלינו לשלוח קוד הקסדצימלי "64". אם אנו שולחים '0x62' למסך LCD זה יופיע סמל '>'. ככה אנחנו נשלח את הקודים המתאימים ל- LCD כדי להציג שם.
דרך התקשורת בין LCD למיקרו-בקר ATmega32 AVR מוסברת בצורה הטובה ביותר שלב אחר שלב של קוד C למטה,