Οι μονάδες οθόνης είναι οι πιο σημαντικές συσκευές εξόδου σε ενσωματωμένα έργα και προϊόντα ηλεκτρονικής. Η οθόνη LCD 16x2 είναι μία από τις πιο χρησιμοποιούμενες μονάδες οθόνης. Η οθόνη LCD 16x2 σημαίνει ότι υπάρχουν δύο σειρές στις οποίες μπορούν να εμφανίζονται 16 χαρακτήρες ανά γραμμή και κάθε χαρακτήρας παίρνει χώρο μήτρας 5Χ7 στην οθόνη LCD. Σε αυτό το σεμινάριο θα συνδέσουμε τη μονάδα LCD 16X2 με τον μικροελεγκτή 8051 (AT89S52). Η διασύνδεση LCD με 8051 μικροελεγκτή μπορεί να φαίνεται αρκετά περίπλοκη για τους αρχάριους, αλλά αφού κατανοήσουμε την ιδέα θα φαινόταν πολύ απλή και εύκολη. Παρόλο που μπορεί να είναι χρονοβόρα επειδή πρέπει να κατανοήσετε και να συνδέσετε 16 ακίδες LCD στον μικροελεγκτή. Πρώτα λοιπόν ας καταλάβουμε τις 16 ακίδες της μονάδας LCD.
Μπορούμε να το διαιρέσουμε σε πέντε κατηγορίες, Power Pin, Pin Pin, Control Pins, Data pins και Backlight pins.
Κατηγορία |
Καρφίτσα ΟΧΙ. |
Όνομα καρφιτσώματος |
Λειτουργία |
Power Pin |
1 |
VSS |
Καρφίτσα γείωσης, συνδεδεμένη στο έδαφος |
2 |
VDD ή Vcc |
Πείρος τάσης + 5V |
|
Καρφίτσα αντίθεσης |
3 |
V0 ή VEE |
Ρύθμιση αντίθεσης, συνδεδεμένη με Vcc διεξοδικά μια μεταβλητή αντίσταση. |
Καρφίτσες ελέγχου |
4 |
RS |
Εγγραφή Επιλέξτε Pin, RS = 0 Λειτουργία εντολών, RS = 1 Λειτουργία δεδομένων |
5 |
RW |
Καρφίτσα ανάγνωσης / εγγραφής, RW = 0 λειτουργία εγγραφής, RW = 1 Λειτουργία ανάγνωσης |
|
6 |
μι |
Ενεργοποίηση, ένας υψηλός έως χαμηλός παλμός πρέπει να ενεργοποιήσει την οθόνη LCD |
|
Καρφίτσες δεδομένων |
7-14 |
D0-D7 |
Καρφίτσες δεδομένων, Αποθηκεύει τα δεδομένα που θα εμφανίζονται σε LCD ή στις οδηγίες εντολής |
Πινέζες οπίσθιου φωτισμού |
15 |
LED + ή A. |
Για να ενεργοποιήσετε το Backlight + 5V |
16 |
LED- ή Κ |
Γήπεδο οπίσθιου φωτισμού |
Όλες οι ακίδες είναι σαφώς κατανοητές από το όνομα και τις λειτουργίες τους, εκτός από τις ακίδες ελέγχου, οπότε εξηγούνται παρακάτω:
RS: RS είναι το pin select register. Πρέπει να το ρυθμίσουμε στο 1, εάν στέλνουμε ορισμένα δεδομένα για εμφάνιση στην οθόνη LCD. Και θα το ορίσουμε σε 0 εάν στέλνουμε κάποιες εντολές εντολών όπως να διαγράψετε την οθόνη (δεκαεξαδικός κωδικός 01).
RW: Πρόκειται για καρφίτσα ανάγνωσης / εγγραφής, θα το ορίσουμε στο 0, εάν πρόκειται να γράψουμε ορισμένα δεδομένα στην οθόνη LCD. Και ορίστε το σε 1, αν διαβάζουμε από την ενότητα LCD. Γενικά, ορίζεται σε 0, επειδή δεν χρειάζεται να διαβάζουμε δεδομένα από την οθόνη LCD. Μόνο μία οδηγία "Λήψη κατάστασης LCD" πρέπει να διαβαστεί μερικές φορές.
Ε: Αυτός ο πείρος χρησιμοποιείται για την ενεργοποίηση της μονάδας όταν του δίνεται υψηλός έως χαμηλός παλμός. Πρέπει να δοθεί παλμός 450 ns. Αυτή η μετάβαση από HIGH σε LOW κάνει τη μονάδα ΕΝΕΡΓΟΠΟΙΗΣΗ.
Υπάρχουν μερικές προκαθορισμένες οδηγίες εντολής στην οθόνη LCD, τις έχουμε χρησιμοποιήσει στο παρακάτω πρόγραμμα για να προετοιμάσουμε τη λειτουργία LCD (σε λειτουργία lcd_init ()). Παρακάτω δίνονται μερικές σημαντικές οδηγίες εντολών:
Κωδικός Hex |
Εγγύηση σε LCD Instruction Register |
0F |
ΟΝ ΟΝΟΜΑ, Ο κέρσορας ΕΝΕΡΓΟ |
01 |
Εκκαθάριση οθόνης |
02 |
Επιστροφή στο σπίτι |
04 |
Δρομέας μείωσης (μετακίνηση δρομέα προς τα αριστερά) |
06 |
Αύξηση δρομέα (μετακίνηση δρομέα προς τα δεξιά) |
05 |
Shift οθόνη δεξιά |
07 |
Shift οθόνη αριστερά |
0Ε |
Οθόνη ON, αναβοσβήνει ο δρομέας |
80 |
Αναγκάστε τον κέρσορα στην αρχή της πρώτης γραμμής |
Γ0 |
Αναγκάστε τον κέρσορα στην αρχή της δεύτερης γραμμής |
38 |
2 γραμμές και μήτρα 5 × 7 |
83 |
Θέση γραμμής 1 δρομέα 3 |
3C |
Ενεργοποιήστε τη δεύτερη γραμμή |
08 |
Οθόνη OFF, Ο κέρσορας OFF |
Γ1 |
Μετάβαση στη δεύτερη γραμμή, θέση 1 |
ΟΚ |
Οθόνη ΕΝΕΡΓΟΠΟΙΗΜΕΝΟ, ο δρομέας ΑΝΕΝΕΡΓΟΣ |
Γ1 |
Μετάβαση στη δεύτερη γραμμή, θέση 1 |
Γ2 |
Μετάβαση στη δεύτερη γραμμή, θέση 2 |
Διάγραμμα κυκλώματος και επεξήγηση
Το διάγραμμα κυκλώματος για διασύνδεση LCD με μικροελεγκτή 8051 φαίνεται στο παραπάνω σχήμα. Αν έχετε βασική κατανόηση του 8051, τότε πρέπει να γνωρίζετε για τα EA (PIN 31), XTAL1 & XTAL2, RST pin (PIN 9), Vcc και Ground Pin του 8051 μικροελεγκτή. Έχω χρησιμοποιήσει αυτούς τους ακροδέκτες στο παραπάνω κύκλωμα. Εάν δεν έχετε ιδέα γι 'αυτό, σας συνιστώ να διαβάσετε αυτό το άρθρο LED Interfacing με 8051 Microcontroller πριν περάσετε από τη διασύνδεση LCD.
Έτσι, εκτός από αυτές τις παραπάνω καρφίτσες, έχουμε συνδέσει τους ακροδέκτες δεδομένων (D0-D7) της οθόνης LCD με τον μικροελεγκτή της θύρας 2 (P2_0 - P2_7). Και οι ακροδέκτες ελέγχου RS, RW και E στον ακροδέκτη 12,13,14 (ακίδα 2,3,4 της θύρας 3) του μικροελεγκτή αντίστοιχα.
Το PIN 2 (VDD) και το PIN 15 (τροφοδοσία οπίσθιου φωτισμού) της LCD συνδέονται στην τάση (5v) και το PIN 1 (VSS) και το PIN 16 (γείωση οπίσθιου φωτισμού) συνδέονται στη γείωση.
Ο ακροδέκτης 3 (V0) συνδέεται με τάση (Vcc) μέσω μεταβλητής αντίστασης 10k για ρύθμιση της αντίθεσης της οθόνης LCD. Το μεσαίο σκέλος της μεταβλητής αντίστασης συνδέεται με το PIN 3 και άλλα δύο πόδια συνδέονται με την παροχή τάσης και τη Γείωση
Επεξήγηση κώδικα
Προσπάθησα να εξηγήσω τον κώδικα μέσω σχολίων (στον ίδιο τον κώδικα).
Όπως εξήγησα νωρίτερα σχετικά με τη λειτουργία εντολών και τη λειτουργία δεδομένων, μπορείτε να δείτε ότι κατά την αποστολή εντολής (συνάρτηση lcd_cmd) έχουμε ορίσει RS = 0, RW = 0 και ένας παλμός HIGH to LOW δίνεται στο E κάνοντάς το 1, μετά 0 Επίσης, κατά την αποστολή δεδομένων (συνάρτηση lcd_data) στην οθόνη LCD έχουμε ορίσει RS = 1, RW = 0 και ένας παλμός HIGH to LOW δίνεται στο E κάνοντάς το 1 έως 0. Η λειτουργία msdelay () έχει δημιουργηθεί για τη δημιουργία καθυστέρησης σε χιλιοστά του δευτερολέπτου και καλείται συχνά στο πρόγραμμα, καλείται έτσι ώστε η μονάδα LCD να έχει αρκετό χρόνο για την εκτέλεση της εσωτερικής λειτουργίας και εντολών.
Έχει δημιουργηθεί ένας βρόχος για την εκτύπωση της συμβολοσειράς, η οποία καλεί τη συνάρτηση lcd_data κάθε φορά για να εκτυπώνει έναν χαρακτήρα μέχρι τον τελευταίο χαρακτήρα (null terminator- '\ 0').
Χρησιμοποιήσαμε τη συνάρτηση lcd_init () για να προετοιμάσουμε την οθόνη LCD χρησιμοποιώντας τις προκαθορισμένες οδηγίες εντολών (εξηγούνται παραπάνω).