Hallo zusammen!
Ich habe ja HIER schon einige Beispiele eingestellt,
wie man mit ein paar Include-Dateien normale LCD`s am TWI bzw. I2C Bus betreiben kann.
Irgendwann kam mir aber der Gedanke, dass man diverse günstige GLCD`s ja auch dafür verwenden könnte.
Genaus darum geht es in diesem Thread:
Die Verwendung verschiedener GLCD`s als CLCD (Charakter LCD) am TWI bzw. I2C Bus.
Damit die Ansteuerung möglichst einfach bleibt und die Anzeigegeschwindigkeit nicht darunter leidet, kommt kein fertiger I2C-Baustein, wie z.B. der PCF8574 (oder eher der PCF8575), zum Einsatz sondern ein ATMega8!
Durch die Verwendung eines AVR`s, als Schnittstelle zwischen dem TWI Bus und dem GLCD, gestaltet sich die Ansteuerung natürlich recht einfach und obendrein spart es auch noch Platz im steuernden AVR.
So befinden sich z.B. drei Font-Dateien im "Slave-AVR" die speichertechnisch nicht den eigentlichen Programm-AVR belasten.
Durch einen kleinen Zusatz kann man dann problemlos die Schriftgröße gleich mit angeben.
Die drei integrierten Schriftgrößen sind:
0 = 6x8 Pixel
1 = 8x8 Pixel
2 = 16x16 Pixel
Aktuell habe ich für vier verschiedene GLCD-Controller die Programme fertig und getestet......
dem KS0108, dem KS0108 mit drei CS-Pins, dem SED-Controller und auch dem T6963C !
Außerdem habe ich immer zwei Versionen erstellt:
Einmal für den Mega8 als TWI-Slave
und einmal für den Mega8A als TWI-Slave.
Beginnen möchte ich mit einem recht bekannten Display-Controller,
dem KS0108.
Hier ist der Anschlussplan zum Nachbauen:
und hier die fertigen Programme:
Anhang anzeigen I2C_M8_KS0108-GLCD.zip
Die ZIP-Datei beinhaltet die Programme für den Mega8 und den Mega8A !
Einfach die Datei mit BASCOM in den AVR laden,
die internen 8MHz per FUSES einstellen,
Schaltung aufbauen,
fertig!
Wie auf dem Anschlussplan zu erkennen ist, kann man die TWI-Bus Adresse ebenfalls mit den Pins A0, A1 und A2 einstellen.
Die Einstellung muss jedoch VOR dem Anlegen der Betriebsspannung getätigt werden.
Im laufenden Betrieb kann die Adresse nicht geändert werden!
Zur Ansteuerung im Programm-AVR benötigt man nun nur noch die passenden Subroutinen.
Einmal im Programmkopf:
und einmal am Ende des Programms noch die eigentlichen Subroutinen:
Im Programm kann man dann folgendes eingeben:
Eines gibt es aber noch....
Mit der Anweisung "Lcd_cls" kann ein Clear_Screen veranlasst werden.
Das war es dann auch schon.
Zum Schluss noch ein Foto, wie das Ganze dann aussehen könnte:
Die nächsten Anschlusspläne und Programme für die anderen Display-Controller folgen dann in Kürze.
Grüße,
Cassio
Ich habe ja HIER schon einige Beispiele eingestellt,
wie man mit ein paar Include-Dateien normale LCD`s am TWI bzw. I2C Bus betreiben kann.
Irgendwann kam mir aber der Gedanke, dass man diverse günstige GLCD`s ja auch dafür verwenden könnte.
Genaus darum geht es in diesem Thread:
Die Verwendung verschiedener GLCD`s als CLCD (Charakter LCD) am TWI bzw. I2C Bus.
Damit die Ansteuerung möglichst einfach bleibt und die Anzeigegeschwindigkeit nicht darunter leidet, kommt kein fertiger I2C-Baustein, wie z.B. der PCF8574 (oder eher der PCF8575), zum Einsatz sondern ein ATMega8!
Durch die Verwendung eines AVR`s, als Schnittstelle zwischen dem TWI Bus und dem GLCD, gestaltet sich die Ansteuerung natürlich recht einfach und obendrein spart es auch noch Platz im steuernden AVR.
So befinden sich z.B. drei Font-Dateien im "Slave-AVR" die speichertechnisch nicht den eigentlichen Programm-AVR belasten.
Durch einen kleinen Zusatz kann man dann problemlos die Schriftgröße gleich mit angeben.
Die drei integrierten Schriftgrößen sind:
0 = 6x8 Pixel
1 = 8x8 Pixel
2 = 16x16 Pixel
Aktuell habe ich für vier verschiedene GLCD-Controller die Programme fertig und getestet......
dem KS0108, dem KS0108 mit drei CS-Pins, dem SED-Controller und auch dem T6963C !
Außerdem habe ich immer zwei Versionen erstellt:
Einmal für den Mega8 als TWI-Slave
und einmal für den Mega8A als TWI-Slave.
Beginnen möchte ich mit einem recht bekannten Display-Controller,
dem KS0108.
Hier ist der Anschlussplan zum Nachbauen:
und hier die fertigen Programme:
Anhang anzeigen I2C_M8_KS0108-GLCD.zip
Die ZIP-Datei beinhaltet die Programme für den Mega8 und den Mega8A !
Einfach die Datei mit BASCOM in den AVR laden,
die internen 8MHz per FUSES einstellen,
Schaltung aufbauen,
fertig!
Wie auf dem Anschlussplan zu erkennen ist, kann man die TWI-Bus Adresse ebenfalls mit den Pins A0, A1 und A2 einstellen.
Die Einstellung muss jedoch VOR dem Anlegen der Betriebsspannung getätigt werden.
Im laufenden Betrieb kann die Adresse nicht geändert werden!
Zur Ansteuerung im Programm-AVR benötigt man nun nur noch die passenden Subroutinen.
Einmal im Programmkopf:
Code:
Declare Sub Lcd_(byval Zeile As Byte , Byval Charakter As Byte , Byval Text1 As String * 32 , Byval Fonttyp As Byte)
Declare Sub Lcd_cls
Dim Text As String * 32
Dim Chr_text(33) As Byte At Text Overlay
Dim Twi_send(35) As Byte
'*********************
Const M8_slave = &H7E 'ggf. anpassen !
'*********************
Dim I1 As Byte
Dim I2 As Byte
und einmal am Ende des Programms noch die eigentlichen Subroutinen:
Code:
' #############################################################################
Sub Lcd_(byval Zeile As Byte , Byval Charakter As Byte , Byval Text1 As String * 32 , Byval Fonttyp As Byte)
I2 = 0
Text = Text1
Twi_send(1) = Zeile
Twi_send(2) = Charakter
Twi_send(35) = Fonttyp
For I1 = 3 To 34
Incr I2
Twi_send(i1) = Chr_text(i2)
Next I1
Gosub Twi_senden
End Sub
' #############################################################################
Sub Lcd_cls
Twi_send(1) = &HFF
Gosub Twi_senden
End Sub
' #############################################################################
Twi_senden:
I2csend M8_slave , Twi_send(1) , 35
Return
Im Programm kann man dann folgendes eingeben:
Code:
LCD_ 1 , 1 , "Hallo Welt!" , 0
| | | | |
| | | | '--- 0 => 6x8 Font / 1= 8x8 Font / 2= 16x16 Font
| | | |
| | | '------------- String bis 21 Zeichen
| | |
| | '----------------------- Spalte (1-21)
| |
| '--------------------------- Zeile 1-8
|
'------------------------------- Subroutine
Eines gibt es aber noch....
Mit der Anweisung "Lcd_cls" kann ein Clear_Screen veranlasst werden.
Das war es dann auch schon.
Zum Schluss noch ein Foto, wie das Ganze dann aussehen könnte:
Die nächsten Anschlusspläne und Programme für die anderen Display-Controller folgen dann in Kürze.
Grüße,
Cassio