Schau dir mal die Fusing() Funktion zur formatierten Ausgabe von Singles an.
Gruß
Rolf
Hallo,
habe in Bascom folgendes programm:
C sollte eigentlich 1,6 V ergeben.Code:$regfile = "m8def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Adc = Single , Prescaler = Auto Start Adc Dim W As Word Dim A As Single Dim B As Single Dim C As Single Dim D As Single Dim E As Single Do W = Getadc(1) A = 5 / 1024 C = W * A D = C * 100 D = Round(d) E = D / 100 B = E Cursor Off Cls Locate 1 , 1 Lcd B ; " V" Wait 1 Loop End
Leider gibt das Display immer nur 1,615559 aus. Kein Volt-zeichen oder sonst was. Nur wenn ich z.b. schreibe A=10/1024, dann gibt er was anderes aus, aber sonst nicht.
mfg
Schau dir mal die Fusing() Funktion zur formatierten Ausgabe von Singles an.
Gruß
Rolf
Hallo,
hab noch ein kleines problem. Ich hab einen Taster der active high geschaltet ist, leider schaffe ich es nicht in bascom, den Wert zu ändern, also er ist entweder immer 1 oder 0, je nachdem wie ich ihn setze. Kann mir jemand schnell sagen, wie ich was setzten muss, bin am verzweifeln.
mfg
Interne Widerstände sind ,wenn eingeschaltet nach Plus.
Also musst Du den Schalter gegen GND schalten lassen.
Wie man die Pullup's einschaltet , ich habe jetzt keine Lust , drum benutze oben SUCHEN.
Gento
Bei 16x1 Displays ist es oft so das man nur die ersten 8 Zeichen mit Locate 1,1 bis 1,8 anzeigen kann.Benutze mal Locate 2,1 wie bei einem 2 zeiligem Display.Oder Definiere es mal als ein 16x2 Display.
Mike
Hallo,
das mit der ausgabe am lcd funktioniert jetzt, aber das mit dem taster nicht. Ich habe ihn jetzt auf active low, also wenn taster geschlossen, dann zieht er den port auf gnd, umgelötet. Aber es geht immer noch nicht.
mfgCode:$regfile = "m8def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Pinb.1 = Input Portb.1 = 1 Do If Portb.1 = 1 Then Cls Lcd "1" Wait 1 Else Cls Lcd "0" End If Wait 1 Loop End
Wichtiger als die Richtung, in die der Taster schaltet, ist es, ihn mit
Pinb.1 im Programm anzusprechen. Also
If Pinb.1 = 1 Then
Gruß
Rolf
Hallo,
bei dem einfachen Programm funkts jetzt, wenn ich es aber in mein Hauptprogramm einbaue, wird nur Piep() ausgeführt. Langasam bin ich am verzweifeln.
mfgCode:$regfile = "m8def.dat" $framesize = 60 $swstack = 60 $hwstack = 60 $crystal = 1000000 Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Adc = Single , Prescaler = Auto Start Adc Dim W As Integer Dim A As Single Dim B As Single Dim C As Single Dim D As Single Dim E As Single Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portb.2 = Output Config Pinb.1 = Input Portb.1 = 1 Declare Sub Piep() Declare Sub Spannung() Sub Piep() Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1 Pwm1b = 180 Wait 1 Pwm1b = 0 Wait 1 End Sub Sub Spannung() A = 5 / 1024 C = W * A D = C * 100 E = Round(d) E = E / 100 B = E * 3 Cursor Off Cls Locate 1 , 1 Lcd Fusing(b , "#.##") ; "V" 'Spannung Wait 1 End Sub Do W = Getadc(1) If 390 < W Then Portc.3 = 1 'Grün End If If 340 < W And W < 390 Then Portc.4 = 1 'Gelb End If If W < 340 Then Portc.5 = 1 'Rot End If If Pinb.1 = 1 Then Call Piep Else Call Spannung End If Loop End
die richtige Reihenfolge ist:
Configs, Dims, Declares
Befehle vor der Hauptschleife (z.B. Portb.1=1
Do...Loop
END
Subs
Gruß
Rolf
Hallo,
perfekt!
mfg
Lesezeichen