AVR - Voltmeter

Apr 20, 2005 2 Replies

Hallo Forum,



ich bin gerade dabei mich in die C-Programmierung von Mikrocontrollern einzuarbeiten. Dazu habe ich mir das Ziel gesetzt mal ein Voltmeter mit einem AVR aufzubauen. Als Prozessor nutze ich einen AT90S4433 sowie ein HD44... kompatibles LCD. Compiler ist der AVR-GCC 3.3, das Hexfile ist



3229 Byte groß.

Klappt auch wunderbar, aber ich finde den Code so sperrig. Ist das bei C normal ? Kann ja auch sein das ich als Anfänger das ganze umständlich gelöst habe. Ich poste mal den Code, vielleicht hat ja jemand noch ein paar Tips oder Verbesserungsvorschläge.


#include #include #include #include


void main(void) {



uint16_t x; // Allgemeine Verwendung uint16_t ziffer; // Zwischenvariable für Umrechnung char buffer[2]; // Zeichenpuffer für long integer // - ascii Umrechnung


lcd_init(LCD_DISP_ON); // LCD einschalten lcd_clrscr(); // LCD löschen lcd_gotoxy(6,0); // Positon 6, Zeile 0 einzeilig ) lcd_puts("V"); // ein V schreiben



DDRC = 0x00; // Port C auf Eingabe schalten PORTC |= 0x00; // interne Pull-Up's aus



// AD-Wandler einschalten, starten, freilaufende Betriebsart, Teil.32,Ch5



ADCSR = (1


"Alex H." schrieb im Newsbeitrag news:d45alm$g77$00$ snipped-for-privacy@news.t-online.com...

Ergebnis kann bis 50000 gehen, uint_16 auch, aber itoa leider nicht, daher ist bei dir die ueberdimensionierte Funktion ltoa noetig, aber dann schon richtig die ganze Zahl wandeln lassen mit allen Ziffer. Entweder so:

char buffer[8];

ziffer=1; ltoa(x,buffer+ziffer,10); if(strlen(buffer)>4) // Dezimalpunkt einfügen { buffer[0]=buffer[1]; buffer[1]='.'; ziffer=0; } lcd_puts(buffer+ziffer);

oder so ohne ltoa:

for(ziffer=0;ziffer

"MaWin" schrieb im Newsbeitrag news:d45bt8$dv0$ snipped-for-privacy@online.de...

Einfacher und besser:

char buffer[8];

ltoa(100000+x,buffer,10); buffer[0]=buffer[1]; buffer[1]='.'; lcd_puts(buffer);

-- Manfred Winterhoff, reply-to invalid, use mawin at despammed.com homepage:

formatting link
de.sci.electronics FAQ:
formatting link
Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required