Η οθόνη είναι ένα πολύ σημαντικό μέρος οποιασδήποτε εφαρμογής ενσωματωμένου συστήματος, καθώς βοηθά τους χρήστες να γνωρίζουν την κατάσταση του συστήματος και επίσης δείχνει την έξοδο ή οποιοδήποτε προειδοποιητικό μήνυμα που δημιουργείται από το σύστημα. Υπάρχουν πολλοί τύποι οθονών που χρησιμοποιούνται στα ηλεκτρονικά όπως οθόνη 7 τμημάτων, οθόνη LCD, οθόνη αφής TFT, οθόνη LED κ.λπ.
Έχουμε ήδη διασυνδέσει LCD 16x2 με ARM7-LPC2148 στο προηγούμενο σεμινάριό μας. Σήμερα σε αυτό το σεμινάριο θα διεπαφή μια οθόνη 7 τμημάτων με ARM7-LPC2148. Πριν προχωρήσουμε σε λεπτομέρειες, θα δούμε πώς να ελέγξουμε την ενότητα 7 τμημάτων για να εμφανίσουμε οποιοδήποτε αριθμό χαρακτήρων.
Οθόνη 7 τμημάτων
Οι οθόνες 7 τμημάτων είναι από τις απλούστερες ενότητες εμφάνισης για την εμφάνιση αριθμών και χαρακτήρων. Χρησιμοποιείται γενικά για την εμφάνιση αριθμών και έχει φωτεινότερο φωτισμό και απλούστερη κατασκευή από την οθόνη dot matrix. Και λόγω του φωτεινότερου φωτισμού, η έξοδος μπορεί να προβληθεί σε μεγαλύτερη απόσταση από την οθόνη LCD. Όπως φαίνεται στην παραπάνω εικόνα μιας οθόνης 7 τμημάτων, αποτελείται από 8 LED, κάθε LED χρησιμοποιείται για να φωτίζει ένα τμήμα της μονάδας και το 8ο LED χρησιμοποιείται για να φωτίζει το DOT σε οθόνη 7 τμημάτων. Το 8thLED χρησιμοποιείται όταν χρησιμοποιούνται δύο ή περισσότερες μονάδες 7 τμημάτων, για παράδειγμα για προβολή (0.1). Μια μεμονωμένη ενότητα χρησιμοποιείται για την εμφάνιση μονοψήφιου ή χαρακτήρα. Για την εμφάνιση περισσότερων του ενός ψηφίων ή χαρακτήρων, χρησιμοποιούνται πολλά 7 τμήματα.
Καρφίτσες οθόνης 7 τμημάτων
Υπάρχουν 10 ακίδες, στις οποίες χρησιμοποιούνται 8 ακίδες για να αναφέρονται τα a, b, c, d, e, f, g και h / dp, οι δύο μεσαίες ακίδες είναι κοινή άνοδος / κάθοδος όλων των LEDs. Αυτές οι κοινές άνοδοι / κάθοδος είναι εσωτερικά βραχυκυκλωμένες, οπότε πρέπει να συνδέσουμε μόνο έναν ακροδέκτη COM
Ανάλογα με τη σύνδεση κατατάσσουμε το 7-Segment σε δύο τύπους:
Κοινή κάθοδος
Σε αυτό όλα τα αρνητικά τερματικά (κάθοδος) και των 8 LED συνδέονται μεταξύ τους (βλ. Διάγραμμα παρακάτω), που ονομάζεται COM. Και όλα τα θετικά τερματικά μένουν μόνα τους ή συνδέονται στις ακίδες μικροελεγκτή. Εάν χρησιμοποιούμε μικροελεγκτή, ορίζουμε τη λογική HIGH για να φωτίζουμε το συγκεκριμένο και ρυθμίζουμε το LOW να σβήνει το LED.
Κοινή άνοδος
Σε αυτό όλα τα θετικά τερματικά (Anodes) και των 8 LED συνδέονται μεταξύ τους, που ονομάζονται COM. Και όλα τα αρνητικά θερμικά παραμένουν μόνα τους ή συνδέονται με τους πείρους μικροελεγκτή. Εάν χρησιμοποιούμε μικροελεγκτή, ορίζουμε τη λογική LOW για να φωτίσουμε τη συγκεκριμένη και ρυθμίζουμε τη λογική High για να σβήσουμε το LED.
Επομένως, ανάλογα με την τιμή των ακίδων, ένα συγκεκριμένο τμήμα ή γραμμή 7 τμήματος μπορεί να ενεργοποιηθεί ή να απενεργοποιηθεί για να εμφανίσει τον επιθυμητό αριθμό ή αλφάβητο. Για παράδειγμα, για να εμφανίσετε 0 ψηφία πρέπει να ορίσουμε τις ακίδες ABCDEF ως ΥΨΗΛΕΣ και μόνο G ως ΧΑΜΗΛΗ. Καθώς τα LED ABCDEF είναι αναμμένα και το G είναι απενεργοποιημένο, αυτό σχηματίζει το 0ψήφιο σε ενότητα 7 τμημάτων. (Αυτό είναι για την κοινή κάθοδο, για την κοινή άνοδο είναι το αντίθετο).
Στον παρακάτω πίνακα εμφανίζονται οι τιμές HEX και το αντίστοιχο ψηφίο σύμφωνα με τις καρφίτσες LPC2148 για κοινή διαμόρφωση καθόδου.
Ψηφίο |
Τιμές HEX για LPC2148 |
ΕΝΑ |
σι |
ντο |
ρε |
μι |
φά |
σολ |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
ΣΗΜΑΝΤΙΚΟ: Στον παραπάνω πίνακα έχω δώσει τις τιμές HEX σύμφωνα με τις ακίδες που έχω χρησιμοποιήσει στο LPC2148, ελέγξτε το διάγραμμα κυκλώματος παρακάτω. Μπορείτε να χρησιμοποιήσετε ό, τι καρφίτσες θέλετε, αλλά να αλλάξετε τις δεκαεξαδικές τιμές ανάλογα με αυτό.
Για να μάθετε περισσότερα για την οθόνη 7 τμημάτων, μεταβείτε στον σύνδεσμο Ελέγξτε επίσης διεπαφές οθόνης 7 τμημάτων με άλλους μικροελεγκτές:
- 7 Τμήμα Διασύνδεση με Raspberry Pi
- 7 Διασύνδεση οθόνης τμήματος με μικροελεγκτή PIC
- 7 Τμήμα Διασύνδεση με Arduino
- 7 Τμήμα Διασύνδεση με 8051 Μικροελεγκτή
- 0-99 Μετρητής με χρήση μικροελεγκτή AVR
Απαιτούμενα υλικά
Σκεύη, εξαρτήματα
- ARM7-LPC2148
- Ενότητα εμφάνισης επτά τμημάτων (μονοψήφιο)
- Ψωμί
- Σύνδεση καλωδίων
Λογισμικό
- Keil uVision5
- Flash Magic
Διάγραμμα κυκλώματος
Για διασύνδεση 7-τμημάτων με LPC2148, δεν απαιτείται εξωτερικό στοιχείο όπως φαίνεται στο παρακάτω διάγραμμα κυκλώματος:
Ο παρακάτω πίνακας δείχνει τις συνδέσεις κυκλώματος μεταξύ μονάδας 7-Segment & LPC2148
Καρφίτσες ενότητας επτά τμημάτων |
LPC2148 καρφίτσες |
ΕΝΑ |
P0.0 |
σι |
Σ0.1 |
ντο |
Σ0.4 |
ρε |
Σ0.5 |
μι |
Σ0.6 |
φά |
Σ0.7 |
σολ |
P0.8 |
Κοινός |
GND |
Προγραμματισμός ARM7 LPC2148
Έχουμε μάθει πώς να προγραμματίζουμε το ARM7-LPC2148 χρησιμοποιώντας το Keil στο προηγούμενο σεμινάριό μας. Χρησιμοποιούμε το ίδιο Keil uVision 5 εδώ για να γράψουμε τον κώδικα και να δημιουργήσουμε αρχείο hex, και στη συνέχεια ανεβάζουμε το αρχείο hex στο LPC2148 χρησιμοποιώντας flash magic tool. Χρησιμοποιούμε καλώδιο USB για τροφοδοσία και μεταφόρτωση κώδικα στο LPC2148
Πλήρης κωδικός με εξήγηση βίντεο δίνεται στο τέλος αυτού του σεμιναρίου. Εδώ εξηγούμε μερικά σημαντικά μέρη του κώδικα.
Πρώτα πρέπει να συμπεριλάβουμε το αρχείο κεφαλίδας για τον μικροελεγκτή σειράς LPC214x
#περιλαμβάνω
Στη συνέχεια ορίστε τις ακίδες ως έξοδο
IO0DIR = IO0DIR-0xffffffff
Αυτό ορίζει τις ακίδες P0.0 έως P0.31 ως έξοδο, αλλά θα χρησιμοποιούμε μόνο τις ακίδες (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 και P0.8).
Στη συνέχεια, ορίστε τις συγκεκριμένες ακίδες σε LOGIC HIGH ή LOW σύμφωνα με το αριθμητικό ψηφίο που θα εμφανιστεί. Εδώ θα εμφανίσουμε τιμές από (0 έως 9). Θα χρησιμοποιήσουμε έναν πίνακα που αποτελείται από τιμές HEX για τις τιμές 0 έως 9.
χωρίς υπογραφή int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Οι τιμές θα εμφανίζονται συνεχώς καθώς ο κώδικας έχει εισαχθεί ενώ βρόχος
ενώ (1) { για (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // ορίζει αντίστοιχες καρφίτσες ΥΨΗΛΗ καθυστέρηση (9000). // Λειτουργία καθυστέρησης κλήσεων IO0CLR = IO0CLR-a; // Ορίζει αντίστοιχες καρφίτσες LOW } }
Εδώ το IOSET και το IOCLR χρησιμοποιούνται για τη ρύθμιση των καρφιτσών HIGH και LOW αντίστοιχα. Καθώς έχουμε χρησιμοποιήσει καρφίτσες PORT0, έτσι έχουμε IO0SET & IO0CLR .
Για βρόχος χρησιμοποιείται για την αύξηση του i σε κάθε επανάληψη και κάθε φορά όταν θ αυξάνει, 7 τμήμα αυξάνει επίσης το ψηφίο που δείχνει σε αυτό.
Η λειτουργία καθυστέρησης χρησιμοποιείται για τη δημιουργία χρόνου καθυστέρησης μεταξύ SET & CLR
void delay (int k) // Λειτουργία για καθυστέρηση { int i, j; για (i = 0; i
Ο πλήρης κώδικας και η περιγραφή του βίντεο εργασίας δίνονται παρακάτω. Ελέγξτε επίσης όλα τα έργα που σχετίζονται με την προβολή 7 τμημάτων εδώ.