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

Thema: C-bus 7Seg LCD an ATmega (bascom)

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118

    C-bus 7Seg LCD an ATmega (bascom)

    Anzeige

    Powerstation Test
    Hoi, wie kann ich ein 16 stelliges 7-segment LCD mit C-bus ansteuern?

    ich habe auf der Platine 2 PCF2111T, bei denen die Vss-, Vdd- (wer hätte es gedacht), DATA- und CLB-Anschlüsse zusammengefasst sind, und die DLEN-Anschlüsse (lt. Datenblatt Data enable, glaub ich) einzeln sind.

    Im Datenblatt ist auch die Übertragungsweise (der bits/bytes) erklärt, aber was die dann bewirken, weiß ich (noch) nicht.


    Soviel hab ich herausbekommen:
    es gibt 33 Databits, von denen wohl die ersten 32 die 32 Ausgänge direkt schalten.
    Das 33ste bestimmt dann irgendwie, welcher von zwei weiteren Ausgängen (BP1 und BP2) geladen wird.
    Was für auswirkungen das dann hat, und wie ich das überhaupt mit meinem Atmega8515 ansteuern/übertragen kann, ist mir noch ein rätsel.
    die bits werden immer mit/kurz vor nem CLB-Impuls gesetzt, und vor dem ersten muss ein low-bit sein, welches den start anzeigt.

    Hat damit jemand ahnung?
    Wie bekomm ich sowas in ne gescheite Routine/Schleife?

    EDIT: hier endlich der link zum datenblatt
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Interessant sind erst einmal die Anschlüsse der Platine selber.
    Wenn da nur VSS/GND und DATA/CLB rauskommen, dann werden wohl die zwei ICs die ganze Arbeit machen. Da es Segmente sind, könnte es gut sein, dass du dann also 16 Bits für die einzelnen Ziffen hast und dann noch 7 Bits für die jeweiligen einzelteile der Ziffern. Das wäre dann Multiplex-Ansteuerung.
    D.h. es wird immer ein Segment aktiviert, dessen Einzelsegmente entsprechend aktiviert, dann gehts weiter mit dem nächsten Segment.
    Das ganz schnell hintereinander ist dann Multiplexing.

    Schieberegister befüllt man normalerweise mit SHIFTOUT oder SPI in Bascom. Shiftout sollte gut funktionieren.

    Aber mehr Infos zu der Platine wären gut... leg sie mal auf den Scanner, dann kann man mehr sagen...

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    danke für die multiplexing-erklärung.

    bist du sicher, dass man erst das segment auswählt und dann da nochmal sendet, welche Segmente an/aus sind? (Fig.7 auf S.9 im datenblatt irritiert mich da etwas)

    mit nem Photo der Platine wirst du wohl wenig anfagen können, da die ne dual-oder tripple-layer Platine is. und auserdem kaum größer als das display. weitere bauteile sind nur 2kondensatoren und n widerstand für die osc-beschaltung.

    was mir gerade durch den kopf geht, ist dass die 2 ICs 32 ausgänge haben, und noch die 2 BP1 und BP2. 2X2X32=128 Kombimöglichkeiten, und das LCD hat (mit punkten)16X8=128 einzelsegmente. kann es damit irgendetwas zu tun haben? bzw, was sind die BP-Ausgänge überhaupt?

    Auf seite 11 in dem datenblatt, das bild 7.7 zeigt ne beschaltung mit mehreren ICs an ein display, schlau werde ich daraus aber nicht.

    ich schau mir mal das shiftout an, vlt kann ich dann zumindest mal daten senden, und dann seh ich ja, was rauskommt.
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Das ist nicht viel anders als bei normalen Schieberegistern.
    Clock gibt den Takt der Bits an, die du auf DATA reinschickst.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    öhm, ja, nur:
    bei shiftout gehts ja max. bis 32Bits, ich hab hier nur noch das 33ste loadbit, dann noch das startbit und den loadpulse, bei dem auch noch Dlen geändert werden muss. bei shiftout kann ich ja nur den clock- und cen Data-pin configurieren.
    Wie mach ich das jetzt am dümmsten?
    und (wie) werden da start/stoppbits gesendet? wenn nämlich mein 33stes Bit ein stoppit ist, kann ich es nicht verändern/nachträglich senden.

    wollte jetzt einfach mal lauter nullen an einen der beiden ICs senden, dazu hab ich folgendes geschrieben:
    Code:
     $regfile = "m8515.dat"
     $framesize = 40
     $hwstack = 40
     $swstack = 40
     $crystal = 8000000
    
    
     Config Portc.0 = Output
     Daten Alias Portc.0
    
     Config Portc.1 = Output
     Clock Alias Portc.1
    
     Config Portc.2 = Output
     Dlen1 Alias Portc.2
    
     Config Portc.3 = Output
     Dlen2 Alias Portc.3
    
     Dim Zaehler As Byte
    
    
     Do
    
       Daten = 0
       Clock = 0
       Dlen1 = 0
       Dlen2 = 0
    
       Zaehler = 1
    
          Dlen1 = 1
          Clock = 1
          Waitus 10
          Clock = 0                                             'startbit gesetzt
    
    
          While Zaehler < 33                                    '32 mal "0" senden
    
           Clock = 1
           Waitus 10
           Clock = 0
           Waitus 10
    
          Wend
    
    
          Clock = 1
          Waitus 10
          Clock = 0                                             'Loadbit gesendet
    
    
          Dlen1 = 0
          Clock = 1
          Waitus 10
          Clock = 0
          Waitus 10
    
     Loop
    ich merke aber nicht, dass sich irgendwas ändert. auch wenn ich nur "1" schicke, bleibt mein LCD ganz an (alle 16 7segmentziffern und Punkte)
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    hm, mit 32 bits über shiftout (in der hoffnung, dass das endbit den Status des loadbits einnimmt) und danach noch nen loadpulse geht nix, und mit spi komm ich auch nicht voran.

    hab jetzt rausgefunden, dass der C-bus wohl der vorgänger vom I2C (-bus), auch TWI genannt, war. der hat zwar nen Slave Select (den man vlt als dlen nutzen könnte), gibt aber kein loadpulse über den.
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

Berechtigungen

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

Labornetzteil AliExpress