Για να δημιουργηθεί μια καλή επικοινωνία μεταξύ του ανθρώπινου κόσμου και του κόσμου της μηχανής, οι μονάδες οθόνης παίζουν σημαντικό ρόλο. Και έτσι είναι ένα σημαντικό μέρος των ενσωματωμένων συστημάτων. Οι μονάδες οθόνης - μεγάλες ή μικρές, λειτουργούν με την ίδια βασική αρχή. Εκτός από πολύπλοκες μονάδες οθόνης, όπως γραφικές οθόνες και τρισδιάστατες αναμεταδόσεις, πρέπει κανείς να γνωρίζει ότι λειτουργεί με απλές οθόνες όπως μονάδες 16x1 και 16x2. Η μονάδα οθόνης 16x1 θα έχει 16 χαρακτήρες και είναι σε μία γραμμή. Η οθόνη LCD 16x2 θα έχει 32 χαρακτήρες συνολικά 16 στην 1η γραμμή και άλλες 16 στη 2η γραμμή. Εδώ πρέπει να καταλάβουμε ότι σε κάθε χαρακτήρα υπάρχουν 5x10 = 50 pixel, οπότε για να εμφανιστεί ένας χαρακτήρας και τα 50 pixel πρέπει να λειτουργούν μαζί. Αλλά δεν χρειάζεται να ανησυχούμε για αυτό, επειδή υπάρχει ένας άλλος ελεγκτής (HD44780) στη μονάδα οθόνης που κάνει τη δουλειά του ελέγχου των pixel. (μπορείτε να το δείτε σε μονάδα LCD,είναι το μαύρο μάτι στο πίσω μέρος).
Σε αυτό το σεμινάριο θα συνδέσουμε μια οθόνη LCD 16x2 με το ARDUINO UNO. Σε αντίθεση με τις κανονικές πλακέτες ανάπτυξης, η διασύνδεση μιας οθόνης LCD με ένα ARDUINO είναι αρκετά εύκολη. Εδώ δεν χρειάζεται να ανησυχούμε για την αποστολή και λήψη δεδομένων. Πρέπει απλώς να καθορίσουμε τους αριθμούς pin και θα είναι έτοιμος να εμφανίσει δεδομένα σε LCD.
Απαιτούμενα στοιχεία
Υλικό: ARDUINO UNO, τροφοδοτικό (5v), JHD_162ALCD (16x2LCD), πυκνωτής 100uF.
Λογισμικό: Arduino IDE (Arduino nightly).
Διάγραμμα κυκλώματος και επεξήγηση
Σε LCD 16x2 υπάρχουν 16 ακίδες πάνω από όλα αν υπάρχει οπίσθιο φως, εάν δεν υπάρχει πίσω φως θα υπάρχουν 14 ακίδες. Κάποιος μπορεί να τροφοδοτήσει ή να αφήσει τις πίσω ακίδες. Τώρα στις 14 ακίδες υπάρχουν 8 καρφίτσες δεδομένων (7-14 ή D0-D7), 2 ακροδέκτες τροφοδοσίας (1 & 2 ή VSS & VDD ή GND & + 5v), 3ος ακροδέκτης για έλεγχο αντίθεσης (VEE-ελέγχει πόσο παχύ πρέπει να είναι οι χαρακτήρες φαίνεται) και 3 ακίδες ελέγχου (RS & RW & E).
Στο κύκλωμα, μπορείτε να παρατηρήσετε ότι έχω πάρει μόνο δύο ακίδες ελέγχου, αυτό δίνει την ευελιξία. Το bit αντίθεσης και το READ / WRITE δεν χρησιμοποιούνται συχνά, ώστε να μπορούν να βραχυκυκλωθούν στη γείωση. Αυτό θέτει την οθόνη LCD σε υψηλότερη αντίθεση και λειτουργία ανάγνωσης. Πρέπει απλώς να ελέγξουμε ENABLE και RS καρφίτσες για να στείλουμε ανάλογα χαρακτήρες και δεδομένα.
Οι συνδέσεις που γίνονται για LCD δίνονται παρακάτω:
PIN1 ή VSS στη γείωση
PIN2 ή VDD ή VCC σε ισχύ + 5v
PIN3 ή VEE στη γείωση (δίνει τη μέγιστη αντίθεση καλύτερα για έναν αρχάριο)
PIN4 ή RS (Επιλογή καταχώρησης) στο PIN0 του ARDUINO UNO
Το PIN5 ή το RW (Ανάγνωση / Εγγραφή) στη γείωση (θέτει την οθόνη LCD σε λειτουργία ανάγνωσης διευκολύνει την επικοινωνία για τον χρήστη)
PIN6 ή E (Ενεργοποίηση) στο PIN1 του ARDUINO UNO
PIN11 ή D4 έως PIN8 του ARDUINO UNO
PIN12 ή D5 έως PIN9 του ARDUINO UNO
PIN13 ή D6 έως PIN10 του ARDUINO UNO
PIN14 ή D7 έως PIN11 του ARDUINO UNO
Το ARDUINO IDE επιτρέπει στο χρήστη να χρησιμοποιεί LCD σε λειτουργία 4 bit. Αυτός ο τύπος επικοινωνίας επιτρέπει στο χρήστη να μειώσει τη χρήση των καρφιτσών στο ARDUINO, σε αντίθεση με άλλους, το ARDUINO δεν χρειάζεται να προγραμματιστεί ξεχωριστά για τη χρήση του σε λειτουργία 4, επειδή από προεπιλογή το ARDUINO έχει ρυθμιστεί για επικοινωνία σε λειτουργία 4 bit. Στο κύκλωμα μπορείτε να δείτε ότι χρησιμοποιήσαμε επικοινωνία 4bit (D4-D7).
Έτσι από απλή παρατήρηση από τον παραπάνω πίνακα συνδέουμε 6 ακροδέκτες LCD με ελεγκτή στον οποίο 4 ακίδες είναι καρφίτσες δεδομένων και 2 ακίδες για έλεγχο.
Η παραπάνω εικόνα δείχνει το διάγραμμα κυκλώματος της οθόνης LCD 16x2 που είναι συνδεδεμένη στο ARDUINO UNO.
Εργαζόμενος
Για τη διασύνδεση μιας οθόνης LCD με το ARDUINO UNO, πρέπει να γνωρίζουμε μερικά πράγματα.
|
Όπως και στον παραπάνω πίνακα, πρέπει απλώς να εξετάσουμε αυτές τις τέσσερις γραμμές για τη δημιουργία επικοινωνίας μεταξύ ARDUINO και LCD.
Πρώτα πρέπει να ενεργοποιήσουμε το αρχείο κεφαλίδας ('#include
Δεύτερον, πρέπει να πούμε στον πίνακα ποιος τύπος LCD χρησιμοποιούμε εδώ. Δεδομένου ότι έχουμε τόσους πολλούς διαφορετικούς τύπους LCD (όπως 20x4, 16x2, 16x1 κ.λπ.). Εδώ πρόκειται να διασυνδέσουμε μια οθόνη LCD 16x2 στο UNO, ώστε να έχουμε το "lcd.begin (16, 2);". Για 16x1 παίρνουμε "lcd.begin (16, 1);".
Σε αυτήν την οδηγία θα πούμε στον πίνακα πού συνδέσαμε τους πείρους. Οι πείροι που είναι συνδεδεμένοι πρέπει να αναπαριστώνται με τη σειρά "RS, En, D4, D5, D6, D7". Αυτές οι ακίδες πρέπει να αντιπροσωπεύονται σωστά. Δεδομένου ότι έχουμε συνδέσει RS με PIN0 και ούτω καθεξής όπως φαίνεται στο διάγραμμα κυκλώματος, αντιπροσωπεύουμε τον αριθμό καρφιτσώματος για επιβίβαση ως "LiquidCrystal lcd (0, 1, 8, 9, 10, 11);". Τα δεδομένα που πρέπει να εμφανίζονται σε LCD θα πρέπει να γράφονται ως "cd.print (" hello, world! ");". Με αυτήν την εντολή, η οθόνη LCD εμφανίζει «γεια, κόσμος!».
Όπως μπορείτε να δείτε, δεν χρειάζεται να ανησυχούμε για τίποτα άλλο, απλώς πρέπει να αρχικοποιήσουμε και το UNO θα είναι έτοιμο να εμφανίσει δεδομένα. Δεν χρειάζεται να γράψουμε βρόχο προγράμματος για να στείλουμε τα δεδομένα BYTE από το BYTE εδώ.
Ο τρόπος επικοινωνίας μεταξύ LCD και UNO εξηγείται βήμα προς βήμα στον κώδικα C που δίνεται παρακάτω: