PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichensatz benutzen



Murus
26.12.2005, 13:48
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....

Marco78
26.12.2005, 22:21
Udata A
frisst er net....

Weils aus zwei verschiedenen Codebeispielen zusammengemischt ist!
Nimm doch den Code mit den Zeichensätzen.

Murus
26.12.2005, 22:40
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, 22: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 !

Marco78
26.12.2005, 22:50
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.

Murus
26.12.2005, 22:52
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
26.12.2005, 23: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.

Murus
27.12.2005, 08:23
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.

Marco78
27.12.2005, 22:53
Das ist die Frage.
Und die Antwort steckt doch schon im anderen Quellcode...

Murus
30.12.2005, 15:12
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....

Marco78
30.12.2005, 15:57
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.

Murus
30.12.2005, 16:13
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

Marco78
30.12.2005, 16:47
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?

Murus
30.12.2005, 17:08
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....

PicNick
30.12.2005, 18:04
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.

Marco78
30.12.2005, 18:30
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

Murus
30.12.2005, 18:58
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

Marco78
30.12.2005, 19:12
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.

Murus
30.12.2005, 19:41
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...??

Marco78
30.12.2005, 19:59
Restore A:

Probier mal Restore A ohne :

Und dann Udata Ziff ohne Call und ohne ()

Murus
30.12.2005, 20:20
Negativ, den schluckt er auch net...
an der Hardware liegts net, hab sie grad nochmals ohne Zeichensatz getestet...

?

Marco78
30.12.2005, 20:23
Moment. Ich bau mein Board grade mal um und probiere es bei mir.

Marco78
30.12.2005, 20:32
$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.

Marco78
30.12.2005, 20:36
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.

Murus
30.12.2005, 21:07
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

Marco78
30.12.2005, 21:16
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.

Murus
31.12.2005, 12:25
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?..

PicNick
31.12.2005, 14:07
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.

Murus
31.12.2005, 15:01
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, 10: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

mk
01.02.2006, 09:48
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