Hallo, ich versuch jetzt schon seit 2tagen mein LCD zum laufen zu
bringen.
Ich verzweifel bald...
Daten:
ATMEGA128 externer 16MHz Clock
LCD Display HD44780 (lt. Datenblatt)
4 Zeilen; 20 Spalten.
Ich wollte den Code von Peter Fleury verwenden (nach der Methode...
nicht das Rad selbst erfinden)
Pins sind richtig angeschlossen. Dabei benutze ich vier datenpins.
PA1 an LCD_Pin11; ... PA3 an LCD_Pin14
PA6 -- EN -- LCD_Pin6
PA5 -- RW -- LCD_Pin5
PA4 -- RS -- LCD_Pin4
LCD_Pin7...LCD_Pin10 sind offen.
Bei Peter Fleury habe ich im header folgendes angepasst:
1 | #define XTAL 16000000UL
|
2 | #define LCD_LINES 4 /**< number of visible lines of the display */
|
3 | #define LCD_DISP_LENGTH 20 /**< visibles characters per line of the display */
|
4 | #define LCD_LINE_LENGTH 0x40 /**< internal line length of the display */
|
5 | #define LCD_START_LINE1 0x00 /**< DDRAM address of first char of line 1 */
|
6 | #define LCD_START_LINE2 0x40 /**< DDRAM address of first char of line 2 */
|
7 | #define LCD_START_LINE3 0x14 /**< DDRAM address of first char of line 3 */
|
8 | #define LCD_START_LINE4 0x54 /**< DDRAM address of first char of line 4 */
|
9 | #define LCD_WRAP_LINES 0 /**< 0: no wrap, 1: wrap at end of visibile line */
|
alles andere im .h und .c habe ich gleich gelassen.
Mit folgender main wollte ichs zum laufen bringen:
1 | #include <stdlib.h>
|
2 | #include <avr/io.h>
|
3 | #include <avr/pgmspace.h>
|
4 | #include "lcd.h"
|
5 |
|
6 | #define F_CPU = 16000000UL;
|
7 |
|
8 | int main(void){
|
9 |
|
10 | lcd_init(LCD_DISP_ON);
|
11 | lcd_clrscr();
|
12 |
|
13 | lcd_puts("..test..");
|
14 |
|
15 | while(1){}
|
16 | }
|
Folgendes Phänomän:
Ich schalte die Spannung ein, in der ersten und dritten zeile erscheinen
Balken.
Ich lade das Programm auf den µC, das Display geht aus und tut gar nix.
Die lcd.c und .h habe ich in das projekt im AVR studio eingebunden,
daran liegts schonmal nicht.
Danke schonmal für eure hilfe
Gruß