Forum: Mikrocontroller und Digitale Elektronik RS232 und LCD gleichzeitig mit PIC


von Holger (Gast)


Lesenswert?

Hallo,

ich hab ein funktionierendes Programm das mit printf() Texte über die 
UART schicken kann, und ich hab ein funktionierendes Programm das mit 
lcd_puts() Texte auf ein 4x20 Display schreiben kann.
Ich will nun beide vereinen um beide Schnittstellen gleichzeitig nutzen 
zu können. Sie liegen auch auf verschieden PINs. UART liegt auf PortB 5 
und 6. Lcd liegt auf PortB 0-3 und rs auf PortA2 und En auf PortA3. 
Jedoch stören sich (vermutlich) die beiden folgenden initialisierungen:


#define INIT_PORTS {TRISA = 0x00; TRISB = 0x00; TRISC = 0xBF; 
TRISD = 0xFF; TRISE = 0x07;}
//---------------------------------------------------------------------- 
------------
void RegInit(void)
//---------------------------------------------------------------------- 
------------
{
 //Pull-up port B
 RBPU = 0;

 INIT_PORTS;

 BRGH=1;    // high baud rate
 SPBRG=22;     //set the baud rate 22-9600Bd,11-19200(3.58MHz)
 SYNC=0;    // asynchronous
 SPEN=1;    // enable serial port pins
 CREN=1;    // enable reception
 SREN=0;    // no effect
 TXIE=0;    // disable tx interrupts
 RCIE=0;    // disable rx interrupts
 TX9=0;    // 0-8 or 1-9bit transmission
 RX9=0;    // 0-8 or 1-9bit reception
 TXEN=1;    // enable the transmitter
}

void
lcd_init(void)
{
  LCD_RS = 0;  // write control bytes
  DelayMs(15);  // power on delay
  PORTB = 0x3;  // attention!
  LCD_STROBE;
  DelayMs(5);
  LCD_STROBE;
  DelayUs(50);
  LCD_STROBE;
  DelayMs(5);
  PORTB = 0x2;  // set 4 bit mode
  LCD_STROBE;
  DelayUs(40);
  lcd_write(0x28); // 4 bit mode, 1/16 duty, 5x8 font
  lcd_write(0x0F);  // display on, blink curson on
  lcd_write(0x04);  // entry mode
  lcd_write(0x01);  // Display Löschen
}

Bin für jede Hilfe Dankbar!
MFG
Holger

von Steffen (Gast)


Lesenswert?

Damit du Daten empfangen kannst muss RX als Eingang definiert sein. Laut 
Datenblatt sollen sogar beide Pins also auch TX in TRISB gesetzt sein.
MfG
Steffen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.