ADC הוא הממיר אנלוגי לדיגיטלי, הממיר נתונים אנלוגיים לפורמט דיגיטלי; בדרך כלל הוא משמש להמרת מתח אנלוגי לפורמט דיגיטלי. לאות אנלוגי אין אינסוף ערכים כמו גל סינוס או הדיבור שלנו, ADC ממיר אותם לרמות או מצבים מסוימים, שניתן למדוד במספרים ככמות פיזית. במקום המרה רציפה, ADC ממיר נתונים מעת לעת, המכונה בדרך כלל קצב דגימה. מודם טלפוןהיא אחת הדוגמאות של ADC, המשמש לאינטרנט, הוא ממיר נתונים אנלוגיים לנתונים דיגיטליים, כך שהמחשב יכול להבין, מכיוון שהמחשב יכול להבין רק נתונים דיגיטליים. היתרון העיקרי בשימוש ב- ADC הוא שאפשר לבטל את הרעש שלנו מהאות המקורי והאות הדיגיטלי יכול לנוע בצורה יעילה יותר מאשר אנלוגי. זו הסיבה שאודיו דיגיטלי מאוד ברור בזמן ההאזנה.
נכון להיום יש הרבה מיקרו-בקרים בשוק שיש להם ADC מובנה עם ערוץ אחד או יותר. ועל ידי שימוש ברישום ADC שלהם אנו יכולים להתממשק. כאשר אנו בוחרים משפחת מיקרו-בקר 8051 לביצוע כל פרויקט, בו אנו זקוקים להמרת ADC, אנו משתמשים ב- ADC חיצוני. כמה שבבי ADC חיצוניים הם 0803,0804,0808,0809 ויש הרבה יותר. היום אנו מתכוונים לממשק ADC בן 8 ערוצים עם מיקרו-בקר AT89s52 כלומר ADC0808 / 0809.
רכיבים:
- מיקרו-בקר 8051 (AT89S52)
- ADC0808 / 0809
- LCD בגודל 16x2
- נגד (1k, 10k)
- POT (10k x4)
- קבל (10uf, 1000uf)
- אדום הוביל
- לוח לחם או PCB
- 7805
- 11.0592 גביש מגה-הרץ
- כּוֹחַ
- חוטי חיבור
ADC0808 / 0809:
ADC0808 / 0809 הוא מכשיר CMOS מונוליטי ולוגיקת בקרה תואם למעבד ובעל 28 פינים שנותן ערך 8 סיביות בפלט וסיכות כניסה ADC 8 ערוצים (IN0-IN7). הרזולוציה שלו היא 8 כך שהיא יכולה לקודד את הנתונים האנלוגיים לאחת מ- 256 הרמות (2 8). למכשיר זה יש שלוש שורות כתובת ערוצים, כלומר: ADDA, ADDB ו- ADDC לבחירת ערוץ. להלן תרשים הסיכות עבור ADC0808:
ADC0808 / 0809 דורש דופק שעון להמרה. אנו יכולים לספק אותו באמצעות מתנד או באמצעות מיקרו-בקר. בפרויקט זה יישמנו תדר באמצעות מיקרו-בקר.
אנו יכולים לבחור את כל ערוצי הקלט באמצעות שורות הכתובת, כמו שאנחנו יכולים לבחור את שורת הקלט IN0 על ידי שמירה על שלושת קווי הכתובת (ADDA, ADDB ו- ADDC) נמוכים. אם אנו רוצים לבחור ערוץ קלט IN2 אז עלינו לשמור על ADDA, ADDB נמוך ו- ADDC גבוה. לבחירת כל ערוצי הקלט האחרים, עיין בטבלה הנתונה:
שם ערוץ ADC |
הוסף PIN |
הוסף PIN |
קוד PIN של ADDA |
IN0 |
נָמוּך |
נָמוּך |
נָמוּך |
IN1 |
נָמוּך |
נָמוּך |
גָבוֹהַ |
IN2 |
נָמוּך |
גָבוֹהַ |
נָמוּך |
IN3 |
נָמוּך |
גָבוֹהַ |
גָבוֹהַ |
IN4 |
גָבוֹהַ |
נָמוּך |
נָמוּך |
IN5 |
גָבוֹהַ |
נָמוּך |
גָבוֹהַ |
IN6 |
גָבוֹהַ |
גָבוֹהַ |
נָמוּך |
IN7 |
גָבוֹהַ |
גָבוֹהַ |
גָבוֹהַ |
תיאור המעגל:
המעגל של "ממשק ADC0808 עם 8051" הוא מעט מורכב המכיל חוט חיבור נוסף לחיבור התקן זה לזה. במעגל זה השתמשנו בעיקר ב- AT89s52 כמיקרו-בקר 8051, ADC0808, פוטנציומטר ו- LCD.
LCD 16x2 מחובר למיקרו-בקרה 89s52 במצב 4 סיביות. סיכת בקרה RS, RW ו- En מחוברים ישירות לסיכה P2.0, GND ו- P2.2. וסיכת נתונים D4-D7 מחוברת לסיכות P2.4, P2.5, P2.6 ו- P2.7 של 89s52. סיכת פלט ADC0808 מחוברת ישירות ליציאה P1 של AT89s52. סיכות קו כתובת ADDA, ADDB, AADC מחוברות ב- P3.0, P3.1 ו- P3.2.
ALE (הפעלת תפס כתובת), SC (התחל המרה), EOC (סוף המרה), OE (הפעלת הפלט) וסיכות שעון מחוברות ב- P3.3, P3.4, P3.5, P3.6 ו- P3.7.
וכאן השתמשנו בשלושה פוטנציומטרים המחוברים בסיכה 26, 27 ו- 28 של ADC0808.
סוללת 9 וולט וווסת מתח 5 וולט כלומר 7805 משמשים להפעלת המעגל.
עובד:
בפרויקט זה ממשקנו שלושה ערוצים של ADC0808. ולהדגמה השתמשנו בשלושה נגדים משתנים. כאשר אנו מפעילים את המעגל אז המיקרו-בקר מאתחל את ה- LCD באמצעות פקודה מתאימה, נותן שעון לשבב ADC, בוחר ערוץ ADC באמצעות שורת כתובת ושולח אות המרה התחלתי ל- ADC. לאחר ADC זה קורא לראשונה קלט ערוץ ADC שנבחר ונותן את הפלט המומר שלו למיקרו-בקר. ואז המיקרו-בקר מראה את ערכו במיקום Ch1 ב- LCD. ואז המיקרו-בקר משנה ערוץ ADC באמצעות שורת כתובת. ואז ADC קורא את הערוץ שנבחר ושולח פלט למיקרו-בקר. ולהראות על LCD כמו שם Ch2. וכמו חכם לערוצים אחרים.
העבודה של ADC0808 דומה הרבה לעבודה של ADC0804. בכך, המיקרו-בקר הראשון מספק אות שעון של 500 קילו-הרץ ל- ADC0808, תוך שימוש בהפסקת הטיימר 0, מכיוון ש- ADC דורש אות שעון להפעלה. כעת המיקרו-בקר שולח אות ברמה נמוכה עד גבוהה לפין ALE (הסיכה הפעילה-גבוהה שלו) של ADC0808 כדי לאפשר את התפס בכתובת. ואז על ידי החלת אות ברמה גבוהה עד נמוכה על SC (התחל המרה), ADC מתחיל המרה אנלוגית לדיגיטלית. ואז המתן לסיכה של EOC (סוף המרה). כאשר EOC הולך נמוך, פירוש הדבר שהמרה אנלוגית לדיגיטלית הושלמה והנתונים מוכנים לשימוש. לאחר מכן, מיקרו-בקר מאפשר את קו הפלט על ידי החלת אות HIGH ל- LOW על סיכת OE של ADC0808.
ADC0808 נותן פלט המרה מדדי יחס בסיכות הפלט שלו. והנוסחה להמרה רדיומטרית ניתנת על ידי:
V in / (V fs -V z) = D x / (D max -D min)
איפה
V in הוא מתח כניסה להמרה
V fs הוא בקנה מידה מלא מתח
V z הוא אפס מתח
D x הוא נקודת נתונים שהוא מדד
D max הוא מגבלת נתונים מקסימלית
D min הוא מגבלת נתונים מינימאלית
הסבר לתכנית:
בתוכנית, קודם כל אנו כוללים חול קובץ כותרת מגדיר סיכות קלט ופלט משתנות ופלט עבור ADC ו- LCD.
# כוללים
נוצרה פונקציה ליצירת עיכוב (עיכוב חלל), יחד עם כמה פונקציות LCD כמו לאתחול LCD, הדפסת מחרוזת, לפקודות LCD וכו '. אתה יכול למצוא אותן בקלות בקוד. עיין במאמר זה לגבי ממשקי LCD עם 8051 ופונקציותיו.
אחרי זה בתוכנית הראשית יש לנו לאתחל את LCD ולהגדיר את סיכות EOC, ALE, EO, SC בהתאם.
ריק ראשי () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
ואז התוכנית קוראת את ה- ADC ומאחסנת את הפלט של ה- ADC במשתנה ואז שולחת אותו ל- LCD לאחר עשרוני להמרה ASCII, באמצעות פונקציות read_adc () ריקות (ad) (int i):
בטל read_adc () {number = 0; ale = 1; sc = 1; עיכוב (1); ale = 0; sc = 0; ואילו (eoc == 1); ואילו (eoc == 0); oe = 1; מספר = input_port; עיכוב (1); oe = 0; } בטל adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();