LCD4b.h --------------------------------------------------------------------------------------- /* LCD4b.h --------------------------------------------------------------------------------------- LCD-Routine für KS0070 und HD44780 im 4Bit Modus --------------------------------------------------------------------------------------- Für die Ansteuerung des Displays werden 6 Pins benötigt. Pinbelegung: PORT Pin LCD_RS RS PORT Pin LCD_E E PORT Pin 4 Datenbit 4 PORT Pin 5 Datenbit 5 PORT Pin 6 Datenbit 6 PORT Pin 7 Datenbit 7 R/W und Datenbits 0-3 auf GND PORT, LCD_RS, LCD_E können frei gewählt werden */ #define LCD_E 4 //E Pinnummer #define LCD_RS 5 //RS Pinnummer #define PORT PORTC //Portname extern void LCD_Data(char byte); extern void LCD_Command(char byte); extern void LCD_Enable(void); extern void LCD_Init_Start(void); extern void LCD_Init(void); extern void LCD_Clear(void); extern void LCD_Out(const char *s); extern void LCD_Out_p(const char *text); extern void LCD_Cursor(char x, char y); ---------------------------------------------------------------------------------------- #include const char Text_Zeile1[] PROGMEM = "aaa"; const char Text_Zeile2[] PROGMEM = "bbb"; const char Text_Sollwert[] PROGMEM = "ccc"; const char Text_Istwert[] PROGMEM = "ddd"; const char Text_C[] PROGMEM = "eee"; int main (void) { Init (); LCD_Init_Start (); LCD_Clear (); LCD_Start(); sei(); while (1) { if (Zyklus >= 10) { ADC_einlesen (); LCD (); Zyklus = 0; } } } void LCD_Init_Start (void) // LCD initialisieren nach Spannungsversorgung { unsigned char i; for(i=0; i<10; i++) { _delay_ms(5); } LCD_Init (); } void LCD_Init (void) // LCD initialisieren { PORT = 0b00000010; // Interface auf 4-Bit setzen PORT = 0b00000010; // Interface auf 4-Bit setzen PORT = 0b00000010; // Interface auf 4-Bit setzen _delay_ms (5); LCD_Enable (); _delay_ms (5); LCD_Command (0b00101000); // 2-zeilig, 5x8-Punkt-Matrix _delay_ms (5); LCD_Command (0b00001100); // Display ein _delay_ms (5); LCD_Command (0b00000110); // Cursor nach rechts wandernd, kein Display-Shift _delay_ms (5); } void LCD_Enable (void) // Erzeugt den Enable-Puls { PORT |= (1<>4; // Nibbles vertauschen byte &= ~0xf0; // Bit 4-7 auf 0 setzen PORT = byte; // Oberes Nibbel ausgeben LCD_Enable (); byte = sich_byte; byte &= ~0xf0; // Bit 4-7 auf 0 setzen PORT = byte; // Unteres Nibbel ausgeben LCD_Enable (); _delay_us (50); } void LCD_Data (char byte) // Sendet ein Datenbyte an das LCD { char sich_byte; sich_byte = byte; byte = byte>>4; // Nibbles vertauschen byte &= ~0xf0; // Bit 4-7 auf 0 setzen byte |= (1<= 1024) { Zyklus ++; PWM_Counter = 0; } }