Forum: PC-Programmierung RS232 Daten senden vom uc an PC


von Björn P. (krusty)


Lesenswert?

Hallo zusammen,

ich bin an einer Stelle wo ich nicht mehr weiter weiß.
Ich benutze den AT89C51ED2 und habe mit C ein kleines Programm 
geschrieben
Mit dem Programm kann ich Daten erfassen die dann auf einem kleinen LCD 
Display auf dem Board angezeigt werden.
Nun möchte ich die Daten über eine RS232 Schnittstelle auf meinen PC 
senden.
Ich habe die Daten auf dem uc in einen String umgewandelt (sprintf).
Hab mich auch über UART informiert, das ich darüber die Daten senden 
muss, und sie dann über ein Terminal Programm empfangen kann.
Aber wie mach ich das?
Kann mir jemand bitte helfen?

Danke im Voraus

von Sigint 112 (sigint)


Lesenswert?

Hallo Björn,
  wenn du den Text schon als String vorliegen hast, dann kannst du doch 
einfach ein Zeichen nach dem anderen über die serielle Schnittstelle 
übertragen. Das sollte so Funktionieren:
1
char *pointer=var_mystring;
2
3
for(;pointer;pointer++)
4
{
5
send_char(*pointer);
6
}

Gruß,
  SIGINT

von Björn P. (krusty)


Lesenswert?

Hallo Sigint,

danke für deine Antwort ;-)
Ich bin leider nicht der Profi darin.
Könntest du mir vielleicht einen Tipp geben wo ich die Zeilen einfügen 
soll?
Hier ist mein kleines Programm.
P.S. Ich habe einen kompletten Text auf dem LCD Display,
wird der dann im ganzen übertragen?

Gruß,Björn

const float LSB = 0.01953;  // 5V / 256 Schritte = 0.01953

void main (void)
{
  unsigned char AIn0Wert;   //AD0-Wert als 8-Bit-Variable
  unsigned char buf [16];  //für LCD-Anzeig
  float  UIn0Wert;  //für Skalierung des AD0-Werts auf 0 bis 5V
  initlcd ();    //LCD-Display initialisieren
  testlcd ();    //LCD-Display testen und löschen

  while (1)
  {
    AIn0Wert = ain (0);//Analogwert von Poti an Kanal 0 einlesen
    LEDPort = AIn0Wert;//an LEDs an P2 ausgeben
    aout (AIn0Wert);//und an den Analogausgang

    UIn0Wert = AIn0Wert * LSB;//Skalierung auf 0 bis 5V

    sprintf (buf,"AD0 = %1.3f Volt",UIn0Wert);

// Floatvariable formatieren, als 4-stellige Kommazahl in String 
verwandeln, in buf kopieren
//  %Ausgabeformat folgt, 1 Vor- 3 Nachkommastellen, f Floatvariable, 
auszugebende Variable

    printlcd (buf,1);

   }  //  Ende Endlosschleife mit while

}


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.