Forum: Mikrocontroller und Digitale Elektronik Dotmatrix ansteuerung


von Daniel (Gast)


Lesenswert?

Also erstmal zur Hardware:
10 mal 5x7 Dotmatrix Bausteine die 50 Spalten sind jeweils immer an
einem Ausgang eines Schieberegisterausgangs, die 7 Reihen werden immer
an einen Port-Ausgang vom µC verbunden (porta 0-6). Das ganze wird
Zeitmultigeplext (Zeilenweise) also 1/7 der Zeit ist immer eine Zeile
aktiv und dazu die spalten angestuert. Das was ich auf der Matrix
ausgeben will gebe ich per PC Tastatur ein.
Ich verwende einen Atmel 8515 und programmiere in Bascom

Nun zur Software:
Die Software hab ich mir so gedacht: Ich lege einen Zeichensatz an in
der ich jeden Buchstabe abspeicher H wäre dann z.b
10001
10001
10001
11111
10001
10001
10001.
Wenn nun die erste Zeile aktiv ist lade ich die 10001 in das
schieberegister die 2 aktiv 10001 bei der 4 dann die 11111 usw. somit
hätte ich dann ein H!
Nun zu meinem Problem:
Ich will ja nicht nur ein H anzeigen lassen sondern ein Text der dann
nach links durchläuft. Wie bekomme ich das hin das wenn ich auf der
Tastatur ein HALLO tippe es dann auf der MAtrix ausgegeben wird?? Dazu
müsste ich ja eine Variable anlegen in der das eingetippte gespeichert
wird Dann im Zeichensatz nachschaun und immer die ersten bytes bei H
10001 bei A 011110 bei L 10000 usw in das Schieberegister laden. Aber
wie mach ich das, das ich immer die ersten bytes von den buchstaben in
das schieberegister bekomme.
Vielleicht versteht ja einer mein Problem wenn nicht ihr könnt gerne
Fragen oder wenn in ICQ anschreiben 120008371

MfG
Daniel

von leo9 (Gast)


Lesenswert?

>> Vielleicht versteht ja einer mein Problem
.. ich glaube schon: zu faul zum suchen !!
Das Thema kommt ja fast wöchentlich vor (nicht das Faul sein, ich mein
das Ansteuern von Matrix-Displays)

Versuchs mit der Forum-Suche und mit google. Und wenn du konkrete
Fragen hast wird dir in diesem Forum sicher kurzfristig geholfen.

grüsse leo9

von Profi (Gast)


Lesenswert?

Ja, Du brauchst eine Character-Table.

In Asm die Bytes hintereinander, wenn Du das dritte Byte des sechsten
Buchstabens brauchst, ist die gesuchte Adresse base+6*5+3.
Wenn Du genug Platz hast oder Dein µC nicht multiplizieren kann,
reserviere pro Buchstaben 8 Bytes, dann kannst Du die 6 um 3 nach links
schieben und 3 addieren.

In C: char chartable[128,5]  gesuchtes Byte chartable[6,3]

In Bascom: kann ich nicht, aber da wird es auch zweidimensionale (zur
Not geht auch eindimensionales, s. Assembler) Arrays geben.

Hilft Dir das?
Ja, Du musst den Text in einem String speichern und für Laufschrift
alle xx Millisekunden um eine Spalte weiter hinten beginnen.

Das Multiplexen musst Du auch noch bedienen.
Weitere Fragen? Her damit!

von Daniel (Gast)


Lesenswert?

@ leo9
hättest du mal die ganzen einzelnen themen über ansteuerung einer
dotmatrix hier durchgelesen wäre dir aufgefallen das soetwas was ich
braucht in keinem beschrieben wird sondern immer nur das Multiplex
verfahren oder sonstwas. Glaub mir ich hab die alle schon
durchgelesen.

Also mein Ansatz war mal so: In Bascom gibt es ein Befehl der nennt
sich Shiftout mit dem kann man immer 8 bits rauschieben, die man in
einer Variable gespeichert hat. So nun muss ich irgendwie (das ist mein
Problem) immer das erste byte von einem Buchstaben den ich in nem
Zeichensatz angelegt habt in die Variable bekommen in der dann das
bitmuster für die erste zeile ist. Und das dann alles noch Variabel
sodas ich je nach eingegebenem Text die Bitmuster ausgebe

von Daniel (Gast)


Lesenswert?

So würde ein HALLO aussehen. Da ich das ganze ja zeilenweise multiplex
brauche ich ja immer die ersten bytes des buchstabens

1. Byte: 10001 01110 10000 10000 01110
2. Byte: 10001 10001 10000 10000 10001
3. Byte: 10001 10001 10000 10000 10001
4. Byte: 11111 11111 10000 10000 10001
5. Byte: 10001 10001 10000 10000 10001
6. Byte: 10001 10001 10000 10000 10001
7. Byte: 10001 10001 11111 11111 01110

Also würde das Bitmuster für die erste Zeile so aussehn
10001 01110 10000 10000 01110

von Profi (Gast)


Lesenswert?

Ja und wo ist jetzt das Problem?
dim chartab(128,7)
chartab( 65,1)=$0e ;A
chartab( 65,2)=$11
chartab( 65,3)=$11
chartab( 65,4)=$1F
chartab( 65,5)=$11
chartab( 65,6)=$11
chartab( 65,7)=$11
chartab( 66,1)=$1E ;B
....
out1=chartab(strin(1),1)
out2=chartab(strin(2),1)
out3=chartab(strin(3),1)
wobei ich die Syntax von Basic nicht (mehr) kann.

strin(1) ist der erste Buchstabe (H) des Strings strin (HALLO).

chartab(strin(1),1) ist das erste (oberste) Byte des 1. Buchstabens
(H)
chartab(strin(2),1) ist das erste (oberste) Byte des 2. Buchstabens
(A)
chartab(strin(1),2) ist das zweite Byte des 1. Buchstabens (H)

Stell Deine Frage (im letzten Post war gar keine Frage...) doch ein
wenig genauer, dann kann Dir auch geholfen werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.