Poste bitte mal den ganzen Quellcode nach dem du dich richtest. Also nicht das was du selbst geschrieben hast, sondern das was du im Netz gefunden hast.
Druckbare Version
Poste bitte mal den ganzen Quellcode nach dem du dich richtest. Also nicht das was du selbst geschrieben hast, sondern das was du im Netz gefunden hast.
Hier:
Im Do-Loop wird ein "M" angezeigt.
Dies möchte ich aber mit dem Zeichensatz machen...
$regfile = "m32def.dat"
$crystal = 1000000
Config Portb = Output
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4
Dc Alias Portb.0
Ce Alias Portb.2
Re Alias Portb.1
Re = 0 'Reset
Waitus 250
Re = 1
Spiinit 'Initialisierung der SPI-Schnittstelle
Do
Initialisierung
Lcdloeschen
Udata &H7F
Udata &H02
Udata &H04
Udata &H02
Udata &H7F
Udata &H00
Wait 2
Loop
Sub Initialisierung
Ukommando &H21 'Erweiterter Kommando-Mode
Ukommando &HC8
Ukommando &H06
Ukommando &H13
Ukommando &H20 'Wieder in den normalen Kommando-Mode
Ukommando &H0C
End Sub
Sub Lcdloeschen
Local I As Word
Ukommando &H20 'Normaler Kommando-Mode
Ukommando &H0C 'Normaler Bildschirm
Ukommando &H80 'Setze RAM-Adresse auf 0
Dc = 1 'Sicherstellen, dass man im Daten-Mode ist
For I = 0 To 503
Udata &H00
Next
End Sub
'------------------------------------------------------------------------------
Sub Ukommando(byval Wert As Byte)
Dc = 0 'in den Kommando-Mode
Spiout Wert , 1
Dc = 1 'zurück in den Daten-Mode
End Sub
Sub Udata(byval Wert As Byte)
Dc = 1 'um sicher zu gehen, dass man auch wirklich im Datenmode ist
Ce = 0
Spiout Wert , 1
Ce = 1
End Sub
Und hier noch ein Auszug, wies im Zeichensatz aussieht:
A:
Data &H00 , &H7C , &H12 , &H11 , &H12 , &H7C
B:
Data &H00 , &H7F , &H49 , &H49 , &H49 , &H36
C:
Data &H00 , &H3E , &H41 , &H41 , &H41 , &H22
D:
Data &H00 , &H7F , &H41 , &H41 , &H41 , &H3E
E:
Data &H00 , &H7F , &H49 , &H49 , &H49 , &H41
Wie kann ich jetzt auf diese Daten zugreifen und somit die Buchstaben anzeigen?
Herzlichen Gruss
Mario
Folgendes ist der Code, den du im Internet gefunden hast.
Und nur das und nicht mehr steht im Code!!!!!!
Zeige mir bitte die Stelle wo mit Data die Zeichen eingestellt werden.
Es gibt dort kein Data!!!!!!!
Du vermischt da zwei verschiedene Codebeispiele. Das geht nicht einfach so!!!Code:$regfile = "m16def.dat"
$crystal = 8000000
Config Portb = Output
Config Porta = Output
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1
'Config Spi = Soft , Din = Pinb.6 , Dout = Portb.5 , Clock = Portb.7
Dc Alias Portb.3
Ce Alias Portb.2
Re Alias Portb.1
Re = 0 'Reset
Waitus 250
Re = 1
Spiinit 'Initialisierung der SPI-Schnittstelle
Do
Initialisierung
Lcdloeschen
Udata &H7F
Udata &H02
Udata &H04
Udata &H02
Udata &H7F
Udata &H00
Waitms 1500
Loop
Sub Initialisierung
Ukommando &H21 'Erweiterter Kommando-Mode
Ukommando &HC8
Ukommando &H06
Ukommando &H13
Ukommando &H20 'Wieder in den normalen Kommando-Mode
Ukommando &H0C
End Sub
Sub Lcdloeschen
Local I As Word
Ukommando &H20 'Normaler Kommando-Mode
Ukommando &H0C 'Normaler Bildschirm
Ukommando &H80 'Setze RAM-Adresse auf 0
Dc = 1 'Sicherstellen, dass man im Daten-Mode ist
For I = 0 To 503
Udata &H00
Next
End Sub
'------------------------------------------------------------------------------
Sub Ukommando(byval Wert As Byte)
Dc = 0 'in den Kommando-Mode
Spiout Wert , 1
Dc = 1 'zurück in den Daten-Mode
End Sub
Sub Udata(byval Wert As Byte)
Dc = 1 'um sicher zu gehen, dass man auch wirklich im Datenmode ist
Ce = 0
Spiout Wert , 1
Ce = 1
End Sub
Sollte ich unrecht haben und es gibt einen Code, welcher mit Udata arbeitet und Data-Zeilen für die Buchstaben hat, dann poste bitte den Link dazu.
Ansonsten gibt es noch einen anderen Code, wo diese Data-Zeilen vorhanden sind. Wo hast du den Code her?
AAAAAAAAAAhhhhhh
Ich komm net mer draus!! Bremsen! Wir verlieren glaub unsere Ziele....
Im Zeichensatz (das ist kein Programm, nur ein Tabelle) stehen ja für jeden Buchstaben die Hexfiles, mit denen das LCD mit dem Udata-Befehl angesteuert werden muss, damit dieser dort erscheint.
Wie kann ich denn nun auf diesen Zeichensatz zugreifen? (mit dem Code, der "Udata" benutzt)
Ich kapier jetzt garnix mehr.
Ich beziehe mich auf die Seite www.mkprojekt.de
Der Zeichensatz ist ja dafür da, dass ich nicht pro Buchstabe fünfmal einen Udata-Befehl laufen lassen muss...
Nur weiss ich nicht, wie ich den benutzen kann....
Ich hab mal das Zeugs in eine Source zusammenkopiert
1. Teil
Das ist jetzt der Teil, wo die Pixel eingelesen werdenCode:$regfile = "m32def.dat"
$crystal = 1000000
Config Portb = Output
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4
Dc Alias Portb.0
Ce Alias Portb.2
Re Alias Portb.1
Re = 0 'Reset
Waitus 250
Re = 1
Spiinit 'Initialisierung der SPI-Schnittstelle
Do
Initialisierung
Lcdloeschen
Udata &H7F
Udata &H02
Udata &H04
Udata &H02
Udata &H7F
Udata &H00
Wait 2
Und nun der Rest von dem ProgrammZitat:
Dim Cntr As Byte
Dim Chrs As Byte
Restore 0 ' oder A, B, C, D, E,...
For Cntr = 1 To 6
Read Chrs ' lesen Zeichen aus dem Flash
Call Udata(chrs) ' udata mit dem zeichen
Next
2. Teil
Das ist sozusagen der offizelle Weg, aber nicht sehr elegant.Code:Loop
Sub Initialisierung
Ukommando &H21 'Erweiterter Kommando-Mode
Ukommando &HC8
Ukommando &H06
Ukommando &H13
Ukommando &H20 'Wieder in den normalen Kommando-Mode
Ukommando &H0C
End Sub
Sub Lcdloeschen
Local I As Word
Ukommando &H20 'Normaler Kommando-Mode
Ukommando &H0C 'Normaler Bildschirm
Ukommando &H80 'Setze RAM-Adresse auf 0
Dc = 1 'Sicherstellen, dass man im Daten-Mode ist
For I = 0 To 503
Udata &H00
Next
End Sub
'------------------------------------------------------------------------------
Sub Ukommando(byval Wert As Byte)
Dc = 0 'in den Kommando-Mode
Spiout Wert , 1
Dc = 1 'zurück in den Daten-Mode
End Sub
Sub Udata(byval Wert As Byte)
Dc = 1 'um sicher zu gehen, dass man auch wirklich im Datenmode ist
Ce = 0
Spiout Wert , 1
Ce = 1
End Sub
'********************** Daten (ASCII) ******************************************
0:
Data &H00 , &H3E , &H51 , &H49 , &H45 , &H3E
1:
Data &H00 , &H00 , &H42 , &H7F , &H40 , &H00
2:
Data &H00 , &H42 , &H61 , &H51 , &H49 , &H46
3:
Data &H00 , &H22 , &H41 , &H49 , &H49 , &H36
4:
Data &H00 , &H18 , &H14 , &H12 , &H7F , &H10
5:
Data &H00 , &H27 , &H45 , &H45 , &H45 , &H39
6:
Data &H00 , &H3E , &H49 , &H49 , &H49 , &H32
7:
Data &H00 , &H61 , &H11 , &H09 , &H05 , &H03
8:
Data &H00 , &H36 , &H49 , &H49 , &H49 , &H36
9:
Data &H00 , &H26 , &H49 , &H49 , &H49 , &H3E
A:
Data &H00 , &H7C , &H12 , &H11 , &H12 , &H7C
B:
Data &H00 , &H7F , &H49 , &H49 , &H49 , &H36
C:
Data &H00 , &H3E , &H41 , &H41 , &H41 , &H22
D:
Data &H00 , &H7F , &H41 , &H41 , &H41 , &H3E
E:
Data &H00 , &H7F , &H49 , &H49 , &H49 , &H41
F:
Data &H00 , &H7F , &H09 , &H09 , &H09 , &H01
G:
Data &H00 , &H3E , &H41 , &H49 , &H49 , &H3A
H:
Data &H00 , &H7F , &H08 , &H08 , &H08 , &H7F
I:
Data &H00 , &H00 , &H41 , &H7F , &H41 , &H00
J:
Data &H00 , &H20 , &H41 , &H41 , &H41 , &H3F
K:
Data &H00 , &H7F , &H08 , &H14 , &H22 , &H41
L:
Data &H00 , &H7F , &H40 , &H40 , &H40 , &H40
M:
Data &H00 , &H7F , &H02 , &H04 , &H02 , &H7F
N:
Data &H00 , &H7F , &H04 , &H08 , &H10 , &H7F
O:
Data &H00 , &H3E , &H41 , &H41 , &H41 , &H3E
P:
Data &H00 , &H7F , &H09 , &H09 , &H09 , &H06
Q:
Data &H00 , &H3E , &H41 , &H51 , &H61 , &H7E
R:
Data &H00 , &H7F , &H09 , &H19 , &H29 , &H46
S:
Data &H00 , &H06 , &H49 , &H49 , &H49 , &H30
T:
Data &H00 , &H01 , &H01 , &H7F , &H01 , &H01
U:
Data &H00 , &H3F , &H40 , &H40 , &H40 , &H3F
V:
Data &H00 , &H1F , &H20 , &H40 , &H20 , &H1F
W:
Data &H00 , &H7F , &H20 , &H10 , &H20 , &H7F
X:
Data &H00 , &H63 , &H14 , &H08 , &H14 , &H63
Y:
Data &H00 , &H03 , &H04 , &H78 , &H04 , &H03
Z:
Data &H00 , &H61 , &H51 , &H49 , &H45 , &H43
'Leerzeichen
Leer:
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00
'für Kleinbuchstaben
A1:
Data &H00 , &H30 , &H4A , &H4A , &H52 , &H7C
B1:
Data &H00 , &H3F , &H48 , &H44 , &H44 , &H38
C1:
Data &H00 , &H38 , &H44 , &H44 , &H44 , &H28
D1:
Data &H00 , &H38 , &H44 , &H44 , &H48 , &H7F
E1:
Data &H00 , &H38 , &H54 , &H54 , &H54 , &H18
F1:
Data &H00 , &H00 , &H04 , &H7E , &H05 , &H00
G1:
Data &H00 , &H0C , &H52 , &H52 , &H4A , &H3C
H1:
Data &H00 , &H7F , &H08 , &H04 , &H04 , &H78
I1:
Data &H00 , &H00 , &H44 , &H7D , &H40 , &H00
J1:
Data &H00 , &H00 , &H40 , &H44 , &H3D , &H00
K1:
Data &H00 , &H7F , &H20 , &H10 , &H28 , &H44
L1:
Data &H00 , &H00 , &H41 , &H7F , &H40 , &H00
M1:
Data &H00 , &H7C , &H04 , &H18 , &H04 , &H7C
N1:
Data &H00 , &H7C , &H08 , &H04 , &H04 , &H78
O1:
Data &H00 , &H38 , &H44 , &H44 , &H44 , &H38
P1:
Data &H00 , &H7C , &H14 , &H24 , &H24 , &H18
Q1:
Data &H00 , &H18 , &H24 , &H24 , &H14 , &H7C
R1:
Data &H00 , &H7C , &H04 , &H04 , &H08 , &H00
S1:
Data &H00 , &H08 , &H54 , &H54 , &H54 , &H20
T1:
Data &H00 , &H04 , &H3F , &H44 , &H40 , &H00
U1:
Data &H00 , &H3C , &H40 , &H40 , &H40 , &H3C
V1:
Data &H00 , &H1C , &H20 , &H40 , &H20 , &H1C
W1:
Data &H00 , &H3C , &H40 , &H30 , &H40 , &H3C
X1:
Data &H00 , &H44 , &H28 , &H10 , &H28 , &H44
Y1:
Data &H00 , &H0C , &H50 , &H50 , &H48 , &H3C
Z1:
Data &H00 , &H44 , &H64 , &H54 , &H4C , &H44
'Sonderzeichen
Punkt:
Data &H00 , &H00 , &H60 , &H60 , &H00 , &H00
Strich:
Data &H00 , &H18 , &H18 , &H18 , &H18 , &H00
Doppelpunkt:
Data &H00 , &H00 , &H6C , &H6C , &H00 , &H00
Gradzeichen:
Data &H00 , &H00 , &H07 , &H05 , &H07 , &H00
Pfeilrechts:
Data &H00 , &H41 , &H63 , &H36 , &H1C , &H08
Ich schau mal, ob mir einen bessere Schweinerei einfallt.
Du verstehst das Programm nicht ganz. Das Udata liesst den Zeichsatz nicht aus. Ich verstehe, was Data bedeutet.Zitat:
mit denen das LCD mit dem Udata-Befehl angesteuert werden muss
Die Zeichsatz.bas hat mit der Nokia3310.bas nicht viel zu tun. Außer, das man sie zusammenfügen könnte.Code:Example
'-------------------------------------------------------------
' READDATA.BAS
' Copyright 1999-2000 MCS Electronics
'-------------------------------------------------------------
Dim A As Integer , B1 As Byte , Count As Byte
Dim S As String * 15
Dim L As Long
Restore Dta1 'point to stored data
For Count = 1 To 3 'for number of data items
Read B1 : Print Count ; " " ; B1
Next
Restore Dta2 'point to stored data
For Count = 1 To 2 'for number of data items
Read A : Print Count ; " " ; A
Next
Restore Dta3
Read S : Print S
Read S : Print S
Restore Dta4
Read L : Print L 'long type
End
Dta1:
Data &B10 , &HFF , 10
Dta2:
Data 1000% , -1%
Dta3:
Data "Hello" , "World"
'Note that integer values (>255 or <0) must end with the %-sign
'also note that the data type must match the variable type that is
'used for the READ statement
Dta4:
Data 123456789&
'Note that LONG values must end with the &-sign
'Also note that the data type must match the variable type that is used
'for the READ statement
Wie das geht, steht in der Hilfe von Bascom (also das auslesen von Data). Falls es in deiner Hilfe zufällig nicht aufgeführt ist hab ich es dir hier oben hin kopiert. Ich hoffe, damit kein Copyright zu verletzen.
Und jetzt hast du alle Grundlagen den Zeichsatz mit Udata zu "verbinden".
Sorry, wenn ich dir keine fertige Lösung gebe, aber ich mag es nicht, wenn immer gefragt wird, ohne das man sieht, das man sich selbst bemüht hat.
btw: Ich habe schon mehrere Postings von dir gelesen.
EDIT: Ich hab dir zwei Code-Tags aus meinem privaten Bestand spendiert. Gib' sie mir halt gelegentlich wieder zurück. PicNick
Ahaa, jetzt wirds mir klar!
Danke vielmals für die Erklärungen! Als Anfänger weiss man halt (noch) net so recht, wo der AVR hängt...
Bemühe micht stets auch immer, dem Forum das zurückzugeben, was er mir gibt.
Herzlichen Gruss
Mario
Soo ein blutiger Anfänger bist du auch nicht mehr. Einiges hast du ja auch schon auf die Beine gestellt.
Es ist immer hilfreich erstmal in die Hilfe zu schauen. Da weiss man meistens denn wenigstens schon, in welche Richtung man denken muss.
Wenn man es dann selbst noch nicht schafft, kann man den anderen aber schonmal sagen, das man die Hilfe nicht verstanden hat.
Was du für dein Programm brauchst sind die Befehle Restore und Read.
Mit Restore wird das jeweilige Zeichen erstmal "aktiviert" und mit Read kannst du die sechse Werte des Zeichen lesen und mit Udata anzeigen lassen.
Ich traue es dir zu, die beiden Befehle und den Code sinnvoll zu verbinden. Und wenn's nicht klappen sollte, deinen Code posten und man wird dir sicherlich helfen können.
PS: Bei einer Sache muss ich mich entschuldigen. Ich dachte du hättest noch einen zweiten Code für das 3310 gehabt. Es gibt noch eine "Variante" wo der Zeichensatz schon mit im Code ist.
Aber da du nicht gesagt hast, wo du den Code her hast wusste ich es nicht.
Jo, wir haben aneinander vorbei geredet.
Ich lade grad in dem Moment den Code in den AVR uuuund...
geht net...
Also, hier mal mein Code:
Nur die Do-Loop-Schleife, da spielt sichs ja ab:
Do
Initialisierung
lcdloeschen
Restore A:
For x=1 To 6
Read Ziff
Call Udata(ziff)
next
Loop
x und Ziff sind als Byte gedimmt...
Wieso klappt das net? Mit restore Pointe ich drauf und mit read sollt ers doch lesen..
Ich vermute, beim Read fehlt noch was, ich muss ihm doch sagen, wieviel er lesen muss, moment, ich guck mal in der Hilfe nach.. :)
Hmm, nee, das sollt er können...??
Probier mal Restore A ohne :Zitat:
Restore A:
Und dann Udata Ziff ohne Call und ohne ()