Πίνακας περιεχομένων:

3-Wire HD44780 LCD για λιγότερο από 1 δολάριο: 5 βήματα
3-Wire HD44780 LCD για λιγότερο από 1 δολάριο: 5 βήματα

Βίντεο: 3-Wire HD44780 LCD για λιγότερο από 1 δολάριο: 5 βήματα

Βίντεο: 3-Wire HD44780 LCD για λιγότερο από 1 δολάριο: 5 βήματα
Βίντεο: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Ιούλιος
Anonim
3-Wire HD44780 LCD για λιγότερο από 1 δολάριο
3-Wire HD44780 LCD για λιγότερο από 1 δολάριο

Σε αυτό το διδακτικό θα μάθουμε πώς μπορούμε να συνδέσουμε μια LCD που βασίζεται στο chipset HD44780 στο δίαυλο SPI και να την οδηγήσουμε με μόνο 3 καλώδια για λιγότερο από 1 $. Αν και θα επικεντρωθώ στην αλφαριθμητική οθόνη HD44780 σε αυτό το σεμινάριο, η ίδια αρχή θα λειτουργήσει σχεδόν το ίδιο για οποιαδήποτε άλλη LCD που χρησιμοποιεί παράλληλο δίαυλο δεδομένων 8 bit και μπορεί να προσαρμοστεί πολύ εύκολα για να ταιριάζει σε οθόνες με διαύλους δεδομένων 16 bit Το Οι αλφαριθμητικές οθόνες που βασίζονται σε HD44780 είναι συνήθως διαθέσιμες σε διαστάσεις 16x2 (2 γραμμές που αποτελούνται από 16 χαρακτήρες) και 20x4, αλλά μπορούν να βρεθούν σε πολλές περισσότερες μορφές. Η πιο «περίπλοκη» οθόνη θα ήταν μια οθόνη 40x4, αυτό το είδος οθόνης είναι ιδιαίτερο καθώς διαθέτει 2 χειριστήρια HD44780, ένα για τις δύο πάνω σειρές και ένα για τις δύο κάτω σειρές. Ορισμένα γραφικά LCD διαθέτουν επίσης δύο χειριστήρια. Οι οθόνες LCD HD44780 είναι υπέροχες, είναι πολύ φθηνές, ευανάγνωστες και αρκετά εύκολες στην εργασία. Έχουν όμως και κάποια μειονεκτήματα, αυτές οι οθόνες καταλαμβάνουν πολλές ακίδες εισόδου/εξόδου όταν συνδέονται με το Arduino. Σε απλά έργα αυτό δεν προκαλεί ανησυχία, αλλά όταν τα έργα γίνονται μεγάλα, με πολλά IO ή όταν χρειάζονται ορισμένες ακίδες για πράγματα όπως αναλογική ανάγνωση ή PWM, το γεγονός ότι αυτές οι οθόνες LCD απαιτούν τουλάχιστον 6 ακίδες μπορεί να γίνει πρόβλημα. Μπορούμε όμως να λύσουμε αυτό το πρόβλημα με φθηνό και ενδιαφέροντα τρόπο.

Βήμα 1: Λήψη των εξαρτημάτων

Χρησιμοποίησα την TaydaElectronics για τα περισσότερα εξαρτήματα που χρησιμοποίησα σε αυτό το έργο. Μπορείτε να αποκτήσετε αυτά τα μέρη και στο ebay, αλλά για ευκολία στη χρήση, θα σας συνδέσω με την Tayda. Λίστα αγορών2 - πακέτο 74HC595 DIP161 - Γενική αντρική κεφαλίδα - 2 ακίδες. Αυτό δεν απαιτείται, το χρησιμοποίησα ως τρόπο μόνιμης απενεργοποίησης του οπίσθιου φωτισμού.3 - Κεραμικός πυκνωτής - χωρητικότητα 0.1μF. τάση 50V1 - Ηλεκτρολυτικός πυκνωτής - χωρητικότητα 10μF; τάση 35V1 - Κεραμικός πυκνωτής - χωρητικότητα 220pF. τάση 50V1 - NPN -Transistor - part # PN2222A* 1 - 1k Ω Resistor1 - Potimometer Trimmer - μέγιστη αντίσταση 5kΩ1 - 470 Ω Resistor* Με ένα τρανζίστορ NPN ο οπίσθιος φωτισμός θα παραμείνει σβηστός μέχρι να ενεργοποιηθεί από το λογισμικό. Εάν θέλετε να ενεργοποιήσετε τον οπίσθιο φωτισμό από προεπιλογή, χρησιμοποιήστε ένα τρανζίστορ τύπου PNP. Ωστόσο, θα πρέπει να γίνουν αλλαγές στον κωδικό της παρεχόμενης βιβλιοθήκης. Το υποσύνολο για αυτήν τη λίστα είναι 0,744 $. Η κεφαλίδα καρφιτσών δεν απαιτείται επίσης, οπότε μπορείτε να εξοικονομήσετε 15 σεντς εκεί και το υποσύνολο θα είναι 0,6 $.

Βήμα 2: Γνωρίστε το υλικό σας #1

Γνωρίστε το υλικό σας #1
Γνωρίστε το υλικό σας #1

Εδώ είναι μια τυπική ακίδα από μια οθόνη HD44780 LCD, είναι επίσης πολύ παρόμοια με ορισμένες γραφικές LCD επίσης. Το HD44780 μπορεί να λειτουργήσει σε δύο λειτουργίες: 1. Λειτουργία 4-bit, όπου κάθε byte που αποστέλλεται στην οθόνη LCD αποτελείται από 2 μέρη 4-bit. 2. Λειτουργία 8-bit, στην οποία θα εστιάσουμε. Η οθόνη LCD έχει συνολικά 16 ακίδες, 3 ακίδες ελέγχου και 8 ακίδες δεδομένων: RS - Ελέγχει εάν θέλουμε να στείλουμε μια εντολή ή δεδομένα στην οθόνη LCD. Όπου "υψηλό" σημαίνει δεδομένα (ένας χαρακτήρας) και "χαμηλό" σημαίνει ένα byte εντολών. R/W - Ο ελεγκτής HD44780 σάς επιτρέπει να διαβάζετε από τη μνήμη RAM του. Όταν αυτή η καρφίτσα είναι "υψηλή", μπορούμε να διαβάσουμε δεδομένα από τις καρφίτσες δεδομένων. Όταν είναι «χαμηλό» μπορούμε να γράψουμε δεδομένα στην οθόνη LCD. Παρόλο που η επιλογή ανάγνωσης από LCD μπορεί να είναι χρήσιμη σε ορισμένες περιπτώσεις, δεν θα το ξεπεράσουμε σε αυτό το σεμινάριο και απλώς θα γειώσουμε αυτόν τον πείρο για να διασφαλίσουμε ότι είναι πάντα σε λειτουργία εγγραφής. E - E είναι η καρφίτσα "Ενεργοποίηση", αυτή η καρφίτσα αλλάζει "υψηλή" και "χαμηλή" για να γράψει τα δεδομένα στη μνήμη RAM της και τελικά να τα εμφανίσει στην οθόνη. DB0-7 - Αυτές είναι οι ακίδες δεδομένων. Σε λειτουργία 4 -bit χρησιμοποιούμε μόνο τα 4 υψηλά bits DB4 -DB7 και σε λειτουργία 8 bit χρησιμοποιούνται όλα αυτά. VSS - Αυτό είναι το pin pin., μπορούμε εύκολα να την τροφοδοτήσουμε με ισχύ από την καρφίτσα + 5v του Arduino. Vo - Αυτή είναι η ακίδα που σας επιτρέπει να ορίσετε το επίπεδο αντίθεσης για την οθόνη, απαιτεί ποτενσιόμετρο, συνήθως χρησιμοποιείται δοχείο 5K Ohm. LED + - Αυτό είναι το πηγή ενέργειας για τον οπίσθιο φωτισμό. Ορισμένες οθόνες LCD δεν διαθέτουν οπίσθιο φωτισμό και έχουν μόνο 14 ακίδες. Στις περισσότερες περιπτώσεις αυτός ο πείρος απαιτεί επίσης σύνδεση +5v. LED- - Αυτό είναι το έδαφος για τον οπίσθιο φωτισμό. ** Είναι σημαντικό να ελέγξετε το φύλλο δεδομένων της οθόνης ή να επιθεωρήσετε το PCB του για να ελέγξετε για αντίσταση οπίσθιου φωτισμού, στις περισσότερες οθόνες LCD θα είναι κατασκευασμένες -στην οποία περίπτωση το μόνο που έχετε να κάνετε είναι να εφαρμόσετε ισχύ στο LED+ και στη γείωση στο LED-. Αλλά στην περίπτωση που η οθόνη LCD δεν διαθέτει ενσωματωμένη αντίσταση για τον οπίσθιο φωτισμό, είναι σημαντικό να προσθέσετε μία, διαφορετικά ο οπίσθιος φωτισμός θα καταναλώσει πολύ ενέργεια και τελικά θα καεί. Στις περισσότερες περιπτώσεις, ο τρόπος σύνδεσης αυτής της οθόνης LCD στο Arduino είναι με τη χρήση της σε λειτουργία 4-bit και γείωση του πείρου R/W. Με αυτόν τον τρόπο χρησιμοποιούμε τις ακίδες RS, E και DB4-DB7. Η εκτέλεση σε λειτουργία 4-bit έχει ένα άλλο μικρό μειονέκτημα στο ότι χρειάζεται διπλάσιο χρόνο για την εγγραφή δεδομένων στην οθόνη από ότι θα χρειαζόταν σε μια διαμόρφωση 8-bit. Η οθόνη LCD έχει χρόνο «καθίζησης» 37 μικροδευτερολέπτων, αυτό σημαίνει ότι πρέπει να περιμένετε 37 μικρο δευτερόλεπτα προτού στείλετε την επόμενη εντολή ή byte δεδομένων στην οθόνη LCD. Δεδομένου ότι σε λειτουργία 4-bit πρέπει να στείλουμε δεδομένα δύο φορές για κάθε byte, ο συνολικός χρόνος που απαιτείται για τη σύνταξη ενός byte φτάνει τα 74μικροδευτερόλεπτα. Αυτό είναι ακόμα αρκετά γρήγορο, αλλά ήθελα ο σχεδιασμός μου να παράγει τα καλύτερα δυνατά αποτελέσματα. Η λύση στο πρόβλημά μας με τον αριθμό των καρφιτσών που χρησιμοποιούνται βρίσκεται σε έναν μετατροπέα σειριακής παράλληλης λειτουργίας…

Βήμα 3: Γνωρίστε το υλικό σας #2

Γνωρίστε το υλικό σας #2
Γνωρίστε το υλικό σας #2

Αυτό που θα κάνουμε είναι να φτιάξουμε έναν προσαρμογέα ο οποίος λαμβάνει έναν σειριακό τύπο επικοινωνίας που βγαίνει από το Arduino και μετατρέπει τα δεδομένα σε μια παράλληλη έξοδο που μπορεί να τροφοδοτηθεί στην LCD οθόνη μας. Έρχεται το τσιπ 74HC595. Αυτό είναι ένα πολύ φθηνό και απλό στη χρήση μητρώο βάρδιας. Στην ουσία αυτό που κάνει είναι να λαμβάνει ένα ρολόι και σήματα δεδομένων τα οποία χρησιμοποιεί για να γεμίσει ένα εσωτερικό buffer 8 bit με τα 8 τελευταία bits που «χρονομετρήθηκαν». Μόλις ο πείρος 'Latch' (ST_CP) μεταφερθεί 'ψηλά', μεταφέρει αυτά τα bits στις 8 εξόδους του. Το 595 έχει ένα πολύ ωραίο χαρακτηριστικό, έχει έναν σειριακό ακροδέκτη δεδομένων (Q7 '), αυτός ο πείρος μπορεί να χρησιμοποιηθεί για να μαζέψει αλυσίδα 2 ή περισσότερων 595 μαζί για να σχηματίσει προσαρμογείς σειριακού σε παράλληλους με πλάτος 16 ή περισσότερων bits. Για αυτό το έργο θα χρειαστούμε 2 από αυτές τις μάρκες. Το σχήμα μπορεί επίσης να τροποποιηθεί ώστε να λειτουργεί με ένα μόνο 595 σε λειτουργία 4-bit, αλλά αυτό δεν θα καλυφθεί από αυτό το σεμινάριο.

Βήμα 4: Καλωδίωση όλων

Καλωδίωση Όλα επάνω
Καλωδίωση Όλα επάνω

Τώρα που γνωρίζουμε πώς λειτουργεί το υλικό μας, μπορούμε να τα συνδέσουμε όλα. Στο σχήμα βλέπουμε 2 595 μάρκες μαργαρίτα αλυσοδεμένες μεταξύ τους για να σχηματίσουν μια παράλληλη έξοδο 16 bit. Το κάτω τσιπ είναι στην πραγματικότητα το κύριο, και το πάνω είναι μαργαρίτα αλυσοδεμένο σε αυτό. Αυτό που βλέπουμε εδώ είναι ότι το κάτω μέρος 595 οδηγεί τις ακίδες δεδομένων της LCD σε διαμόρφωση 8-bit, το πάνω τσιπ ελέγχει το σήμα RS και τον οπίσθιο φωτισμό ενεργοποιώντας ή απενεργοποιώντας ένα τρανζίστορ. Θυμηθείτε τη σημείωση *σχετικά με τον οπίσθιο φωτισμό LCD στην ενότητα Γνωρίστε τη σελίδα #1 του υλικού σας, σε περίπτωση που η οθόνη LCD δεν διαθέτει αντίσταση οπίσθιου φωτισμού, μην ξεχάσετε να προσθέσετε μία στο κύκλωμά σας. Στην περίπτωσή μου, οι οθόνες LCD που έχω ήδη διαθέσει με ενσωματωμένη αντίσταση, έτσι παρέλειψα αυτό το βήμα. Η αντίθεση εφαρμόζεται μέσω δοχείου 5K Ohm, η μία ακίδα πηγαίνει στο GND, η δεύτερη πηγαίνει στο VCC και ο υαλοκαθαριστήρας στην καρφίτσα Vo στην οθόνη LCD. Οι πυκνωτές που χρησιμοποιούνται στις γραμμές LCD και 595 VCC αποσυνδέουν τους πυκνωτές, είναι εκεί για να απαλλαγούν από παρεμβολές. Δεν είναι απαραίτητα εάν εργάζεστε σε ένα breadboard, αλλά πρέπει να χρησιμοποιηθούν σε περίπτωση που δημιουργήσετε τη δική σας έκδοση αυτού του κυκλώματος για χρήση εκτός "εργαστηριακών συνθηκών". Τα R5 και C9 με αυτήν την πολύ συγκεκριμένη σειρά δημιουργούν μια καθυστέρηση RC, η οποία διασφαλίζει ότι τα δεδομένα στις εξόδους του 595 έχουν χρόνο να σταθεροποιηθούν πριν η καρφίτσα Enable στην οθόνη LCD οριστεί «υψηλή» και διαβάσει τα δεδομένα. Το Q7 'του κάτω 595 μπαίνει στην σειριακή είσοδο δεδομένων του 595 στην κορυφή, αυτό δημιουργεί μια αλυσίδα μαργαρίτας 595s και έτσι μια διεπαφή 16 bit. Η σύνδεση με το Arduino είναι εύκολη. Χρησιμοποιούμε μια διαμόρφωση 3-καλωδίων, χρησιμοποιώντας τις καρφίτσες SPI του Arduino. Αυτό επιτρέπει πολύ γρήγορες μεταφορές δεδομένων, η αποστολή 2 byte στην οθόνη LCD διαρκεί συνήθως περίπου 8 μικροδευτερόλεπτα. Αυτό είναι πολύ γρήγορο και στην πραγματικότητα είναι πολύ γρηγορότερο από το χρόνο που χρειάζεται η οθόνη LCD για την επεξεργασία των δεδομένων, επομένως απαιτείται καθυστέρηση 30 μικροδευτερολέπτων μεταξύ κάθε εγγραφής. Ένα πολύ μεγάλο όφελος από τη χρήση του SPI είναι ότι οι ακίδες D11 και D13 μοιράζονται με άλλες συσκευές SPI. Αυτό σημαίνει ότι εάν έχετε ήδη ένα άλλο στοιχείο που χρησιμοποιεί SPI, όπως ένα επιταχυνσιόμετρο, αυτή η λύση θα χρησιμοποιήσει μόνο ένα επιπλέον pin για το σήμα ενεργοποίησης. Στην επόμενη σελίδα θα δούμε το αποτέλεσμα. Έχω φτιάξει ένα σακίδιο πλάτης σε μια σανίδα και λειτουργεί πολύ καλά για μένα μέχρι στιγμής.

Βήμα 5: Το αποτέλεσμα + βιβλιοθήκη

Το Αποτέλεσμα + Βιβλιοθήκη
Το Αποτέλεσμα + Βιβλιοθήκη
Το Αποτέλεσμα + Βιβλιοθήκη
Το Αποτέλεσμα + Βιβλιοθήκη
Το Αποτέλεσμα + Βιβλιοθήκη
Το Αποτέλεσμα + Βιβλιοθήκη
Το Αποτέλεσμα + Βιβλιοθήκη
Το Αποτέλεσμα + Βιβλιοθήκη

"Μια εικόνα αξίζει όσο χίλιες λέξεις", συμφωνώ με αυτήν τη δήλωση, οπότε εδώ είναι μερικές εικόνες του τελικού αποτελέσματος για αυτό το έργο. Αυτές είναι εικόνες του ολοκληρωμένου προϊόντος, η προβολή PCB Fritzing είναι η διάταξη του πίνακα που χρησιμοποίησα για την κατασκευή του σακιδίου μου. Μπορεί να σας φανεί χρήσιμο αν θέλετε να φτιάξετε το δικό σας. Μου άρεσε τόσο πολύ που σχεδίασα ένα PCB χρησιμοποιώντας το DipTrace και παρήγγειλα μια παρτίδα 10 PCB. Θα χρειαστώ 2 ή 3 μονάδες για τον εαυτό μου, αλλά θα διαθέσω τα υπόλοιπα σε συμβολική τιμή όταν τα παραλάβω. Οπότε αν ενδιαφέρεται κάποιος ας με ενημερώσει. * Επεξεργασία: Τα PCB είναι εδώ και λειτουργούν. Ακολουθεί η πλήρης συλλογή εικόνων για αυτό το έργο, συμπεριλαμβανομένων των πραγματικών PCB. https://imgur.com/a/mUkpw#0 Φυσικά δεν ξέχασα το πιο σημαντικό πράγμα, μια βιβλιοθήκη για να χρησιμοποιήσω αυτό το κύκλωμα. Είναι συμβατό με τη βιβλιοθήκη LiquidCrystal που περιλαμβάνεται στο Arduino IDE, ώστε να μπορείτε εύκολα να αντικαταστήσετε τις δηλώσεις στο πάνω μέρος του σκίτσου σας και να μην χρειάζεται να αλλάξετε τίποτα άλλο στο σκίτσο σας. Υπάρχει επίσης ένα παράδειγμα σκίτσου που δείχνει πώς λειτουργεί κάθε λειτουργία στη βιβλιοθήκη, οπότε ελέγξτε το.

Συνιστάται: