- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: portpins abfragen und am LCD ausgeben

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    Anzeige

    Powerstation Test
    DANKE!!!! ))))wie machst du das bloß? )))))))
    kann man das aber so noch einstellen, dass er nur von 0 bis 9 geht und dann wieder auf 0 springt?
    Also ich habe hier einen Geber, der Gray-Code ausgibt.

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    also mein Code sieht jetzt so aus:

    $regfile = "m16def.dat"
    $crystal = 8000000

    Config Lcd = 16 * 4
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4

    Initlcd

    Dim Zahl As Byte
    Dim Zahl1 As Byte
    Dim Zahl2 As Byte


    Cls
    Cursor Off
    Do
    Cls

    Zahl = Pina
    Zahl = Zahl AND &B00001111
    Zahl = Gray2bin(zahl)

    Zahl1 = Pind
    Zahl1 = Zahl1 And &B00001111
    Zahl1 = Gray2bin(zahl1)

    Zahl2 = Pinc
    Zahl2 = Zahl2 And &B00001111
    Zahl2 = Gray2bin(zahl2)

    Locate 1 , 3
    Lcd Zahl

    Locate 1 , 2
    Lcd Zahl1

    Locate 1 , 1
    Lcd Zahl2



    Waitms 70
    Loop

    End


    es sollen nur 3 Stellen angezeigt werden.
    also hunderter, zehner und einer stellen.
    zur Zeit ist es so, wenn ich den Geber drehe, zeigt das LCD von 0 bis 15 an. und zwar so: 0015.
    wenn ich weiter drehe, zeigt das Lcd das an: 0114, 0113.... 015, 011, 020... 021, 0214, 0215, 030...
    verstehst du den zusammenhang?
    ich brauche es nur 3 stellig. 999.

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    wie machst du das bloß?
    ICH?? (*lach)

    Mit dem "locate"-Befehl kann es passieren, dass es Überschreibungen gibt, wenn die Zahl der Stellen nicht immer konstant ist. Um das zu vermeiden, kannst Du stattdessen auch alle Zahlen in einem LCD-Befehl ausgeben lassen:

    LCD Zahl2; Zahl1; Zahl

    Dann stehen sie immer schön nebeneinander - egal, ob sie 1- oder 2-stellig sind. Vielleicht ist das System dahinter dann einfacher zu durchschauen - denn ehrlich gesagt, ist mir dies auf die Schnelle nicht gelungen.

    Mit 16-stufigen Schaltern nur 10 Ziffern zu erzeugen - das führt zwangsläufig dazu, dass 6 Schalterpositionen ohne Funktion sind, d.h. keine Änderung, wenn Du diesen Bereich überfährst. Wenn Du mit diesem Schönheitsfehler leben kannst, würde ich das einfach so machen:



    Code:
    Zahl = Pina
    Zahl = Zahl AND &B00001111
    Zahl = Gray2bin(zahl)
    If Zahl > 9 then
    Zahl = 9
    End if
    (und das natürlich für alle 3 Stellen).

    Hoffe, es hilft...

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    oder es könnte man auch so machen:
    ich muss einen 12bit Gray code auswerten.
    der Port von Mega16 hat nur 8 bit. (8 pins)
    kann man den noch erweitern?
    also noch 4 pins von dem anderen Port nehmen, so dass ich 12bit habe?
    geht das softwaremässig?
    Danke sehr!

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Puh - Du hast ja Probleme

    Ich hab´ das gerade mal am Simulator durchgespielt - und so kann auch das klappen:

    (Für dieses Beispiel :Alle 8 Bits von Port A sowie Bit 0-3 von Port B als Eingänge)

    Code:
    Dim Gray as Word '(Endvariable mit 16 Bit Breite)
    Dim LoByte as Word '(Untere 8 Bit)
    Dim HiByte as Word  '(obere 4 Bit)
    
    LoByte = PinA
    HiByte = PinB
    HiByte = HiByte AND &B0000000000001111 '(Das kennen wir ja schon...)
    
    Rotate HiByte, left, 8 '(Verschiebt die Bits von PortB um 8 Stellen nach links!)
    
    Gray = LoByte + HiByte '(zusammenzählen...)
    
    Gray = Gray2Min(Gray) '(...und in Binärformat umwandeln!!)
    Sowas kann man übrigens PEFEKT im Simulator durchspielen. Da kannst Du alle Variablen im Dezimal-und Binärfomat sehen. Erste Gehversuche lohnen sich!!

    Gruß,

    Daniel

    P.S.: Vielleicht geht´s auch eleganter - keine Ahnung. Bin auch noch nicht soooo der Bascom-Checker

  6. #26
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    Danke!
    Super, es funktioniert!!!!!!
    wie soll ich dir danken?

  7. #27
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    ...super, dass es klappt!
    Das ist das gute an diesem Forum: Hier werden Sie geholfen! =D>

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests