לוח המקשים נעשה שימוש נרחב בהתקני קלט המשמשים בפרויקטים אלקטרוניים שונים ופרויקטים משובצים. הם משמשים לקליטת תשומות בצורה של מספרים ואלבבתים, ולהאכיל אותם למערכת להמשך עיבוד. במדריך זה אנו הולכים לממשק לוח מקשים מטריצה 4x4 עם מיקרו-בקר 8051.
לוח מקשים מטריקס 4X4
לפני שנממשק את לוח המקשים למיקרו-בקר, ראשית עלינו להבין כיצד זה עובד. לוח המקשים של מטריקס מורכב ממערכת כפתורי לחיצה, המחוברים ביניהם. כמו במקרה שלנו אנו משתמשים במקשי מטריצה 4X4, בהם ישנם 4 כפתורי לחיצה בכל ארבע שורות. ומסופי הלחצנים מחוברים על פי התרשים. בשורה הראשונה, מסוף אחד מכל ארבעת כפתורי הלחיצה מחובר זה לזה ומסוף אחר של 4 לחצני כפתור מייצג כל אחת מארבע העמודות, כך גם בכל שורה. אז אנחנו מקבלים 8 מסופים להתחבר למיקרו-בקר.
מקלדת ממשק עם מיקרו-בקר 8051 (AT89S52)
ראשית עלינו לממשק מודול LCD כדי להציג את הנתונים שיוזנו דרך KEYPAD, לכן אנא עברו במאמר "ממשק LCD עם מיקרו-בקר 8051" לפני ממשק KEYPAD.
כפי שמוצג בתרשים המעגל לעיל, כדי לממשק את לוח המקשים, עלינו לחבר 8 מסופים של לוח המקשים לכל יציאה (8 פינים) של המיקרו-בקר. כמו שחיברנו מסופי לוח מקשים ליציאה 1 של 8051. בכל לחיצה על כל כפתור עלינו לקבל את מיקום הכפתור, פירושו השורה המתאימה מספר עמוד. לאחר שנקבל את מיקום הכפתור, נוכל להדפיס את הדמות בהתאם.
כעת השאלה היא כיצד ניתן להשיג את מיקום הכפתור הלחוץ? אני הולך להסביר זאת בשלבים שלהלן וגם רוצה שתביט בקוד:
1. ראשית עשינו את כל השורות לרמת לוגיקה 0 ואת כל העמודות לרמת לוגיקה 1.
2. בכל פעם שאנחנו לוחצים על כפתור, העמודה והשורה המתאימות לאותו כפתור מתקצרות והופכות את העמודה המתאימה לרמת לוגיקה 0. מכיוון שעמודה זו מתחברת (מקוצרת) לשורה שנמצאת ברמת ההיגיון 0. אז אנחנו מקבלים טור מס ' ראה פונקציה ראשית ().
3. כעת עלינו למצוא את השורה מספר. לכן יצרנו ארבע פונקציות המתאימות לכל עמודה. כמו אם נלחץ על כל כפתור בעמודה אחת, אנו קוראים לפונקציה row_finder1 (), כדי למצוא את השורה מספר.
4. בפונקציה row_finder1 (), הפכנו את רמות הלוגיקה, כלומר עכשיו כל השורות הן 1 והעמודות הן 0. כעת שורה של הכפתור שנלחץ צריכה להיות 0 מכיוון שהוא התחבר (קצר) לעמודה שעל כפתורו נלחץ, וכל העמודות הן לוגיות 0. אז סרקנו את כל השורות ל -0.
5. אז בכל פעם שאנחנו מוצאים את השורה בלוגיקה 0, פירוש הדבר שזו שורת הכפתור הנלחצת. אז עכשיו יש לנו טור לא (נכנסו לשלב 2) ושורה מס ', ואנחנו יכולים להדפיס לא. של הכפתור הזה באמצעות הפונקציה lcd_data.
אותה פרוצדורה נמשכת בכל לחיצת כפתור ואנחנו משתמשים תוך כדי (1), כדי לבדוק באופן רציף אם לחצן נלחץ או לא.