www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom: ADC umrechnen, LCD-Wert formatieren


Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leuts!


Ich bin hier mal wieder am Verzweifeln ...
Ich beschäftige mich noch nicht lange mit Bascom.
Ich möchte eine kleine U-Meßschaltung realisieren.
2 ADC Ports auslesen, umrechnen und auf gLCD ausgeben, Spannung bis 5
Volt, Uref = 5 V.

Also, das Auslesen und Umrechnen klappt schon, aber ich möchte den Wert
auf dem LCD formatieren. Unter 1 Volt soll in Millivolt angezeigt
werden, und zwar (absichtlich) so:

###.# mV ... ab 1 V dann
##.## V

Ich verwende den Befehl "format", aber irgendwie zeigt der ständig
lange Zahlen an. Mit "Fusing" fängt die Anzeige links an und wandert
-je mehr Stellen vorm Komma- nach rechts, das will ich verhindern.

Für einen ADC paste ich mal meinen (besch....) code, nicht lachen :)

-------------------------------------
Dim Adc0 As Word
Dim Vpre As Single
Dim V0 As Single
Dim C0index As String * 2

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Vpre = 48876 / 10000000

Adc0 = Getadc(3)
V0 = Adc0 * Vpre

Dim V0test As String * 5

If V0 < 1 Then
V0 = V0 * 1000
C0index = "mV"
V0test = Str(v0)
V0test = Format(v0test , "     ")
Else
V0index = " V"
V0test = Str(v0)
V0test = Format(v0test , "     ")
End If

Locate 5 , 2
Lcd C0test
Locate 5 , 7
Lcd C0index
-------------------------------------

Ich hab mittlerweile schon Stunden gesucht und probiert ...
(die doppelte Ausführung von format im IF-Abschnitt ist noch vom
Probieren drin)
Wenn Lcd Fusing(...) von rechts nach links schreiben würde, wäre es
glaube ich kein Problem.

Für einen Rat bin ich sehr dankbar!


Grüße, Robert

Autor: Jürgen C (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robert,

schau Dir mal das Programm im Anhang an.
Ich weis aber nicht ob es auch mit einem gLCD funktioniert.

Jürgen

Autor: Jürgen C (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robert,


1000mV = 1V; Das Programm im Anhang solte richtig Anzeigen.

Jürgen

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,


vielen Dank, das hat funktioniert :)
Allerdings, sobald ich Vpre "genauer" machen will, also 489 oder
4887, dann auch die < 10000 und < 100 um die extra-Stellen vergrößere,
klappt das irgendwie nicht mehr, ich hab schon etliche Kombinationen
ausprobiert ... :)


Hmm, gleich noch eine Anfängerfrage (an alle) hinterher:
Ich habe noch einen DS18B20 hinzugefügt und lasse auch die Temperatur
anzeigen. Ich hab beide Abläufe in je ein Sub gepackt und rufe diese
nacheinander auf.
Das hat allerdings den Nachteil, daß erst wieder gemessen wird, wenn
die Temperatur ausgewertet wurde. Ist es möglich, 2 oder mehrere
Subs/Programmteile gleichzeitig aufzurufen?

Also zum Beispiel: Aktualisieren der Temp alle 30 sec, Messen am ADC0
alle 2 sec, am ADC1 alle 10 sec, Anzeige-Aktualisierung der Uhrzeit
alle 60 sec, usw.

Grund: Ich möchte noch ein paar andere Dinge hinzufügen, die alle
unterschiedlich oft aufgerufen werden sollen. Ich habe leider noch
keine Hinweise im Netz gefunden. Ich möchte später eine Art Menü
erstellen, welches alle Programmteile gleichzeitig anzeigt, aber halt
zu unterschiedlichen Zeitpunkten aktualisiert.
(Ich bin mir sicher, daß dies möglich ist, da ich so etwas schon
funktionieren gesehen habe :D)


Danke und Grüße,
Robert

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für zeitgesteuerte Sub-Aufrufe kann man die
Timer gut verwenden ;o)

Schau mal in der Hilfe unter Config Timer

Autor: Jürgen C (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robert,

siehe Anhang.

Jürgen

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jürgen: Danke :)

@Marko: an Timer dachte ich auch schon, habe dann aber erst mal nur
etwas von Ports gelesen und nicht weiter geforscht. Werde mich gleich
mal da durchlesen :D

So als Anfänger hat man's schon nicht leicht ...
Hab das ganze Wochenende nur experimentiert, macht aber auch ne Menge
Spaß :D


Grüße, Robert

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.