www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega 8 ADC + LCD


Autor: Daniel Stoeger (stoegi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bin ein voller Anfänger auf dem Gebiet AVRs.
Hardware habe ich keine Probleme, bin Elektroniker.
Habe lediglich Probleme mit der Software.
Wie kann ich so einfach wie möglich mit C oder ASM einen Code für die
Darstellung der eingelesenen Analogwerte auf ADC0 auf einem LCD Display
darstellen, welches ebenfalls an einem Port im 4-Bit Modus hängt, wie im
Tutorial erklärt.

Vielen Dank,
Stögi

PS: im I-net habe ich nix ausführliches oder gutes gefunden, das mich
weiterbringt

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube nicht das dir jemand einen kompletten Code schreibt. Für die
LCD-Routine suchst du nach "Peter Fleury". Codeteile für das ADC
findest du sicher hier im Forum, eventuell in der Codesammlung.

Autor: Daniel Stoeger (stoegi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke

Autor: Marc Meise (bytewood) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,
im Dateianhang ist mein erstes Projekt, das ich für einen Freund, der
im Segelklub ist, gemacht habe: Die Aufgabe war einen Analogwert 0-5V
von einem Windgeschwindigkeitsmesser in Beaufort und diversen anderen
Einheiten auf einem LCD auszugeben. Da es mein erstes Projekt war,
benutzte ich damals noch BASCOM.
Grüße

Autor: Nils B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem Programm "Bascom" geht das sehr sehr einfach!

Ist zwar nicht C oder ASM, aber man kann ASM-Teile mit einbinden ins
Programm... ;-)

Autor: Marc Meise (bytewood) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nils
Na klar ist das mit BASCOM einfach, war ja auch mein erstes Projekt,
nach dem obligatorischen "Knight Rider" LED-Lauflicht. Ich war ganz
neu in Mikrocontroller und hab' erst mal probiert mit dem Controller
klarzukommen. So im Nachhinein ist alles reichlich überdimensioniert.
Aber was solls - für einen Start doch gar nicht schlecht!
Grüße

Marc

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie man das LCD in ASM ansteuert, findest du sicherlich im AVR-Tutorial
(1 Mausklick entfernt, zweiter Link links oben).

ADC auslesen erfolgt durch zyklisches Einlesen der Register adcl und
adch (z.B. im Timer-Int.), nachdem man den ADC gestartet hat (Vorteiler
usw ins ADC-Steuerregister, siehe Datenblatt) und die Quelle für Signal
und Referenz (ADMUX) eingestellt hat.

Wie man Zahlen in ASCII-Text verwandelt, findet man unter anderem in
der Codesammlung. Ich habe meine Routinen geschrieben, nachdem ich das
hier gelesen habe:
http://www.mikrocontroller.net/forum/read-4-127504...

...

Autor: Daniel Stoeger (stoegi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Habe jetzt laut Peter Fleury's erklärung mit avr gcc das einfache adc
progrämmchen kopiert und siehe da, es funktioniert.

der eingelesene wert am ADC0 wirt jetzt am Atmega8 an PortD
ausgegeben.. von PD0 - PD7.. und die LEDS an den ports geben nun den
binärcode dazu aus..

im code ist jetzt in der variable "x" die 8 bit länge, somit der
analog wert gespeichert.
jetzt will ich das auf das display kriegen.
habe aber noch meine probleme.

hier ist eine gute erklärung in C, aber das ist für einen PIC und ich
weiss nicht genau wie umschreiben.
http://www.cc5x.de/LCD.html (unten), vorallem stimmt die routine auch
nicht für atmel denke ich

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst also auf Deinem LCD bereits Texte ausgeben. Richtig?

Nun. Dann brauchst Du jetzt eine Funktion, die Dir von
einer Zahl eine textuelle Form liefert. Auf Deinem Link
findet sich genau so eine Funktion.

//******* Unterprogramm zum Anzeigen von 16Bit Zahlen auf LCD
*****************
void ZalString(uns16 z)
 ....

Die kannst Du praktisch 1:1 uebernehmen. Lediglich den
Aufruf von LCDWriteChar() musst Du durch einen Aufruf
einer Funktion aus Deiner LCD Bibliothek ersetzten.

Autor: Daniel Stoeger (stoegi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,
aber ich hab den Atmega8 und hier arbeitet man mit einem PIC.. darum
kann ich nicht alles 1:1 übernehmen

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist schon richtig.
Aber in dieser Funktion geht es primaer um rechnen. Und
das ist auf einem AVR dasselbe wie auf einem PIC oder einer
VAX oder einem PC oder einem Z80 oder einer Cray oder ....

Du musst eine Zahl in die einzelnen Ziffern aufteilen.
Aus 354 sollen die Ziffern 3, 4, und 5 werden.
Jede Ziffer wird dann in das korrespondierende Zeichen
( '3', '4' und '5' ) umgewandelt und die Ergebnisse
Zeichen fuer Zeichen am LCD dargestellt. Dein LCD zeigt
dann die Zeichenfolge 3 4 5  an und Dein Gehirn macht dann
daraus wieder die Zahl 345.

Das alles hat absolut nichts mit PIC oder AVR zu tun.

Autor: Daniel Stoeger (stoegi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Erklärung.
Das ist mir auch klar.. wir haben nur ein bisschen aneinander
vorbeigeredet. sorry

ich meinte jetzt z.b. lcd.c ..die routine usw stimmt auf den m8 nicht,
weil das für pic konfiguriert ist. ich denke nicht, dass es reicht, die
ports zu definieren.

danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry.
Dann hab ich Dich missverstanden.
Ja klar, die LCD Routinen sind wieder wesentlich
naeher an der Hardware und damit spezifisch. Aber
ich dachte die haettest Du ja bereits am laufen.

Autor: Daniel Stoeger (stoegi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm..
noch nicht

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah. ok.
Dann solltest Du Dich mal mit dem LCD beschaeftigen.
Code dafuer gibts ebenfalls bei Peter Fleury.

Autor: Daniel Stoeger (stoegi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, ich weiss danke,
aber ich weiss noch nicht ob ich das zum laufen bringe.. muss mir die
routine genau ansehen und kenne mich da aber noch nicht so gut aus

danke

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.