SerialLCD & PIC18F2550

Gast #3975895
Hat schon jemand mit dem Parallax 2x16Serial LCD, Backlit (#27977) 
gearbeitet?
Habe o.g. an meinem PIC (18F2550) über die RS232 angeschlossen u 
versuche nun sämtliche Commands aus dem Datenblatt des LCDs über meinen 
PIC zum laufen zu bringen - alles erfolglos - bis auf die Textausgabe - 
die funktioniert einwandfrei. Aber commands wie "Turn backlight on" oder 
"Move cursor to line 1, position 4" (um jetzt nur ein paar zu nennen) 
funktioniert nicht.

Liegt es am Datenblatt od. an meinem code?

(code-Bsp.:
printf("\fHello World\r")
printf("Guten Morgen") ) -> wie füge ich nun weitere Codes ein bzw. 
benutze ich statt dem Text zB die og. Befehle?

(Info nebenbei - bin noch Anfänger in PIC-Programmierung)
Der Befehl für z.B. "Backlight on" scheint 0x11 zu sein.
Also musst du den senden.
Bei Befehlen, die aus nur einem Byte bestehen, schreibst du dafür das 
Befehlsbyte einfach in das TXREG. (nachdem du geprüft hast ob es leer 
ist)

Welchen Compiler benutzt du ?
1
#define BKL_ON   0x11
2
#define BKL_OFF  0x12
3
...
4
    while(BusyUSART()){;}    // warten bis frei
5
    TXREG = BKL_ON;          // oder TXREG = 0x11 ohne die defines
Gast
Hallo,
danke für deine Hilfe - aber ich hab´s mittlerweile schon selber 
geschafft (selbstaufdieschulterklopf)
verwende die Befehle aus dem Datenblatt des Parallax nun mit "putc(...)" 
in Klammer der Befehl in Dec.

programmiere in C mit MPLAB bzw CCS (kenn mich da mit den Bezeichnungen 
nicht so genau aus... :-/ )
Hast du in der Dokumentation geschaut, ob du vor Benutzung von putc()
überprüfen musst ob das Senderegister frei ist ?


Ist bei der Compiler-Installation auch der Sourcecode mit dabei ?
Die Funktionen der Lib fragen da meistens noch unnötigerweise ab ob 9 
Bit modus. So sieht das ungefähr bei den MCHP Compilern aus:
1
void WriteUSART(char data)
2
{
3
  if(TXSTAbits.TX9)  // 9-bit mode?
4
  {
5
    TXSTAbits.TX9D = 0;       // Set the TX9D bit according to the
6
    if(USART_Status.TX_NINE)  // USART Tx 9th bit in status reg
7
      TXSTAbits.TX9D = 1;
8
  }
9

10
  TXREG = data;      // Write the data byte to the USART
11
}

Es gibt vermutlich auch noch so was wie puts() anstelle von printf() ...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.