PDA

Επιστροφή στο Forum : ΠΡΟΒΛΗΜΑ ΜΕ OLED 16X2 DISPLAY



nikoslqc
22-03-16, 00:27
γεια σας και χαρά σας συνάνθρωποι

μετά από πολύ καιρό που απουσίασα από το φόρουμ επέστρεψα με μια σπαζοκεφαλιά που την κάνω λιανά παρακάτω.

Λοιπών στο μεγάλο αυτό διάστημα που απουσίασα , κατάφερα να ασχοληθώ με προγραμματισμο και διάφορα άλλα όπως με την <<κακή>> για τις μέρες μας συνήθεια της εργασίας απλά στάθηκα τυχερός και βρήκα τρύπα και τρύπωσα.
Αλα ας μπούμε στο ψητό, έφτιαξα μια κατασκευή επιλογέα εισόδων με ρελεδακια για προενυσχητη με την συνεργασία φίλου και ένα ωραίο πρωί πήραμε την απόφαση να την κάνουμε λόγω του κόστους το μεταγωγικού πιο μοντέρνο και συνάμα να βλέπουμε και την είσοδο που έχουμε επιλέξει σε display lcd 16x2 δλδ 16 χαρακτήρων δυο σειρών, μέχρι εδώ όλα καλά και με την οδήγηση με τον pic και με το πρόγραμμα.
Ελα όμως που βρήκαμε κάποια στιγμή ψάχνοντας στο διαδίκτυο πιο μπάνικο display με ωραίο φωτισμό και πιο ωραία σε άποψη φινέτσας στα γράμματα και καταλήξαμε να δοκιμάσουμε να το βάλουμε . Το παραγγείλαμε ήρθε το βάλαμε άναψε τρελαθήκαμε με την εμφάνιση των γραμμάτων, αλλά παγώσαμε όταν είδαμε ότι εκεί που το απλό lcd τα έδειχνε κανονικά σε δυο γραμες όπως το προγραμματισα το OLED τα γράφει όλα σε μια γραμμή και δεν μπορούμε να δούμε την δεύτερη γραμμή, ότι δοκιμές και αν έκανα και με το πρόγραμμα και με την σύνδεση ηλεκτρονικά δεν απέδωσε.
Γιαυτό και για να μην τρελαθώ είπα να σας πω τον πόνο μου μπας και βρω καμιά λύση εφόσον έχει ασχοληθεί κάποιος πιο μπασμένος στον πρεογραμματισμο από έμενα, συμπληρωματικη σημείωση- το πρόγραμμα δουλεύει άψογα με το LCD μόνο με το OLED κάνει παρατράγουδα.
Ευχαριστώ εκ των προτέρων για τον χρόνο που θα διαθέσετε.

SRF
22-03-16, 00:36
γεια σας και χαρά σας συνάνθρωποι

μετά από πολύ καιρό που απουσίασα από το φόρουμ επέστρεψα με μια σπαζοκεφαλιά που την κάνω λιανά παρακάτω.

Λοιπών στο μεγάλο αυτό διάστημα που απουσίασα , κατάφερα να ασχοληθώ με προγραμματισμο και διάφορα άλλα όπως με την <<κακή>> για τις μέρες μας συνήθεια της εργασίας απλά στάθηκα τυχερός και βρήκα τρύπα και τρύπωσα.
Αλα ας μπούμε στο ψητό, έφτιαξα μια κατασκευή επιλογέα εισόδων με ρελεδακια για προενυσχητη με την συνεργασία φίλου και ένα ωραίο πρωί πήραμε την απόφαση να την κάνουμε λόγω του κόστους το μεταγωγικού πιο μοντέρνο και συνάμα να βλέπουμε και την είσοδο που έχουμε επιλέξει σε display lcd 16x2 δλδ 16 χαρακτήρων δυο σειρών, μέχρι εδώ όλα καλά και με την οδήγηση με τον pic και με το πρόγραμμα.
Ελα όμως που βρήκαμε κάποια στιγμή ψάχνοντας στο διαδίκτυο πιο μπάνικο display με ωραίο φωτισμό και πιο ωραία σε άποψη φινέτσας στα γράμματα και καταλήξαμε να δοκιμάσουμε να το βάλουμε . Το παραγγείλαμε ήρθε το βάλαμε άναψε τρελαθήκαμε με την εμφάνιση των γραμμάτων, αλλά παγώσαμε όταν είδαμε ότι εκεί που το απλό lcd τα έδειχνε κανονικά σε δυο γραμες όπως το προγραμματισα το OLED τα γράφει όλα σε μια γραμμή και δεν μπορούμε να δούμε την δεύτερη γραμμή, ότι δοκιμές και αν έκανα και με το πρόγραμμα και με την σύνδεση ηλεκτρονικά δεν απέδωσε.
Γιαυτό και για να μην τρελαθώ είπα να σας πω τον πόνο μου μπας και βρω καμιά λύση εφόσον έχει ασχοληθεί κάποιος πιο μπασμένος στον πρεογραμματισμο από έμενα, συμπληρωματικη σημείωση- το πρόγραμμα δουλεύει άψογα με το LCD μόνο με το OLED κάνει παρατράγουδα.
Ευχαριστώ εκ των προτέρων για τον χρόνο που θα διαθέσετε.

Ωραία! ΚΑι τώρα βάλε εδώ και το datasheet του OLED που έχεις, να δούμε τι απαιτεί!

lepouras
22-03-16, 02:08
και σου μίκρυνα λίγο τα γράμματα γιατί τρόμαξα αρχικά. νόμιζα ότι μου πέρασε η πρεσβυωπία . καλή συνέχεια.

nikoslqc
22-03-16, 06:05
και σου μίκρυνα λίγο τα γράμματα γιατί τρόμαξα αρχικά. νόμιζα ότι μου πέρασε η πρεσβυωπία . καλή συνέχεια.
κανένα πρόβλημα λαθοι είμαστε ανθρώπους κάνουμε και τώρα να δούμε πως θα ανεβάσουμε το pdf. αλα με το συμπαθειο θα βαλω το λινκακι που εχει μεσα το pdf ευχαριστω

http://mauser.pt/catalog/userfiles/017-0767.pdf

Dragonborn
22-03-16, 06:41
λαθοι είμαστε ανθρώπους κάνουμε
Πολύ σωστά! Αν και καθήμενος ορθώς εμίλησες.
:ok:

manolena
22-03-16, 09:41
γεια σας και χαρά σας συνάνθρωποι

μετά από πολύ καιρό που απουσίασα από το φόρουμ επέστρεψα με μια σπαζοκεφαλιά που την κάνω λιανά παρακάτω....

1. Είσαι ο "γνωστός" Νίκος απο τη Λάρισα;

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

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

xrist sakis
22-03-16, 10:05
Πράγματι, αυτά τα OLED έχουν ένα θέμα και δεν λειτουργούν με τον ίδιο κώδικα όπως οι LCD. Δοκίμασε να μην αλλάζεις σειρά, αλλά να συνεχίσεις σαν να είναι μία γραμμή 32 χαρακτήρων. Είχα και εγω θέμα με αυτά, αλλά επειδή χρησιμοποιώ ένα γραφικό πρόγραμμα το έχουν λύσει αυτοί το θέμα και μου τα βγάζει κανονικά, είτε σε 2x16 είτε σε 4x16.
Σάκης

chip
22-03-16, 10:33
αυτά που έγραψα πιο πριν τα έσβησα... γιατί δεν ήταν η σωστή απάντηση όπως σωστά επισήμανε ο Γιώργος GeorgeVita

παρεπιπτόντως... έχει πολύ ωραίο controller που μπορεί να επιλέξεις character σετ (οπότε έχει και Ελληνικά) (βέβαια αν δεν μου ξέφυγε κάτι για να μπορείς να αλλάξεις το character set θα πρέπει να δουλεύεις σε 8bit Mode) ενώ έχει και graphic mode που κάνεις το lcd σαν γραφική 100x16 pixel

GeorgeVita
22-03-16, 12:28
...Βάλε τον κέρσορα στη διεύθυνση [B]C0 για να πας στη δεύτερη γραμμή (στα Lcd είναι στο 40

Αν ισχύει αυτό (το "C0"), η πρώτη γραμμή ξεκινά από το "80" επειδή το DB7 για να δείχνει την DDRAM είναι πάντα "1".

63439

Κάπου αλλού είναι το πρόβλημα λ.χ. "set cursor position".

chip
22-03-16, 13:32
έχεις δίκιο...
ναι από το 80 ξεκινάει η πρώτη γραμμή... (το D7 είναι μόνιμα 1)

nikoslqc
22-03-16, 20:53
ενα ενα τα πραγματα
1. το προγραμμα ειναι φτιαγμενο σε flowcode κι αυτο γιατι προσπαθησα να μαθω απο την αρχη <<C>> αλα που μυαλο .
2. μπορω να ανεβασω σε C αφου ετσι κι αλιως το μετατρεπει πριν το compiling in HEX.
το πιο βασικο ειναι οτι δεν θυμαμαι πως ανεβαζω αρχεια γιατι ου γαρ ερχεται μονον ........

nikoslqc
22-03-16, 20:56
Πράγματι, αυτά τα OLED έχουν ένα θέμα και δεν λειτουργούν με τον ίδιο κώδικα όπως οι LCD. Δοκίμασε να μην αλλάζεις σειρά, αλλά να συνεχίσεις σαν να είναι μία γραμμή 32 χαρακτήρων. Είχα και εγω θέμα με αυτά, αλλά επειδή χρησιμοποιώ ένα γραφικό πρόγραμμα το έχουν λύσει αυτοί το θέμα και μου τα βγάζει κανονικά, είτε σε 2x16 είτε σε 4x16.
Σάκης

ποιο ειναι το προγραμμα αυτο που δουλευεις??? αν ειναι ευκολο να μου πεις

nikoslqc
24-03-16, 05:05
:001_smile:
ενα ενα τα πραγματα
1. το προγραμμα ειναι φτιαγμενο σε flowcode κι αυτο γιατι προσπαθησα να μαθω απο την αρχη <<C>> αλα που μυαλο .
2. μπορω να ανεβασω σε C αφου ετσι κι αλιως το μετατρεπει πριν το compiling in HEX.
το πιο βασικο ειναι οτι δεν θυμαμαι πως ανεβαζω αρχεια γιατι ου γαρ ερχεται μονον ........

παρακατω υπαρχει το προγραμμα σε γλωσσα <:001_smile:μοσχαρισια > εεε σε γλωσσα προγραμματισμου C ευχαριστω

nikoslqc
25-03-16, 04:47
μπραβο και στα φαντασματα ολα τα γραμματα σε οποιοθεμα και να μπηκα ειναι αορατα.
ασσσσσαλα οτι και να γινει τιποτα δεν μας σταματα . τελοσ παντων καμια ψυχη για το θεμα θα μου δωσει τα φωτα του?????????

picdev
25-03-16, 10:13
Γιατί δεν γραφείς όπως σου πρότειναν lcd out με συντεταγμένες σαν να είναι μία γραμμή ?
Ή άλλη περίπτωση είναι να γράψεις δικές σου συναρτήσεις

Στάλθηκε από το 2014813 μου χρησιμοποιώντας Tapatalk

nikoslqc
25-03-16, 22:58
picdev
θα κανω μια προσπαθεια ετσι. αν και το εχω σε scroolling text .
σε παρακαλω δωσε ενα παραδειγμα για τις συναρτησεις γιατι δεν γραφω κωδικα σε c αλα σε flowcode . γραψε ομως παραδειγμα και σε C θα το προσπαθησω να βγαλω ακρη και να το βαλω μεσα στον κωδικα ποιο πανω εχω ανεβασει σε τχτ το προγραμμα ολοριξε μια ματια σε παρακαλω
ευχαριστω για την υποδειξη

xrist sakis
26-03-16, 00:43
Άργησα λίγο. Σε flowcode 6 υπάρχει OLED οθόνη 2x16 kai 4x20 χαρακτήρες.Αν την επιλέξεις θα είσαι ok!
Σακης

andrewsweet4
26-03-16, 01:58
Μπορει να ειναι ασχετο αυτο που λεω, αλλα θυμαμαι που φτιαχναμε με ενα φιλο ενα προτζεκτ με μια OLED 2x16 και ηθελε λιιιγο διαφορετικο initialization απο τις κλασικες 2x16 με τον controller τον HD44780. Ειχε μια ή δυο επιπλεων γραμμες κωδικα στο initialization και αν δεν τις εβαζες δεν συμπεριφεροταν και πολυ καλα θυμαμαι. Ετσι αλλαξαμε την κλασικη βιβλιοθηκη που ειχαμε στο mplab και προσθεσαμε τις εξτρα γραμμες κωδικα. Το καλο ειναι οτι αν πας να χρησημοποιησεις της <<εμπλουτισμενη>> βιβλιοθηκη με μια νορμαλ 2χ16 απλα αγνοει τις 2 αυτες νεες γραμμες κωδικα και λειτουργει κανονικα ;) Επισης ασχετο αλλα θυμαμαι που μπορουσες να της μεταφερεις δεδομενα με clock μεχρι και 1MHz (!!!)

picdev
26-03-16, 08:48
Στο ινιτ δεν έχει πρόβλημα αφου γράφει κανονικά , σε εντολή έχει το πρόβλημα.
Μόλος προλαβω θα ρίξω μία ματιά στο κώδικα

Στάλθηκε από το 2014813 μου χρησιμοποιώντας Tapatalk

gsmaster
26-03-16, 18:52
Υπαρχει περίπτωση να είναι και θέμα initialization (ή πως στο διάλο γράφεται).
Κάτι που θα δοκίμαζα για να δώ αν η δεύτερη γραμμή ξεκινάει σε άλλη διεύθυνση είναι να γεμίσω όλη την οθόνη με κείμενο. Και δεν λέω τις δύο γραμμές απο 16 χαρακτήρες, λέω να ξεκινήσω απο την αρχή της οθόνης (πρώτη θέση, πρώτη γραμμή) και να γράφω συνέχεια κείμενο μέχρι να εμφανιστεί κάτι και στην δεύτερη γραμμή. Ώς γνωστόν οι κοινές LCD έχουν μνήμη 80 χαρακτήρων. Τώρα αν τους 80 αυτούς χαρακτήρες τους έχει σε 2 γραμμές των 40, σε 4 γραμμές των 20, η σε όποιον άλλο συνδιασμό που μπορεί να μην τα εμφανίζονται όλες οι θέσεις ταυτόχρονα, αυτό δεν μας απασχολεί, οι θέσεις μνήμης υπάρχουν στο τσιπάκι του controller της οθόνης για να γράψεις σε αυτές.

Όπότε σε ενα νέο project κάνεις το εξής: Βάζεις την οθόνη να ξεκινήσει πάνω αριστερά και να εμφανίσει το μήνυμα: 01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-....και συνεχίζεις μέχρι τουλάχιστον το ....79-80. Αν θες για δοκιμή μπορείς να το βάλεις να σου εμφανίσει και το 81 το οποίο θα πάει και θα σβήσει το 01 πάνω αριστερά που ξεκίνησε.

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

Αν κατα τη δοκιμή δεν δεις τπτ απολύτως στη δεύτερη γραμμή, ψάξου με το init :001_huh:

ΥΓ πάντως μια noritake που έχω έπαιξε κατευθείαν.

picdev
02-04-16, 19:27
πρώτα απο ολα νομιζω πως πρεπει να δοκιμάσει αυτό που ειπε ο φίλος σου, να βάλεις δηλαδή οτι η οθόνη ειναι OLED μηπως λυθεί το πρόβλημα.

Απο εκεί και περα ποστάρω τον κώδικα που έχει φτιάξει το flow code και εστιάζω σε κάποια σημεία, τώρα αυτό που γράφει το PAPARIA COMPANY δεν το σχολιάζω.

οπως βλέπεις υπάρχουν 2 εντολές, η μία εντολή FCD_LCDDisplay0_Cursor(0, 0); μετακηνεί το κέρσορα εκεί που θες να γράψεις,
εκεί που λέει 0,0 το πρώτο νούμερο ειναι η στήλη της οθόνης και το δεύερο η γραμμή.
Οποτε αν θέλω να στην αρχή της πρώτης γραμμής γράφω FCD_LCDDisplay0_Cursor(0, 0);
αν θες να γράψεις στην αρχή της δεύτερης γράφεις FCD_LCDDisplay0_Cursor(0, 1);

ετσι τουλάχιστον συμπεραίνω εγώ , τώρα μπορει ενας άλλος compiler να τα έχει ανάποδα πρώτα γραμμές και μετά στείλεις ή να μην ξεκηνάει απο το 0.
κανε ενα απλό προγραμμα να εκτυπώνει μονο κάτι και στις 2 γραμμές και παίξε λίγο με τα νουμερα.
πχ άλλαξε κάνε εκτύπωση με 20,0 να δούμε θα γράψει στη δεύτερη γραμμή


FCD_LCDDisplay0_Cursor(0, 0);

//????? ???????????? ???????????
//????? ???????????? ???????????: ???????? ?????????????("The Paparia Company")
FCD_LCDDisplay0_PrintString("The Paparia Company", 19);

//????? ???????????? ???????????
//????? ???????????? ???????????: ???? ???????(1, 1)
FCD_LCDDisplay0_Cursor(1, 1);

//????? ???????????? ???????????
//????? ???????????? ???????????: ???????? ?????????????("System Prepearing")
FCD_LCDDisplay0_PrintString("System Prepearing", 17);