www.mikrocontroller.net

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


Autor: Björn P. (krusty)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sigint 112 (sigint)
Datum:

Bewertung
0 lesenswert
nicht 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:
char *pointer=var_mystring;

for(;pointer;pointer++)
{
send_char(*pointer);
}


Gruß,
  SIGINT

Autor: Björn P. (krusty)
Datum:

Bewertung
0 lesenswert
nicht 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

}


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.