// Pinbelegung über defines einstellbar #include #include #include "lcd-routines.h" // LCD Befehle #define CLEAR_DISPLAY 0x01 #define CURSOR_HOME 0x02 // Pinbelegung für das LCD #define LCD_PORT PORTD #define LCD_DDR DDRD #define LCD_RS 4 #define LCD_EN 5 // sendet ein Datenbyte an das LCD void lcd_data(unsigned char temp1) { unsigned char temp2 = temp1; 16. LCD_PORT |= (1<> 4; 18. temp1 = temp1 & 0x0F; 19. LCD_PORT &= 0xF0; 20. LCD_PORT |= temp1; // setzen 21. lcd_enable(); 22. temp2 = temp2 & 0x0F; 23. LCD_PORT &= 0xF0; 24. LCD_PORT |= temp2; // setzen 25. lcd_enable(); 26. _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 32. 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< MCU=atmega8 im makefile einstellen // lcd-routines.c in SRC = ... Zeile anhängen // #include #include "lcd-routines.h" int main(void) { lcd_init(); 108. lcd_data('T'); lcd_data('e'); lcd_data('s'); 11. lcd_data('t'); while(1) { } return 0; }