- 16x2 αλφαριθμητική οθόνη LCD
- 16x2 LCD CCS Library για MSP430
- Λειτουργίες LCD για οθόνη LCD 16x2 σε MSP430
- Διάγραμμα κυκλώματος για διασύνδεση LCD με MSP430
- Προγραμματισμός MSP430 με χρήση του Code Composer Studio για οθόνη LCD
Αυτό το άρθρο είναι η συνέχεια της σειράς μαθημάτων για τον προγραμματισμό του MSP430 χρησιμοποιώντας το Code Composer Studio. Το τελευταίο σεμινάριο βασίστηκε σε εξωτερικές διακοπές στο MSP430 χρησιμοποιώντας καρφίτσες GPIO. Αυτό το σεμινάριο αφορά τη διασύνδεση μιας οθόνης με MSP430, όταν πρόκειται να εμφανίσει την Οθόνη LCD 16 * 2, είναι η πρώτη επιλογή για οποιονδήποτε ηλεκτρονικό χόμπι. Προηγουμένως είχαμε επίσης διασυνδέσει την οθόνη LCD με το MSP430 χρησιμοποιώντας το Arduino IDE, σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε την εγγενή πλατφόρμα στούντιο Code Composer αντί να χρησιμοποιήσουμε το Arduino IDE, με αυτόν τον τρόπο ως σχεδιαστής, έχουμε μεγαλύτερη ευελιξία.
Για να μάθετε περισσότερα σχετικά με την οθόνη LCD 16x2 και τη χρήση της με άλλους μικροελεγκτές, ανατρέξτε παρακάτω σεμινάρια.
- Διασύνδεση LCD με ATmega16
- Διασύνδεση LCD με Raspberry Pi
- Διασύνδεση LCD με μικροελεγκτή PIC
- Διασύνδεση LCD με ARM7-LPC2148
- Διασύνδεση LCD με NodeMCU
- Διασύνδεση LCD με STM32
- Διασύνδεση LCD με MSP430G2
- Διασύνδεση LCD με STM8
Έχει ένα ενσωματωμένο IC hd44780 που μπορεί να αποθηκεύσει την εντολή και τα δεδομένα που της έχουν μεταφερθεί. Η μονάδα LCD έχει περίπου 16 ακίδες. 8 από τις οποίες είναι καρφίτσες δεδομένων, 4 από αυτές είναι καρφίτσες τροφοδοσίας για LED οπίσθιου φωτισμού και ολόκληρη τη μονάδα LCD, 3 για έλεγχο της λειτουργίας και 1 ακίδα για ρύθμιση αντίθεσης. Το σεμινάριο βασίζεται στη βιβλιοθήκη που δημιουργήθηκε από τον Dennis Eichmann. Είναι πολύ εύκολο να χρησιμοποιήσετε μια βιβλιοθήκη με ξεχωριστές λειτουργίες για την εκτύπωση διαφορετικών τύπων δεδομένων. Διαθέτει επίσης διατάξεις για την εμφάνιση των δεδομένων σε διάφορες μορφές με μηδενικά, κενά και διαγραμμένα μηδενικά. Είναι μια αρκετά εκτεταμένη και περιεκτική βιβλιοθήκη και μπορεί να διαμορφωθεί στις διάφορες συνδέσεις. Εδώ, το αρχείο κεφαλίδας τροποποιείται για να φιλοξενήσει παράλληλη διαμόρφωση 8 ακίδων για επικοινωνία δεδομένων.
16x2 αλφαριθμητική οθόνη LCD
Μια γενική οθόνη 16x2 έχει ενσωματωμένο hd44780 IC (κυκλωμένο με κόκκινο χρώμα παρακάτω), το οποίο μπορεί να αποθηκεύσει την εντολή και τα δεδομένα που της διαβιβάστηκαν. Η μονάδα LCD έχει περίπου 16 ακίδες. 8 από τις οποίες είναι καρφίτσες δεδομένων, 4 από αυτές είναι καρφίτσες τροφοδοσίας για LED οπίσθιου φωτισμού και ολόκληρη τη μονάδα LCD, 3 για έλεγχο της λειτουργίας και 1 ακίδα για ρύθμιση αντίθεσης.
Αυτή η μονάδα LCD εμφανίζεται πιο ευέλικτη και χρησιμοποιεί ελάχιστες ακίδες σε σύγκριση με άλλες τμηματικές οθόνες LCD. Εάν είστε περίεργοι να μάθετε πώς λειτουργεί ακριβώς αυτό, θα πρέπει να ελέγξετε τη λειτουργία της οθόνης LCD 16x2 όπου έχουμε ήδη συζητήσει πώς λειτουργεί η LCD λεπτομερώς.
RS Pin: RS = 1 θα ενεργοποιήσει τον καταχωρητή δεδομένων στην οθόνη LCD, ο οποίος χρησιμοποιείται για την εγγραφή των τιμών στον καταχωρητή δεδομένων στην οθόνη LCD. Το RS = 0 θα ενεργοποιήσει το μητρώο εντολών της οθόνης LCD.
Ενεργοποίηση καρφίτσας: Αρνητικό άκρο που ενεργοποιείται. όταν ο ακροδέκτης αλλάξει από την κατάσταση ΥΨΗΛΗΣ σε κατάσταση ΧΑΜΗΛΗΣ, το LCD καλείται να γράψει στους πείρους δεδομένων. Θετικό άκρο που προκαλείται. όταν ο πείρος αλλάξει από κατάσταση LOW σε ΥΨΗΛΗ κατάσταση, το LCD ζητά να διαβάσει από τις καρφίτσες δεδομένων.
Καρφίτσα R / W: Το R / W = 0 θα γράψει στον καταχωρητή οδηγιών ή στον καταχωρητή δεδομένων σύμφωνα με την επιλογή του ακροδέκτη RS. Το R / W = 1 θα διαβαστεί από το IR ή το DR σύμφωνα με την επιλογή της ακίδας RS.
Λειτουργία RS R / W
0 0 IR εγγραφή ως εσωτερική λειτουργία (οθόνη καθαρή κ.λπ.)
0 1 Διαβάστε απασχολημένη σημαία (DB7) και μετρητή διευθύνσεων (DB0 έως DB6)
1 0 εγγραφή DR ως εσωτερική λειτουργία (DR σε DDRAM ή CGRAM)
1 1 DR διαβάζεται ως εσωτερική λειτουργία (DDRAM ή CGRAM έως DR)
Καρφίτσες D0-D7: Τα δεδομένα μεταφέρονται από και προς την εντολή και οι καταχωρητές δεδομένων μέσω αυτών των ακίδων.
Ακίδες Supply: V ss, V dd οι πείροι χρησιμοποιούνται για την εξουσία η ηλεκτρονική μονάδα LCD. Οι ακίδες A, K τροφοδοτούν τον οπίσθιο φωτισμό LED. Οι ακίδες V 0 χρησιμοποιούνται για τον έλεγχο της αντίθεσης.
16x2 LCD CCS Library για MSP430
Το σεμινάριο βασίζεται στη βιβλιοθήκη που δημιουργήθηκε από τον Dennis Eichmann. Είναι πολύ εύκολο να χρησιμοποιήσετε μια βιβλιοθήκη με ξεχωριστές λειτουργίες για την εκτύπωση διαφορετικών τύπων δεδομένων. Διαθέτει επίσης διατάξεις για την εμφάνιση των δεδομένων σε διάφορες μορφές με μηδενικά, κενά και διαγραμμένα μηδενικά. Είναι μια αρκετά εκτεταμένη και περιεκτική βιβλιοθήκη και μπορεί να διαμορφωθεί στις διάφορες συνδέσεις. Εδώ, το αρχείο κεφαλίδας τροποποιείται για να φιλοξενήσει παράλληλη διαμόρφωση 8 ακίδων για επικοινωνία δεδομένων. Μπορείτε να κατεβάσετε τη βιβλιοθήκη από τον παρακάτω σύνδεσμο, αφού πραγματοποιήσετε λήψη ακολουθήστε τα παρακάτω βήματα για να προσθέσετε τη βιβλιοθήκη στο CCS.
Κατεβάστε τη βιβλιοθήκη 16x2 για MSP430 - Code Composer Studio
Βήμα 1: Δημιουργία αρχείων και έργων
Δημιουργείται ένα προεπιλεγμένο έργο CCS χρησιμοποιώντας το μενού αρχείων. Στο παράθυρο διαλόγου Δημιουργία έργου, επιλέξτε τη συσκευή και δώστε το hd44780 ως όνομα έργου. Κάτω από τον τύπο έργου και την αλυσίδα εργαλείων, επιλέξτε τον τύπο εξόδου ως στατική βιβλιοθήκη και δημιουργήστε το έργο.
Στη λωρίδα Project Explorer (αριστερή πλευρά), δημιουργήστε ένα αρχείο κεφαλίδας στο φάκελο include και ονομάστε το ως hd44780.h . Στη συνέχεια, αντιγράψτε τα περιεχόμενα του ληφθέντος αρχείου hd44780.h σε αυτό το νεοδημιουργημένο.
Τώρα δημιουργήστε το κύριο έργο αλλάζοντας τον τύπο εξόδου σε εκτελέσιμο και δημιουργήστε ένα έργο με το όνομα CCS_LCD .
Βήμα 2: Συμπεριλάβετε τις διαδρομές αναζήτησης στο κύριο έργο
Στο παράθυρο διαλόγου ιδιοτήτων του έργου hd44780 και μέσα στις επιλογές συμπερίληψης για τον μεταγλωττιστή MSP430, προσθέστε το φάκελο συμπερίληψης στο αρχείο τη διαδρομή αναζήτησης.
Στη συνέχεια, δημιουργήστε αυτό το έργο για να δημιουργήσετε τα απαραίτητα αρχεία σύνδεσης, όπως αρχεία.lib . Η δημιουργία αυτού θα δημιουργήσει το αρχείο hd44780.lib μέσα στο φάκελο εντοπισμού σφαλμάτων.
Βήμα 3: Συμπεριλάβετε τις διαδρομές αναζήτησης για Linker
Στο παράθυρο διαλόγου ιδιοτήτων για το έργο CCS_LCD και στη διαδρομή αναζήτησης αρχείων της καρτέλας MSP430 Linker, συμπεριλάβετε το hd44780.lib που βρίσκεται μέσα στο φάκελο εντοπισμού σφαλμάτων του έργου hd44780. Ο φάκελος εντοπισμού σφαλμάτων περιλαμβάνεται επίσης στη διαδρομή αναζήτησης αρχείων.
Ο φάκελος include προστίθεται και πάλι στις επιλογές συμπερίληψης του μεταγλωττιστή MSP430 του έργου CCS_LCD .
Η βιβλιοθήκη συντάχθηκε με επιτυχία και προστέθηκε στον σύνδεσμο του κύριου έργου.
Λειτουργίες LCD για οθόνη LCD 16x2 σε MSP430
void hd44780_timer_isr (void): Αυτό ονομάζεται περιοδικά στο ISR του χρονοδιακόπτη A. Ο χρονοδιακόπτης Α χρησιμοποιείται για να εκτελεί περιοδικά τις λειτουργίες LCD, όπως εκκαθάριση της οθόνης, ρύθμιση του δρομέα και εμφάνιση των δεδομένων. Η λειτουργία πρόκειται να χρησιμοποιηθεί στο ISR. Δεν επιστρέφει τίποτα.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Θα γράψει τη συμβολοσειρά που καθορίζεται στο πρώτο όρισμα.
char * ch__string: Η συμβολοσειρά που θα γραφτεί στο buffer δεδομένων (μέσα στη συνάρτηση hd44780_timer_isr ). Τα δεδομένα θα αντιγραφούν στο μητρώο δεδομένων και στο μητρώο οδηγιών του LCD IC όταν καλείται περιοδικά το hd44780_timer_isr .
uint8_t u8__row: Ορίζει τη σειρά στην οποία θα γραφτεί η συμβολοσειρά.
uint8_t u8__ στήλη: Ορίζει τη στήλη στην οποία θα γραφτεί η συμβολοσειρά.
uint8_t u8__cr_lf: Εάν έχει οριστεί 1, η σειρά θα μεταφερθεί στην επόμενη. Εάν είναι 0, η εκτύπωση σταματά στην ίδια σειρά.
void hd44780_clear_screen (void): Αυτή η λειτουργία θα καθαρίσει ολόκληρη την οθόνη. Δεν επιστρέφει τίποτα.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__ στήλη, uint8_t u8__cr_lf): Η λειτουργία θα εμφανίσει την τιμή στην οθόνη χωρίς την υπογραφή 16.
uint16_t u16__value: Ο ακέραιος που εμφανίζεται εμφανίζεται στο πρώτο όρισμα.
uint8_t u8__leading_zero_handling: Εάν περάσει το 0, θα εμφανιστούν τα αρχικά μηδενικά στην ακέραια τιμή. Εάν περάσει το 1, τα μηδενικά θα αδειάσουν. Εάν το 2 περάσει ως παράμετρος, θα εμφανιστούν μόνο τα σημαντικά ψηφία.
uint8_t u8__row: Επιλέγεται η σειρά στην οποία εμφανίζεται ο ακέραιος.
uint8_t u8__ στήλη : Η στήλη που θα εκτυπωθεί επιλέγεται χρησιμοποιώντας το όρισμα.
uint8_t u8__cr_lf: Εάν έχει οριστεί 1, η σειρά θα μεταφερθεί στην επόμενη. Εάν είναι 0, η εκτύπωση σταματά στην ίδια σειρά.
Διάγραμμα κυκλώματος για διασύνδεση LCD με MSP430
Το πλήρες διάγραμμα κυκλώματος απεικονίζεται στην παρακάτω εικόνα. Όπως μπορείτε να δείτε, οι συνδέσεις υλικού είναι πολύ απλές και έχουμε τροφοδοτήσει την πλήρη πλακέτα χρησιμοποιώντας έναν προσαρμογέα 5V.
Οι συνδέσεις γίνονται σύμφωνα με το παραπάνω σχέδιο. Ανατρέξτε στον παρακάτω πίνακα για τις λεπτομερείς συνδέσεις.
Vss | Γείωση τροφοδοσίας 5V |
Vdd | 5V |
V0 | Έξοδος ποτενσιόμετρου |
RS | P2.1 |
Ε / Δ | Εδαφος |
μι | P2.0 |
Δ0 | P1.0 |
Δ1 | Σ1.1 |
Δ2 | Σ1.2 |
Δ3 | Σ1.3 |
Δ4 | Σ1.4 |
Δ5 | Σ1.5 |
Δ6 | P1.6 |
Δ7 | Σ1.7 |
ΕΝΑ | Αντίσταση 220 Ohm |
κ | Εδαφος |
Η άνοδος του οπίσθιου φωτισμού LED δεν μπορεί να συνδεθεί απευθείας σε τροφοδοσία 5V. Θα πρέπει να συνδεθεί με μια αντίσταση για να ελαχιστοποιηθεί η τρέχουσα ροή μέσω της μονάδας LCD. Έκανα τις συνδέσεις μου χρησιμοποιώντας μια πλακέτα perf για να κολλήσω την οθόνη LCD και έπειτα χρησιμοποίησα καλώδια jumper για να συνδέσω την οθόνη LCD με την πλακέτα MSP430, η διάταξη μου μοιάζει με αυτό παρακάτω, αλλά μπορείτε επίσης απλά να χρησιμοποιήσετε μια πλακέτα για να κάνετε τις συνδέσεις σας.
Προγραμματισμός MSP430 με χρήση του Code Composer Studio για οθόνη LCD
Ο πλήρης κωδικός που χρησιμοποιείται σε αυτό το έργο δίνεται στο κάτω μέρος αυτής της σελίδας. Η εξήγηση της χρήσης του κωδικού έχει ως εξής. Αρχικά, ανοίξτε το αρχείο κεφαλίδας (hd44780.h) και συμπεριλάβετε τον αριθμό τμήματος του μικροελεγκτή στο πρώτο μέρος του αρχείου.
# συμπερίληψη "msp430g2553.h"
Ο χρονοδιακόπτης πρέπει να σταματήσει πρώτα. Οι καταχωρητές ελέγχου DCOCTL και BCSCTL1 χρησιμοποιούνται για τη διαμόρφωση του ταλαντωτή του μικροελεγκτή. Οι παρακάτω γραμμές θα ρυθμίσουν το MCLK ώστε να είναι 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Οι ακίδες 1 της θύρας πρέπει να αναφέρονται ως έξοδος, η οποία πρέπει να χρησιμοποιείται για τις ακίδες δεδομένων. Ο πείρος 0 και ο πείρος 1 πρέπει επίσης να αναφέρονται ως έξοδος στη θύρα 2, η οποία θα χρησιμοποιηθεί για τον πείρο RS και R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Το ενσωματωμένο χρονόμετρο χρησιμοποιείται για την εμφάνιση τιμών περιοδικά. Ο χρονοδιακόπτης A επιλέγεται με SMCLK (1MHZ) ως πηγή ρολογιού και η συνεχής λειτουργία είναι ο τρόπος λειτουργίας.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Οι διακοπές για τα κανάλια σύγκρισης 1 και 2 και η διακοπή υπερχείλισης χρονοδιακόπτη μοιράζονται τον ίδιο φορέα διακοπής ( TIMER0_A1_VECTOR ) με διαφορετικές διευθύνσεις έναρξης. Το κανάλι σύλληψης σύγκρισης 1 (CCR1) χρησιμοποιεί το 2 ως διεύθυνση, το οποίο χρησιμοποιείται στην περίπτωση εναλλαγής.
#pragma vector = TIMER0_A1_VECTOR __ interrupt void timer_0_a1_isr (void) { switch (TA0IV) { περίπτωση 2: { hd44780_timer_isr (); Διακοπή; } } }
Μόλις συντάξετε τον κωδικό σας, μπορείτε να τον ανεβάσετε στον πίνακα MSP430, όπως εξηγείται στο ξεκίνημα με τον οδηγό MSP430. Εάν όλα πάνε όπως αναμενόταν, θα πρέπει να βλέπετε την οθόνη LCD σας κάποια αντίθεση όπως φαίνεται παρακάτω.
Εάν η δοκιμή σας είναι πολύ χαμηλή, μπορείτε να δοκιμάσετε να ρυθμίσετε το ποτενσιόμετρο για καλύτερη αντίθεση. Η πλήρης εργασία του έργου μπορεί επίσης να βρεθεί στο παρακάτω βίντεο. Ελπίζω να σας άρεσε το έργο και βρήκατε ενδιαφέρον να δημιουργήσετε το δικό σας. Αν έχετε απορίες, αφήστε τις στην παρακάτω ενότητα σχολίων. Μπορείτε επίσης να γράψετε όλες τις τεχνικές ερωτήσεις σας στα φόρουμ για να τους απαντήσετε ή να ξεκινήσετε μια συζήτηση.