- רכיבים נדרשים והתקנת חומרה
- תרשים מעגל Nuvoton N76E003 לקריאת מתח אנלוגי
- מידע על GPIO וסיכות אנלוגיות ב- N76E003
- מידע על ADC היקפי ב- N76E003
- תכנות N76E003 עבור ADC
- מהבהב את הקוד והפלט
ממיר אנלוגי לדיגיטלי (ADC) הוא תכונת החומרה הנפוצה ביותר במיקרו-בקר. זה לוקח מתח אנלוגי וממיר אותו לערך דיגיטלי. מכיוון שמיקרו-בקרים הם מכשירים דיגיטליים ועובדים עם הספרה הבינארית 1 ו -0, הוא לא יכול היה לעבד את הנתונים האנלוגים ישירות. לפיכך, נעשה שימוש ב- ADC כדי לקחת מתח אנלוגי ולהמיר אותו לערך הדיגיטלי המקביל לו שמיקרו-בקר יכול להבין. אם אתה רוצה מידע נוסף על ממיר אנלוגי לדיגיטלי (ADC), אתה יכול לבדוק את המאמר המקושר.
ישנם חיישנים שונים הזמינים באלקטרוניקה המספקים פלט אנלוגי, כמו חיישני גז MQ, חיישן תאוצה מדגם ADXL335 וכו '. לכן, באמצעות ממיר אנלוגי לדיגיטלי, ניתן להתממשק בין חיישנים אלה ליחידת מיקרו-בקר. אתה יכול גם לבדוק מדריכים אחרים המפורטים להלן לשימוש ב- ADC עם מיקרו-בקרים אחרים.
- כיצד להשתמש ב- ADC ב- Arduino Uno?
- ממשק ADC0808 עם מיקרו-בקר 8051
- באמצעות מודול ADC של מיקרו-בקר PIC
- מדריך ADC לפטל פטל
- כיצד להשתמש ב- ADC ב- MSP430G2 - מדידת מתח אנלוגי
- כיצד להשתמש ב- ADC ב- STM32F103C8
במדריך זה נשתמש בהיקפי ה- ADC המובנה של יחידת המיקרו-בקר N76E003, אז בואו נבדוק איזה סוג של התקנת חומרה אנו זקוקים ליישום זה.
רכיבים נדרשים והתקנת חומרה
כדי להשתמש ב- ADC ב- N76E003, נשתמש במחלק מתח באמצעות פוטנציומטר ונקרא את המתח שנע בין 0V-5.0V. המתח יוצג ב- LCD 16x2 אופי, אם אתה חדש עם LCD ו- N76E003, אתה יכול לבדוק כיצד לממשק LCD עם Nuvoton N76E003. לפיכך, המרכיב העיקרי הנדרש לפרויקט זה הוא LCD 16x2 Character. עבור פרויקט זה נשתמש ברכיבים הבאים:
- אופי LCD 16x2
- נגד 1k
- פוטנציומטר 50k או סיר לקצץ
- מעטים מחוטי הברג
- מעט חוטי חיבור
- קרש לחם
שלא לדבר על מלבד הרכיבים הנ"ל, אנו זקוקים ללוח הפיתוח מבוסס מיקרו-בקר N76E וכן למתכנת Nu-Link. נדרשת גם יחידת אספקת חשמל 5V נוספת מכיוון שה- LCD שואב זרם מספיק שהמתכנת לא יכול היה לספק.
תרשים מעגל Nuvoton N76E003 לקריאת מתח אנלוגי
כפי שניתן לראות בתרשים, היציאה P0 משמשת לחיבור הקשור ל- LCD. בצד שמאל קיצוני מוצג חיבור ממשק התכנות. הפוטנציומטר משמש כמחלק מתח וזה חש על ידי הקלט האנלוגי 0 (AN0).
מידע על GPIO וסיכות אנלוגיות ב- N76E003
התמונה למטה מדגימה את סיכות ה- GPIO הזמינות ביחידת המיקרו בקר N76E003AT20. עם זאת, מתוך 20 הפינים, לחיבור הקשור ל- LCD, נעשה שימוש ביציאה P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 ו- P0.7). הסיכות האנלוגיות מודגשות בצבעים אדומים.
כפי שאנו רואים, ליציאת P0 יש פינים אנלוגיים מרביים אך אלה משמשים לתקשורת הקשורה ל- LCD. לפיכך, P3.0 ו- P1.7 זמינים כסיכות קלט אנלוגיות AIN1 ו- AIN0. מכיוון שפרויקט זה דורש סיכה אנלוגית אחת בלבד, P1.7 שהוא ערוץ הקלט האנלוגי 0, משמש לפרויקט זה.
מידע על ADC היקפי ב- N76E003
N76E003 מספק 12 סיביות SAR ADC. זו תכונה טובה מאוד של N76E003 שיש לה רזולוציה טובה מאוד של ADC. ל- ADC כניסות של 8 ערוצים במצב חד קצה. ממשק ה- ADC הוא די פשוט ופשוט.
השלב הראשון הוא בחירת קלט ערוץ ADC. ישנן כניסות בעלות 8 ערוצים הזמינות במיקרו-בקרים N76E003. לאחר בחירת כניסות ה- ADC או סיכות הקלט / פלט, נדרש להגדיר את כל הפינים לכיוון בקוד. כל הפינים המשמשים לקלט האנלוגי הם פינים קלט של המיקרו-בקר ולכן יש להגדיר את כל הפינים כמצב קלט בלבד (עכבה גבוהה). ניתן להגדיר את אלה באמצעות הרישום PxM1 ו- PxM2. שני רושמים אלה מגדירים את מצבי הקלט / פלט שבהם x מייצג את מספר היציאה (לדוגמא, יציאה P1.0 הרישום יהיה P1M1 ו- P1M2, עבור P3.0 זה יהיה P3M1 ו- P3M2 וכו ') התצורה יכולה ניתן לראות בתמונה למטה-
התצורה של ה- ADC נעשית על ידי שני רושמים ADCCON0 ו- ADCCON1. תיאור הרישום ADCCON0 מוצג להלן.
4 הסיביות הראשונות של הרישום מסיבית 0 לסיבית 3 משמשות להגדרת בחירת ערוץ ADC. מכיוון שאנו משתמשים בערוץ AIN0, הבחירה תהיה 0000 לארבעת הביטים הללו.
החלקים השישית והשביעית הם החשובים. ADCS נדרש להגדיר 1 להתחלת המרת ADC ו- ADCF יספק מידע אודות המרת ADC מוצלחת. זה צריך להיות מוגדר 0 על ידי הקושחה כדי להתחיל את המרת ADC. המרשם הבא הוא ה- ADCCON1-
הרישום ADCCON1 משמש בעיקר להמרת ADC שמופעלת על ידי מקורות חיצוניים. עם זאת, עבור פעולות רגילות הקשורות לסקרים, ADCEN של הסיבית הראשונה נדרש להגדיר 1 להפעלת מעגלי ADC.
לאחר מכן, יש לשלוט על הקלט של ערוץ ADC במרשם AINDIDS בו ניתן לנתק את הכניסות הדיגיטליות.
ה- n מייצג את סיבית הערוץ (לדוגמה, יש לשלוט בערוץ AIN0 באמצעות הסיבית הראשונה P17DIDS של רישום AINDIDS). יש לאפשר את הקלט הדיגיטלי, אחרת הוא יקרא כ- 0. כל אלה הם ההגדרה הבסיסית של ה- ADC. כעת, ניתן להתחיל ניקוי ה- ADCF והגדרת ה- ADCS להמרת ADC. הערך המומר יהיה זמין במרשמים הבאים -
וגם
שני הרשמים הם 8 סיביות. מכיוון שה- ADC מספק נתונים של 12 סיביות, ה- ADCRH משמש כמלא (8 סיביות) וה- ADCRL משמש כחצי (4 סיביות).
תכנות N76E003 עבור ADC
קידוד עבור מודול ספציפי בכל פעם הוא עבודה קדחתנית, ולכן מסופקת ספריית LCD פשוטה אך עוצמתית שתועיל מאוד להתממשקות LCD בת 16x2 תווים עם N76E003. ספריית ה- 16x2 LCD זמינה במאגר Github שלנו, אותו ניתן להוריד מהקישור הבא.
הורד ספריית LCD בגודל 16x2 עבור Nuvoton N76E003
אנא הקדישו את הספרייה (על ידי שיבוט או הורדה) ופשוט כללו את הקבצים lcd.c ו- LCD.h בפרויקט Keil N76E003 שלכם לשילוב קל של 16x2 LCD ביישום או בפרויקט הרצוי. הספרייה תספק את הפונקציות שימושיות הבאות הקשורות לתצוגה -
- אתחל את ה- LCD.
- שלח פקודה ל- LCD.
- כתוב ל- LCD.
- שים מחרוזת ב- LCD (16 תווים).
- הדפס תו על ידי שליחת ערך hex.
- גלול בהודעות ארוכות עם יותר מ -16 תווים.
- הדפיסו מספרים שלמים ישירות לתוך ה- LCD.
הקידוד עבור ADC הוא פשוט. בפונקציית ההתקנה Enable_ADC_AIN0; משמש להגדרת ADC עבור קלט AIN0 . זה מוגדר בקובץ.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
לכן, השורה הנ"ל מגדירה את הסיכה כקלט ומגדירה את הרישום ADCCON0, ADCCON1 כמו גם את רישום AINDIDS . הפונקציה שלהלן תקרא את ה- ADC מהרישום ADCRH ו- ADCRL אך ברזולוציה של 12 סיביות.
לא חתום int ADC_read (בטל) { register uns חתום int adc_value = 0x0000; clr_ADCF; set_ADCS; בעוד (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; החזר את adc_value; }
הביט מועבר שמאלה 4 פעמים ואז מתווסף למשתנה הנתונים. בפונקציה הראשית, ה- ADC קורא את הנתונים ומודפס ישירות על הצג. עם זאת, המתח מומר גם באמצעות יחס או היחס בין מתח חלקי ערך הסיביות.
ADC של 12 סיביות יספק 4095 סיביות בקלט 5.0V. כך מחלקים את 5.0V / 4095 = 0.0012210012210012V
אז, ספרה אחת של שינויים בסיביות תהיה שווה לשינויים ב- 0.001V (בערך). זה נעשה בפונקציה הראשית המוצגת להלן.
בטל ראשי (בטל) { int adc_data; להכין(); lcd_com (0x01); בעוד (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("נתוני ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); מתח = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", מתח); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
הנתונים מומרים מערך סיביות למתח ובאמצעות פונקציית sprintf , הפלט מומר למחרוזת ונשלח ל LCD.
מהבהב את הקוד והפלט
הקוד החזיר 0 אזהרה ו- 0 שגיאות והבהב בשיטת ההברקה המוגדרת כברירת מחדל על ידי הקיל, אתה יכול לראות את ההודעה המהבהבת למטה. אם אתה חדש בקייל או Nuvoton, בדוק את תחילת העבודה עם מיקרו-בקר Nuvoton כדי להבין את היסודות וכיצד להעלות את הקוד.
הבנייה המחודשת החלה: פרויקט: טיימר בנה מחדש את היעד 'יעד 1' בהרכבת STARTUP.A51… הידור main.c… הידור lcd.c… הידור Delay.c… קישור… גודל תוכנית: data = 101.3 xdata = 0 קוד = 4162 יצירת קובץ hex מ- ". \ Objects \ timer"… ". \ Objects \ timer" - 0 שגיאות, 0 אזהרות. זמן בנייה חלף: 00:00:02 טען "G: \\ n76E003 \\ תצוגה \\ אובייקטים \\ טיימר" מחיקת פלאש בוצע. כתיבת פלאש בוצעה: 4162 בתים מתוכנתים. פלאש אימות בוצע: 4162 בתים אומתו. עומס ההבזק הסתיים בשעה 11:56:04
התמונה למטה מציגה את החומרה המחוברת למקור החשמל באמצעות מתאם DC והתצוגה מציגה את פלט המתח שנקבע על ידי הפוטנציומטר בצד ימין.
אם נפנה את הפוטנציומטר, גם המתח הניתן לסיכת ה- ADC ישתנה ונוכל להבחין בערך ה- ADC ובמתח האנלוגי המוצג על גבי ה- LCD. אתה יכול לבדוק את הסרטון למטה להדגמת העבודה המלאה של מדריך זה.
מקווה שנהנית מהמאמר ולמדת משהו שימושי, אם יש לך שאלות, השאיר אותן בסעיף ההערות למטה, או שתוכל להשתמש בפורומים שלנו כדי לפרסם שאלות טכניות אחרות.