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
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.
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
Mit dem Programm "Bascom" geht das sehr sehr einfach! Ist zwar nicht C oder ASM, aber man kann ASM-Teile mit einbinden ins Programm... ;-)
@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
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.html#127504 ...
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
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.
Danke, aber ich hab den Atmega8 und hier arbeitet man mit einem PIC.. darum kann ich nicht alles 1:1 übernehmen
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.
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
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.
Ah. ok. Dann solltest Du Dich mal mit dem LCD beschaeftigen. Code dafuer gibts ebenfalls bei Peter Fleury.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.