Moin,
ich gucke mir jetzt schon den ganzen Tag die Funktionsweise der
Ansteuerung für LC-Displays an (C-Code), leider ist in den Tutorials
mein Anliegen nicht genauer beschrieben, jedenfalls kann ich es nicht
finden.
Es geht um die einstellung des Bitmodus (4 oder 8 bit).
1 | lcd_out( LCD_SET_FUNCTION |
|
2 | LCD_FUNCTION_4BIT );
|
Dort wird über die Funktion PortD auf xxxx0010 geschaltet was aber nach
dem Befehlssatz des LCDs nicht dem ändern des Bitmous entspricht. Nach
dem übrigen Code müsste man entweder mehr Datenpins vom LCD ansteuern
(wenn das LCD standardmäßig auf 8bit eingestellt ist) oder es müsste
nach der Ausgabe nochmal ein gelöschtes Nibble gesendet werden (0000).
Wie funktioniert das dann?
Und dann habe ich noch eine Frage: Aus welchem Grund wird der Softreset
3 mal hintereinander gemacht und in welchem Zusammenhang steht er mit
dem 8bit Modus? Denn der Befehl lautet 0x00110000 genauso wie
(LCD_SET_FUNCTION | LCD_FUNCTION_8BIT)?
1 | // Soft-Reset muss 3mal hintereinander gesendet werden zur Initialisierung
|
2 | lcd_out( LCD_SOFT_RESET );
|
3 | _delay_ms( LCD_SOFT_RESET_MS1 );
|
4 |
|
5 | lcd_enable();
|
6 | _delay_ms( LCD_SOFT_RESET_MS2 );
|
7 |
|
8 | lcd_enable();
|
9 | _delay_ms( LCD_SOFT_RESET_MS3 );
|
Den Code habe ich von hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung