PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GetAdc und Balkendarstellung



BlaueLed
30.01.2007, 19:17
Hallo,

ich lese über "Temperatur = getadc(0)" den Analogeingang 0 meines mega16 ein. Wenn ich mir den Wert per "lcd Temperatur" anzeigen lasse, funktioniert es einwandfrei. Jetzt würde ich gerne in der zweiten Zeile eine Art Balkendarstellung des Wertes anzeigen lassen. z.B. so:

Wenn Wert zwischen 900 und 1000 dann kein balken
Wenn Wert zwischen 800 und 900 dann ein Balken ( also # )
Wenn wert zwischen 700 und 800 dann zwei Balken ( ## )
usw...

momentan benutze ich folgenden code:



'--------------------- Chipdefinition ------------------------------
$regfile = "m16def.dat"
$crystal = 16000000
'$hwstack = 32
'$swstack = 10
'$framesize = 40
'--------------------- ADC Config --------------------------------
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'--------------------- Display Config ---------------------------
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
'------------------------- Port Definition -----------------------
Config Porta = Input
'--------------------------------- Dims ---------------------------
Dim Temperatur As Word
'--------------------------- Hauptprogramm --------------------
Cls
Cursor Off Noblink
Do
Temperatur = Getadc(0)
Locate 1 , 1
Lcd "Temp. : " ; Temperatur
If Temperatur > 1000 And Temperatur < 1023 Then Locate 2 , 1 : Lcd ""
If Temperatur > 900 And Temperatur < 999 Then Locate 2 , 1 : Lcd "#"
If Temperatur > 800 And Temperatur < 899 Then Locate 2 , 1 : Lcd "##"
If Temperatur > 700 And Temperatur < 799 Then Locate 2 , 1 : Lcd "###"
If Temperatur > 600 And Temperatur < 699 Then Locate 2 , 1 : Lcd "####"
If Temperatur > 500 And Temperatur < 599 Then Locate 2 , 1 : Lcd "#####"
If Temperatur > 400 And Temperatur < 499 Then Locate 2 , 1 : Lcd "######"
If Temperatur > 300 And Temperatur < 399 Then Locate 2 , 1 : Lcd "#######"
If Temperatur > 200 And Temperatur < 299 Then Locate 2 , 1 : Lcd "########"
Wait 2
Cls
Loop


ich bekomme aber auf dem lcd mit diesem Code auch in der ersten Zeile nen balken. Also stimmt da irgendwas nicht. Kann mir da jemand bitte helfen ?

mfg Kay

Jon
30.01.2007, 19:58
Dann probiere es mal so, wobei ich kaum glaube, dass das was hilft^^


'--------------------- Chipdefinition ------------------------------
$regfile = "m16def.dat"
$crystal = 16000000
'$hwstack = 32
'$swstack = 10
'$framesize = 40
'--------------------- ADC Config --------------------------------
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'--------------------- Display Config ---------------------------
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
'------------------------- Port Definition -----------------------
Config Porta = Input
'--------------------------------- Dims ---------------------------
Dim Temperatur As Word
'--------------------------- Hauptprogramm --------------------
Cls
Cursor Off Noblink
Do
Temperatur = Getadc(0)
Locate 1 , 1
Lcd "Temp. : " ; Temperatur
If Temperatur > 1000 And Temperatur < 1023 Then
Locate 2 , 1
Lcd ""
end if
If Temperatur > 900 And Temperatur < 999 Then
Locate 2 , 1
Lcd "#"
end if
If Temperatur > 800 And Temperatur < 899 Then
Locate 2 , 1
Lcd "##"
end if
If Temperatur > 700 And Temperatur < 799 Then
Locate 2 , 1
Lcd "###"
end if
If Temperatur > 600 And Temperatur < 699 Then
Locate 2 , 1
Lcd "####"
end if
If Temperatur > 500 And Temperatur < 599 Then
Locate 2 , 1
Lcd "#####"
end if
If Temperatur > 400 And Temperatur < 499 Then
Locate 2 , 1
Lcd "######"
end if
If Temperatur > 300 And Temperatur < 399 Then
Locate 2 , 1
Lcd "#######"
end if
If Temperatur > 200 And Temperatur < 299 Then
Locate 2 , 1
Lcd "########"
end if
Wait 2
Cls
Loop


jon

BlaueLed
30.01.2007, 20:03
ahhhhhhhhh vielen dank. hilft

Jon
31.01.2007, 13:45
Das freut mich aber :)
Meine Vermutung ist, dass für BASCOM zu viele Befehle in einer Zeile standen, was zu Problemen führt.
Kamen bei deiner ersten Varianten keine Fehlermeldungen?

jon

BlaueLed
01.02.2007, 11:42
hi,

es kamen keine Fehlermeldungen

kay

Jon
01.02.2007, 13:18
Bei mir komm da ne Fehlermeldung. Keine Ahnung, warum bei dir keine kommt :(

jon

gandalf
02.02.2007, 09:21
[quote="BlaueLed"]Hallo,

Jetzt würde ich gerne in der zweiten Zeile eine Art Balkendarstellung des Wertes anzeigen lassen. z.B. so:

Wenn Wert zwischen 900 und 1000 dann kein balken
Wenn Wert zwischen 800 und 900 dann ein Balken ( also # )
Wenn wert zwischen 700 und 800 dann zwei Balken ( ## )
usw...

Hallo Kay,
vieleicht hilft dir ja einer der folgende Grundlagenartikel (Using an LCD)weiter. Mir hat er die LCD Ansteuerung klar gemacht.
http://www.qsl.net/pa3ckr/
-------------------------------------------------------------------------
Ein Versuch ist meist nicht genuch. (Dietrich Drahtlos)