Hallo,
ich habe ein dsPIC30F6011A und möchte damit ein LCD-Display http://www.reichelt.de/Background-gr...r=LCD+162C+LED ansteuern. Allerdings scheitere ich schon an der Initialisierung. Ich möchte zunächst sehen, dass die Initialisierung geklappt hat und den Cursor an der ersten stelle des Displays blinken lassen.
Allerdings zeigt mir das Display nach dem Durchlauf immer noch nur die erste Zeile mit Balken an. Die Verbindungen vom Controller zum Display sind alle vorhanden (auch richtig). Hat das schon einmal jemand gemacht und kann mir da evtl. einen Tip geben, wass ich noch berücksichtigen muss?Code:#include <p30fxxxx.h> #include <p30F6011A.h> #include <xc.h> #include <stdio.h> #include "system.h" #include <libpic30.h> // Konfigurationbits _FOSC(CSW_FSCM_OFF & ECIO_PLL8); //Run this project using an external crystal routed via the PLL in 8x multiplier mode _FWDT(WDT_OFF); //Turn off the Watch-Dog Timer. _FBORPOR(MCLR_EN & PWRT_OFF); //Enable MCLR reset pin and turn off the power-up timers. _FGS(CODE_PROT_OFF); //Disable Code Protection int main (void) { configure_pin(); __delay_ms(2000); LATBbits.LATB12 = 0; lcd_init(); while (1) { __delay_ms(100); LATBbits.LATB12 = !LATBbits.LATB12; } LATBbits.LATB13 = 0; return 0; } void lcd_init( void ) { LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; // LCD Soft Reset __delay_ms(15); lcd_nibble(0x03); __delay_ms(5); lcd_nibble(0x03); __delay_us(100); lcd_nibble(0x03); __delay_ms(5); lcd_nibble(0x02); // Display settings lcd_cmd(0x28 ); // lcd_cmd(0x08); lcd_cmd(0x01); lcd_cmd(0x06); lcd_cmd(0x0F); } void lcd_cmd( unsigned int data ) { LCD_RS = 0; // RS auf 0 setzen lcd_nibble(data >> 4); lcd_nibble(data & 0x0F); __delay_us( 45 ); } static void lcd_nibble(unsigned char nibble) { LATGbits.LATG6 = (nibble>>3)&1; LATGbits.LATG7 = (nibble>>2)&1; LATGbits.LATG8 = (nibble>>1)&1; LATGbits.LATG9 = (nibble>>0)&1; lcd_enable(); } static void lcd_enable( void ) { LCD_EN = 1; __delay_us(50); LCD_EN = 0; }







Zitieren


Lesezeichen