Το 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)
- ΔΟΧΕΙΟ (10k x4)
- Πυκνωτής (10uf, 1000uf)
- Κόκκινο led
- Πίνακας ψωμιού ή PCB
- 7805
- 11,0592 MHz κρύσταλλο
- Εξουσία
- Σύνδεση καλωδίων
ADC0808 / 0809:
Το ADC0808 / 0809 είναι μια μονολιθική λογική ελέγχου συμβατή με συσκευή και μικροεπεξεργαστή και έχει 28 ακίδες που δίνουν τιμή 8-bit στην έξοδο και καρφίτσες εισόδου 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 ADDB |
PIN ADDA |
ΙΝ0 |
ΧΑΜΗΛΟΣ |
ΧΑΜΗΛΟΣ |
ΧΑΜΗΛΟΣ |
ΣΕ 1 |
ΧΑΜΗΛΟΣ |
ΧΑΜΗΛΟΣ |
ΥΨΗΛΟΣ |
ΙΝ2 |
ΧΑΜΗΛΟΣ |
ΥΨΗΛΟΣ |
ΧΑΜΗΛΟΣ |
ΙΝ3 |
ΧΑΜΗΛΟΣ |
ΥΨΗΛΟΣ |
ΥΨΗΛΟΣ |
IN4 |
ΥΨΗΛΟΣ |
ΧΑΜΗΛΟΣ |
ΧΑΜΗΛΟΣ |
IN5 |
ΥΨΗΛΟΣ |
ΧΑΜΗΛΟΣ |
ΥΨΗΛΟΣ |
IN6 |
ΥΨΗΛΟΣ |
ΥΨΗΛΟΣ |
ΧΑΜΗΛΟΣ |
IN7 |
ΥΨΗΛΟΣ |
ΥΨΗΛΟΣ |
ΥΨΗΛΟΣ |
Περιγραφή κυκλώματος:
Το κύκλωμα του "Interfacing ADC0808 with 8051" είναι λίγο περίπλοκο που περιέχει περισσότερα καλώδια σύνδεσης για τη σύνδεση της συσκευής μεταξύ τους. Σε αυτό το κύκλωμα χρησιμοποιήσαμε κυρίως AT89s52 ως 8051 μικροελεγκτή, ADC0808, Ποτενσιόμετρο και LCD.
Μια οθόνη LCD 16x2 συνδέεται με μικροελεγκτή 89s52 σε λειτουργία 4-bit. Οι πείροι ελέγχου 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 volt και ρυθμιστής τάσης 5 volt, συγκεκριμένα 7805.
Εργαζόμενος:
Σε αυτό το έργο έχουμε διασυνδέσει τρία κανάλια του ADC0808. Και για επίδειξη χρησιμοποιήσαμε τρεις μεταβλητές αντιστάσεις. Όταν τροφοδοτούμε το κύκλωμα, τότε ο μικροελεγκτής αρχικοποιεί την οθόνη LCD χρησιμοποιώντας την κατάλληλη εντολή, δίνει ρολόι στο τσιπ ADC, επιλέγει κανάλι ADC χρησιμοποιώντας τη γραμμή διευθύνσεων και στέλνει σήμα μετατροπής έναρξης στο ADC. Μετά από αυτό, το ADC διαβάζει πρώτα την επιλεγμένη είσοδο καναλιού ADC και δίνει την έξοδο που έχει μετατραπεί σε μικροελεγκτή. Στη συνέχεια, ο μικροελεγκτής δείχνει την τιμή του στη θέση Ch1 σε LCD. Και έπειτα ο μικροελεγκτής αλλάζει το κανάλι ADC χρησιμοποιώντας τη γραμμή διευθύνσεων. Και έπειτα το ADC διαβάζει το επιλεγμένο κανάλι και στέλνει την έξοδο στον μικροελεγκτή. Και εμφάνιση στην οθόνη LCD ως όνομα Ch2. Και σαν σοφό για άλλα κανάλια.
Η εργασία του ADC0808 μοιάζει πολύ με τη λειτουργία του ADC0804. Σε αυτό, ο πρώτος μικροελεγκτής παρέχει σήμα ρολογιού 500 KHz στο ADC0808, χρησιμοποιώντας το χρονόμετρο 0 διακοπή, καθώς το ADC απαιτεί σήμα ρολογιού για να λειτουργήσει. Τώρα, ο μικροελεγκτής στέλνει σήμα χαμηλού έως υψηλού επιπέδου στον ακροδέκτη ALE (τον ακροδέκτη ενεργού υψηλού) του ADC0808 για να ενεργοποιήσει το μάνδαλο στη διεύθυνση. Στη συνέχεια, εφαρμόζοντας σήμα HIGH σε LOW Level σε SC (Έναρξη μετατροπής), το ADC ξεκινά την αναλογική σε ψηφιακή μετατροπή. Και, στη συνέχεια, περιμένετε έως ότου η καρφίτσα EOC (Τέλος μετατροπής) πάει ΧΑΜΗΛΗ. Όταν το EOC πηγαίνει LOW, αυτό σημαίνει ότι η αναλογική σε ψηφιακή μετατροπή έχει ολοκληρωθεί και τα δεδομένα είναι έτοιμα για χρήση. Μετά από αυτό, ο μικροελεγκτής ενεργοποιεί τη γραμμή εξόδου εφαρμόζοντας ένα σήμα HIGH to 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 είναι Ελάχιστο όριο δεδομένων
Επεξήγηση προγράμματος:
Στο πρόγραμμα, πρώτα απ 'όλα συμπεριλαμβάνουμε το αρχείο header sand ορίζει μεταβλητές και καρφίτσες εισόδου και εξόδου για ADC και LCD.
# περιλαμβάνω
Η λειτουργία δημιουργίας καθυστέρησης έχει δημιουργηθεί (καθυστέρηση κενού), μαζί με ορισμένες λειτουργίες LCD όπως για την αρχικοποίηση LCD, την εκτύπωση της συμβολοσειράς, για εντολές LCD κ.λπ. Μπορείτε εύκολα να τις βρείτε στον κώδικα. Ανατρέξτε σε αυτό το άρθρο για διασύνδεση LCD με 8051 και τις λειτουργίες του.
Μετά από αυτό στο κύριο πρόγραμμα έχουμε αρχικοποιήσει την οθόνη LCD και ρυθμίζουμε τις καρφίτσες EOC, ALE, EO, SC ανάλογα.
void main () {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, χρησιμοποιώντας συναρτήσεις void read_adc () και void adc (int i)
άκυρο read_adc () {number = 0; ale = 1; sc = 1; καθυστέρηση (1) ale = 0; sc = 0; ενώ (eoc == 1); ενώ (eoc == 0); oe = 1; αριθμός = είσοδος_port; καθυστέρηση (1) oe = 0; } void adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();