- Τι είναι το ADC;
- ADC σε ARM7-LPC2148
- ADC καρφίτσες στο ARM7-LPC2148
- Μητρώα ADC στο ARM7-LPC2148
- Εγγραφή ADxCR στο LPC2148
- ADxGDR: Παγκόσμιο μητρώο δεδομένων ADC
- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Προγραμματισμός ARM7-LPC2148 για ADC
Στον κόσμο των ηλεκτρονικών υπάρχουν πολλές ποικιλίες αναλογικών αισθητήρων στην αγορά που χρησιμοποιούνται για τη μέτρηση της θερμοκρασίας, της ταχύτητας, της μετατόπισης, της πίεσης κ.λπ. Οι αναλογικοί αισθητήρες χρησιμοποιούνται για την παραγωγή εξόδου που αλλάζουν συνεχώς με την πάροδο του χρόνου. Αυτά τα σήματα από αναλογικούς αισθητήρες τείνουν να έχουν πολύ μικρή αξία από λίγα μικρο-βολτ (uV) έως αρκετά χιλιοστά-βολτ (mV), οπότε απαιτείται κάποια μορφή ενίσχυσης. Για τη χρήση αυτών των αναλογικών σημάτων στο μικροελεγκτή πρέπει να μετατρέψουμε το αναλογικό σήμα σε ψηφιακό σήμα καθώς ο μικροελεγκτής κατανοεί και επεξεργάζεται μόνο ψηφιακά σήματα. Έτσι, το μεγαλύτερο μέρος του μικροελεγκτή έχει ένα ενσωματωμένο σημαντικό χαρακτηριστικό που ονομάζεται ADC (Αναλογικός σε Ψηφιακός μετατροπέας). Ο μικροελεγκτής ARM7-LPC2148 διαθέτει επίσης δυνατότητα ADC.
Σε αυτό το σεμινάριο θα δούμε πώς να χρησιμοποιούμε το ADC στο ARM7-LPC2148 παρέχοντας μια μεταβαλλόμενη τάση σε έναν αναλογικό πείρο και την εμφανίζουμε στην οθόνη LCD 16x2 μετά από αναλογική σε ψηφιακή μετατροπή. Ας ξεκινήσουμε λοιπόν με μια σύντομη εισαγωγή για το ADC.
Τι είναι το ADC;
Όπως αναφέρθηκε προηγουμένως, το ADC σημαίνει αναλογική σε ψηφιακή μετατροπή και χρησιμοποιείται για τη μετατροπή αναλογικών τιμών από πραγματικό κόσμο σε ψηφιακές τιμές όπως 1 και 0. Λοιπόν, ποιες είναι αυτές οι αναλογικές τιμές; Αυτές είναι αυτές που βλέπουμε στην καθημερινή μας ζωή, όπως θερμοκρασία, ταχύτητα, φωτεινότητα κλπ. Αυτές οι παράμετροι μετρώνται ως αναλογικές τάσεις από τους αντίστοιχους αισθητήρες και στη συνέχεια αυτές οι αναλογικές τιμές μετατρέπονται σε ψηφιακές τιμές για μικροελεγκτές.
Ας υποθέσουμε ότι το εύρος ADC μας είναι από 0V έως 3.3V και έχουμε ADC 10-bit, αυτό σημαίνει ότι η τάση εισόδου μας 0-3,3 Volts θα χωριστεί σε 1024 επίπεδα διακριτών αναλογικών τιμών (2 10 = 1024). Σημασία 1024 είναι η ανάλυση για ADC 10-bit, παρόμοια για ανάλυση ADC 8-bit θα είναι 512 (28) και για ανάλυση ADC 16-bit θα είναι 65.536 (216). Το LPC2148 έχει την ανάλυση 10 bit ADC.
Με αυτό εάν η πραγματική τάση εισόδου είναι 0V, τότε το ADC του MCU θα το διαβάσει ως 0 και αν είναι 3,3V, το MCU θα διαβάσει 1024 και αν κάπου ενδιάμεσα όπως 1,65v τότε το MCU θα διαβάσει 512. Μπορούμε να χρησιμοποιήσουμε τα παρακάτω τύπους για τον υπολογισμό της ψηφιακής τιμής που θα διαβαστεί από το MCU με βάση την ανάλυση της τάσης ADC και λειτουργίας.
(Ανάλυση ADC / Τάση λειτουργίας) = (Ψηφιακή τιμή ADC / Πραγματική τιμή τάσης)
Όπως για παράδειγμα αν η τάση αναφοράς είναι 3v:
Εξηγήσαμε λεπτομερώς το ADC σε προηγούμενο άρθρο.
ADC σε ARM7-LPC2148
- Το LPC2148 περιέχει δύο αναλογικούς σε ψηφιακούς μετατροπείς.
- Αυτοί οι μετατροπείς είναι μονόδρομοι διαδοχικοί 10-bit αναλογικοί προς ψηφιακοί μετατροπείς.
- Ενώ το ADC0 έχει έξι κανάλια, το ADC1 έχει οκτώ κανάλια.
- Επομένως, ο συνολικός αριθμός των διαθέσιμων εισόδων ADC για το LPC2148 είναι 14.
- Μετατρέπει την τάση εισόδου μόνο στην περιοχή (0 έως 3.3V). Δεν πρέπει να υπερβαίνει τα 3.3V την αναφορά τάσης. Καθώς θα καταστρέψει το IC και θα παρέχει επίσης αβέβαιες τιμές.
Μερικά σημαντικά χαρακτηριστικά του ADC στο LPC2148
- Κάθε μετατροπέας μπορεί να εκτελεί περισσότερα από 400000 δείγματα 10 bit ανά δευτερόλεπτο.
- Κάθε αναλογική είσοδος έχει έναν ειδικό καταχωρητή αποτελεσμάτων για τη μείωση των γενικών διακοπών.
- Λειτουργία μετατροπής ριπής για μονές ή πολλαπλές εισόδους.
- Προαιρετική μετατροπή κατά τη μετάβαση στο σήμα εισόδου pin ή timer match.
- Εντολή Global Start και για τους δύο μετατροπείς.
Ελέγξτε επίσης πώς να χρησιμοποιήσετε το ADC σε άλλους μικροελεγκτές:
- Πώς να χρησιμοποιήσετε το ADC στο Arduino Uno;
- Διασύνδεση ADC0808 με 8051 μικροελεγκτή
- Χρήση της μονάδας ADC του μικροελεγκτή PIC
- Εκμάθηση Raspberry Pi ADC
- Πώς να χρησιμοποιήσετε το ADC στο MSP430G2 - Μέτρηση αναλογικής τάσης
- Πώς να χρησιμοποιήσετε το ADC στο STM32F103C8
ADC καρφίτσες στο ARM7-LPC2148
Όπως ειπώθηκε στο earliar, στο ARM7-LPC2148 υπάρχουν δύο κανάλια ADC0 με 6 αναλογικές ακίδες εισόδου & ADC1 με 8 αναλογικές εισόδους εισόδου. Έτσι συνολικά υπάρχουν 14 ακίδες για αναλογικές εισόδους. Το παρακάτω διάγραμμα δείχνει τις ακίδες που είναι διαθέσιμες για αναλογική είσοδο.
Δεδομένου ότι οι ακίδες εισόδου ADC είναι πολυπλέκτες με άλλες ακίδες GPIO. Πρέπει να τα ενεργοποιήσουμε διαμορφώνοντας το μητρώο PINSEL για να επιλέξουμε τη λειτουργία ADC.
Ο παρακάτω πίνακας δείχνει τις καρφίτσες του ADC και το σεβαστό κανάλι ADC στο LPC2148. Το AD0 είναι κανάλι 0 και το AD1 είναι κανάλι 1
Καρφίτσα LPC2148 |
Αριθμός καναλιού ADC |
P0.28 |
AD0.1 |
P0.29 |
AD0.2 |
P0.30 |
AD0.3 |
P0.25 |
AD0.4 |
Σ0.4 |
AD0.6 |
Σ0.5 |
AD0.7 |
Σ0.6 |
AD1.0 |
P0.8 |
AD1.1 |
P0.10 |
AD1.2 |
Σ0.12 |
AD1.3 |
P0.13 |
AD1.4 |
P0.15 |
AD1.5 |
P0.21 |
AD1.6 |
P0.22 |
AD1.7 |
Μητρώα ADC στο ARM7-LPC2148
Οι καταχωρητές χρησιμοποιούνται στον προγραμματισμό για τη χρήση της δυνατότητας μετατροπής A / D στο LPC2148.
Ακολουθεί μια λίστα καταχωρητών που χρησιμοποιούνται στο LPC2148 για μετατροπή A / D
1. ADCR: Αναλογικό σε ψηφιακό μητρώο ελέγχου
Χρήση: Αυτός ο καταχωρητής χρησιμοποιείται για τη διαμόρφωση του μετατροπέα A / D στο LPC2148
2. ADGDR: Αναλογικό σε ψηφιακό παγκόσμιο μητρώο δεδομένων
Χρήση: Αυτός ο καταχωρητής έχει DONE bit για μετατροπέα A / D και το ΑΠΟΤΕΛΕΣΜΑ της μετατροπής αποθηκεύεται εδώ.
3. ADINTERN: Αναλογική σε ψηφιακή διακοπή Ενεργοποίηση μητρώου
Χρήση: Πρόκειται για ένα μητρώο Interrupt Enable.
4. ADDR0 - ADDR7: Μητρώο δεδομένων αναλογικού σε ψηφιακό κανάλι
Χρήση: Αυτός ο καταχωρητής περιέχει την τιμή A / D για τα αντίστοιχα κανάλια.
5. ADSTAT: Αναλογικό σε ψηφιακό μητρώο κατάστασης.
Χρήση: Αυτός ο καταχωρητής περιέχει τη σημαία DONE για το αντίστοιχο κανάλι ADC και επίσης τη σημαία OVERRUN για το αντίστοιχο κανάλι ADC.
Σε αυτό το σεμινάριο θα χρησιμοποιούμε μόνο καταχωρητές ADCR & ADGDR μόνο. Ας δούμε αναλυτικά
Εγγραφή ADxCR στο LPC2148
AD0CR & AD1CR για το κανάλι 0 και το κανάλι 1 αντίστοιχα. Είναι ένα μητρώο 32-bit. Ο παρακάτω πίνακας δείχνει τα πεδία bit για το μητρώο ADCR.
31:28 |
27 |
26:24 |
23:22 |
21 |
20 |
19:17 |
16 |
15: 8 |
7: 0 |
ΚΑΤΟΧΥΡΩΜΕΝΑ |
ΑΚΡΗ |
ΑΡΧΗ |
ΚΑΤΟΧΥΡΩΜΕΝΑ |
PDN |
ΚΑΤΟΧΥΡΩΜΕΝΑ |
CLKS |
ΕΚΡΗΞΗ |
CLCKDIV |
ΣΕΛ |
Ας δούμε πώς να διαμορφώσετε μεμονωμένους καταχωρητές
1. SEL: Τα bit από (0 έως 7) χρησιμοποιούνται για την επιλογή του καναλιού για μετατροπή ADC. Διατίθεται ένα bit για κάθε κανάλι. Για παράδειγμα, η ρύθμιση του Bit-0 θα κάνει το ADC στο δείγμα AD0.1 για μετατροπή. Και η ρύθμιση του bit -1 θα κάνει AD0.1. Ομοίως, η ρύθμιση bit-7 θα κάνει τη μετατροπή για AD0.7. Σημαντικό βήμα είναι ότι έχουμε PINSEL σύμφωνα με τη θύρα που χρησιμοποιούμε για παράδειγμα PINSEL0 για PORT0 στο PLC2148.
2. CLCKDIV: Τα bit από (8 έως 15) είναι για το Clock Divisor. Εδώ το ρολόι APB (ARM Peripheral Bus clock) διαιρείται με αυτήν την τιμή συν ένα για την παραγωγή του ρολογιού που απαιτείται για τον μετατροπέα A / D, ο οποίος θα πρέπει να είναι μικρότερος ή ίσος με 4,5 MHz καθώς χρησιμοποιούμε διαδοχική μέθοδο προσέγγισης στο LPC2148.
3. BURST: Το bit 16 χρησιμοποιείται για τη λειτουργία μετατροπής BURST.
Ρύθμιση 1: Το ADC θα κάνει τη μετατροπή για όλα τα κανάλια που είναι επιλεγμένα σε SEL bit.
Ρύθμιση 0: Θα απενεργοποιήσει τη λειτουργία μετατροπής BURST.
4. CLCKS: Τα bit από (17 έως 19) τρία bit χρησιμοποιούνται για την επιλογή ανάλυσης και τον αριθμό των ρολογιών για μετατροπή A / D σε λειτουργία έκρηξης καθώς είναι συνεχής λειτουργία μετατροπής A / D.
Αξία για bit (17 έως 19) |
Bits (Ακρίβεια) |
Αριθμός ρολογιού |
000 |
10 |
11 |
001 |
9 |
10 |
010 |
8 |
9 |
011 |
7 |
8 |
100 |
6 |
7 |
101 |
5 |
6 |
110 |
4 |
5 |
111 |
3 |
4 |
5. PDN: Το bit 21 προορίζεται για την επιλογή Λειτουργία απενεργοποίησης ADC στο LPC2148.
- Το A / D βρίσκεται σε λειτουργία PDN.
- Το A / D είναι σε λειτουργία
6. ΕΚΚΙΝΗΣΗ: Τα bit από (24 έως 26) είναι για το START. Όταν η λειτουργία μετατροπής BURST είναι OFF από τη ρύθμιση 0, αυτά τα bit START είναι χρήσιμα για το πότε να ξεκινήσετε τη μετατροπή A / D. Το START χρησιμοποιείται επίσης για ελεγχόμενη άκρη μετατροπή. Αυτό συμβαίνει όταν υπάρχει μια είσοδος σε CAP ή MAT pin του LPC2148 το A / D αρχίζει να μετατρέπει. Ας δούμε τον παρακάτω πίνακα
Τιμή για Bits (24 έως 26) |
Pin του LPC2148 |
Λειτουργία του ADC |
000 |
Χρησιμοποιείται για τη ρύθμιση ADC σε λειτουργία PDN Χωρίς έναρξη |
|
001 |
Ξεκινήστε τη μετατροπή A / D |
|
010 |
CAP0.2 / MAT0.2 |
Ξεκινήστε τη μετατροπή A / D στο EDGE που έχει επιλεγεί στον ακροδέκτη 27 (Αύξηση ή πτώση) σε ακίδες CAP / MAT του LPC2148 |
011 |
CAP0.0 / MAT0.0 |
|
100 |
MAT0.1 |
|
101 |
MAT0.3 |
|
110 |
MAT1.0 |
|
111 |
MAT1.1 |
7. EDGE: Το 27 th δυαδικών ψηφίων είναι για EDGE χρησιμοποιείται μόνο όταν το bit START περιέχει 010-111. Ξεκινά τη μετατροπή όταν υπάρχει είσοδος CAP ή MAT που μπορείτε να δείτε στον παραπάνω πίνακα για αυτό.
Ρύθμιση : 0 - On Falling Edge
1 - On Rising Edge
ADxGDR: Παγκόσμιο μητρώο δεδομένων ADC
AD0GDR & AD1GDR για κανάλι ADC 0 & κανάλι ADC 1 αντίστοιχα.
Είναι ένας καταχωρητής 32-bit που περιέχει το ΑΠΟΤΕΛΕΣΜΑ της μετατροπής A / D και επίσης το DONE bit που δείχνει ότι η μετατροπή A / D έχει γίνει. Ο παρακάτω πίνακας δείχνει τα πεδία bit για το μητρώο ADGDR.
31 |
30 |
29:27 |
26:24 |
23:16 |
15: 6 |
5: 0 |
ΕΓΙΝΕ |
ΥΠΕΡΒΑΙΝΩ |
ΚΑΤΟΧΥΡΩΜΕΝΑ |
CHN |
ΚΑΤΟΧΥΡΩΜΕΝΑ |
ΑΠΟΤΕΛΕΣΜΑ |
ΚΑΤΟΧΥΡΩΜΕΝΑ |
1. ΑΠΟΤΕΛΕΣΜΑ: Αυτά τα bits (6 έως 15) περιέχουν το αποτέλεσμα μετατροπής A / D για το επιλεγμένο κανάλι στον καταχωρητή ADCR SEL. Η τιμή διαβάζεται μόνο μετά την ολοκλήρωση της μετατροπής A / D και αυτό υποδηλώνεται με DONE bit.
ΠΑΡΑΔΕΙΓΜΑ: Για ένα αποτέλεσμα ADC 10-bit, η αποθηκευμένη τιμή κυμαίνεται από (0 έως 1023).
2. CHANNEL: Αυτά τα bits 24 έως 26 περιέχουν τον αριθμό καναλιού για τον οποίο έχει γίνει η μετατροπή A / D. Η μετατροπή της ψηφιακής τιμής υπάρχει σε bit ΑΠΟΤΕΛΕΣΜΑ.
ΠΑΡΑΔΕΙΓΜΑ: Το 000 είναι για το κανάλι ADC 0 και το 001 είναι για το κανάλι ADC 1, κ.λπ.
3. υστέρησης: Η 30 th bit για υπέρβαση είναι χρησιμοποιείται σε λειτουργία ριπής. Όταν ορίσετε 1, η προηγούμενη τιμή ADC που έχει μετατραπεί αντικαθίσταται από την τιμή ADC που μετατράπηκε πρόσφατα. Όταν διαβάζεται ο καταχωρητής, διαγράφεται το bit over.
4. ΤΕΛΟΣ: Το 31ο bit είναι για DONE bit.
Σύνολο 1: Όταν ολοκληρωθεί η μετατροπή A / D.
Σύνολο 0: Όταν διαβάζεται το μητρώο και γράφεται ADCR.
Έχουμε δει για τα σημαντικά μητρώα που χρησιμοποιούνται στο ADC στο LPC2148. Τώρα ας αρχίσουμε να χρησιμοποιούμε το ADC στο ARM7.
Απαιτούμενα στοιχεία
Σκεύη, εξαρτήματα
- Μικροελεγκτής ARM7-LPC2148
- Ρυθμιστής τάσης 3.3V IC
- Ρυθμιστής τάσης 5V IC
- Ποτενσιόμετρο 10K - 2 Αριθ
- LED (οποιοδήποτε χρώμα)
- Οθόνη LCD (16X2)
- Μπαταρία 9V
- Ψωμί
- Σύνδεση καλωδίων
Λογισμικό
- Keil uVision5
- Εργαλείο Magic Flash
Διάγραμμα κυκλώματος
Ο παρακάτω πίνακας δείχνει τις συνδέσεις κυκλώματος μεταξύ LCD & ARM7-LPC2148.
ARM7-LPC2148 |
LCD (16x2) |
Σ0.4 |
RS (Επιλογή εγγραφής) |
Σ0.6 |
Ε (Ενεργοποίηση) |
Σ0.12 |
D4 (Καρφίτσα δεδομένων 4) |
P0.13 |
D5 (Καρφίτσα δεδομένων 5) |
P0.14 |
D6 (Καρφίτσα δεδομένων 6) |
P0.15 |
D7 (Καρφίτσα δεδομένων 7) |
Μάθετε περισσότερα σχετικά με τη χρήση LCD με ARM 7 - LPC2148.
ΣΗΜΑΝΤΙΚΟ: Εδώ χρησιμοποιούμε δύο IC ρυθμιστή τάσης ένα για οθόνη LCD 5V και ένα άλλο 3.3V για αναλογική είσοδο που μπορεί να ποικίλει ανάλογα με το ποτενσιόμετρο.
Συνδέσεις μεταξύ 5V Voltage Regulator με LCD & ARM7 Stick
Ρυθμιστής τάσης 5V IC |
Λειτουργία καρφιτσών |
LCD & ARM-7 LPC2148 |
1. Αριστερή καρφίτσα |
+ Ve από την είσοδο μπαταρίας 9V |
ΝΚ |
2. Κεντρική καρφίτσα |
- Από μπαταρία |
VSS, R / W, K της LCD GND του ARM7 |
3. Δεξιά καρφίτσα |
Ρυθμιζόμενη έξοδος + 5V |
VDD, A LCD + 5V του ARM7 |
Ποτενσιόμετρο με LCD
Ένα ποτενσιόμετρο χρησιμοποιείται για να μεταβάλλει την αντίθεση της οθόνης LCD. Ένα δοχείο έχει τρεις ακίδες, ο αριστερός πείρος (1) είναι συνδεδεμένος στο + 5V και το κέντρο (2) με VEE ή V0 της μονάδας LCD και ο δεξί πείρος (3) συνδέεται με το GND. Μπορούμε να ρυθμίσουμε την αντίθεση περιστρέφοντας το κουμπί.
Σύνδεση μεταξύ LPC2148 & ποτενσιόμετρου με ρυθμιστή τάσης 3.3V
Ρυθμιστής τάσης 3.3V IC |
Λειτουργία καρφιτσών |
ARM-7 LPC2148 |
1. Αριστερή καρφίτσα |
- Από μπαταρία |
Καρφίτσα GND |
2. Κεντρική καρφίτσα |
Ρυθμιζόμενη έξοδος 3.3V |
Για είσοδο ποτενσιόμετρου και έξοδο ποτενσιόμετρου σε P0.28 |
3. Δεξιά καρφίτσα |
+ Ve από την είσοδο μπαταρίας 9V |
ΝΚ |
Προγραμματισμός ARM7-LPC2148 για ADC
Για να προγραμματίσουμε το ARM7-LPC2148 χρειαζόμαστε keil uVision & Flash Magic εργαλείο. Χρησιμοποιούμε καλώδιο USB για να προγραμματίσουμε το ARM7 Stick μέσω θύρας micro USB. Γράφουμε κώδικα χρησιμοποιώντας το Keil και δημιουργούμε ένα hex αρχείο και στη συνέχεια το αρχείο HEX αναβοσβήνει στο ARM7 stick χρησιμοποιώντας το Flash Magic. Για να μάθετε περισσότερα σχετικά με την εγκατάσταση του keil uVision και του Flash Magic και πώς να τα χρησιμοποιήσετε, ακολουθήστε τον σύνδεσμο Ξεκινώντας με τον μικροελεγκτή ARM7 LPC2148 και προγραμματίστε τον χρησιμοποιώντας το Keil uVision.
Σε αυτό το σεμινάριο μετατρέπουμε την αναλογική τάση εισόδου (0 έως 3,3V) σε ψηφιακή τιμή χρησιμοποιώντας ADC στο LPC2148 και εμφανίζουμε την αναλογική τάση στην οθόνη LCD (16x2). Ένα ποτενσιόμετρο θα χρησιμοποιηθεί για τη μεταβολή της αναλογικής τάσης εισόδου.
Για να μάθετε περισσότερα σχετικά με τη διασύνδεση LCD με λειτουργία 4-bit ARM7-LPC2148, ακολουθήστε αυτόν τον σύνδεσμο.
Ο πλήρης κωδικός για τη χρήση του ADC με ARM 7 δίνεται στο τέλος αυτού του σεμιναρίου, εδώ εξηγούμε μερικά μέρη του.
Βήματα που εμπλέκονται στον προγραμματισμό LPC2148-ADC
1. Ο καταχωρητής PINSEL χρησιμοποιείται για να επιλέξετε τον ακροδέκτη θύρας του LPC2148 και τη λειτουργία ADC ως αναλογική είσοδο.
PINSEL1 = 0x01000000; // Επιλέξτε P0.28 ως AD0.1
2. Επιλέξτε την ακρίβεια ρολογιού και bit για μετατροπή γράφοντας την τιμή στο ADxCR (ADC control register).
AD0CR = 0x00200402; // Ορίζει τη λειτουργία ADC ως 10-bit / 11 CLK για μετατροπή (000)
3. Ξεκινήστε τη μετατροπή γράφοντας την τιμή σε START bit στο ADxCR.
Εδώ έχω γράψει 24 ου κομμάτι της AD0CR μητρώο.
AD0CR = AD0CR - (1 << 24);
4. Τώρα πρέπει να ελέγξουμε το DONE bit (31th) του αντίστοιχου ADxDRy (ADC data register) καθώς αλλάζει από 0 σε 1. Επομένως, χρησιμοποιούμε το while loop για να ελέγξουμε συνεχώς εάν γίνεται μετατροπή στο 31ο bit του καταχωρητή δεδομένων.
ενώ (! (AD0DR1 & 0x80000000));
5. Αφού το bit ολοκληρώθηκε στο 1, η μετατροπή είναι επιτυχής, στη συνέχεια διαβάζουμε το αποτέλεσμα από τον ίδιο καταχωρητή δεδομένων ADC AD0DR1 και αποθηκεύουμε την τιμή σε μια μεταβλητή.
adcvalue = AD0DR1;
Στη συνέχεια χρησιμοποιούμε έναν τύπο για να μετατρέψουμε την ψηφιακή τιμή σε τάση και να αποθηκεύσουμε σε μια μεταβλητή που ονομάζεται τάση .
τάση = ((adcvalue / 1023.0) * 3.3);
5. Οι ακόλουθες γραμμές χρησιμοποιούνται για την εμφάνιση ψηφιακών τιμών (0 έως 1023) μετά την αναλογική σε ψηφιακή μετατροπή.
adc = adcvalue; sprintf (displayadc, "adcvalue =% f", adc); LCD_DISPLAY (displayadc). // Εμφάνιση τιμής ADC (0 έως 1023)
6. Οι ακόλουθες γραμμές χρησιμοποιούνται για την εμφάνιση αναλογικής τάσης εισόδου (0 έως 3,3V) μετά την αναλογική σε ψηφιακή μετατροπή και μετά το βήμα 5.
LCD_SEND (0xC0); sprintf (voltvalue, "Voltage =%. 2f V", τάση); LCD_DISPLAY (τιμή τάσης); // Οθόνη (αναλογική τάση εισόδου)
7. Τώρα πρέπει να εμφανίσουμε την τάση εισόδου και τις ψηφιακές τιμές στην οθόνη LCD. Πριν από αυτό πρέπει να προετοιμάσουμε την οθόνη LCD και να χρησιμοποιήσουμε τις κατάλληλες εντολές για την αποστολή μηνυμάτων προς εμφάνιση.
Ο παρακάτω κώδικας χρησιμοποιείται για την προετοιμασία της οθόνης LCD
void LCD_INITILIZE (void) // Λειτουργία για την προετοιμασία της οθόνης LCD { IO0DIR = 0x0000FFF0; // Ορίζει τις καρφίτσες P0.12, P0.13, P0.14, P0.15, P0.4, P0.6 ως OUTPUT delay_ms (20); LCD_SEND (0x02); // Αρχικοποιήστε το lcd σε λειτουργία 4-bit LCD_SEND (0x28). // 2 γραμμές (16X2) LCD_SEND (0x0C); // Εμφάνιση στο δρομέα εκτός LCD_SEND (0x06). // Αυτόματη αύξηση κέρσορα LCD_SEND (0x01). // Οθόνη καθαρή οθόνη LCD_SEND (0x80). // Πρώτη θέση πρώτης γραμμής }
Ο παρακάτω κώδικας χρησιμοποιείται για την εμφάνιση των τιμών στην οθόνη LCD
void LCD_DISPLAY (char * MSG) // Λειτουργία να εκτυπώσει τους χαρακτήρες που αποστέλλονται έναν προς έναν { uint8_t i = 0? ενώ (msg! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0) << 8)); // Στέλνει Άνω μύτη IO0SET = 0x00000050; // RS HIGH & ENABLE HIGH για εκτύπωση δεδομένων IO0CLR = 0x00000020; // RW LOW Λειτουργία εγγραφής delay_ms (2); IO0CLR = 0x00000040; // EN = 0, RS και RW αμετάβλητα (δηλ. RS = 1, RW = 0) delay_ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0x0F) << 12)); // Στέλνει χαμηλότερη μύτη IO0SET = 0x00000050; // RS & EN HIGH IO0CLR = 0x00000020; καθυστέρηση_ms (2); IO0CLR = 0x00000040; καθυστέρηση_ms (5); i ++; } }
Η παρακάτω λειτουργία χρησιμοποιείται για τη δημιουργία καθυστέρησης
void delay_ms (uint16_t j) // Λειτουργία καθυστέρησης σε χιλιοστά του δευτερολέπτου { uint16_t x, i; για (i = 0; i
Ο πλήρης κώδικας με βίντεο επίδειξης δίνεται παρακάτω.