Hallo werte Experten,
ich habe hier ein Eiffel Tastaturinterface mit LCD. Das funktioniert im Prinzip auch, nur nicht mit dem hintergrundbeleuchteten LCD, das ich daran betreiben will
Das Teil benötigt dummerweise eine abweichende Initialisierung.
Aus
http://www.picbasic.co.uk/forum/archive/index.php/t-3087.htmlPseudocode:
KS0070b Initialization
2x16 LCD (KS0070b)
4 bit mode
2 lines
Display=on
Cursor=off
Blink=off
Increment mode
Entire shif=off
(Pseude-code, same as the table below).
==============================================
Power on
(PIC and LCD module).
==============================================
Wait 40 ms
==============================================
(Function Set)
------------------
Set the LCD pins:
DB7,DB6,DB5,DB4 = 0010
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
------------------
Set the LCD pins:
DB7,DB6,DB5,DB4 = 0010
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
------------------
Set the LCD pins:
DB7,DB6,DB5,DB4 = 1000 (2 lines, 5x7 dots)
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
------------------
==============================================
Wait 100 µs
==============================================
(Display On/Off Control)
Set the LCD pins:
DB7,DB6,DB5,DB4 = 0000
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
Set the LCD pins:
DB7,DB6,DB5,DB4 = 1100 (Display on, cursor off, blink off).
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
==============================================
Wait 100 µs
==============================================
(Clear display)
Set the LCD pins:
DB7,DB6,DB5,DB4 = 0000
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
Set the LCD pins:
DB7,DB6,DB5,DB4 = 0001
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
==============================================
Wait 2 ms
==============================================
(Entry Mode Set)
Set the LCD pins:
DB7,DB6,DB5,DB4 = 0000
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
Set the LCD pins:
DB7,DB6,DB5,DB4 = 0110 (Incremet mode, entire shif off).
Toggle the Enable line:
PULSOUT Enable_Pin,100 (min.100 µs)
==============================================
Wait 2 ms
==============================================
End of the KS0070b Initialization.
Wie muß ich diese Signale in IKBD Kommandos verpacken, um das LCD zu initialisieren?
Es sind zwar bei der Eiffel Dokumentation einige Beispielprogrämmchen dabei, aber ich kriege es nicht zum Laufen :-(
Mein Versuch sieht wie folgt aus. Das ist eines der beiden Beispielprogramme, ergänzt um die Definition von init und dessen Ausgabe. Aber ich weiß nicht wirklich, was ich da tue
#include <tos.h>
main()
{
char load[4] = {0x20,0x01,0x20,8};
char init[9] = {0x20,0x20,0x80,0x00,0xC0,0x00,0x10,0x00,0x60};
char message[8] = " FALCON ";
char spaces[8] = " ";
Ikbdws(0,init);
Ikbdws(3,load);
Ikbwds(7,message);
Cconin();
Ikbdws(3,load);
Ikbdws(7,spaces);
return(0);
}
Ziemlich ratlos
Ektus.