Software > Coding
>PURE C: Eiffel LCD Programmierung
Ektus:
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.html
Pseudocode:
--- Code: ---
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.
--- Ende Code ---
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 :(
--- Code: ---#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);
}
--- Ende Code ---
Ziemlich ratlos
Ektus.
matashen:
Du musst die Firmware des PIC ändern, mit dem TOS Programm kannst du keine änderung der Initialisierung erwirken. Du kannst die Eiffel Source von der Homepage holen, die Änderungen nach Datenblatt des LCDs vornehmen und dann den PIC neu Brennen.
Gruß Matthias
Ektus:
--- Zitat von: matashen am So 14.08.2011, 21:22:23 ---Du musst die Firmware des PIC ändern, mit dem TOS Programm kannst du keine änderung der Initialisierung erwirken. Du kannst die Eiffel Source von der Homepage holen, die Änderungen nach Datenblatt des LCDs vornehmen und dann den PIC neu Brennen.
Gruß Matthias
--- Ende Zitat ---
Da bin ich auch schon dran, aber eigentlich müßte das doch auch per IKBD gehen. Immerhin kann man damit ja auch Kommandos schicken und nicht nur Daten, siehe Eiffel.hyp.
Zum Debugging wäre es wesentlich angenehmer, wenn ich nicht jedesmal den PIC neu Flashen müßte 8)
Die Eiffel.hex habe ich sogar schon compiliert bekommen, allerdings ist die Datei nicht genauso groß wie die "offizielle" 1.10. Muß man da noch irgendwelche Compileroptionen setzen? Ich glaub', ich muß doch mal Didier fragen :(
Ektus.
matashen:
Also die grundsätzlichen Ini Kommandos kannst du nicht vom Atari aus senden, würde mich zumindest wundern.
Link mal das Datenblatt vom LCD, dann popel ich dir die Ini-Kommandoliste raus. Dann weist du was du schicken must, und mit welchen timings
Gruß
Matthias
Ektus:
--- Zitat von: matashen am Mo 15.08.2011, 10:53:21 ---Also die grundsätzlichen Ini Kommandos kannst du nicht vom Atari aus senden, würde mich zumindest wundern.
Link mal das Datenblatt vom LCD, dann popel ich dir die Ini-Kommandoliste raus. Dann weist du was du schicken must, und mit welchen timings
Gruß
Matthias
--- Ende Zitat ---
In der richtigen Syntax für den PIC auf dem Eiffel Interface? ;D
Es ist eine Anzeige von Displaytech, Typ 162A.
http://www.displaytech.com.hk/product.php?id=11
http://www.mikrocontroller.net/topic/202332
http://www.ee.oulu.fi/research/tklab/courses/521426A/2003/LCD-driver-3316.pdf
Vielen Dank im Voraus!
Ektus.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln