-         

Ergebnis 1 bis 4 von 4

Thema: dotmatrix

  1. #1

    dotmatrix

    Anzeige

    Hi erst mal
    wir haben folgendes Problem:
    sind seit kurzer Zeit in die Mikrocontrollertechnik eingestiegen. Haben auch schon einige kleine Projekte gemeistert, sind nun aber an einem großerem Projekt hängen geblieben.
    Also das Problem ist folgendes:
    Es soll eine Led-Dot-Matrixanzeige 10x100 Led's mit einem Controler angesteuert werden. Sie soll hinterher wie eine Anzeige in einem Zug - verschiedene Haltestellen anzeigen. (Beim Theater)

    Haben uns folgendes überlegt:
    Die 10 Zeilen wollen wir über Mosfets ansteuern (Buz 11 - ( oder kennt ihr besseren))
    Bei den 100 Spalten wollen wir Schieberegister verwenden (74HC595), die dann über einen ULN die Led's auf Ground ziehen.

    Nun zu den Fragen:
    Auf Grund der Größe der Anzeige sind wir uns nicht sicher ob die anzuzeigenden Wörter flimmerfrei darstellbar sind.
    Denn nach unseren Nachforschungen wird ja 1. Zeit zum multiplexen und 2. Zeit zum beschreiben der Schieberegister benötigt.
    Des Weiteren haben wir Fragen zum pragramieren in Bascom. Gibt es fertige Buchstaben bzw. kann man welche definieren und wenn ja woher weiß das Programm welche Led's es ansteuern soll.

    Weitere Fragen werden sich wahrscheinliche ergeben - bzw. wenn ihr weitere Fragen haben wollt dann fragt.

    Besten Dank schon mal
    Jonas + Stefan

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.11.2005
    Ort
    QTH: JO43BC
    Alter
    49
    Beiträge
    112
    Vor einiger Zeit habe ich an einem Wochenende mal was aehnliches zusammengeschraubt:

    http://www.roboternetz.de/phpBB2/viewtopic.php?t=27693

    Das laesst sich natuerlich erweitern. Mittlerweile kann ich flimmerfrei ganze Woerter darstellen. Mit dem MAX7219 ist das ja auch kein Problem.
    Ich plane das ganze auf 16x80 zu erweitern. So lassen sich zwei Zeilen a' 13 Buchstaben darstellen. Die Ansteuerung ist ziemlich simpel.
    Habe mir hier einen eigenen Font entwickelt. Die Buchstaben werden dann im Programm zerlegt und entsprechend uebertragen.

    Vor ein paar Jahren habe ich mal eine einzeilige Laufschrift gebastelt, die ueber eine lange Kette von Schieberegistern und ULN's angesteuert wurde. Das ganze musste man natuerlich permanent multiplexen. Das war ein ziemlicher Aufwand. Die Ansteuerung erfolgte ueber eine selbstgeschriebenes Delphi-Proggi (da gab es noch keine AVR's) :) . Die Daten wurden permanent ueber die LPT am PC rausgeschoben.
    Ich denke wenn man das geschickt programmiert, dann kann ein Atmel mit Bascom das bewaeltigen.

    Mit freundlichen Gruessen
    Digitali

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.11.2004
    Ort
    Aachen
    Alter
    32
    Beiträge
    246
    Hi,

    ich bin grad auch dabei sowas mit Bascom zu realisieren, allerding nur 7x48.
    Wieso habt ihr euch für 10 Zeilen entschieden? Also ich habe 7 gewählt, weil z.B. die Standart ASCII Zeichen 7 Zeilen haben, diese habe ich dann in Bascom bequem als Daten eingespeist...
    (ich gebe immer gleichzeitig 6 Spalten aus, immer eine von einem 7x8 Block, dann kann ich immer ein Spalten-Byte des Zeichens raushauen, ohne groß rumzurechnen)

    Hier mal ein Beispiel für die Großbuchstaben:
    (man beachte das das Bit 0 immer besagt, ob das Zeichen noch breiter ist, so hat das I z.b. nur eine Breite von 3 LEDs bei mir!
    Bit 7 ist oben... Bit 1 ist unten)

    Code:
    Data &B00111111 , &B01001001 , &B10001001 , &B01001001 , &B00111110       'A
    Data &B10000011 , &B11111111 , &B10010011 , &B10010011 , &B01101100       'B
    Data &B01111101 , &B10000011 , &B10000011 , &B10000011 , &B01000100       'C
    Data &B10000011 , &B11111111 , &B10000011 , &B10000011 , &B01111100       'D
    Data &B11111111 , &B10010011 , &B10010011 , &B10000011 , &B10000010       'E
    Data &B11111111 , &B10010001 , &B10010001 , &B10000001 , &B10000000       'F
    Data &B01111101 , &B10000011 , &B10010011 , &B10010011 , &B01011100       'G
    Data &B11111111 , &B00010001 , &B00010001 , &B00010001 , &B11111110       'H
    Data &B10000011 , &B11111111 , &B10000010 , &B00000000 , &B00000000       'I
    Data &B00000101 , &B10000011 , &B10000011 , &B11111100 , &B00000000       'J
    Data &B11111111 , &B00010001 , &B00101001 , &B01000101 , &B10000010       'K
    Data &B11111111 , &B00000011 , &B00000011 , &B00000011 , &B00000010       'L
    Data &B11111111 , &B01000001 , &B00110001 , &B01000001 , &B11111110       'M
    Data &B11111111 , &B01000001 , &B00100001 , &B00010001 , &B11111110       'N
    Data &B01111101 , &B10000011 , &B10000011 , &B10000011 , &B01111100       'O
    Data &B11111111 , &B10010001 , &B10010001 , &B10010001 , &B01100000       'P
    Data &B01111101 , &B10000011 , &B10001011 , &B10000101 , &B01111010       'Q
    Data &B11111111 , &B10010001 , &B10011001 , &B10010101 , &B01100010       'R
    Data &B01100101 , &B10010011 , &B10010011 , &B10010011 , &B01001100       'S
    Data &B10000001 , &B10000001 , &B11111111 , &B10000001 , &B10000000       'T
    Data &B11111101 , &B00000011 , &B00000011 , &B00000011 , &B11111100       'U
    Data &B11100001 , &B00011001 , &B00000111 , &B00011001 , &B11100000       'V
    Data &B11111111 , &B00000101 , &B00011001 , &B00000101 , &B11111110       'W
    Data &B11000111 , &B00101001 , &B00010001 , &B00101001 , &B11000110       'X
    Data &B11000001 , &B00100001 , &B00011111 , &B00100001 , &B11000000       'Y
    Data &B10000111 , &B10001011 , &B10010011 , &B10100011 , &B11000010       'Z
    Wenn du natürlich jetzt 10 Zeilen hast musst du dann etwas entsprechendes realisieren, vielleicht ist es dann aber günstiger die Buchstaben zeilenweise zu speichern, weil du ja eh zeilenweise die Ausgabe machst.

  4. #4
    danke für die antworten - wie ihr seht waren wir lange nicht mehr hier - das projekt würde nun aber wieder aufgenommen

    haben nun erstmal versucht das program weiter zu vervollständigen -allerdings haben wir noch nicht mehr als die deklarationen. haben uns für hardwarespi entschieden
    nun wissen wir nicht mehr weiter - die programme- oder besser die schnipsel die man so findet befriedigen uns nicht wirklich da sie immer aus dem zusammenhang gerissen sind.
    nun ja lange rede kurzer sinn...

    unsere frage ist nun wie genau der code für Bascom aussehen müsste (das prinzip haben wir nach langen recherchen verstanden)

    hier erst mal das was wir haben
    Code:
    '-----------------------------------------------------------------------------------------
    'name                    : HighFreq.bas
    'micro                    : Mega16
    '-----------------------------------------------------------------------------------------
    
    $regfile = "m16def.dat"                                     ' specify the used micro
    $crystal = 16000000                                         ' used crystal frequency
    $baud = 19200                                               ' use baud rate
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 10                                               ' default use 10 for the SW stack
    $framesize = 40                                             ' default use 40 for the frame space
    
    'Pin Connection
       'Output's
    Config Porta.0 = Output
    Config Porta.1 = Output
    Config Porta.2 = Output
    Config Porta.3 = Output
    Config Porta.4 = Output
    Config Porta.5 = Output
    Config Porta.6 = Output
    Config Porta.7 = Output
    Config Portc.7 = Output
    Config Portc.6 = Output
    Config Portd.6 = Output
    
    
    Z0 Alias Porta.0
    Z1 Alias Porta.1
    Z2 Alias Porta.2
    Z3 Alias Porta.3
    Z4 Alias Porta.4
    Z5 Alias Porta.5
    Z6 Alias Porta.6
    Z7 Alias Porta.7
    Z8 Alias Portc.7
    Z9 Alias Portc.6
    
    Gen Alias Portd.6
    
    
    
       'Input's
    Config Pind.3 = Input
    Config Pind.4 = Input
    Config Pind.5 = Input
    
    
    Taster1 Alias Pind.3
    Taster2 Alias Pind.4
    Taster3 Alias Pind.5
    
    
    'Dimmer
    
    Dim Gen As Bit
    Dim Porta.0 As Bit
    Dim Porta.1 As Bit
    Dim Porta.2 As Bit
    Dim Porta.3 As Bit
    Dim Porta.4 As Bit
    Dim Porta.5 As Bit
    Dim Porta.6 As Bit
    Dim Porta.7 As Bit
    Dim Portc.7 As Bit
    Dim Portc.6 As Bit
    Dim Test As Byte
    Dim Zaehler As Byte
    Enable Interrupts
    
    
    Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0
    
    Zaehler = 0
    
    
    
    ''''''''''Hauptprogramm'''''''''''''''
    
    Do
    
    Zaehler = Zaehler + 1
    
    If Zaehler = 40 Then
    Zaehler = 0
    End If
    
    If Zaehler = 0 Then
    Z0 = 1
    Z1 = 0
    Z2 = 0
    Z3 = 0
    Z4 = 0
    Z5 = 0
    Z6 = 0
    Z7 = 0
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 4 Then
    Z0 = 0
    Z1 = 1
    Z2 = 0
    Z3 = 0
    Z4 = 0
    Z5 = 0
    Z6 = 0
    Z7 = 0
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 8 Then
    Z0 = 0
    Z1 = 0
    Z2 = 1
    Z3 = 0
    Z4 = 0
    Z5 = 0
    Z6 = 0
    Z7 = 0
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 12 Then
    Z0 = 0
    Z1 = 0
    Z2 = 0
    Z3 = 1
    Z4 = 0
    Z5 = 0
    Z6 = 0
    Z7 = 0
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 16 Then
    Z0 = 0
    Z1 = 0
    Z2 = 0
    Z3 = 0
    Z4 = 1
    Z5 = 0
    Z6 = 0
    Z7 = 0
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 20 Then
    Z0 = 0
    Z1 = 0
    Z2 = 0
    Z3 = 0
    Z4 = 0
    Z5 = 1
    Z6 = 0
    Z7 = 0
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 24 Then
    Z0 = 0
    Z1 = 0
    Z2 = 0
    Z3 = 0
    Z4 = 0
    Z5 = 0
    Z6 = 1
    Z7 = 0
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 28 Then
    Z0 = 0
    Z1 = 0
    Z2 = 0
    Z3 = 0
    Z4 = 0
    Z5 = 0
    Z6 = 0
    Z7 = 1
    Z8 = 0
    Z9 = 0
    End If
    
    If Zaehler = 32 Then
    Z0 = 0
    Z1 = 0
    Z2 = 0
    Z3 = 0
    Z4 = 0
    Z5 = 0
    Z6 = 0
    Z7 = 0
    Z8 = 1
    Z9 = 0
    End If
    
    If Zaehler = 36 Then
    Z0 = 1
    Z1 = 0
    Z2 = 0
    Z3 = 0
    Z4 = 0
    Z5 = 0
    Z6 = 0
    Z7 = 0
    Z8 = 0
    Z9 = 1
    End If
    
    'Spiout
     '        ...
    
    
    
      Loop
                 End
    eine weiter frage wäre auch: benutze ich den befehl spiout oder shiftout? bei dem einen schieb ich ja bits und bei dem anderen bytes, aber was ist besser? zum finale wäre es auch noch schön zu wissen wie ich Bascom mit den tabellen arbeite, damit ich hinterher "variable" texte ausgeben kann. vorerts reicht es mir ein festes wort auszugeben

    nun ja viel holz - aber vielleicht kann ja jemand helfen - müsste es eigentlich bis samstag laufen haben (da wäre premiere von linie 1 an der freilichtbühne wo es eingesetzt werden soll)

    besten dank schonmal stefan und jonas

    hier noch ein kleiner anreiz: (mist um bilder einzufügen bin ich zu dumm) aber dem dem es gelingt mir nen fertigen code zu liefern winken 2 freikarten

Berechtigungen

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