במדריך זה נכין שעון דיגיטלי על ידי ממשק מודול RTC DS3231 עם MSP430 ונציג את השעה והתאריך על 16x2 LCD. ה- MSP-EXP430G2 הוא כלי פיתוח המכונה LaunchPad המסופק על ידי מכשירי טקסס כדי ללמוד ולתרגל כיצד להשתמש במיקרו-בקרים שלהם. לוח זה נכנס לקטגוריית MSP430 Value Line, שם נוכל לתכנת את כל המיקרו-בקרים מסדרת MSP430. אם אתה חדש ב- MSP, בדוק את תחילת העבודה שלנו עם מדריך MSP430.
חומרים נדרשים:
- MSP430
- מודול DS3231 RTC
- POT -10k
- מודול LCD 16 * 2
- חוטי חיבור
- קרש לחם
מה זה RTC ??
DS3231 הוא מודול RTC (שעון זמן אמת). הוא משמש לשמירת התאריך והשעה עבור מרבית פרויקטים של אלקטרוניקה. למודול זה יש ספק כוח מטבע משלו באמצעותו הוא שומר על התאריך והשעה גם כאשר הכוח הראשי מוסר או שה- MCU עבר איפוס קשה. אז ברגע שנקבע את התאריך והשעה במודול זה הוא יעקוב אחריו תמיד. ישנם מספר סוגים של RTC ICs זמינים כמו DS1307, DS3231 וכו '.
השתמשנו בעבר ב- RTC עם מיקרו - בקרים אחרים בפרויקטים הבאים:
הערה: בעת שימוש במודול זה בפעם הראשונה עליך להגדיר את התאריך והשעה. אתה יכול גם להשתמש ב- RTC IC DS1307, בעבר השתמשנו ב- DS1307 עם Arduino.
חיבור ה- DS3231 RTC עם MSP430:
תרשים מעגלים עבור שעון דיגיטלי מבוסס מיקרו-בקר MSP430 מופיע להלן. כפי שנאמר קודם DS3231 עובד בעזרת תקשורת I2C כך שיהיה לו שעון סידורי (SCL) וסיכה של נתונים סידוריים (SDA) אשר צריך להיות מחובר לסיכות I2C ב- MSP430 שלנו שהוא הסיכה 9 (PIN 2.1, SCL) וסיכה 10 (PIN 2.2, SDA).
MSP430 נותן 3.3V Vcc אבל אנחנו צריכים 5V כדי לחבר אותו עם LCD ומודול RTC. לכן, נשתמש בפריצה, יש מגשר זמין בשם TP1 ליד מחבר כבל USB. אתה יכול לקחת 5V משם.
תרשים מעגל:
תכנות MSP430 עבור מודול RTC:
כאן אנו משתמשים ב- Energia IDE לתכנות. זהה ל- Arduino IDE וקל לשימוש. אם אתה חדש ב- MSP וב- energia, אז התחל לעבוד עם MSP באמצעות Energia IDE. כדי לממשק מודול RTC אנו זקוקים לספרייה עבור לוח זה. הורד את ספריית RTC מקישור זה והתקן אותה.
אנו זקוקים גם לספריות Wire (המשמשות לתקשורת I2C) וספריית גבישים המותקנות מראש ב- Energia IDE.
הקוד השלם לשעון דיגיטלי MSP430 זה ניתן בסוף מאמר זה. קוד הוא פשוט וניתן להבנה בקלות. כאן אנו מסבירים כמה חלקים ממנו.
ראשית, עלינו לכלול ספריות נחוצות.
הספרייה הבאה מיועדת לתקשורת I2C בין מודול RTC לבין MSP430. סיכות SDA ו- SCK כבר מוגדרות בספרייה זו, ולכן איננו צריכים להכריז על סיכות אלה בנפרד.
#לִכלוֹל
ואז כללנו את ספריית RTClib.h לשעון RTC ו- LiquidCrystal.h לפונקציות LCD.
# כלול "RTClib.h" #
כלול
לאחר מכן עלינו ליצור מופע כדי לאתחל את מודול ה- RTC שלנו.
RTC_DS3231 rtc;
ואז הכינו מערך בגודל 7 ואחסנו את כל שבעת הימים עם שם.
char daysOfTheWeek = {"יום ראשון", "יום שני", "יום שלישי", "יום רביעי", "יום חמישי", "יום שישי", "שבת"};
הנה הצהרת סיכות של MSP430 לשימוש על ידי תצוגת LCD: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LiquidCrystal lcd (8, 6, 7,11,12,13);
בשנת התקנת חלל () , יש לנו אותחלו ממשק למסך LCD ו RTC ו שצוינו הממדים (רוחב וגובה) של התצוגה, להתחיל ()
צריך להיקרא לפני כל פקוד ספרייה אחרות.
הגדרת חלל () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("שעון RTC"); עיכוב (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
כעת, הזמן המוצג בתצוגה נכון אך קיימת בעיה, בכל פעם שתפעיל מחדש / אפס את המיקרו-בקר שלך, LCD יראה את הזמן בו העלית את הקוד. הסיבה לכך היא שהפונקציה rtc.adjust () אחסנה את זמן המחשב שלך, ולכן כשאתה מאפס, זה מתחיל בזמן הזה.
כדי לפתור בעיה זו, העלה תחילה את התוכנית עם פונקצית rtc.adjust () ללא תגובה . לאחר מכן, הגיב מיד על אותה שורה והעלה את התוכנית שוב. כעת, התאריך והשעה שלך נקבעים ולא יושפעו מאיפוס המיקרו-בקר.
בשנת לולאת פונקציה שאנחנו לוקחים תאריך ושעת ממודול RTC ולאחסן המשתנה המוגדר מראש נקרא כעת ולהציג אותו על LCD באמצעות lcd.print () פונקציה.
loop loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
הקוד והווידאו המלא מובאים להלן.