במדריך זה אנו הולכים לממשק לוח מקשים 4x4 (16 מקשים) עם מיקרו-בקר ATMEGA32A. אנו יודעים כי לוח המקשים הוא אחד ממכשירי הקלט החשובים ביותר המשמשים בפרויקטים אלקטרוניים. לוח המקשים הוא אחת הדרכים הקלות ביותר לתת פקודות או הוראות למערכת אלקטרונית.
רכיבים נדרשים
חומרה: ATMEGA32, ספק כוח (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), קבל 100uF, קבלים 100nF, נגד 10KΩ (8 יח ').
תוכנה: Atmel studio 6.1 או Atmel studio 6.2, progisp או פלאש קסם.
תרשים מעגל והסבר עבודה
במעגל PORTB של ATMEGA32 מחובר ליציאת נתונים LCD. כאן צריך לזכור להשבית את תקשורת JTAG ב- PORTC ot 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).
במעגל, אתה יכול לראות כי לקחתי רק שני סיכות בקרה, זה נותן את הגמישות, מעט הניגודיות ו- READ / WRITE לא משמשים לעתים קרובות, כך שניתן לקצר אותם לקרקע. זה מכניס את LCD למצב הניגודיות והקריאה הגבוה ביותר. אנחנו רק צריכים לשלוט בסיכות ENABLE ו- RS כדי לשלוח תווים ונתונים בהתאם.
החיבורים שבוצעו עבור LCD מובאים להלן:
PIN1 או VSS לקרקע
PIN2 או VDD או VCC ל- + 5v כוח
PIN3 או VEE לקרקע (נותן ניגודיות מרבית הטובה ביותר למתחילים)
PIN4 או RS (בחירת רישום) ל- PD6 של uC
PIN5 או RW (קריאה / כתיבה) לקרקע (מכניס את LCD למצב קריאה מקל על התקשורת עבור המשתמש)
PIN6 או E (אפשר) ל- PD5 של uC
PIN7 או D0 עד PB0 של uC
PIN8 או D1 עד PB1 של uC
PIN9 או D2 ל- PB2 של uC
PIN10 או D3 ל- PB3 של uC
PIN11 או D4 ל- PB4 של uC
PIN12 או D5 ל- PB5 של uC
PIN13 או D6 ל- PB6 של uC
PIN14 או D7 ל- PB7 של uC
במעגל ניתן לראות שהשתמשנו בתקשורת 8 ביט (D0-D7) אולם זה לא חובה, אנו יכולים להשתמש בתקשורת 4 ביט (D4-D7) אך עם תוכנית תקשורת של 4 סיביות הופכת להיות מעט מורכבת. אז מעצם התבוננות בטבלה לעיל אנו מחברים 10 פינים של LCD לבקר, בהם 8 פינים הם פינים של נתונים ו -2 פינים לבקרה.
עכשיו בואו נדבר על לוח המקשים, לוח המקשים אינו אלא מקשים מרובי ריבועים. לחצנים מחוברים בצורה מרובת ריבית להפחתת השימוש בסיכות במערכת הבקרה.
קחו בחשבון שיש לנו לוח מקשים 4x4, בלוח המקשים הזה יש לנו 16 כפתורים, במקרים רגילים אנחנו צריכים 16 פינים לבקר כדי לממשק 16 כפתורים, אבל זה לא טוב מבחינת מערכת הבקרה. ניתן להפחית את השימוש בסיכה זו על ידי חיבור הכפתורים בצורת מולטיפלקס.
לדוגמא שקול שיש לנו 16 כפתורים ואנחנו רוצים לחבר אותו לבקר כדי ליצור לוח מקשים, מקשים אלה מסודרים כפי שמוצג באיור:
כפתורים אלה מחוברים באמצעות עמודות נפוצות, כפי שמוצג באיור:
כפי שמוצג באיור, קצוות שאינם מסומנים של כל ארבעה כפתורים נגררים כדי ליצור עמודה, וכך עבור 16 מקשים יש לנו ארבע עמודות.
אם נשכח את חיבורי העמודות למעלה, וחיברנו קצוות מסומנים משותפים של כל ארבעה כפתורים יחד כדי ליצור שורה:
כפי שמוצג באיור, עבור 16 מקשים יהיו לנו ארבע שורות כפי שמוצג באיור.
כעת, כאשר שניהם נראים יחד, אנו מקבלים משהו כמו המעגל הבא:
כאן חיברנו 16 מקשים בצורה מרובת רמות כדי להפחית את השימוש בסיכה בבקר. בהשוואה למקרה הראשון של 16 מקשים מחוברים היינו זקוקים ל -16 סיכות בבקר, אך כעת לאחר ריבוב אנו צריכים פשוט 8 פינים של בקר כדי לחבר 16 מקשים.
בדרך כלל זה מה שהוצג בתוך לוח המקשים:
כפי שמוצג באיור לעיל ישנם 16 מקשים בלוח המקשים שלעיל וכל אחד ממקשים אלה מייצג כפתור בתצורת הכפתור המרובה. כמו כן, ישנם חיבורי 8 פינים כפי שמוצג באיור לעיל המסמל חיבור מרובי.
עכשיו לעבודה:
לוח המקשים כאן כולל ארבע עמודות וארבע שורות, לצורך זיהוי לחיצת הלחצן אנו נשתמש בשיטת הצלבה. כאן ראשית אנו הולכים לחבר את כל העמודות או את כל השורות ל- vcc, כך שאם שורות מחוברות ל- vcc משותף, אנו ניקח את העמודות כתשומות לבקר.
עכשיו אם לחצן אחד נלחץ כפי שמוצג באיור:
לאחר מכן זרם זורם במעגל כמוצג באיור להלן:
אז יש לנו C1 גבוה, ללחיצת כפתור. ברגע זה ממש, אנו הולכים להזיז את יציאות ההספק והקלט כלומר, אנו הולכים להפעיל את העמודות ולקחת שורות כתשומות, על ידי כך, תהיה זרימת חשמל כפי שמוצג באיור להלן:
אז בשורה יש לנו R1 גבוה.
נכון לעכשיו יש לנו C1 גבוה במקרה הראשון ו- R1 גבוה במקרה השני, אז יש לנו מיקום מטריצה של הכפתור ומכאן המספר "אחד".
אם לוחצים על הכפתור השני, יהיה לנו C1 כעמודה אך ההיגיון הגבוה שנקבל בעמודה המשותפת יהיה 'R2'. אז יהיה לנו C1 ו- R2, ולכן תהיה לנו מיקום מטריצה של הכפתור השני.
כך אנו כותבים את התוכנית, אנו נחבר שמונה פינים של לוח המקשים לשמונה פינים של בקר. ולהתחלה אנו מפעילים ארבעה פינים של בקר להפעלת ארבע שורות של לוח מקשים, בשלב זה ארבעת הפינים האחרים נלקחים כתשומות. כאשר לוחצים על הכפתור סיכת העמודה המתאימה נמשכת כלפי מעלה וכך סיכת הבקר נמשכת כלפי מעלה, זה יוכר כדי לשנות את הקלט לחשמל וכוח לקלט, כך שיהיו לנו שורות כקלטים.
על ידי זה אנו מקבלים את הכפתור הנלחץ על ידי המשתמש. כתובות מטריצה זו מופנות למספר המתאים ומספר זה מוצג על גבי LCD.
עבודה של ממשק לוח מקשים למיקרו-בקר avr מוסברת שלב אחר שלב בקוד C המופיע להלן. ניתן גם לבדוק: ממשק מקשים עם מיקרו-בקר 8051.