Code:
'------------------------------------------------------------------
' GRAPHIC FONT
' Use the Bascom font file's for all the graphic display's,
' include inverted and/or rotated text.
' By Evert Dekker 2007 GraphicFont@Evertdekker dotje com
' Created with Bascom-Avr: 1.11.8.8
'------------------------------------------------------------------
$regfile = "m32def.DAT"
$crystal = 1000000
$baud = 4800
$loadersize = 512
$hwstack = 100
$swstack = 120
$ramesize = 100
Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portd , Ce = 5 , Cd = 2 , Wr = 4 , Rd = 3 , Reset = 6 , Fs = 7 , Mode = 6
Dim Z As String * 10
Cls
Cursor Off
Declare Sub Lcdtext(byval S As String , Byval Xoffset As Byte , Byval Yoffset As Byte , Byval Fontset As Byte , Byval Inverse As Byte , Byval Rotation As Byte)
'SYNTAX Lcdtest String , Xoffset , Yoffset , Fontset , Inverse , Rotation
'
'* Xoffset and Yoffset is in pixels, so you can place text on every spot on the display
'* You determin yourself in the subroutine witch font belongs to the fontset
'=== Your main prog here ====
Do
Z = 1234
'Lcdtext "5X5 Font" , 20 , 2 , 4 , 0 , 0
'Lcdtext "6X8 Font" , 20 , 20 , 3 , 0 , 0
'Lcdtext "8X8 Font" , 20 , 40 , 1 , 0 , 0
Lcdtext "16X16 FONT" , 18 , 64 , 2 , 0 , 0
Lcdtext Z , 18 , 20 , 2 , 0 , 0
'Lcdtext "If you can't read this then incr. Swstack" , 20 , 120 , 4 , 0 , 0
Wait 3
Cls
Loop
End
'=== Sub Routines ===
Sub Lcdtext(byval S As String , Xoffset As Byte , Yoffset As Byte , Fontset As Byte , Inverse As Byte , Rotation As Byte)
Local Tempstring As String * 1 , Temp As Byte 'Dim local the variables
Local A As Byte , Pixels As Byte , Count As Byte , Carcount As Byte , Lus As Byte
Local Row As Byte , Byteseach As Byte , Blocksize As Byte , Dummy As Byte
Local Colums As Byte , Columcount As Byte , Rowcount As Byte , Stringsize As Byte
Local Xpos As Byte , Ypos As Byte , Pixel As Byte , Pixelcount As Byte
If Inverse > 1 Then Inverse = 0 'Inverse can't be greater then 1
If Rotation > 3 Then Rotation = 0 'There are only 4 rotation's
Stringsize = Len(s) - 1 'Size of the text string -1 because we must start with 0
For Carcount = 0 To Stringsize 'Loop for the numbers of caracters that must be displayed
'If Fontset = 1 Then Restore Font8x8 'Add or remove here fontset's that you need or not,
If Fontset = 2 Then Restore Font16x16 'this is the name that you gave to the font, NOT the filename
'If Fontset = 3 Then Restore Font6x8 'If you dont know the name, open the font file in wordpad, and there it is,
'If Fontset = 4 Then Restore Font5x5
'right on top.
Temp = Carcount + 1 'Cut the text string in seperate caracters
Tempstring = Mid(s , Temp , 1)
Read Row : Read Byteseach : Read Blocksize : Read Dummy 'Read the first 4 bytes from the font file
Temp = Asc(tempstring) - 32 'Font files start with caracter 32
For Lus = 1 To Temp 'Do dummie read to point to the correct line in the fontfile
For Count = 1 To Blocksize
Read Pixels
Next Count
Next Lus
Colums = Blocksize / Row 'Calculate the numbers of colums
Row = Row * 8 'Row is always 8 pixels high = 1 byte, so working with row in steps of 8.
Row = Row - 1 'Want to start with row=0 instead of 1
Colums = Colums - 1 'Same for the colums
Select Case Rotation
Case 0 '0 degrees rotation
For Rowcount = 0 To Row Step 8 'Loop for numbers of rows
A = Rowcount + Yoffset
For Columcount = 0 To Colums 'Loop for numbers of Colums
Read Pixels : If Inverse = 1 Then Toggle Pixels 'Read the byte from the file and if inverse = true then invert de byte
Xpos = Columcount 'Do some calculation to get the caracter on the correct Xposition
Temp = Carcount * Byteseach
Xpos = Xpos + Temp
Xpos = Xpos + Xoffset
For Pixelcount = 0 To 7 'Loop for 8 pixels to be set or not
Ypos = A + Pixelcount 'Each pixel on his own spot
Pixel = Pixels.0 'Set the pixel (or not)
Pset Xpos , Ypos , Pixel 'Finaly we can set the pixel
Shift Pixels , Right 'Shift the byte 1 bit to the right so the next pixel comes availible
Next Pixel
Next Columcount
Next Rowcount
End Select
Next Carcount
End Sub 'End of this amazing subroutine
'=== Includes ===
'$include "Font8x8.font" 'Includes here your font files
$include "Font16x16.font" 'If you don't need the files in your program, don't include them,
'$include "Font6x8.font" 'these are flash memory eaters.
'$include "Font5x5.font"
Lesezeichen