main.c ######################################### // // Anpassungen im makefile: // ATMega8 => MCU=atmega8 im makefile einstellen // lcd-routines.c in SRC = ... Zeile anhängen // #include #include "LCD_Test.h" #define LCD_PORT PORTC #define LCD_DDR DDRC int main(void) { LCD_DDR = 0xFF; DDRA = 0xFF; lcd_init(); lcd_data('T'); lcd_data('e'); lcd_data('s'); lcd_data('t'); while(1) { } return 0; } LCD_Test.c ################################# // Pinbelegung über defines einstellbar #include #include #include "LCD_Test.h" // LCD Befehle #define CLEAR_DISPLAY 0x01 #define CURSOR_HOME 0x02 // Pinbelegung für das LCD #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_RS 7 #define LCD_EN 6 #define F_CPU = 11059200L // sendet ein Datenbyte an das LCD void lcd_data(unsigned char temp1) { unsigned char temp2 = temp1; LCD_PORT |= (1<> 4; temp1 = temp1 & 0x0F; LCD_PORT &= 0xF0; LCD_PORT |= temp1; // setzen lcd_enable(); temp2 = temp2 & 0x0F; LCD_PORT &= 0xF0; LCD_PORT |= temp2; // setzen lcd_enable(); _delay_us(42); } // sendet einen Befehl an das LCD void lcd_command(unsigned char temp1) { unsigned char temp2 = temp1; LCD_PORT &= ~(1<> 4; // oberes Nibble holen temp1 = temp1 & 0x0F; // maskieren LCD_PORT &= 0xF0; LCD_PORT |= temp1; // setzen lcd_enable(); temp2 = temp2 & 0x0F; // unteres Nibble holen und maskieren LCD_PORT &= 0xF0; LCD_PORT |= temp2; // setzen lcd_enable(); _delay_us(42); } // erzeugt den Enable-Puls void lcd_enable(void) { LCD_PORT |= (1<