Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichensatz benutzen
Hallo zusammen,
http://www.mkprojekt.de/
Hier ist ja schön beschrieben, wie man das 3300er Grafik-LCD ansteuert.
Ein Zeichen erzeugt man so:
Udata &H7F
Udata &H02
Udata &H04
Udata &H02
Udata &H7F
Udata &H00
Dies ergibt z.B. ein "M"
Jetzt hats da noch einen Zeichensatz, in dem die Buchstaben und die dazugehörigen Hex-Daten gespeichert sind. Nur: Wie kann ich jetzt im Bascom da drauf zugreifen?
Im Zeichensatz steht z.B.:
A:
Data &H00 , &H7C , &H12 , &H11 , &H12 , &H7C
Wie kann ich jetzt mit Udata da drauf zugreifen?
Udata A
frisst er net....
Udata A
frisst er net....
Weils aus zwei verschiedenen Codebeispielen zusammengemischt ist!
Nimm doch den Code mit den Zeichensätzen.
Den hats da nich...
Hat nur den mit den Hexfiles und die "Tabelle" mit den verschiedenen Hexdaten, die für einen Buchstaben stehen...
??
linux_80
26.12.2005, 23:47
Hallo,
eine Möglichkeit wäre, in Bascom die Hilfe aufmachen und nach Data zu suchen, dann ist ganz unten ein Beispiel wie man sowas macht !
Den hats da nich...
Versteh ich nicht so ganz was das aussagen soll.
Aber wenn du meinst, das der Data-Code im Code mit Udata... nicht drin ist, hast du recht.
Deshalb sollst du den anderen Code nehmen, wo der Zeichensatz mit Data erzeugt ist.
Hmm, Ok, mit Restore A hab ich die Daten draussen.
Und dann? Ich kapier das Beispiel in Bascom net so ganz... Wie krieg ich die "restorten" Werte als Udata abgehandelt?
Ich muss ja den Befehl Udata und dann eine Hexzahl ans LCD schicken, damit ers schluckt...
Und diese Hexfiles sind zusammengefasst in der "Tabelle"...
linux_80
27.12.2005, 00:01
Udata ist auch die funktion (Sub) um die Daten zum Display zu senden.
So wie ich das sehe, um ein Zeichen auf dem Display darzustellen muss man erst ein paar Ukommandos senden, um die Position des Zeichens festzulegen, dann kann man mit Udata die Daten des Zeichens übertragen, das dann an der gewünschten stelle auftaucht.
Ja das ist mir auch klar....
Nur: Die Daten für die Zeichen liegen ja im Zeichensatz, das sieht dann z.B. so aus:
A:
Data &H00 , &H7C , &H12 , &H11 , &H12 , &H7C
Wie krieg ich jetzt diese Hex-Daten hinter ein "Udata", um sie ans Display senden zu können??
Das ist die Frage.
Das ist die Frage.
Und die Antwort steckt doch schon im anderen Quellcode...
Also ich seh da absolut nicht, wie da drin auf die Werte des Zeichensatzes zugegriffen werden, tut mir leid....
Da drin werden die Zeichen ja nur mit Udata und dann dem Hexwert angezeigt... Nichts, wo die Werte ausm Zeichensatz hervorgeholt werden....
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!!!!!!!
$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
Du vermischt da zwei verschiedene Codebeispiele. Das geht nicht einfach so!!!
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
$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
Das ist jetzt der Teil, wo die Pixel eingelesen werden
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
Und nun der Rest von dem Programm
2. Teil
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
Das ist sozusagen der offizelle Weg, aber nicht sehr elegant.
Ich schau mal, ob mir einen bessere Schweinerei einfallt.
mit denen das LCD mit dem Udata-Befehl angesteuert werden muss
Du verstehst das Programm nicht ganz. Das Udata liesst den Zeichsatz nicht aus. Ich verstehe, was Data bedeutet.
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
Die Zeichsatz.bas hat mit der Nokia3310.bas nicht viel zu tun. Außer, das man sie zusammenfügen könnte.
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...??
Restore A:
Probier mal Restore A ohne :
Und dann Udata Ziff ohne Call und ohne ()
Negativ, den schluckt er auch net...
an der Hardware liegts net, hab sie grad nochmals ohne Zeichensatz getestet...
?
Moment. Ich bau mein Board grade mal um und probiere es bei mir.
$regfile = "m16def.dat"
$crystal = 8000000
Config Portb = Output
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Dim X As Byte
Dim Ziff As Byte
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4
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
Restore B
For X = 1 To 6
Read Ziff
Udata Ziff
Next X
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
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
So geht es bei mir.
Anstelle des M lief erst ein A über's Display und jetzt mit diesem Code ein B.
PS: Wenn du diesen Code kopierst, beachte, das ich B.3 und nicht B.0 benutze!!! Regfile und Crystal wären dir sicherlich auch so aufgefallen.
Do
Initialisierung
Lcdloeschen
'Udata &H7F
'Udata &H02
'Udata &H04
'Udata &H02
'Udata &H7F
'Udata &H00
Restore A
For X = 1 To 6
Read Ziff
Udata Ziff
Next X
Restore B
For X = 1 To 6
Read Ziff
Udata Ziff
Next X
Restore C
For X = 1 To 6
Read Ziff
Udata Ziff
Next X
Restore B1
For X = 1 To 6
Read Ziff
Udata Ziff
Next X
Wait 2
Loop
Und so habe ich ABCb auf dem Display.
Also bei mir frisst er das absolut net...
Ich probier dann morgen noch daran rum..
Achso.. Ich hab den Regler am Netzteil versehentlich auf 2.5V gedreht... So gehts natürlich net... Es funktioniert übrigens!!!!!! Herzlichen Dank für die Hilfe!!
Nur nervig, dass die Sache übern Display läuft... Da werd ich mal ins DB vom Display gucken.
Herzlichen Gruss
Mario
Im Forum von Mikrocontroller.net sind noch weitere Bascom-Beispiele aufgeführt. Vielleicht findest du da noch was anderes interessantes.
PS: Ging es mit Restore A: und Call Udata auch? Ich hab mein Board schon wieder abgebaut und es nicht probiert.
Das mit dem Restore und Call kann ich grad auch nimmer testen, da alles schon verbaut...
Hab aber noch ein Problem... Hinter "Restore" kann man keine Variabel, die eine Ziffer enthält stecken...
Also Restore x, mit x=3 geht net...
Wie kann man das lösen?
Er sagt dann immer beim compilieren "Label not Found [X ]
Ich bräuchte dies Funktion aber.. X ist als Byte definiert....
Achja, X steht für die Nummer eines Labels...
Bei mir hat der Datensatz für den Buchstaben A das Label 1:
Wenn jetzt X=1 ist, soll er diesen Buchstaben restoren, nur: restore x geht ja net, muss ein Label sein...
Soll ich da jetzt 30 If-Then-Abfragen bauen oder kann man das anders lösen?..
Bei deiner Tabelle ist das Problem, daß die ASCII-Zeichen und die Label-Tabelle in der Reihenfolge nicht logisch zueinander passen. So, wie's ist, müßtest du wohl
select case (gesuchtes zeichen)
case 0: restore 0
case 1: restore 1
.....
case ".": restore punkt
end select
hinschreiben
Ist verständlich, leicht erweiterbar und sauber.
Ok, werde ich testen, sobald ich wieder ein LCD hab....
Hab meines glaub aus Versehen gekocht, zuviel Spannung... (3.9V)
Er zeigt jetzt nur noch mitten im Display einen Punkt...
Muss ich halt ein neues suchen..
sebastian.heyn
04.01.2006, 11:55
Hallo,
ich habe das mal zusammenkopiert und es läuft bei mir.
Im hauptprogramm steht text=" " und dann gosub words gibt den string aus.. ist äußerst schmutzig programmiert, aber läuft ;-))
Wenn mein rechner zuhause wieder vernünftig läuft dann guck ich mal dass man auch den text scalieren kann etc.
$regfile = "m8def.dat"
$crystal = 16000000
Config Portb = Output
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Declare Sub Words
Declare Sub Charout
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128
Dc Alias Portb.1
Ce Alias Portb.6
Re Alias Portb.0
Dim Text As String * 42
Dim Loops As Byte
Dim Lenght As Byte
Dim Sign As String * 1
Dim Dispdata As Byte
Dim Count As Byte
Re = 0 'Reset
Waitus 250
Re = 1
Spiinit 'Initialisierung der SPI-Schnittstelle
Do
Initialisierung
Lcdloeschen
Text = "...OK..."
Gosub Words
Wait 2
Loop
End
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 Charout
For Count = 1 To 6
Read Dispdata
Udata Dispdata
Next Count
End Sub
Sub Words
Lenght = Len(text)
For Loops = 1 To Lenght
If Loops = 1 Then
Sign = Left(text , 1)
Elseif Loops = Lenght Then
Sign = Right(text , 1)
Else
Sign = Mid(text , Loops , 1)
End If
If Sign = "0" Then Restore 0:
If Sign = "1" Then Restore 1:
If Sign = "2" Then Restore 2:
If Sign = "3" Then Restore 3:
If Sign = "4" Then Restore 4:
If Sign = "5" Then Restore 5:
If Sign = "6" Then Restore 6:
If Sign = "7" Then Restore 7:
If Sign = "8" Then Restore 8:
If Sign = "9" Then Restore 9:
If Sign = "A" Then Restore A:
If Sign = "B" Then Restore B:
If Sign = "C" Then Restore C:
If Sign = "D" Then Restore D:
If Sign = "E" Then Restore E:
If Sign = "F" Then Restore F:
If Sign = "G" Then Restore G:
If Sign = "H" Then Restore H:
If Sign = "I" Then Restore I:
If Sign = "J" Then Restore J:
If Sign = "K" Then Restore K:
If Sign = "L" Then Restore L:
If Sign = "M" Then Restore M:
If Sign = "N" Then Restore N:
If Sign = "O" Then Restore O:
If Sign = "P" Then Restore P:
If Sign = "Q" Then Restore Q:
If Sign = "R" Then Restore R:
If Sign = "S" Then Restore S:
If Sign = "T" Then Restore T:
If Sign = "U" Then Restore U:
If Sign = "V" Then Restore V:
If Sign = "W" Then Restore W:
If Sign = "X" Then Restore X:
If Sign = "Y" Then Restore Y:
If Sign = "Z" Then Restore Z:
If Sign = "a" Then Restore A1:
If Sign = "b" Then Restore B1:
If Sign = "c" Then Restore C1:
If Sign = "d" Then Restore D1:
If Sign = "e" Then Restore E1:
If Sign = "f" Then Restore F1:
If Sign = "g" Then Restore G1:
If Sign = "h" Then Restore H1:
If Sign = "i" Then Restore I1:
If Sign = "j" Then Restore J1:
If Sign = "k" Then Restore K1:
If Sign = "l" Then Restore L1:
If Sign = "m" Then Restore M1:
If Sign = "n" Then Restore N1:
If Sign = "o" Then Restore O1:
If Sign = "p" Then Restore P1:
If Sign = "q" Then Restore Q1:
If Sign = "r" Then Restore R1:
If Sign = "s" Then Restore S1:
If Sign = "t" Then Restore T1:
If Sign = "u" Then Restore U1:
If Sign = "v" Then Restore V1:
If Sign = "w" Then Restore W1:
If Sign = "x" Then Restore X1:
If Sign = "y" Then Restore Y1:
If Sign = "z" Then Restore Z1:
If Sign = " " Then Restore Leerzeichen:
If Sign = "." Then Restore Punkt:
If Sign = ":" Then Restore Doppelpunkt:
Call Charout
Next Loops
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
'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
Leerzeichen:
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00
Hi,
da ich von einigen Leuten angeschrieben wurde, habe ich jetzt auf meiner Website (www.mkprojekt.de) beschrieben, wie man einen Zeichensatz in Bascom benutzt.
Ich hoffe, das hilft euch. Wenn es noch Probleme geben sollte, einfach ne Mail an mich und ich gucke, was ich machen kann.
MfG, Michael
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.