Auswahl des Zeichensatzes beim DOGM204-A Display

OP (Firma: Neutron Mikroelektronik GmbH) #7428147
Lesenswert?
• ▲
▼

Hallo,

ich möchte beim DOGM204-A Display den Zeichensatz wählen. Laut Datenblatt gibt es 3 interne Character Set, die man per Software umschalten kann.

Hat sowas schon mal jemand erfolgreich gemacht und kann mir sagen wie?

Ich kann alles Mögliche konfigurieren, aber nicht das Character ROM.

Laut Datenblatt soll man die Sequenz 0x3A 0x72 0x.. 0x38 an das Display schicken, wobei die Werte 0x00, 0x04 oder 0x0c für die ROM Auswahl stehen. Aus dem Datenblatt des ssd1803a Controllers lese ich zwar die Werte 0x00, 0x40 und 0x80 für die ROM Auswahl, aber egal, keiner davon funktioniert.

Ich verwende übrigens aktuell einen ESP32 mit MicroPython, aber das sollte hier ja eigentlich keine Rolle spielen.

#7428153
Lesenswert?
• ▲
▼

Wolfgang K. schrieb:

Laut Datenblatt soll man die Sequenz 0x3A 0x72 0x.. 0x38 an das Display schicken, wobei die Werte 0x00, 0x04 oder 0x0c für die ROM Auswahl stehen. Aus dem Datenblatt des ssd1803a Controllers lese ich zwar die Werte 0x00, 0x40 und 0x80 für die ROM Auswahl, aber egal, keiner davon funktioniert.

Aus dem Datenblatt lese ich zu Character Table das was als Screenshot im Anhang zu sehen ist. Ich erkene da Diskrepanzen zu deinen Annahmen.

Vielleicht hast du auch übersehen dass beim ROM Selection Command das RS Bit auf 1 gesetzt werden muss (sonst null).

Angehängte Dateien:
OP (Firma: Neutron Mikroelektronik GmbH) #7428282
Lesenswert?
• ▲
▼

Vielen Dank für die schnelle Antwort. Ich habe nur eine Weile gebraucht für die Umsetzung. Aber jetzt funktioniert es.

Ich steuere das Display über I2C an und da finde ich das Datenblatt bezüglich dem Setzen des rs-Bits etwas unübersichtlich. Falls vielleicht jemand anderer das gleiche Problem hat, hier mein Code(fragment) in MicroPython.

1
    def select_character_rom(self, value):
2
        assert value >= 0 and value <= 2, "allowed values: 0..2 for ROM A..C"
3

4
        i2c = SoftI2C(scl=, sda=)
5

6
        rom_sel = (0x00, 0x04, 0x08)[value]
7

8
        i2c.writeto(i2c_addr, bytearray([0x00, 0x3A]))
9
        i2c.writeto(i2c_addr, bytearray([0x00, 0x72]))
10
        i2c.writeto(i2c_addr, bytearray([0x40, rom_sel]))
11
        i2c.writeto(i2c_addr, bytearray([0x00, 0x38]))
12

13
        '''
14
        Das erste Byte in bytearray() ist jeweils das, 
15
        was im Datenblatt als Control byte bezeichnet wird.
16
        Bit 6 davon, in der I2C-Beschreibung des Datenblatts 
17
        als D/C bezeichnet, müssste das RS-Bit sein.       
18
        '''

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.