Ich habe ein Problem und zwar möchte ich ein LCD an die Pins 7 6 5 4 eines Ports anschließend und die RS und Enable an 0 und 1. Das mache ich deshalb, weil ich so den Port optimal ausnutze (2 und 3 sind für den UART.) Ich Benutze einen Atmega128. Meine Initialisierung scheint soweit zu funktionieren, denn der Cursor blinkt und ist an der richtigen Stelle. nun hab ich versucht die Dataroutine des Tutorials hier abzuändern, dass die oberen 4 Bits des Ports als Datenleitung genutzt werden. Hier der Code wie ich ihn abgeändert habe:
1 | void lcd_data(unsigned char temp1){ |
2 | |
3 | |
4 | unsigned char temp2 = (temp1<<4); |
5 | |
6 | LCD_PORT |= (1<<LCD_RS); // RS setzen |
7 | |
8 | LCD_PORT = ( (LCD_PORT & 0x0F) | (temp1 & 0xF0) ); // ausgeben |
9 | |
10 | lcd_enable(); // Enableimpuls senden |
11 | _delay_us(42); |
12 | |
13 | LCD_PORT = ( (LCD_PORT & 0x0F) | (temp2 & 0xF0) ); // ausgeben |
14 | |
15 | lcd_enable(); // Enableimpuls senden |
16 | _delay_us(42); |
17 | |
18 | |
19 | }
|