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


von Robert (Gast)


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

von Jürgen C (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Robert,

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

Jürgen

von Jürgen C (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Robert,


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

Jürgen

von Robert (Gast)


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

von Marko (Gast)


Lesenswert?

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

Schau mal in der Hilfe unter Config Timer

von Jürgen C (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Robert,

siehe Anhang.

Jürgen

von Robert (Gast)


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

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
Noch kein Account? Hier anmelden.