rogerberglen
11.10.2006, 18:16
Ich habe mal meinen bisherigen Code hier gepostet. Der macht nichts anderes als nur 4 Zeichen die in einem Textstring hinterlegt sind auf 4 Dot-Matrix Led Modulen auszugeben. Diese sind leider nur schlecht abzulesen, da ich diese nur mit 5V betreibe. Ich will aber noch die Ansteuerung auf 12V umbauen so dass die Anzeige gut ablesbar ist.
Ich wäre für ein paar Ideen sehr dankbar das Ganze Interruptgesteuert über einen Timer laufen zulassen. Auch wäre es schön wenn Jemand ein Beispiel oder eine Idee hat wie man denn die Zeichen mit den seriellen Anschlüssen von einem anderen AVR an diesen übergebenkönnte, so dass diese auf der LED Dot-Matrix Anzeige erscheinen.
Da ich leider noch nicht herausgefunden habe wie man Code von Basom in einem extra Fenster postet habe ich es als Kopie an diesen Text gehängt.
' ************************************************** **************************
' * Led Dot-Matrix Anzeige *
' * V 0.1 *
' * Fuse-Bit Einstellung: Interner 8MHz Oszillator mit abgeschaltetem Teiler *
' ************************************************** **************************
' ************************************************** **************************
' * Anschlussbelegung Attiny2313 *
' * _____ *
' * (Reset/dw) PA2 = Pin1 Pin20 = Vcc *
' * (RxD) PD0 = Pin2 Pin19 = PB7 (UCSK/SCK/PCINT7) *
' * (TxD) PD1 = Pin3 Pin18 = PB6 (MISO/DO/PCINT6) <7.ZL> *
' * (XTAL2) PA1 = Pin4 Pin17 = PB5 (MOSI/DI/SDA/PCINT5) <6.ZL> *
' * (XTAL1) PA0 = Pin5 Pin16 = PB4 (OC1B/PCINT4) <5.ZL> *
' * (CKOUT/XCK/INT0) PD2 = Pin6 Pin15 = PB3 (OC1A/PCINT3) <4.ZL> *
' * (INT1) PD3 = Pin7 Pin14 = PB2 (OC0A/PCINT2) <3.ZL> *
' * <Reset> (T0) PD4 = Pin8 Pin13 = PB1 (AIN1/PCINT1) <2.ZL> *
' * <Daten> (OC0B/T1) PD5 = Pin9 Pin12 = PB0 (AIN0/PCINT0) <1.ZL> *
' * GND = Pin10 Pin11 = PD6 (ICP) <Takt> *
' ************************************************** **************************
$regfile = "attiny2313.dat" 'ATtiny2313 Prozessor
$crystal = 8000000 '8MHz int. Taktquelle
$baud = 9600
'$sim 'nach Test entfernen !!!!!!
Dim Z As Byte 'Anzahl der Anzeigenstellen (4)
Dim X As Byte 'Spaltenzähler pro Anzeige 5 Spalten.
Dim Zeichen As Integer 'Zeichencode für Decoder
Dim Temp As String * 1 'Zwischenspeicher für Stringbearbeitung
Dim Index As Integer 'Zeichenposition für Caraktergenerator
Dim Text As String * 5 'Testvariable (später Empfangspuffer)
Text = "ABCD" 'Teststring
Config Portb = Output 'Port B auf Ausgabe (Zeilen)
Config Portd.4 = Output 'Pin D4 auf Ausgabe (Reset Schiebereg.)
Config Portd.5 = Output 'Pin D5 auf Ausgabe (Daten Schiebereg.)
Config Portd.6 = Output 'Pin D6 auf Ausgabe (Takt Schiebereg.)
Portd.5 = 1 '1 für Schieberegister setzen und
Portd.4 = 0 'Schieberegister Reset durchführen.
Anfang:
'Waitus 10
Portd.4 = 1 'Schieberegister freigeben und alle
For X = 0 To 24 'Ausgänge der Schieberegister auf 1
Portd.6 = 0 'schalten.
'Waitus 10
Portd.6 = 1
Next X
Portd.5 = 0 '0 für Schieberegister ausgeben.
Portd.6 = 0 '1mal schieben um die 0 auf dem ersten
Waitus 10 'Ausgang auszugeben.
Portd.6 = 1
Portd.5 = 1 '1 für Schieberegister ausgeben. Ver-
'hindert weitere 0 auszugeben.
Z = 1 'Beginn 1.Anzeige
X = 1 'Beginn 1.Spalte
Do
Temp = Mid(text , Z , 1) 'Zeichen aus String lesen und in
Zeichen = Asc(temp) 'Zeichencode dez. umwandeln.
Z = Z + 1 'Durchlaufzähler erhöhen und dann im
'Zeichendecoder Zeichen decodieren.
Index = Lookdown(zeichen , Zeichendecoder , 22)
Index = Index - 1 'gefundene Position um 1 korrigieren und
Index = Index * 5 'Anfang im Caraktergenerator berechnen.
For X = 0 To 4 'Pro Zeichen 5 Spalten ausgeben. Dazu
Portb = Lookup(index , Zeichensatz) 'Code holen und Zähler erhöhen. Dann
Incr Index 'Ausgeben und warten (Lesbarkeit der
Waitus 900 'Anzeige). Dann Anzeige abschalten und
Portb = 0 'per Schieberegister die nächste Spalte
Portd.6 = 0 'auswählen.
Waitus 10
Portd.6 = 1 'solange wiederholen, bis 5 Spalten aus-
Portd.5 = 1 'gegeben worden sind.
'Waitms 500 'Dann nächstes Zeichen holen und eben-
'Portb = 0 'falls wie oben beschrieben ausgeben.
Next X
Loop Until Z > 4 'Alle 4 Anzeigenstellen bearbeitet? Dann
'Schieberegister reset und von vorne
Portd.4 = 0 'beginnen.
Goto Anfang
' ****************************************
' * Zeichenmapping - Tabelle *
' ****************************************
Zeichendecoder:
Data $32 , $48 , $49 , $50 , $51 , $52 , $53 , $54 , $55 , $56 , $57
Data $65 , $66 , $67 , $68 , $69 , $70 , $71 , $72 , $73 , $74 , $75
' ****************************************
' * Zeichentabelle für Dot-Matrix *
' ****************************************
Zeichensatz:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 ' 32
Data &B00111110 , &B01010001 , &B01001001 , &B01000101 , &B00111110 '0 48
Data &B00000000 , &B01000010 , &B01111111 , &B01000000 , &B00000000 '1 49
Data &B01000010 , &B01100001 , &B01010001 , &B01001001 , &B01000110 '2 50
Data &B00100001 , &B01000001 , &B01000101 , &B01001011 , &B00110001 '3 51
Data &B00011000 , &B00010100 , &B00010010 , &B01111111 , &B00010000 '4 52
Data &B00100111 , &B01000101 , &B01000101 , &B01000101 , &B00111001 '5 53
Data &B00111100 , &B01001010 , &B01001001 , &B01001001 , &B00110000 '6 54
Data &B00000001 , &B01110001 , &B00001001 , &B00000101 , &B00000011 '7 55
Data &B00110110 , &B01001001 , &B01001001 , &B01001001 , &B00110110 '8 56
Data &B00000110 , &B01001001 , &B01001001 , &B00101001 , &B00011110 '9 57
Data &B01111110 , &B00010001 , &B00010001 , &B00010001 , &B01111110 'A 65
Data &B01111111 , &B01001001 , &B01001001 , &B01001001 , &B00110110 'B 66
Data &B00111110 , &B01000001 , &B01000001 , &B01000001 , &B00100010 'C 67
Data &B01111111 , &B01000001 , &B01000001 , &B00100010 , &B00011100 'D 68
Data &B01111111 , &B01001001 , &B01001001 , &B01001001 , &B01000001 'E 69
Data &B01111111 , &B00001001 , &B00001001 , &B00001001 , &B00000001 'F 70
Data &B00111110 , &B01000001 , &B01001001 , &B01001001 , &B01111010 'G 71
Data &B01111111 , &B00001000 , &B00001000 , &B00001000 , &B01111111 'H 72
Data &B00000000 , &B01000001 , &B01111111 , &B01000001 , &B00000000 'I 73
Data &B00100000 , &B01000000 , &B01000001 , &B00111111 , &B00000001 'J 74
Data &B01111111 , &B00001000 , &B00010100 , &B00100010 , &B01000001 'K 75
Data &B01111111 , &B01000000 , &B01000000 , &B01000000 , &B01000000 'L 76
Das geht mit "CODE-Tags" PicNick
Ich wäre für ein paar Ideen sehr dankbar das Ganze Interruptgesteuert über einen Timer laufen zulassen. Auch wäre es schön wenn Jemand ein Beispiel oder eine Idee hat wie man denn die Zeichen mit den seriellen Anschlüssen von einem anderen AVR an diesen übergebenkönnte, so dass diese auf der LED Dot-Matrix Anzeige erscheinen.
Da ich leider noch nicht herausgefunden habe wie man Code von Basom in einem extra Fenster postet habe ich es als Kopie an diesen Text gehängt.
' ************************************************** **************************
' * Led Dot-Matrix Anzeige *
' * V 0.1 *
' * Fuse-Bit Einstellung: Interner 8MHz Oszillator mit abgeschaltetem Teiler *
' ************************************************** **************************
' ************************************************** **************************
' * Anschlussbelegung Attiny2313 *
' * _____ *
' * (Reset/dw) PA2 = Pin1 Pin20 = Vcc *
' * (RxD) PD0 = Pin2 Pin19 = PB7 (UCSK/SCK/PCINT7) *
' * (TxD) PD1 = Pin3 Pin18 = PB6 (MISO/DO/PCINT6) <7.ZL> *
' * (XTAL2) PA1 = Pin4 Pin17 = PB5 (MOSI/DI/SDA/PCINT5) <6.ZL> *
' * (XTAL1) PA0 = Pin5 Pin16 = PB4 (OC1B/PCINT4) <5.ZL> *
' * (CKOUT/XCK/INT0) PD2 = Pin6 Pin15 = PB3 (OC1A/PCINT3) <4.ZL> *
' * (INT1) PD3 = Pin7 Pin14 = PB2 (OC0A/PCINT2) <3.ZL> *
' * <Reset> (T0) PD4 = Pin8 Pin13 = PB1 (AIN1/PCINT1) <2.ZL> *
' * <Daten> (OC0B/T1) PD5 = Pin9 Pin12 = PB0 (AIN0/PCINT0) <1.ZL> *
' * GND = Pin10 Pin11 = PD6 (ICP) <Takt> *
' ************************************************** **************************
$regfile = "attiny2313.dat" 'ATtiny2313 Prozessor
$crystal = 8000000 '8MHz int. Taktquelle
$baud = 9600
'$sim 'nach Test entfernen !!!!!!
Dim Z As Byte 'Anzahl der Anzeigenstellen (4)
Dim X As Byte 'Spaltenzähler pro Anzeige 5 Spalten.
Dim Zeichen As Integer 'Zeichencode für Decoder
Dim Temp As String * 1 'Zwischenspeicher für Stringbearbeitung
Dim Index As Integer 'Zeichenposition für Caraktergenerator
Dim Text As String * 5 'Testvariable (später Empfangspuffer)
Text = "ABCD" 'Teststring
Config Portb = Output 'Port B auf Ausgabe (Zeilen)
Config Portd.4 = Output 'Pin D4 auf Ausgabe (Reset Schiebereg.)
Config Portd.5 = Output 'Pin D5 auf Ausgabe (Daten Schiebereg.)
Config Portd.6 = Output 'Pin D6 auf Ausgabe (Takt Schiebereg.)
Portd.5 = 1 '1 für Schieberegister setzen und
Portd.4 = 0 'Schieberegister Reset durchführen.
Anfang:
'Waitus 10
Portd.4 = 1 'Schieberegister freigeben und alle
For X = 0 To 24 'Ausgänge der Schieberegister auf 1
Portd.6 = 0 'schalten.
'Waitus 10
Portd.6 = 1
Next X
Portd.5 = 0 '0 für Schieberegister ausgeben.
Portd.6 = 0 '1mal schieben um die 0 auf dem ersten
Waitus 10 'Ausgang auszugeben.
Portd.6 = 1
Portd.5 = 1 '1 für Schieberegister ausgeben. Ver-
'hindert weitere 0 auszugeben.
Z = 1 'Beginn 1.Anzeige
X = 1 'Beginn 1.Spalte
Do
Temp = Mid(text , Z , 1) 'Zeichen aus String lesen und in
Zeichen = Asc(temp) 'Zeichencode dez. umwandeln.
Z = Z + 1 'Durchlaufzähler erhöhen und dann im
'Zeichendecoder Zeichen decodieren.
Index = Lookdown(zeichen , Zeichendecoder , 22)
Index = Index - 1 'gefundene Position um 1 korrigieren und
Index = Index * 5 'Anfang im Caraktergenerator berechnen.
For X = 0 To 4 'Pro Zeichen 5 Spalten ausgeben. Dazu
Portb = Lookup(index , Zeichensatz) 'Code holen und Zähler erhöhen. Dann
Incr Index 'Ausgeben und warten (Lesbarkeit der
Waitus 900 'Anzeige). Dann Anzeige abschalten und
Portb = 0 'per Schieberegister die nächste Spalte
Portd.6 = 0 'auswählen.
Waitus 10
Portd.6 = 1 'solange wiederholen, bis 5 Spalten aus-
Portd.5 = 1 'gegeben worden sind.
'Waitms 500 'Dann nächstes Zeichen holen und eben-
'Portb = 0 'falls wie oben beschrieben ausgeben.
Next X
Loop Until Z > 4 'Alle 4 Anzeigenstellen bearbeitet? Dann
'Schieberegister reset und von vorne
Portd.4 = 0 'beginnen.
Goto Anfang
' ****************************************
' * Zeichenmapping - Tabelle *
' ****************************************
Zeichendecoder:
Data $32 , $48 , $49 , $50 , $51 , $52 , $53 , $54 , $55 , $56 , $57
Data $65 , $66 , $67 , $68 , $69 , $70 , $71 , $72 , $73 , $74 , $75
' ****************************************
' * Zeichentabelle für Dot-Matrix *
' ****************************************
Zeichensatz:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 ' 32
Data &B00111110 , &B01010001 , &B01001001 , &B01000101 , &B00111110 '0 48
Data &B00000000 , &B01000010 , &B01111111 , &B01000000 , &B00000000 '1 49
Data &B01000010 , &B01100001 , &B01010001 , &B01001001 , &B01000110 '2 50
Data &B00100001 , &B01000001 , &B01000101 , &B01001011 , &B00110001 '3 51
Data &B00011000 , &B00010100 , &B00010010 , &B01111111 , &B00010000 '4 52
Data &B00100111 , &B01000101 , &B01000101 , &B01000101 , &B00111001 '5 53
Data &B00111100 , &B01001010 , &B01001001 , &B01001001 , &B00110000 '6 54
Data &B00000001 , &B01110001 , &B00001001 , &B00000101 , &B00000011 '7 55
Data &B00110110 , &B01001001 , &B01001001 , &B01001001 , &B00110110 '8 56
Data &B00000110 , &B01001001 , &B01001001 , &B00101001 , &B00011110 '9 57
Data &B01111110 , &B00010001 , &B00010001 , &B00010001 , &B01111110 'A 65
Data &B01111111 , &B01001001 , &B01001001 , &B01001001 , &B00110110 'B 66
Data &B00111110 , &B01000001 , &B01000001 , &B01000001 , &B00100010 'C 67
Data &B01111111 , &B01000001 , &B01000001 , &B00100010 , &B00011100 'D 68
Data &B01111111 , &B01001001 , &B01001001 , &B01001001 , &B01000001 'E 69
Data &B01111111 , &B00001001 , &B00001001 , &B00001001 , &B00000001 'F 70
Data &B00111110 , &B01000001 , &B01001001 , &B01001001 , &B01111010 'G 71
Data &B01111111 , &B00001000 , &B00001000 , &B00001000 , &B01111111 'H 72
Data &B00000000 , &B01000001 , &B01111111 , &B01000001 , &B00000000 'I 73
Data &B00100000 , &B01000000 , &B01000001 , &B00111111 , &B00000001 'J 74
Data &B01111111 , &B00001000 , &B00010100 , &B00100010 , &B01000001 'K 75
Data &B01111111 , &B01000000 , &B01000000 , &B01000000 , &B01000000 'L 76
Das geht mit "CODE-Tags" PicNick