Hallo Kollegen, also ich habe wirklich sehr viel probiert und auch den Datenblat zum Controler mehrmals gelesen. Aber komme einfach nicht mehr weiter. Deswegen bitte ich um eure Hilfe. vorweg, ich habe ATmega8+STK500+Samsung LCD 2138A (m50530) http://lcd-linux.sourceforge.net/pdfdocs/M50530.pdf Möchte große eigene Zeichen in den CGRAM schreiben, habe auch geschaft. Allerdings seit ich dies gemacht habe setzt sich mein Kursor (aus mir unerklerlichen Gründen) völlig an andere Stelle auf dem LCD. z.B: LCD_setCursorPos(2,0); // Setze kursor 3.Zeile Spalte 0 LCD_write("abcd"); // schreibe abcd aber er schreibt mitte 7. zeile... Mein CGRAM Kapazität soll 64Word sein --> kursor adresse 0xC0 Und der 1.Zeichen ist mit 0xF8 auszulesen. Siehe S.14 Damit dies so funktioniert habe ich beim initialisieren als (S.27) WD 0xDa eingeben müssen. Mit 0xD8 funktioniert es aber kann halt nicht in CGRAM schreiben. // DB7, DB6, DB4, DB3 0xDA = 11011010 //0xD8 = 216 = 11011000 LCD_sendByte(0xDA, 0); //Set function mode (8Bit, 5x7 Character) Ich hoffe dies alles ist aussagekräftik. Ich bin wirklich ein wenig verzweifelt! Bitte um Hilfe... grüße
moin, ich probier auch grade an dem display rum...bekomm aber nicht wirklich was hin! hast du dein problem heraus gefunden !?
also das problem liegt beim setzen des Cursors. hier der funktionsfähige code dazu:
1 | void LCD_setCursorPos(const uint8_t y, const uint8_t x) |
2 | { |
3 | // Adresse aus x und y berechnen |
4 | // Adressen sind wie folgt: Zeile 0 = 0; Zeile 1 = 64; Zeile 2 = 128; Zeile 3 = 192; |
5 | // Zeile 4 = 0+24; Zeile 5 = 64+24; Zeile 6 = 128+24; Zeile 7 = 192+24 |
6 | // uint8_t address = x + ((y % 4) << 6); |
7 | uint8_t address = x + y * 48; |
8 | if (y > 3) |
9 | address += 88; |
10 | // address += 24; |
11 | LCD_sendByte(address, (1<<LCD_OC1_PIN) | (1<<LCD_OC2_PIN)); |
12 | } |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.