Forum: Mikrocontroller und Digitale Elektronik Font von 6x8 auf 12x16 ändern in bascom / S65


von Peter (Gast)


Lesenswert?

Hallo,

ich habe schon hier ins Forum geschrieben,aber in der Codesammlung.

Ich verwende ein S65 Display mit Mega8. Also Code verwende ich den von 
www.comwebnet.de. Herr Milewski? hat leider keine Zeit zu helfen, der 
ist mit anderen Projekten eingedeckt.

Also es sieht folgendermaßen aus: Im eeprom sind die Zeichen 
gespeichert.
Hier der Code zum auslesen eines Zeichens:
1
Sub S65_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String * 1)
2
3
Local R As Integer
4
Local A As Byte
5
Local B As Byte
6
Local C As Long
7
Local D As Byte
8
Local E As Byte
9
Local F As Byte
10
Local G As Long
11
Local Xpos As Byte
12
Local Ypos As Byte
13
Local Zeichen As String * 1
14
Xpos = 0
15
Ypos = 0
16
17
G = Asc(lcd_text)
18
G = G - 32
19
G = G * 6
20
21
Readeeprom B , G
22
23
A = 8                                                    
24
25
For F = 1 To 6
26
C = 1
27
28
D = B        
29
For E = 1 To 8
30
Xpos = Lx + E
31
Xpos = 132 - Xpos
32
33
Ypos = Ly + F
34
35
A = D And 1
36
If A = 1 Then Call S65_pset(xpos , Ypos , Fcol)
37
If A = 0 Then Call S65_pset(xpos , Ypos , Bcol)
38
Shift D , Right , 1
39
Next
40
Decr C
41
42
G = G + 1
43
Readeeprom B , G
44
Next
45
46
End Sub

Dieser Code gibt mir das Zeichen in 6x8 aus.
Und so stehts im Eeprom:
Data &H7E , &H09 , &H09 , &H09 , &H7E , &H00                ' "A"


Also wenn einer von euch mir weiterhelfen kann, wäre ich euch sehr 
dankbar.Ich habs jetzt wirklich schon sooo lange probiert, ich komm 
nicht drauf.
MFG Peter

von Martin (Gast)


Lesenswert?

Weist du wie sich diese Daten zusammen setzen?

von Martin (Gast)


Lesenswert?

Also was sie bedeuten/darstellen?

von Peter (Gast)


Lesenswert?

Hallo,
naja nicht ganz.
A=1 bedeutet Pixel ein, A=0 bedeutet Pixel aus.
G bedeutet das "Zeichen", dass aus dem Eeprom ausgelesen wird.
F ist der Zähler für die Bytes, also von 1 bis sechs,damit das ganze 
Zeichen ausgelesen wird.also die Breite
E ist das selbe nur halt für die Höhe

B,C,D weis ich leider nicht.

Lx,Ly sind die Werte wo das Zeichen im Display hingesetzt wird.

Ich muss ja gestehen, ich kenn mich im Bereich Microcontroller nicht so 
aus.

Ich brauche dies für eine Diplomarbeit auf der Uni.

MFG Peter

von Martin (Gast)


Lesenswert?

Ich bezog mich eignetlich auf : Data &H7E , &H09 , &H09 , &H09 , &H7E , 
&H00

von Michael U. (amiga)


Lesenswert?

Hallo,

das ist das Bitmuster des Zeichens, wie es aussieht spaltenweise und 
Bit7 oben, aber das sollten die Displayunterlagen verraten, wie dessen 
Ram-Zuordnung zu den Pixeln ist.

Gruß aus Berlin
Michael

von Peter (Gast)


Lesenswert?

Hallo,
ja weis ich schon. Das sind ja prinzipiell die Spalten vom Zeichen.
Also 8 bis lang und eben 6 bytes breit. Hier stellt es ein A dar.

Ich hoffe du hast das gemeint.

Also kannst du mir da weiterhelfen?

Eigentlich muss ich ja "nur" die a,b,c,d,e,f... Werte verändern...???

von Gerhard (Gast)


Lesenswert?

Hallo Peter,

hier ist mein Code den ich mal für die grösseren Zeichen umgeschrieben
hab. Kannst du dir mal ansehn. Wird aber ohne Anpassung nicht laufen da
ich die Pixelausgabe in ASM mache. (_pset) Ausserdem läufts bei mir mit
Hard-SPI.

Gruss Gerhard



Sub S65_big_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As 
Word , Byval Fcol As Word , Byval Lcd_text As String * 1)
Local A As Byte
Local B As Byte
Local D As Byte
Local E As Byte
Local Ee As Byte
Local F As Byte
Local Ff As Byte
Local G As Word
Local Xpos As Byte
Local Ypos As Byte
Local Zeichen As String * 1
Xpos = 0
Ypos = 0
    G = Asc(lcd_text)
    G = G - 32
    G = G * 6
      Readeeprom B , G
                                                       'Byte darf nicht 
verändert werden für 2. durchlauf
        For F = 1 To 6
         D = B
         Ff = F + F
         Py = Ly + Ff

            For E = 1 To 8
             Ee = E + E                                     'für 2x hoch
              Xpos = Lx + Ee
              Px = 132 - Xpos
                A = D And 1
                 If A = 1 Then
                  Farbe = Fcol
                 End If
                 If A = 0 Then
                  Farbe = Bcol
                 End If
                   rCall _pset
                   Px = Px - 1                              'für 2x hoch
                   rCall _pset                              'für 2x hoch
                  Shift D , Right , 1
             Next
          Py = Py - 1
          D = B
             For E = 1 To 8
             Ee = E + E                                     'für 2x hoch
              Xpos = Lx + Ee
              Px = 132 - Xpos
                A = D And 1
                 If A = 1 Then
                  Farbe = Fcol
                 End If
                 If A = 0 Then
                  Farbe = Bcol
                 End If
                   rCall _pset
                   Px = Px - 1                              'für 2x hoch
                   rCall _pset                              'für 2x hoch
                  Shift D , Right , 1
             Next

         G = G + 1
         Readeeprom B , G
      Next
End Sub

von Peter (Gast)


Lesenswert?

Hallo Gerhard!

Du bist klasse, hast mir sehr geholfen.

Ich habe den Code jetzt eingebunden, und es ist "alles" doppelt so groß.

Was noch nicht passt, ist, dass jede zweite Zeile (waagrecht) frei 
bleibt.also keine pixel kommen. Weist du vielleicht, woran es liegt?
Ist das bei dir auch so?

MFG Peter

von Gerhard (Gast)


Lesenswert?

Hallo Peter,

bei mir wird alles korrekt dargestellt.
In meinem Code kommt 4x "rcall _pset" vor ,
hast du diese 4 Zeilen umgeschrieben, dann müsste es klappen.
Ansonsten kannst du mir mal deinen Code mailen.
email: g.humer ät ptm.co.at

Gruss Gerhard

von A. G. (tipfix)


Lesenswert?

Hallo Gerhard

Wie hast Du das Display an die Hard-SPi angeschlossen. Meins läuft auf 
Soft-SPI. Ist aber etwas langsam.

Gruß Tipfix

von Gast (Gast)


Lesenswert?

Gibts es eine Hard SPI Ansteuerung für den S65 und Zeichensätze für 
verschiede Grössen in Bascom wäre sehr interessiert daran.

Gerhard kannst du nicht mal das veröffentlichen ?

Gast

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.