Forum: Mikrocontroller und Digitale Elektronik Auswahl des Zeichensatzes beim DOGM204-A Display


von Wolfgang K. (Firma: Neutron Mikroelektronik GmbH) (wollekette)


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.

von Wastl (hartundweichware)


Angehängte Dateien:

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).

von Wolfgang K. (Firma: Neutron Mikroelektronik GmbH) (wollekette)


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
        '''

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
Noch kein Account? Hier anmelden.