# Συζήτηση Κυκλωμάτων > Ψηφιακά Κυκλώματα > Μικροελεγκτές >  >  Ελληνικοί χαρακτήρες σε LCD

## andreas222

Παιδιά ξέρει κανείς πως θα εμφανίσω ελληνικούς χαρακτήρες στην lcd.
Χρησιμοποιώ το Arduino. Ευχαριστώ!!!

----------


## somone

Κατεβάζεις το datasheet του HD44780 (υποθέτω οτι μιλάμε για αυτή την lcd). Σελίδα 17 έχει ένα πίνακα που σου λέει σε ποιά διεύθυνση της μνήμης του controller της lcd βρίσκετε ποιος χαρακτήρας (Table 4 Correspondence between Character Codes and Character Patterns (ROM Code: A00). Για τα ελληνικά γράμματα που θες να τυπώνεις θα χρησημοποιήσεις στις συναρτήσεις της lcd αυτές τις διευθύνσεις. Οπότε για να τυπώσεις πχ το β γράφεις

lcd.print((char)226);

Αυτά με κάθε επιφύλαξη καθώς δεν έχω χρησημοποιήσει ποτέ ελληνικά σε lcd και arduino.

----------


## andreas222

Ευχαριστω Φωτη δουλευει αλλα ειναι λιγο μακαβριο να σχηματισω προταση με καθε ενα χαρακτηρα και μια εντολη!!Δεν υπαρχει αλλη λύση?

----------


## herctrap

charset.gif

σελιδα 17 απο εδω http://www.sparkfun.com/datasheets/LCD/HD44780.pdf

αν και δεν το εχω ψαξει ο HD44780 βγαινει σε δυο τυπους

Rom code A00 Ιαπωνια σελ 17
Rom code A02 Ευρωπη σελ 18

αν την εχεις παρει απο ebay απο τα βαθη της κινας τοτε μαλον δεν μπορεις να κανεις τιποτα γιατι ειναι σε Rom code A00

πρεπει να παρεις μια με A02



* δοκιμασα να γραψω ελληνικα καποτε στον κωδικα μου αλλα τα εβγαζε κινεζικα 
ισως αν ειχα μια Α02 να δουλευε και ετσι

----------


## somone

> Ευχαριστω Φωτη δουλευει αλλα ειναι λιγο μακαβριο να σχηματισω προταση με καθε ενα χαρακτηρα και μια εντολη!!Δεν υπαρχει αλλη λύση?



Τώρα θα πρέπει να το φέρεις λίγο στα μέτρα σου... Μπορείς πχ να αποθηκεύεις την πρόταση που θες να γράψεις σε ένα πίνακα χρησιμοποιώντας τις θέσεις μνήμης της lcd και μετά να χρησιμοποιείς στν lcd.print() αυτόν τον πίνακα. Πχ

char protasi[]={224,226,227,228,0}; (To μηδενικό δεν είναι σίγουρο οτι χρειάζεται...)
lcd.print(protasi); 

το οποίο θα τυπώνει αβεμ.

Επίσεις μπορείς να φτιάξεις και μια συνάρτηση στην οποία να δίνεις την πρόταση που θες σε greeklish πχ και να σου φτιάχνει τον πίνακα που θα βάλεις στην lcd.print().

----------


## picdev

ολες οι lcd παίρνουν μέχρι 8 custom χαρακτήρες εχουν?
η address έχει μέχρι 6 bit, αλλά βλέπω στο dadasheet ότι η πρώτη στήλη λέει CGRAM απο 1-8 και μετά απο κάτω επαναλμβάνει τα νούμερα

----------


## SeAfasia

κοίτα εδώ:
https://learn.adafruit.com/character-lcds/overview
σιγά θα καταλάβεις πως θα γράψεις τις ρουτίνες κώδικα,επίσης κοίτα και εδώ:
https://www.arduino.cc/en/Tutorial/LiquidCrystal
να ξέρεις οτι θέλει πολύ διάβασμα.....

----------


## picdev

> κοίτα εδώ:
> https://learn.adafruit.com/character-lcds/overview
> σιγά θα καταλάβεις πως θα γράψεις τις ρουτίνες κώδικα,επίσης κοίτα και εδώ:
> https://www.arduino.cc/en/Tutorial/LiquidCrystal
> να ξέρεις οτι θέλει πολύ διάβασμα.....




 :Rolleyes: θέλει πολύ διάβασμα για να γράψεις ένα lcd.out?  :Biggrin:  τύφλα να έχουν τα rtos
άλλο ρώτησα αν όλες οι οθόνες έχουν 8 custom χαρακτήρες , γιατί βλέπω στη πρώτη στήλη του character pattern να λέει gcram 1-8 και μετά απο κάτω  επαναλαμβάνει τα νούμερα πάλι.
Οπως βλέπω όλες max 8 χαρακτήρες παίρνουν

----------


## SeAfasia

http://www.microcontrollerboard.com/lcd.html
εδω για 5χ8 mode:
http://www.sprut.de/electronic/lcd/#2x16

----------


## SProg

Στη ROM των LCD με οδηγο τον Hitachi HD44780 , περιεχονται οι ASCII χαρακτηρες που βλεπεις στο πινακακι του datasheet.


Ειναι σχεδιασμενα στη ROM τα κεφαλαια ελληνικα γραμματα Α,Β,Ε,Ζ,Η,Ι,Κ,Μ,Ν,Ο,Ρ,Τ,Υ και Χ που ειναι ιδια με τα αγγλικα.Επισης υπαρχουν τα μικρα ελληνικα γραμματα n,o,s,w,x,y και z. 


Στον παραπανω πινακα (επεκταση πανω απο 128 και πανω )  βλεπεις οτι ειναι σχεδιασμενα τα ελληνικα γραμματα α,β,ε,μ,σ,ρ,θ και Σ. Επισης με κωδικο 0xF4 ειναι το Ω αλλα πιο κοντο απο το κανονικο.

Ειναι δηλαδη 15 κεφαλαια (ή 16 αν βαλεις και το 'κοντο' Ω ) και 14 πεζά γραμματα.Αρα υπολειπονται 9 κεφαλαια ακόμα και 10 πεζά.

Εχουμε πει οτι μπορουμε να ορισουμε ΜΟΝΟ 8 επιπλεον χαρακτηρες.

Αρα καταληγουμε πως μπορουμε να γραφουμε τα ΠΑΝΤΑ σε ελληνικα ΑΛΛΑ μονο κεφαλαια. Και παλι θα πρεπει να δεχτουμε το Θ με κωδικο 0xF2 ή Ω με κωδικο 0xF4 που ειναι κοντο.

*Μερικα LCD εχουν ηδη τους ελληνικους χαρακτηρες στους κωδικους 80h και μετα.Ελεγξτε την οθονη πριν προχωρησετε στην παραγραφο αυτη.

*_Απο το : Ασκησεις,πειραματα και εφαρμογες με τον 8051  - Καθ Ν.Νικολαϊδης_

----------


## picdev

Υπάρχει και rom pattern που οι ελληνικοί χαρακτήρες έχουν κανονικό μέγεθος

----------


## SProg

Δεν εχω ξανασχοληθει με ελληνικους χαρακτηρες απο τοτε αλλα για τις κλασσικες 2x16 με τον HD44780 δουλευε αριστα.

----------


## picdev

Τι δούλευε άριστα ? Πως δεν θα δούλευε ?

----------


## SProg

Μπορουσες να εμφανισεις τα παντα σε κεφαλαια ελληνικα. Ολο το ελληνικο αλφαβητο αλλα σε κεφαλαια και χωρις καθε φορα να στελνεις το αντιστοιχο κωδικο του ελληνικου γραμματς *ΕΣΥ*.

Hταν πιο απλα μια ρουτινα μετατροπης του ASCII κωδικου των ελληνικων γραμματων σε κωδικο εμφανισης με χρηση table.

- Οι ASCII κωδικοι των ελληνικων γραμματων ξεκινανε απο το C1h. 
- Βαλε σε μια μεταβλητη τον κωδικο αυτο και αφαιρεσε C1h.
- Μετα κανε προσπελαση στο table οπου μεσα θα εχεις τους κωδικους εμφανισης.
- Καποια οπως ειπαμε θα ειναι ετοιμα και καποια θα τα εχες ορισει εσυ.

Και για να σε βοηθησω:

_db 'AB', 8, 9, 'EZH', 0F2h, 'ΙΚ', 10, 'MN'
db  11, 'Ο', 12, 'P?', 0F6h, 'TY', 12, 'X', 14, 15 

_
Οι ΑSCII κωδικοι 8-15 επαναλαμβανουν ενα προς ενα τους χαρακτηρες απο 0-7 εμφανιζοντας τα περιεχομενα της CGRAM που εσυ ορισες. 

Γιατι να μην παιρναμε οποτε τους κωδικους 0-7 ; Απλα για να εχουμε τον κωδικο 0 να δειχνει το τελος των συμβολοσειρων (χαρακτηρας ETX)


Αυτο ηταν απλο σε ASM και 8051 ,υποθετω σε Arduino ολο και κατι ετοιμο θα υπαρχει αν βαριεσαι να το κανεις.



Δουλευε σημαινει οτι δουλευε οπως πρεπει.

----------


## SeAfasia

char table εδώ:






http://en.innovati.com.tw/down/html/...6A_En_v100.pdf

----------


## powerexplotion

Εδώ είναι η λύση : https://arduinoforgreekpeople.blogspot.com/

----------

