Mit diesem Programm Lese ich aus dem LCD.
Das Display gibt immer nur 0xFF aus.... ist es evtl Defekt?
Ich hab zum Testen mal LED an D0----7 angeschlossen, über 1KOhms...
Auch bei RESET ändert sich nichts an der Anzeige... ich glaub ich habs gegrillt???
Code:
void LCD_INPUT(void){
//LCD_DATA als INPUT und Pullup aus
LCD_DATA_DDR = 0x00;
LCD_DATA_PORT = 0x00;
//LCD_CTRL als Output und Pullup aus
LCD_CTRL_DDR &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
LCD_CTRL_PORT &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
}
void LCD_OUTPUT(void){
//LCD_DATA als OUTPUT und Pullup aus
LCD_DATA_DDR = 0xFF;
LCD_DATA_PORT = 0x00;
//LCD_CTRL als Output und Pullup aus
LCD_CTRL_DDR &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
LCD_CTRL_PORT &=~ (1<<LCD_RS)|(1<<LCD_RW)|(1<<LCD_E);
}
uint8_t LCD_READ( uint8_t RS ){
//Datenrichtungseinstellung für READ
LCD_INPUT();
//Registerwahl
if( RS ) { LCD_CTRL_PORT |= (1<<LCD_RS); } //RS = 0 Steuerregister
else { LCD_CTRL_PORT &= ~(1<<LCD_RS); } //RS = 1 Datenregister
//RW HIGH setzen
LCD_CTRL_PORT |= (1<<LCD_RW);
//Enable HIGH setzen
LCD_CTRL_PORT |= (1<<LCD_E);
//Bisschen Warten bis Daten anliegen
uint8_t t = 0; while( t < 200 ){ t++; }
//DATEN LESEN
uint8_t data = LCD_DATA_PIN;
//Enable LOW setzen
LCD_CTRL_PORT &=~ (1<<LCD_E);
//RW LOW setzen
LCD_CTRL_PORT &=~ (1<<LCD_RW);
return data;
}
Lesezeichen