Code:
' ****************************************************************************
' * 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
Lesezeichen