Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display
Σχηματικό Διάγραμμα μιας Οθόνης Υγρών Κρυστάλλων To Lcd εσωτερικά έχει έναν controller που είναι υπεύθυνος για την επεξεργασία τον δεδομένων που εισέρχονται σε αυτό. Ο Controller αυτός έχει δυο καταχωρητές τους IR Instructions Register & DR Data Register). Ο καταχωρητής IR είναι υπεύθυνος μόνο για εγγραφή και αποθηκεύει εντολές όπως Clear Display ή Cursor Shift. Επίσης αποθηκεύει και διευθύνσεις για τις θέσεις μνήμης RAM της οθόνης Lcd. Ο DR χρησιμοποιείται για να αποθηκεύει δεδομένα (data) όταν αυτά διαβάζονται από τις θέσεις μνήμης RAM ή γράφονται σε αυτές.
Φυσικές διασυνδέσεις LCD με τις θύρες του μικροελεγκτή 8051 V ss V DD =5V V 0 5V 8 7 1 2 3 0 Ρ0 13 LCD Display 5 4 6 5 1 RS EN R/W Ρ2.0 Ρ2.2 Ρ2.1
Γενικά οι οθόνες LCDs έχουν 14 ακίδες (pins) όπως φαίνεται στον πίνακα που ακολουθεί. Αριθμός Ακίδας (Pin) Σύμβολο Λειτουργία 1 Vss 0V 2 Vdd 5V 3 Vo contrast adjustment voltage 4 RS [P2.0] Low (0):instruction code input Εάν RS=0 (clr rs) στέλνουμε εντολές όπως για καθαρισμό οθόνης, μετατόπιση του κέρσορα, αλλαγή γραμμής κτλ. High (1):Character Data input Εάν RS=1 (setb rs) στέλνουμε δεδομένα για εμφάνιση στην οθόνη του LCD. 5 R/W [P2.1] High (1):data read Εάν R_W=1 (setb R_W) ανάγνωση δεδομένων από το LCD Low (0):data write Εάν R_W=0 (clr R_W) εγγραφή δεδομένων στο LCD 6 EN [P2.2] Enable signal H ακίδα enable χρησιμοποιείται για να αναγνωστούν τα περιεχόμενα της θύρας P0 από το LCD. Όταν τα περιεχόμενα προωθούνται στις ακίδες [P0.0 P0.7], ένας παλμός εφαρμόζεται στην ακίδα enable ώστε κατά την μετάβαση από high σε low η οθόνη lcd να αναγνώσει το περιεχόμενο (εντολές ή δεδομένα). (setb en clr en). Αυτός ο παλμός πρέπει να έχει διάρκεια τουλάχιστον 450ns. 7-14 P0.0 έως P0.7 8-bit data bus line (ακίδες δεδομένων)
ΑΠΕΙΚΟΝΙΣΗ ΣΧΕΣΗΣ 8051 ΜΕ ΤΟ LCD 8pins Οι ακίδες P0.0 έως P0.7 αποτελούν την βασική θύρα επικοινωνίας του 8051 με το Lcd. Η ακίδα P2.0 του 8051 καθορίζει αν στέλνονται εντολές (instructions) ή δεδομένα (data) στο Lcd.(P2.0 = 0 Instruction Mode, P2.0 = 1 Data Mode). Η ακίδα P2.1 του 8051 καθορίζει αν θα γραφούν ή θα αναγνωστούν δεδομένα στο Lcd. Η ακίδα P2.2 του 8051 δημιουργεί τον παλμό ανάγνωσης των περιεχομένων της θύρας P0 από το Lcd.
θέση Η οθόνη Lcd του αναπτυξιακού έχει 32 θέσεις εμφάνισης χαρακτήρων ισοκατανεμημένες σε δύο γραμμές. Οι θέσεις της πρώτης σειράς της οθόνης διευθυνσιοδοτούνται με τους αριθμούς 80h έως 8Fh. Αντίστοιχα, οι θέσεις της 2 ης σειράς της οθόνης διευθυνσιοδοτούνται με τους αριθμούς C0h έως CFh. Της αποστολής και εμφάνισης ενός χαρακτήρα σε συγκεκριμένη θέση προηγείται η αποστολή της πληροφορίας θέσης στο Lcd με την επιλογή εντολής (Instruction Mode)
List of Dot Matrix LCD Instructions
Dot Matrix LCD Software Initialization
Διαδικασία Αρχικοποίησης της Οθόνης LCD (1/10) Power ON 38H 38H 38H 38H 06H 0EH 01H 02H 15ms 4.1ms 100μs 40μs 40μs 40μs 40μs 1.64ms Cursor home 40μs INIT_LCD: CLR R_W ; R_W =0, Write Mode CLR RS ; RS =0, Command Mode ACALL DELAY ; Διασφάλιση του χρόνου των 15msec από τροφοδοσία MOV A,#38H ; Η εντολή 38h κάνει high τα bits DB5,DB4,DB3. ACALL CONTROL; (DL:DataLength,N: Number of Lines, F: 5x7 dots. MOV A,#38H ACALL CONTROL MOV A,#38H ACALL CONTROL MOV A,#38H ACALL CONTROL MOV A,#06H ; Η εντολή #06Η ρυθμίζει την μετατόπιση του κέρσορα ACALL CONTROL; προς τα δεξιά. MOV A,#0EH ; Η εντολή #0EH ενεργοποιεί οθόνη και κέρσορα ACALL CONTROL; Επίσης ενεργοποιεί τον κέρσορα να αναβοσβήνει. MOV A,#01H; Η εντολή #01H καθαρίζει την οθόνη ACALL CONTROL MOV A,#80H; Η εντολή #80H μεταφέρει τον κέρσορα στην πρώτη ACALL CONTROL ; γραμμή & πρώτη στήλη όπου θα εμφανιστεί ο RET ; πρώτος χαρακτήρας.
Ανάπτυξη Κώδικα Εμφάνισης Μηνύματος στο LCD (2/10) $nomod51 #include <REG420.h> org ljmp org 0000h main 0030h rs equ p2.0 r_w equ p2.1 en equ p2.2 main: acall INIT_LCD acall AUTHORS sjmp $
Ρουτίνα Καθυστέρησης Delay (3/10) DELAY: MOV R6,#28H DEL6: MOV R7,#0FFH DEL7: DJNZ R7,DEL7 DJNZ R6,DEL6 RET
Ρουτίνα Καθυστέρησης Delaya (4/10) DELAYA: MOV R5,#0AH DEL8: MOV R6,#28H DEL9: MOV R7,#0FFH DEL0: DJNZ R7,DEL0 DJNZ R6,DEL9 DJNZ R5,DEL8 RET
Ρουτίνα Αποστολής Εντολών σε LCD (5/10) CONTROL: CLR RS MOV P0,A SΕΤΒ ΕΝ ACALL DELAY CLR EN RET
Ρουτίνα Αποστολής Δεδομένων σε LCD (6/10) DATUM: SETB RS MOV P0,A SΕΤΒ ΕΝ ACALL DELAYA CLR EN RET
Ρουτίνα Αλλαγής στη 2 η γραμμή LCD (7/10) CHLINE: MOV A,#0C0h ACALL CONTROL RET
Ρουτίνα Καθαρισμού Οθόνης LCD (8/10) CLRSCR: CLR RS MOV A,#01H ACALL CONTROL RET
Ρουτίνα Μεταφοράς Κέρσορα στην αρχική θέση (9/10) CRSHM: CLR RS MOV A,,#02H ACALL CONTROL RET
Ρουτίνα Μεταφοράς Μηνυμάτων στο LCD (10/10) AUTHORS: MOV A,#80H ACALL CONTROL CLR R_W MOV A,#'8' MOV A,#'0' MOV A,#'5' MOV A,#'1' ACALL CHGLINE MOV A,#'P' MOV A,#'R' MOV A,#'O' MOV A,#'C' MOV A,#'E' MOV A,#'S' MOV A,#'S' MOV A,#'O' MOV A,#'R' RET
Delays: 8051 vs DS89C4X0 Οι ρουτίνες CONTROL και DATUM χρησιμοποιούν τις υπορουτίνες καθυστέρησης ονόματι delay και delaya αντίστοιχα. Οι υπορουτίνες αυτές χρησιμοποιούνται για να επιτευχθεί επικοινωνία μεταξύ της «αργής» οθόνης LCD και του «πολύ γρήγορου» μικροϋπολογιστή 8051. F8051=Fosc/12 Fds89c4x0=Fosc/1 Η διαφορά των δύο μικροϋπολογιστών είναι 12 παλμοί της συχνότητας του κρυστάλλου. Παρατήρηση: Ο χρόνος που δεσμεύουν από τον μικροϋπολογιστή οι ρουτίνες καθυστέρησης είναι υπολογίσιμος και ανάλογος της συχνότητας ταλαντωτή. T=1/F: (T ορίζεται ο χρόνος ενός κύκλου μηχανής <mc>) Tmc8051=1.085μs Tmcds89c4x0=0.09μs Oι κύκλοι μηχανής που χρειάζεται η κάθε εντολή για να εκτελεστεί στον κάθε ένα μικροϋπολογιστή δίνεται από τον κατασκευαστή. Π.χ. η εντολή RET στον 8051 χρειάζεται 2mc ενώ στον ds89c4x0 χρειάζεται 3mc.
Χρήσιμες εντολές για πειραματισμό στον έλεγχο του LCD. MOV A, #01h MOV A, #02h MOV A, #04h MOV A, #06h MOV A, #05h MOV A, #07h MOV A, #08h MOV A, #0Αh MOV A, #0Ch MOV A, #0Εh MOV A, #0Fh MOV A, #10h MOV A, #14h MOV A, #18h MOV A, #1Ch MOV A, #0C0h MOV A, #80h MOV A, #81h ;Καθαρισμός της οθόνης LCD ;Μεταφορά του κέρσορα στην 1 η γραμμή και 1 η στήλη ;Μετατόπιση του κέρσορα προς τα αριστερά ;Μετατόπιση του κέρσορα προς τα δεξιά ;Μετατόπιση μηνύματος δεξιά ;Μετατόπιση μηνύματος αριστερά ;Απενεργοποίηση (σβήσιμο) οθόνης και εξαφάνιση του κέρσορα ;Απενεργοποίηση (σβήσιμο) οθόνης και εμφάνιση του κέρσορα ;Ενεργοποίηση (άναμμα) οθόνης και εξαφάνιση του κέρσορα ;Ενεργοποίηση (άναμμα) οθόνης και ο κέρσορας αναβοσβήνει ;Ενεργοποίηση (άναμμα) οθόνης και ο κέρσορας αναβοσβήνει ;Μετατόπιση θέσης κέρσορα προς τα αριστερά ;Μετατόπιση θέσης κέρσορα προς τα δεξιά ;Μετατόπιση ολόκληρης της οθόνης προς τα αριστερά ;Μετατόπιση ολόκληρης της οθόνης προς τα δεξιά ;Μεταφορά του κέρσορα στην 2 η γραμμή 1 η στήλη ;Μεταφορά του κέρσορα στην 1 η γραμμή και 1 η στήλη ;Μεταφορά του κέρσορα στην 1 η γραμμή και 2 η στήλη