- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Basic++ und I²C Display

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85

    Basic++ und I²C Display

    Anzeige

    Praxistest und DIY Projekte
    Hallo!

    Hab vorn paar tage mein display an den pcf gehängt und ein bisschen rumprobiert, hat auch das meiste geklappt \/

    Nun wollte ich die lib funktionen und die ganze datenübertragung zum lcd ein bisschen besser verstehen. ich hoff ihr könnt mir da was beibringen!

    erstmal die write funktion:
    Code:
    FUNCTION LCD_WRITE(BUF as byte,LCDDATA as byte)
    define EXTPORT  byteport[18]
    define OUTBYTE as byte
    '--------- ------WRITE HI NIBBLE ------------------------
    OUTBYTE=BUF or (LCDDATA shr 4)
    EXTPORT=OUTBYTE or 01000000b
    EXTPORT=OUTBYTE and 10111111b
    '--------------- WRITE LO NIBBLE ------------------------
    OUTBYTE=BUF or (LCDDATA and 0Fh)
    EXTPORT=OUTBYTE or 01000000b
    EXTPORT=OUTBYTE and 10111111b
    END FUNCTION
    1)das mit Hi nibble und lo nibble glaub ich zu verstehn(weil ich im 4-bit mod. fahre, zuerst werden die oberen 4-bit gesendet und dann die unteren 4 bit)
    dass ich die ersten vier bits erhalte wird LCDDATA shr 4
    also wenn ich jetz lcddata 11111111 is dann wird mit shr 4 11110000 daraus oder??

    2) was bewirkt die or funktion?? wenn ich beim windows-rechner die or funktion hernehme, zält er mir die 2 zahlen nur zusammen!
    die aus der Digitaltechnik bekannte ODER funktion kann ich das nicht vergleichen oder???

    2) Wenn ich zb. ein A schreiben will, dann: LCD_WRITE(20h,41h)
    20h steht laut code tabelle des displays(oder auch ASCII tab.??) für ein @
    41h steht für ein großes A
    Warum jetzt 20h?????

    freue mich auf jede Antwort
    gruß martin

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    40
    Beiträge
    158
    Hallo,

    kurz zur Oder Funktion (die ist genau die, die Du meinst):

    i = 3 or 2 ' daraus folgt: i = 3

    Code:
    -> gehen wir mal von 8 Bit = 1 Byte aus
                hi   lo
    Dezimal 67  0100 0011
    Deziaml 2   0000 0010
    __OR_________________
    Dezimal 67  0100 0011 ' = i
    Im Prinzip ist es eine Addition jeder Bitstelle ohne Überbetrag.

    Übrigens: 20h ist 20 Hexadezimal, also 32 dezimal, das ist ASCII <Leerzeichen>. 41h entspricht 65 dezimal, also dem ASCII A.

    Die ASCII Tabelle für HEX und DEZ findest Du hier: http://www.torsten-horn.de/techdocs/ascii.htm

    Beste Grüße,

    Stefan
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    Hi Tappi
    danke für die rasche antwort!
    Das mit dem oder versteh ich jetz

    bei 20h hab ich von der codetabelle falsch abgelesen

    grundsätzlich wird also ein blank auf das display geschrieben und dann das jeweilige zeichen ahaaa....

    hab ich das richtig verstanden mit dem shr 4, werden da die unteren vier bits 0 oder??

    gruß martin

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    40
    Beiträge
    158
    ne 20h ist doch der Befehl zum schreiben auf das LCD.
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    achso

    mich würde jetz noch interessieren was der befehl shr macht

    outbyte=01000001 shr 4
    was für binärzahl is jetzt outbyte???

    gruß martin

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    ok ich glaub ich hab jetz shr auch kapiert

    outbyte=01000001 shr 4
    outbyte is jetzt 0000 0100
    stimmt doch so oder??

    nächste Frage:
    die oberen vier bits werden so übergeben:

    OUTBYTE=BUF or (LCDDATA shr 4) 'buf ist 20h, lcddata ist 41h(großes A)
    'outbyte is jetzt: 00100100
    EXTPORT=OUTBYTE or 01000000b
    'extport is jetzt: 01100100
    EXTPORT=OUTBYTE and 10111111b
    'extport is jetzt: 00100100 ==>das 7. Bit is 0 d.h. enable is auch 0, wenn der enable 0 is tut doch der lcd-controller auch nix, dann wäre diser befehl doch für die Katz, oder lieg ich da falsch???

    gruß martin

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    23.05.2005
    Ort
    Bez. Schärding
    Beiträge
    85
    wenn man ein bisschen datenblatt studiert dann weiß man, das die daten erst bei fallender Flanke von Enable vom display übernommen werden!
    darum zuerst enable 1 + daten und dann enable= 0 +daten dass die daten vom display übernommen werden!!! ahaaaa...

Berechtigungen

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

12V Akku bauen