Beste allemaal,

Ik probeer een 18f2550 en een lcd aan de praat te krijgen, maar het werkt niet. Er komt wel een zwarte balk op het scherm op de bovenste regel, maar hij is wat zwarter dan de balk van een niet geïnitialiseerd lcd. Een blink a led werkte wel.


sbit LCD_RS at RA1_bit;
sbit LCD_EN at RA0_bit;
sbit LCD_D7 at RA5_bit;
sbit LCD_D6 at RA4_bit;
sbit LCD_D5 at RA3_bit;
sbit LCD_D4 at RA2_bit;

// Pin direction
sbit LCD_RS_Direction at TRISA1_bit;
sbit LCD_EN_Direction at TRISA0_bit;
sbit LCD_D7_Direction at TRISA5_bit;
sbit LCD_D6_Direction at TRISA4_bit;
sbit LCD_D5_Direction at TRISA3_bit;
sbit LCD_D4_Direction at TRISA2_bit;


void main() {

Delay_ms(500);
Lcd_Init();

Lcd_Cmd(_LCD_CLEAR);      // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,"18f test");


}

Er zit een 20Mhz kristalletje aan en dit zijn mn fuse settings:
http://www.uploadarchief.net/files/download/fuses_01.png

Wat zit er fout? De aansluitingen heb ik 100 keer gechecked...

Port A is default analoog. Op digitaal zetten. (ADCON1)
Verder is het ook wel handig om te vermelden wat voor display; er zijn duizenden verschillende...

Ik zou je aanraden om je mainroutine af te sluiten met een while(1); lus.
Nu heb je geen idee wat er gebeurd nadat de code doorlopen is.

Verder, al met het contrast gespeeld?

EDIT: ADCON wijzigen is ook belangrijk idd..

[Bericht gewijzigd door hvwieren op (12%)]

bedank, dat was de oplossing


ADCON1 = 15;
CMCON = 7;
TRISA = 0;

waardes uit voorbeeldcode uit de datsheet:


CLRF PORTA ; Initialize PORTA by
; clearing output
; data latches
CLRF LATA ; Alternate method
; to clear output
; data latches
MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0CFh ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<3:0> as inputs
; RA<5:4> as outputs