Hallo !
Viielleicht ist es ja wieder mein "berühmtes Brett vorm Ko..", aber ich komme mit einem ser. LCD einfach nicht dazu ,dass es Zeichen ausgibt.
Hier die Angaben des Herstellers der seriellen Ansteuerung:
Ich habe nun Funktionen geschrieben die damit arbeiten sollten:Code:/* ========================================================================== */ /* */ /* Vom Hersteller 'Grove' vorgegebene Kommandovariablen */ /* */ /* */ /* ========================================================================== */ /* */ /* Initialisations Commands or Responses */ /* */ /* */ /* ========================================================================== */ #define UART_READY 0xA3 #define SLCD_INIT_ACK 0xA5 #define SLCD_INIT_DONE 0xAA #define SLCD_INVALIDCOMMAND 0x46 /* ========================================================================== */ /* */ /* WorkingMode Commands or Responses */ /* */ /* */ /* ========================================================================== */ // #define SLCD_CONTROL_HEADER 0x9F #define SLCD_CHAR_HEADER 0xFE #define SLCD_CURSOR_HEADER 0xFF #define SLCD_CURSOR_ACK 0x5A #define SLCD_RETURN_HOME 0x61 #define SLCD_DISPLAY_OFF 0x63 #define SLCD_DISPLAY_ON 0x64 #define SLCD_CLEAR_DISPLAY 0x65 #define SLCD_CURSOR_OFF 0x66 #define SLCD_CURSOR_ON 0x67 #define SLCD_BLINK_OFF 0x68 #define SLCD_BLINK_ON 0x69 #define SLCD_SCROLL_LEFT 0x6C #define SLCD_SCROLL_RIGHT 0x72 #define SLCD_NO_AUTO_SCROLL 0x6A #define SLCD_AUTO_SCROLL 0x6D #define SLCD_LEFT_TO_RIGHT 0x70 #define SLCD_RIGHT_TO_LEFT 0x71 /* ========================================================================== */ /* */ /* ab Firmware 1.0b und höher benutzbar */ /* */ /* */ /* ========================================================================== */ #define SLCD_BACKLIGHT_ON 0x81 #define SLCD_BACKLIGHT_OFF 0x80 #define SLCD_POWER_ON 0x83 #define SLCD_POWER_OFF 0x82 /* ========================================================================== */ /* */ /* */ /* */ /* */ /* ========================================================================== */
LCD lässt sich ein und ausschalten auch die Beleuchtung, gar kein Thema nun die Schreibfunktion:Code:/* ========================================================================== */ /* */ /* initialisierung des LCD */ /* */ /* ========================================================================== */ void lcd_begin(void) { usart_init(); wait_lcd(2000); putchar(0x9F); // send CMD-Header putchar(0x82); // send Power OFF wait_lcd(1000); //1000ms putchar(0x9F); // send CMD-Header putchar(0x81); // send Backlight ON wait_lcd(1000); putchar(0x9F); // send CMD-Header putchar(0xA3); // send LCD Init wait_lcd(2000); //wait_lcd(500); } /* ========================================================================== */
Hier das Testprogr ohne HeaderdetailsCode:/* ========================================================================== */ /* */ /* schreibe Text auf Display */ /* */ /* */ /* ========================================================================== */ void write_display(char *str) { putchar(0xFE); // send Char-Header while(*str) { puts(*str); // sende Stringzeichen str++; } } //**************************************************************************** //puts funktion hier: //**************************************************************************** /* ========================================================================== */ /* */ /* Sende String ohne CR/LF */ /* */ /* */ /* ========================================================================== */ void puts( char *s ) { while( *s ) putchar( *s); s++; } //****************************************************************************** putchar hier: //****************************************************************************** /* ========================================================================== */ /* */ /* Sende Char ohne CR/LF */ /* */ /* */ /* ========================================================================== */ void putchar( char c ) { while( (UCSRA & 1<<UDRE) == 0 ); UDR = c; } //******************************************************************************
Ich weiss nicht mehr wie ich dem Teil beibiegen soll endlich Zeichen auszugeben, es ist nicht defekt !! // Mit Arduino-Example getestet = OK!!Code:int main (void) { lcd_begin(); write_display("Test"); wait_lcd(2000); SerialLCD_noBacklight(); }
Hat wer bitte eine Idee ???
Gruss
Gerhard







Zitieren

Lesezeichen