Σύνδεση LCD 1602. Σύνδεση και εργασία με την οθόνη WH1602. LCD με οπίσθιο φωτισμό RGB

Μερικές φορές αντιμετωπίζουμε το πρόβλημα της εξόδου διαφόρων πληροφοριών από το Arduino σε ο κόσμος. Συχνά, η χρήση μιας σειριακής θύρας είναι αδύνατη, άβολη και ασύμφορη.

Η εμφάνιση χαρακτήρων είναι ένα από τα απλούστερα και φθηνότερα μέσα εμφάνισης πληροφοριών, επειδή έχει τον δικό του μικροελεγκτή που αποθηκεύει τους κωδικοποιημένους χαρακτήρες. Αυτό το σύστημα απλοποιεί τη χρήση αυτών των οθονών, αλλά ταυτόχρονα περιορίζει τη χρήση τους στην εμφάνιση μόνο πληροφοριών κειμένου, σε αντίθεση με τις οθόνες γραφικών.

Στο παράδειγμα, θα δούμε την οθόνη Winstar wh1602l1, μια από τις πιο κοινές οθόνες στον ελεγκτή hd44780. Επιπλέον, μπορείτε να συνδέσετε LCD 2004 και άλλες παρόμοιες.
Τα δύο πρώτα ψηφία υποδεικνύουν τον αριθμό των χαρακτήρων ανά γραμμή και το δεύτερο τον αριθμό των γραμμών, επομένως η επιλεγμένη οθόνη έχει 2 γραμμές των 16 χαρακτήρων.
Αυτή η μέθοδος σύνδεσης περιλαμβάνει την κατάληψη τουλάχιστον 6 θυρών του μικροελεγκτή Arduino. Εάν είναι απαραίτητο, μπορείτε να συνδέσετε την οθόνη κειμένου 1602 μέσω της διεπαφής I2C (2 θύρες).

Από τα πρόσθετα στοιχεία, χρειαζόμαστε μια μεταβλητή αντίσταση για τον έλεγχο της αντίθεσης. Διαφορετικά, όλα συνδέονται σύμφωνα με το διάγραμμα, σύμφωνα με το φύλλο δεδομένων και τις επιλεγμένες εξόδους Arduino στο πρόγραμμα.

Οι ακίδες 15 και 16 στην οθόνη είναι υπεύθυνες για τον οπίσθιο φωτισμό· μπορεί να απενεργοποιηθεί ή να ρυθμιστεί αυτόματα η φωτεινότητα όταν συνδέετε μια φωτοαντίσταση στο Arduino ως αισθητήρα φωτεινότητας.

Στο παράδειγμά μας, θα διαβάσουμε δεδομένα από τη σειριακή θύρα και θα τα εμφανίσουμε στην οθόνη:

#περιλαμβάνω // Συνδέστε τη βιβλιοθήκη για εργασία με οθόνες χαρακτήρων LiquidCrystal lcd(13, 11, 5, 4, 3, 2); // (RS, E, D4, D5, D6, D7) συνδέστε τις εξόδους της οθόνης σύμφωνα με τη σειρά, R/W – GND, αφού θα γράψουμε δεδομένα στην οθόνη και δεν θα διαβάσουμε void setup() ( lcd.begin( 16, 2); // Initialize LCD 1602 // lcd.begin(20, 4); // Initialize LCD 2004 Serial.begin(9600); // Εκκίνηση της σειριακής θύρας ) void loop() ( if (Serial.available ()) // Εάν τα δεδομένα προέρχονται από τη θύρα, τότε... ( καθυστέρηση(100); lcd.clear(); // Καθαρίστε πλήρως την οθόνη ενώ (Serial.available() > 0) // Εάν τα δεδομένα προέρχονται από η θύρα είναι μεγαλύτερη από 0, τότε ... ( lcd.write(Serial.read()); // Διαβάστε τις τιμές από τη σειριακή θύρα και εμφανίστε τις στην οθόνη ) )

Μπορείτε να περιπλέκετε τον κώδικα και να εξάγετε το ρολόι πραγματικού χρόνου DS1307 στο Arduino στην LCD1602 σας.

Τώρα ας ρίξουμε μια πιο προσεκτική ματιά σε όλες τις λειτουργίες της βιβλιοθήκης LiquidCrystal:

Το πρώτο και πιο σημαντικό πράγμα είναι ότι χρησιμοποιώντας αυτήν τη βιβλιοθήκη δεν μπορείτε να εμφανίσετε ρωσικά γράμματα, ακόμα κι αν η οθόνη έχει αυτούς τους χαρακτήρες στη μνήμη. Αυτό το πρόβλημα μπορεί να λυθεί είτε από άλλες βιβλιοθήκες, είτε γράφοντας τιμές χρησιμοποιώντας δεκαεξαδικό κώδικα.

lcd.print();- το απλούστερο και πιο συχνά χρησιμοποιούμενο, που χρησιμοποιείται για την εμφάνιση πληροφοριών.

οθόνη υγρού κρυστάλλου. Σαφή(); - χρησιμοποιείται για τον καθαρισμό της οθόνης.

lcd.setCursor(Χ, y); - τοποθετεί τον κέρσορα σε μια συγκεκριμένη θέση.

X – αλλαγή θέσης στη γραμμή

Y – αλλαγή γραμμής

Για παράδειγμα, lcd.setCursor(0, 0); αυτό είναι το επάνω αριστερό κελί.

lcd.home(); -τοποθετεί τον κέρσορα στη θέση 0, 0

lcd.home(); = lcd.setCursor(0, 0);

οθόνη υγρού κρυστάλλου. scrollDisplayLeft(); - μετατόπιση αριστερά

οθόνη υγρού κρυστάλλου. scrollDisplayRight(); - μετατόπιση δεξιά

LCD.createChar(Ονομα, πίνακας); - δημιουργώντας το δικό σας σημάδι.

Για παράδειγμα, το σύμβολο βαθμού μοιάζει με αυτό:

Celc = (B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000);

Οι οθόνες LCD 1602 διαστάσεων, βασισμένες στον ελεγκτή HD44780, είναι μια από τις απλούστερες, πιο προσιτές και δημοφιλείς οθόνες για την ανάπτυξη διαφόρων ηλεκτρονικών συσκευών. Μπορεί να βρεθεί τόσο σε συσκευές συναρμολογημένες στο γόνατο όσο και σε βιομηχανικές συσκευές, όπως, για παράδειγμα, μηχανές καφέ. Οι πιο δημοφιλείς ενότητες και ασπίδες με θέμα το Arduino, όπως και συλλέγονται με βάση αυτήν την οθόνη.

Σε αυτό το άρθρο θα σας πούμε πώς να το συνδέσετε στο Arduino και να εμφανίσετε πληροφορίες.

Συστατικά που χρησιμοποιούνται (αγοράστε στην Κίνα):

. Πίνακας ελέγχου

. Καλώδια σύνδεσης

Αυτές οι οθόνες έχουν δύο σχέδια: κίτρινο οπίσθιο φωτισμό με μαύρα γράμματα ή, που είναι πιο συνηθισμένο, μπλε οπίσθιο φωτισμό με λευκά γράμματα.

Το μέγεθος των οθονών στον ελεγκτή HD44780 μπορεί να είναι διαφορετικό, αλλά θα ελέγχονται με τον ίδιο τρόπο. Οι πιο συνηθισμένες διαστάσεις είναι 16x02 (δηλαδή 16 χαρακτήρες σε δύο γραμμές) ή 20x04. Η ανάλυση των ίδιων των συμβόλων είναι 5x8 pixel.

Οι περισσότερες οθόνες δεν υποστηρίζουν το κυριλλικό αλφάβητο, μόνο οι οθόνες με σήμανση CTK το έχουν. Αλλά αυτό το πρόβλημαμπορείτε να προσπαθήσετε να το λύσετε εν μέρει (συνέχεια στο άρθρο).

Έξοδοι εμφάνισης:

Η οθόνη διαθέτει υποδοχή 16 ακίδων για σύνδεση. Οι καρφίτσες σημειώνονται στο πίσω μέρος του πίνακα.

1 (VSS) - Τροφοδοτικό ελεγκτή (-)
2 (VDD) - Τροφοδοτικό ελεγκτή (+)
3 (VO) - Πείρος ελέγχου αντίθεσης
4 (RS) - Εγγραφή επιλέξτε
5 (R/W) - Ανάγνωση/Εγγραφή (λειτουργία εγγραφής όταν είναι συνδεδεμένο στη γείωση)
6 (E) - Ενεργοποίηση (στροβοσκόπιο σε πτώση)
7-10 (DB0-DB3) - Bit χαμηλής τάξης της διεπαφής 8 bit
11-14 (DB4-DB7) - Bits υψηλής τάξης της διεπαφής
15 (A) - Τροφοδοτικό οπίσθιου φωτισμού ανόδου (+).
16 (K) - Τροφοδοτικό οπίσθιου φωτισμού καθόδου (-).

Λειτουργία αυτοδιαγνωστικού ελέγχου:

Πριν επιχειρήσετε να συνδεθείτε και να εμφανίσετε πληροφορίες, θα ήταν καλή ιδέα να μάθετε εάν η οθόνη λειτουργεί ή όχι. Για να το κάνετε αυτό, πρέπει να εφαρμόσετε τάση στον ίδιο τον ελεγκτή ( VSS και VDD), ενεργοποιήστε τον οπίσθιο φωτισμό ( Α και Κ), και επίσης προσαρμόστε την αντίθεση.

Για να ρυθμίσετε την αντίθεση, χρησιμοποιήστε ένα ποτενσιόμετρο 10 kOhm. Δεν έχει σημασία τι σχήμα θα έχει. +5V και GND παρέχονται στα εξωτερικά πόδια, το κεντρικό σκέλος συνδέεται στην έξοδο V.O.

Μετά την εφαρμογή ισχύος στο κύκλωμα, είναι απαραίτητο να επιτευχθεί η σωστή αντίθεση· εάν δεν έχει ρυθμιστεί σωστά, τότε τίποτα δεν θα εμφανίζεται στην οθόνη. Για να ρυθμίσετε την αντίθεση, παίξτε με το ποτενσιόμετρο.

Εάν το κύκλωμα έχει συναρμολογηθεί σωστά και η αντίθεση έχει ρυθμιστεί σωστά, η επάνω γραμμή θα πρέπει να γεμίσει με ορθογώνια στην οθόνη.

Έξοδος πληροφοριών:

Η βιβλιοθήκη LiquidCrystal.h που είναι ενσωματωμένη στο Arduino IDE χρησιμοποιείται για τη λειτουργία της οθόνης.

Λειτουργία βιβλιοθήκης

//Εργασία με τον κέρσορα lcd.setCursor(0, 0); // Ορισμός του δρομέα (αριθμός κελιού, γραμμή) lcd.home(); // Ρυθμίστε τον κέρσορα στο μηδέν (0, 0) lcd.cursor(); // Ενεργοποίηση ορατότητας δρομέα (υπογράμμιση) lcd.noCursor(); // Κατάργηση ορατότητας δρομέα (υπογράμμιση) lcd.blink(); // Ενεργοποίηση του δρομέα που αναβοσβήνει (δρομέας 5x8) lcd.noBlink(); // Απενεργοποίηση του δρομέα που αναβοσβήνει (δρομέας 5x8) //Έξοδος πληροφοριών lcd.print("site"); // Έξοδος πληροφοριών lcd.clear(); // Καθαρίστε την οθόνη, (διαγραφή όλων των δεδομένων) μηδενίστε τον κέρσορα lcd.rightToLeft(); // Η εγγραφή γίνεται από τα δεξιά προς τα αριστερά lcd.leftToRight(); // Η γραφή γίνεται από αριστερά προς τα δεξιά lcd.scrollDisplayRight(); // Μετακινήστε τα πάντα στην οθόνη έναν χαρακτήρα προς τα δεξιά lcd.scrollDisplayLeft(); // Μετακινήστε τα πάντα στην οθόνη έναν χαρακτήρα προς τα αριστερά //Πληροφορίες χρήσιμες για κατασκόπους :) lcd.noDisplay(); // Οι πληροφορίες στην οθόνη γίνονται αόρατες, τα δεδομένα δεν διαγράφονται // εάν, τη στιγμή που αυτή τη λειτουργίαενεργό, μην εμφανίσετε τίποτα, τότεοθόνη LCD(); // Κατά την κλήση της συνάρτησης display(), όλες οι πληροφορίες που υπήρχαν

Η ίδια η οθόνη μπορεί να λειτουργήσει σε δύο λειτουργίες:

Λειτουργία 8 bit - χρησιμοποιούνται τόσο χαμηλά όσο και υψηλά bit για αυτό (BB0-DB7)

Λειτουργία 4 bit - χρησιμοποιούνται μόνο τα λιγότερο σημαντικά bit για αυτό (BB4-DB7)

Η χρήση της λειτουργίας 8-bit σε αυτήν την οθόνη δεν συνιστάται. Η λειτουργία του απαιτεί 4 ακόμα πόδια, και πρακτικά δεν υπάρχει κέρδος στην ταχύτητα γιατί Ο ρυθμός ανανέωσης αυτής της οθόνης είναι περιορισμένος< 10раз в секунду.

Για την έξοδο κειμένου, πρέπει να συνδέσετε τις ακίδες RS, E, DB4, DB5, DB6, DB7 στις ακίδες του ελεγκτή. Μπορούν να συνδεθούν με οποιεσδήποτε ακίδες Arduino, το κύριο πράγμα είναι να ορίσετε τη σωστή σειρά στον κώδικα.

Δείγμα κώδικα:

#περιλαμβάνω LiquidCrystal lcd(7, 6, 5, 4, 3, 2); κενός εγκατάσταση()(lcd.begin(16, 2); // Ορίστε το μέγεθος της οθόνης lcd.setCursor(0, 0); lcd.print("Γεια, κόσμο!"); // Εμφάνιση κειμένου lcd.setCursor (0, 1); // Ρυθμίστε τον κέρσορα στην αρχή της γραμμής 2 lcd.print("site"); // Κείμενο εξόδου ) void βρόχος (){ }

Δημιουργήστε τα δικά σας σύμβολα

Καταλάβαμε την έξοδο κειμένου, γράμματα αγγλικό αλφάβητοείναι συνδεδεμένα στη μνήμη του ελεγκτή μέσα στην οθόνη και δεν υπάρχουν προβλήματα με αυτά. Τι να κάνετε όμως εάν το απαιτούμενο σύμβολο δεν βρίσκεται στη μνήμη του ελεγκτή;

Κανένα πρόβλημα, το απαιτούμενο σύμβολο μπορεί να δημιουργηθεί χειροκίνητα (έως 7 σύμβολα συνολικά). Το κελί στις οθόνες που εξετάζουμε έχει ανάλυση 5x8 pixel. Το μόνο στο οποίο καταλήγει η αποστολή της δημιουργίας ενός συμβόλου είναι να γράψετε μια μάσκα και να τοποθετήσετε εκείνες σε σημεία όπου πρέπει να ανάβουν οι κουκκίδες και μηδενικά όπου δεν πρέπει.

Στο παρακάτω παράδειγμα θα σχεδιάσουμε ένα χαμογελαστό πρόσωπο.

Δείγμα κώδικα

//Δοκιμασμένο σε Arduino IDE 1.0.5#περιλαμβάνω #περιλαμβάνω // Προσθέστε την απαιτούμενη βιβλιοθήκη // Bitmask του συμβόλου του χαμόγελου byte smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7)κενός εγκατάσταση()(lcd.begin(16, 2); // Ορίστε το μέγεθος της οθόνης lcd.createChar(1, χαμόγελο); // Δημιουργία συμβόλου αριθμού 1 lcd.setCursor(0, 0); // Ρυθμίστε τον κέρσορα στην αρχή 1 γραμμής lcd.print("\1"); // Εμφάνιση χαμογελαστού προσώπου (αριθμός χαρακτήρων 1) - "\1") κενό βρόχος (){ }

Δώρο

Στα σχόλια, ένα μέλος της κοινότητας έστειλε έναν σύνδεσμο προς τη γεννήτρια συμβόλων

  • igorka

      γεννήτρια χαρακτήρων όπως παραπάνω,
      Το έκανα γιατί δεν ήμουν αδύναμος)

Κατά τη συναρμολόγηση του ανιχνευτή μετάλλων μου, κατέληξα με μια οθόνη LCD 1602, χτισμένη στον ελεγκτή HD44780. Αποφάσισα να μην χάσω την ευκαιρία και να τη συνδέσω με το κινεζικό μου ανάλογο του Arduino UNO.

Αυτή είναι η οθόνη 1602 που θα συνδέσουμε στο Arduino σήμερα.

Οι αριθμοί «1602» υποδεικνύουν ότι η οθόνη αποτελείται από 2 γραμμές, 16 χαρακτήρες η καθεμία. Αυτή είναι μια αρκετά κοινή οθόνη, χρησιμοποιώντας την οποία οι άνθρωποι κατασκευάζουν ρολόγια, δοκιμαστές και άλλα gadget. Η οθόνη διαθέτει πράσινο και μπλε οπίσθιο φωτισμό.

Κόλλησα μια χτένα επαφών στην οθόνη για να μπορώ να συνδέσω εύκολα τα καλώδια.

Θα συνδέσουμε την οθόνη 1602 στο Arduino μέσω παράλληλης διεπαφής 4 bit. Υπάρχει επίσης μια επιλογή για μια διεπαφή 8-bit, αλλά χρησιμοποιεί περισσότερα καλώδια και δεν θα δούμε κέρδη σε αυτό.

Εκτός από την οθόνη και το Arduino, θα χρειαστούμε καλώδια και μια μεταβλητή αντίσταση 10 kOhm. Η αντίσταση θα είναι κατάλληλη για οποιαδήποτε μάρκα, αρκεί να έχει την απαιτούμενη τιμή.

Η ισχύς στην οθόνη παρέχεται μέσω 1η (VSS)Και 2η (VDD)συμπεράσματα. Προς συμπεράσματα 15 (Α)Και 16 (K)- παρέχεται ρεύμα στον οπίσθιο φωτισμό της οθόνης. Δεδομένου ότι η ίδια τάση +5V χρησιμοποιείται για τροφοδοσία και φωτισμό, θα τα τροφοδοτήσουμε από τους ακροδέκτες Arduino "5V"Και "GND". Το κύριο πράγμα δεν είναι να συγχέετε την πολικότητα, διαφορετικά μπορείτε να κάψετε τα ηλεκτρονικά της οθόνης.

συμπέρασμα (V0)Συνδέουμε μια μεταβλητή αντίσταση στο πόδι, θα τη χρησιμοποιήσουμε για να ελέγξουμε την αντίθεση της οθόνης. Δεν μπορεί να χρησιμοποιηθεί η αντίσταση, αλλά η έξοδος "V0"σύνδεση με GND. Σε αυτή την περίπτωση, η αντίθεση θα είναι μέγιστη και δεν θα υπάρχει δυνατότητα ομαλής προσαρμογής της.

συμπέρασμα (RW)χρησιμοποιείται για ανάγνωση ή εγγραφή στην οθόνη. Εφόσον θα γράφουμε μόνο στην οθόνη, θα συνδέσουμε αυτόν τον πείρο στη γείωση (GND).

Συμπεράσματα: 4η (RS), 6η (Ε), 11η (D4), 12η (D5), 13η (D6), 14η (D7)συνδεθείτε σε ψηφιακές ακίδες Arduino. Δεν είναι απαραίτητο να χρησιμοποιήσετε τις ίδιες ακίδες με τις δικές μου, μπορείτε να συνδεθείτε με οποιεσδήποτε ψηφιακές, το κύριο πράγμα είναι στη συνέχεια να τις ρυθμίσετε σωστά στο σκίτσο.

Το συνδεδεμένο Arduino μου, το μόνο που έχω να κάνω είναι να το συνδέσω στον υπολογιστή μέσω USB και να ανεβάσω το σκίτσο.

Στο σημάδι θα χρησιμοποιήσουμε ένα σκίτσο από το τυπικό σύνολο.

Στο Arduino IDE επιλέγουμε "Αρχείο" -"Δείγματα" -"Υγρός κρύσταλλος" - "Γειά σου Κόσμε".

Ας δούμε τον κώδικα του σκίτσου.

Στη γραμμή "LCD υγρών κρυστάλλων", σε αγκύλες, είναι οι ψηφιακές ακίδες που χρησιμοποιούνται στο Arduino. Οι καρφίτσες εμφανίζονται με την ακόλουθη σειρά: RS, E, DB4, DB5, DB6, DB7. Εάν χρησιμοποιήσατε άλλες ψηφιακές ακίδες κατά τη σύνδεση της οθόνης, καταχωρίστε τις με τη σωστή σειρά σε αγκύλες.

Στη γραμμή "lcd.print("γεια, κόσμε!");"Στην οθόνη εμφανίζεται ένας χαιρετισμός, από προεπιλογή αυτή είναι η επιγραφή "Γειά σου Κόσμε!", μπορείτε να το αλλάξετε σε οποιοδήποτε δικό σας, γράφουμε στα λατινικά.

Ανεβάζουμε το σκίτσο στο Arduino και ιδού το αποτέλεσμα. Αντί για «γεια, κόσμο!» Μπήκα στον ιστότοπό μου. Στην παρακάτω γραμμή, το χρονόμετρο μετρά αντίστροφα το χρόνο.

Η οθόνη υγρών κρυστάλλων (LCD), συντομογραφία LCD, βασίζεται στην τεχνολογία υγρών κρυστάλλων. Κατά το σχεδιασμό ηλεκτρονικές συσκευές, χρειαζόμαστε μια φθηνή συσκευή για την εμφάνιση πληροφοριών και μια δεύτερη όχι λιγότερο σημαντικος ΠΑΡΑΓΟΝΤΑΣδιαθεσιμότητα έτοιμων βιβλιοθηκών για το Arduino. Από όλες τις διαθέσιμες οθόνες LCD στην αγορά, η πιο συχνά χρησιμοποιούμενη είναι η LCD 1602A, η οποία μπορεί να εμφανίσει χαρακτήρες ASCII σε 2 γραμμές (16 χαρακτήρες σε 1 γραμμή) κάθε χαρακτήρα σε μήτρα 5x7 pixel. Σε αυτό το άρθρο θα δούμε τα βασικά για τη σύνδεση μιας οθόνης στο Arduino.

Τεχνικές προδιαγραφές

Τάση τροφοδοσίας: 5 V
Μέγεθος οθόνης: 2,6 ίντσες
Τύπος οθόνης: 2 γραμμές x 16 χαρακτήρες
Χρώμα οπίσθιου φωτισμού: μπλε
Χρώμα χαρακτήρων: λευκό
Διαστάσεις: 80mm x 35mm x 11mm

Περιγραφή οθόνης

Το LCD 1602A είναι μια ηλεκτρονική μονάδα που βασίζεται στο πρόγραμμα οδήγησης HD44780 της Hitachi. Η LCD1602 έχει 16 ακίδες και μπορεί να λειτουργήσει σε λειτουργία 4 bit (χρησιμοποιώντας μόνο 4 γραμμές δεδομένων) ή σε λειτουργία 8 bit (χρησιμοποιώντας και τις 8 γραμμές δεδομένων), ή μπορεί να χρησιμοποιηθεί μια διεπαφή I2C. Σε αυτό το άρθρο θα μιλήσω για τη σύνδεση σε λειτουργία 4-bit.

Ανάθεση επικοινωνίας:
VSS: Τροφοδοτικό μονάδας “-”.
VDD: Τροφοδοτικό μονάδας «+».
VO: Πείρο ελέγχου αντίθεσης
RS: Εγγραφή Επιλέξτε
RW: Επιλέξτε λειτουργία εγγραφής ή ανάγνωσης (όταν είναι συνδεδεμένο στη γείωση, ρυθμίστε σε λειτουργία εγγραφής)
Ε: Πύλη πτώσης
DB0-DB3: Bit διεπαφής
DB4-DB7: Bit διεπαφής
Α: Ισχύς οπίσθιου φωτισμού "+".
K: "-" Ισχύς οπίσθιου φωτισμού

Στο μπροστινό μέρος της μονάδας υπάρχει μια οθόνη LCD και μια ομάδα επαφών.

Στο πίσω μέρος της μονάδας υπάρχουν δύο μάρκες σε σχέδιο "drip" (ST7066U και ST7065S) και ηλεκτρική καλωδίωση, σχεδίαση σχηματικό διάγραμμαΔεν βλέπω το νόημα, θα σας πω απλώς για την αντίσταση R8 (100 Ohm), η οποία χρησιμεύει ως περιοριστική αντίσταση για Οπίσθιος φωτισμός LED, ώστε να μπορείτε να συνδέσετε απευθείας 5V στον ακροδέκτη Α. Λίγο αργότερα θα γράψω ένα άρθρο στο οποίο θα σας πω πώς μπορείτε να αλλάξετε τον οπίσθιο φωτισμό μιας οθόνης LCD χρησιμοποιώντας ένα PWB και ένα τρανζίστορ.

Σύνδεση LCD 1602A σε Arduino (λειτουργία 4 bit)

Απαιτούμενα ανταλλακτικά:
Arduino UNO R3 x 1 τεμ.
Οθόνη LCD 1602A (2×16, 5V, Μπλε) x 1 τεμ.
Σύρμα DuPont, 2,54 mm, 20 cm, F-F (Γυναικείο - Θηλυκό) x 1 τεμ.
Ποτενσιόμετρο 10 kOhm x 1 τεμ.
Υποδοχή PLS-16 x 1 τεμ.
Πλακέτα ανάπτυξης MB-102 x 1 τεμ.
Καλώδιο USB 2.0 A-B x 1 τεμ.

Σύνδεση:
Για τη σύνδεση θα χρησιμοποιήσουμε μια πλακέτα ανάπτυξης· το διάγραμμα και ο πίνακας για τη σύνδεση του LCD1602a στο Arduino σε λειτουργία 4-bit φαίνονται στο παρακάτω σχήμα.

Η σύνδεση της οθόνης με το breadboard θα γίνει μέσω ακίδων PLS-16 (πρέπει να συγκολληθούν στην οθόνη). Εγκαταστήστε τη μονάδα οθόνης στην πλακέτα breadboard και συνδέστε την τροφοδοσία VDD (2η ακίδα) στα 5V (Arduino) και VSS (1η ακίδα) στο GND (Arduino) και μετά συνδέστε το RS (4η ακίδα) στην ψηφιακή ακίδα 8 (Arduino). Γειώστε το RW (5ος ακροδέκτης) συνδέοντάς το στο GND (Arduino) και μετά συνδέστε τον ακροδέκτη E στον ακροδέκτη 8 (Arduino). Για μια σύνδεση 4-bit, απαιτούνται τέσσερις ακίδες (DB4 έως DB7). Συνδέστε τις ακίδες DB4 (11η ακίδα), DB5 (12η ακίδα), DB6 (13η ακίδα) και DB7 (14η ακίδα) στις ψηφιακές ακίδες Arduino 4, 5, 6 και 7. Το ποτενσιόμετρο 10K χρησιμοποιείται για τη ρύθμιση της αντίθεσης της οθόνης, το διάγραμμα σύνδεσης για Η οθόνη LCD 1602a φαίνεται παρακάτω

Η βιβλιοθήκη περιλαμβάνεται ήδη στο Arduino IDE και δεν χρειάζεται να την εγκαταστήσετε. Αντιγράψτε και επικολλήστε αυτό το παράδειγμα κώδικα στο παράθυρο του προγράμματος Arduino IDE και φορτώστε τον στον ελεγκτή.

/* Η δοκιμή πραγματοποιήθηκε στο Arduino IDE 1.6.11 Ημερομηνία δοκιμής 20/09/2016. */ #περιλαμβάνω LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup() ( lcd.begin(16, 2); // Εκκινεί την οθόνη LCD 16x2 ) void loop() ( lcd.setCursor(0,0); // Ρυθμίστε τον κέρσορα στην πρώτη γραμμή lcd.print("Γεια, world"); // Εκτύπωση του κειμένου lcd.setCursor(0,1); // Ρυθμίστε τον κέρσορα στη δεύτερη γραμμή lcd.print("www.robotchip.ru"); // Εκτύπωση του κειμένου )

Κατεβάστε το πρόγραμμα

Λίγα λόγια για το πρόγραμμα.
Για να διευκολυνθεί η επικοινωνία μεταξύ του Arduino και της οθόνης LCD, χρησιμοποιείται η ενσωματωμένη βιβλιοθήκη στο Arduino IDE " LiquidCrystal.h « - που είναι γραμμένο για οθόνες LCD χρησιμοποιώντας HD44780 (Hitachi) chipset (ή συμβατά τσιπ). Αυτή η βιβλιοθήκη μπορεί να χειριστεί σύνδεση LCD σε λειτουργία 4 bit και λειτουργία 8 bit.

Συνδέσεις
Τεκμηρίωση για LCD1602A

Αγορά στο Aliexpress
Ελεγκτής Arduino UNO R3

Για κάποιο χρονικό διάστημα, αυτή η οθόνη ήταν σε αδράνεια.


Και τώρα υπάρχει η επιθυμία να το επισυνάψετε σε ένα από τα έργα. Μπορείτε, φυσικά, να προσπαθήσετε να βρείτε μια βιβλιοθήκη με έτοιμες λειτουργίες, αλλά σε αυτήν την περίπτωση η εικόνα του πώς λειτουργεί η οθόνη θα είναι ελλιπής και είμαστε δεν είναι ευχαριστημένος με αυτό. Μόλις κατανοήσετε την αρχή λειτουργίας μιας οθόνης LCD, δεν θα είναι δύσκολο να γράψετε τη δική σας βιβλιοθήκη για την επιθυμητή οθόνη εάν λείπει ή δεν είναι ικανοποιητική κατά κάποιο τρόπο.

Λοιπόν, ας ξεκινήσουμε.
Το πρώτο πράγμα που πρέπει να κάνετε είναι να βρείτε το pinout, δηλαδή ποια επαφή είναι υπεύθυνη για τι, το δεύτερο είναι να βρείτε το όνομα του ελεγκτή που ελέγχει την οθόνη, για να το κάνετε αυτό, κατεβάστε το φύλλο δεδομένων για αυτήν την οθόνη LCD και ανοίξτε το την πρώτη σελίδα.


Οι επαφές μετρώνται από αριστερά προς τα δεξιά, η πρώτη σημειώνεται με ένα κόκκινο βέλος. Η τάση τροφοδοσίας είναι 5 βολτ, ο ελεγκτής ελέγχου S6A0069ή παρόμοια, για παράδειγμα, ks0066U.

Γιατί αναζητούσαμε το όνομα του ελεγκτή ελέγχου; Το γεγονός είναι ότι στο φύλλο δεδομένων στην οθόνη υπάρχουν χρονικές καθυστερήσεις (διάγραμμα χρονισμού), περιγράφεται το σύστημα εντολών, αλλά δεν υπάρχει απλή προετοιμασία και χωρίς αυτό δεν υπάρχει πουθενά.
Στη συνέχεια, ανοίξτε τη δεύτερη σελίδα και δείτε έναν πίνακα που λέει ποια επαφή είναι υπεύθυνη για τι.


DB7…DB0– Δίαυλος δεδομένων/διεύθυνσης.

R/W- καθορίζει τι θα κάνουμε, θα διαβάσουμε (R/W=1) ή τι θα γράψουμε (R/W=0)

R/S– καθορίζει αν θα στείλουμε εντολή (RS=0) ή δεδομένα (RS=1)

μι– είσοδος στροβοσκοπίου, αλλάζοντας το σήμα σε αυτή την είσοδο, επιτρέπουμε στην οθόνη να διαβάζει/εγγράφει δεδομένα.

LED±– Έλεγχος οπίσθιου φωτισμού.

Πρέπει να πω ότι στην οθόνη που έλαβα, ο οπίσθιος φωτισμός δεν θα ανάψει απλώς· για να γίνει αυτό, πρέπει να κολλήσετε σε μια αντίσταση, που επισημαίνεται στην πλακέτα ως R7. Αλλά προς το παρόν δεν το χρειαζόμαστε.

Κατεβάστε το φύλλο δεδομένων για τον ελεγκτή ελέγχου και βρείτε τις οδηγίες προετοιμασίας. Οι εικόνες μπορούν να μεγεθυνθούν κάνοντας κλικ πάνω τους.



Αποδεικνύεται ότι υπάρχουν δύο τέτοιες οδηγίες, για λειτουργίες 8-bit και 4-bit. Τι είδους τρόποι είναι αυτοί; Αυτές οι λειτουργίες καθορίζουν πόσα καλώδια δεδομένα θα μεταδοθούν: τέσσερα ή οκτώ. Ας δούμε τη μετάδοση 4 καλώδια, σε αυτήν την περίπτωση, η οθόνη θα λειτουργεί πιο αργά, αλλά θα αποθηκεύσουμε 4 ακίδες του μικροελεγκτή και η εφαρμογή της λειτουργίας οκτώ bit δεν διαφέρει πολύ.

Το διάγραμμα σύνδεσης πληροφοριών έχει ως εξής.


Η αντίθεση μπορεί να ρυθμιστεί συνδέοντας ένα ποτενσιόμετρο μεταξύ των ακίδων ισχύος.

Θα ήθελα να επιστήσω την προσοχή σας στο γεγονός ότι κατά την προετοιμασία R/SΚαι R/Wείναι πάντα ίσα με μηδέν, δηλαδή θα στείλουμε της ομάδας.

Κατά την προετοιμασία μπορείτε να διαμορφώσετε:

  • N - αριθμός εμφανιζόμενων γραμμών
  • C - ενεργοποιήστε ή απενεργοποιήστε τον κέρσορα
  • B - κάντε τον κέρσορα να αναβοσβήνει
  • I/D - αύξηση ή μείωση της τιμής του μετρητή διευθύνσεων
  • SH - μετακίνηση παραθύρου οθόνης
Ας δούμε τα δύο τελευταία σημεία με περισσότερες λεπτομέρειες.
Η παρακάτω εικόνα δείχνει σε ποια διεύθυνση πρέπει να γράψουμε δεδομένα ώστε να εμφανίζονται σε μια συγκεκριμένη θέση, για παράδειγμα, αν θέλουμε να εμφανίσουμε ένα σύμβολο σε πρώτη θέση δεύτερης γραμμής, τότε πρέπει να γράψουμε στη διεύθυνση 0x40.


Μετά από αυτό, η τιμή του μετρητή θα αλλάξει αυτόματα, είτε θα αυξηθεί είτε θα μειωθεί, και μαζί με αυτό θα αλλάξει και η θέση του δρομέα.

Παρεμπιπτόντως, η μνήμη στην οποία γράφουμε ονομάζεται DDRAM, όλα όσα γράφουμε σε αυτή τη μνήμη θα εμφανίζονται στην οθόνη, υπάρχει ακόμα CGROM, το οποίο αποθηκεύει τον πίνακα δημιουργίας χαρακτήρων.


Αυτός ο πίνακας δεν μπορεί να αλλάξει, αλλά μπορούν να ληφθούν έτοιμα σύμβολα από αυτόν. Ένας άλλος τύπος μνήμης είναι CGRAM, είναι επίσης ένας πίνακας δημιουργίας χαρακτήρων, αλλά σχεδιάζουμε μόνοι μας τους χαρακτήρες σε αυτόν τον πίνακα.


Τώρα λίγα λόγια για την κίνηση της οθόνης, το γεγονός είναι ότι συνήθως στην οθόνη δεν βλέπουμε όλο το DDRAM, αλλά μόνο ένα συγκεκριμένο μέρος, όπως φαίνεται στην παρακάτω εικόνα.


Μπορούμε να γράψουμε και στο αόρατο τμήμα, αλλά αυτά που γράφουμε δεν θα είναι ορατά μέχρι να μετακινήσουμε το παράθυρο της οθόνης σε αυτό το μέρος.

Τελειώσαμε με τη θεωρία, ας περάσουμε στην πράξη.
Η εικόνα της επικοινωνίας με οθόνη LCD σε λειτουργία 4-bit μοιάζει με αυτή.


Τα δεδομένα αποστέλλονται σε byte, αλλά επειδή έχουμε λειτουργία 4-bit, για να στείλετε ένα byte πρέπει να κάνετε 2 αποστολές, με πρώτο το πιο σημαντικό bit. Στην εικόνα, το πρώτο δέμα χαρακτηρίζεται D7 (υψηλό τετραδάκι), το δεύτερο D3 (χαμηλό τετράδιο). Πριν από την επόμενη αποστολή, πρέπει να ελέγξουμε τη σημαία κατειλημμένης και αν δεν έχει οριστεί, μπορούμε να στείλουμε ξανά, αν έχει οριστεί, περιμένουμε μέχρι να τελειώσει η λειτουργία του ελεγκτή που ελέγχει την οθόνη LCD.

Έχοντας μεγάλη εικόναδέματα, ας καταλάβουμε πώς να εφαρμόσουμε τη λειτουργία αποστολής.


Για να στείλετε πρέπει να χρησιμοποιήσετε έναν δίαυλο 8-bit:
  • R/W ορίστηκε στο 0
  • εκδώστε κωδικό/δεδομένα εντολής στο δίαυλο
  • καθυστέρηση 2us
  • κάτω στροβοσκόπιο Ε

Η λειτουργία ανάγνωσης υλοποιείται με παρόμοιο τρόπο:

  • βεβαιωθείτε ότι ο ελεγκτής ελέγχου είναι ελεύθερος
  • Το R/W έχει οριστεί σε 1
  • σηκώστε το strobe E (αυτή τη στιγμή η οθόνη LCD θα εξάγει δεδομένα στο δίαυλο)
  • καθυστέρηση 2us
  • διαβάσαμε τι έδωσε η LCD
  • κάτω στροβοσκόπιο Ε
Από πού προήλθε η καθυστέρηση 2us;

Πάνω από τους χρονισμούς υπάρχει ένας πίνακας που λέει με τι είναι ίσες οι καθυστερήσεις που φαίνονται στο γράφημα, και έτσι η διάρκεια του στροβοσκοπικού παλμού - tw πρέπει να είναι ίση με 230nS ή 450nS ανάλογα με την τάση τροφοδοσίας, το πήραμε λίγο με ένα περιθώριο. Γιατί λάβαμε υπόψη μόνο αυτή την καθυστέρηση; Γιατί η αξία των καθυστερήσεων που απομένουν είναι πολύ μικρή.

Για αποστολή μέσω διαύλου 4 bit:

  • βεβαιωθείτε ότι ο ελεγκτής ελέγχου είναι ελεύθερος
  • ορίστε το RS σε 0 (εντολή) ή 1 (δεδομένα), ανάλογα με το τι θα στείλουμε
  • R/W ορίστηκε στο 0
  • σηκώστε το στροβοσκόπιο E (ρυθμίστε στο 1)
  • εκδίδουμε το υψηλότερο σημειωματάριο στο λεωφορείο
  • καθυστέρηση 2us
  • κάτω στροβοσκόπιο Ε
  • καθυστέρηση 1us
  • σηκώστε το στροβοσκόπιο E (ρυθμίστε στο 1)
  • εκδίδουμε το χαμηλό tetrad στο λεωφορείο
  • καθυστέρηση 2us
  • κάτω στροβοσκόπιο Ε

Για να διαβάσετε σε ένα δίαυλο 4 bit:

  • βεβαιωθείτε ότι ο ελεγκτής ελέγχου είναι ελεύθερος
  • θύρα δεδομένων για είσοδο με pull-up
  • ορίστε το RS σε 0 (εντολή) ή 1 (δεδομένα), ανάλογα με το τι θα διαβάσουμε
  • Το R/W έχει οριστεί σε 1
  • σηκώστε το στροβοσκόπιο E (ρυθμίστε στο 1)
  • καθυστέρηση 2us
  • διαβάστε το σημειωματάριο της ανώτερης ηλικίας
  • κάτω στροβοσκόπιο Ε
  • καθυστέρηση 1us
  • σηκώστε το στροβοσκόπιο E (ρυθμίστε στο 1)
  • καθυστέρηση 2us
  • διαβάζουμε το κάτω τετράδιο
  • κάτω στροβοσκόπιο Ε

Η ανύψωση του στροβοσκοπίου και η έξοδος της εντολής/δεδομένων στο δίαυλο μπορούν να αντικατασταθούν. Τώρα δεν θα είναι δύσκολο να αρχικοποιήσετε την οθόνη. Για να απλοποιήσουμε την προετοιμασία, θα αντικαταστήσουμε την ανάγνωση της σημαίας απασχολημένου με καθυστέρηση και θα εξετάσουμε το ενδεχόμενο να εργαστούμε με τη σημαία αργότερα.
Θα πρέπει να σημειωθεί ότι κατά την προετοιμασία σε λειτουργία 4 bit, χρησιμοποιούνται οδηγίες 4 bit και μετά την προετοιμασία, χρησιμοποιείται ένα σύστημα εντολών 8 bit, επομένως για την προετοιμασία υλοποιούμε μια ξεχωριστή λειτουργία για την αποστολή εντολών void Write_Init_Command(δεδομένα uint8_t).
//Κωδικός εκκίνησης για Atmega16 #define F_CPU 8000000UL #define LCD_PORT PORTA #define LCD_DDR DDRA #define LCD_PIN PINA #define DATA_BUS 0XF0 #define RS 0 #define RW 1 #define #περιλαμβάνω void Write_Init_Command(uint8_t data) ( //legs μέσω των οποίων μεταδίδονται εντολές/δεδομένα στην έξοδο LCD_DDR |= DATA_BUS; //θα στείλουμε την εντολή LCD_PORT &= ~(1<Ένας δρομέας που αναβοσβήνει χαρούμενα υποδεικνύει ότι η προετοιμασία ήταν επιτυχής. ΣΕ