SSD1306 INCLUDE for PBP3


Closed Thread
Results 1 to 40 of 102

Hybrid View

  1. #1
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    i use MikroElektronika GLCD Font Creator

    here is example pawns as 16x16 font [variable width C code output new type ]
    chars A,B,C,D have been mapped to black pawn on black square , black pawn on white square
    and white pawn on black square , white pawn on white square



    PAWNS.BAS

    Code:
      
    ;//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0;//MikroElektrnika 2011 
    ;//http://www.mikroe.com 
    
    
    ;//GLCD FontName : pawns16x16
    ;//GLCD FontSize : 16 x 16
    
    
    ;const unsigned short pawns16x16[] = {
    goto overpawns
    pawns:
     @ db 0X00,0
     @ db 0X41,0X00
     @ db 0X44,0X00
     @ db 0X10,0
     @ db 0XF,0X18,0X00,0X00
     @ db 0XF,0X38,0X00,0X00
     @ db 0XF,0X58,0X00,0X00
     @ db 0XF,0X78,0X00,0X00
     @ db 0XC0,0X01,0X20,0X02,0X10,0X04,0X10,0X04,0X20,0X02,0X40,0X01,0X78,0X0F,0X08,0X08,0X78,0X0F,0X40,0X01,0X20,0X02,0X10,0X04,0X08,0X08,0XFC,0X1F,0X00,0X00,0XFE,0X3F; // Code for char num 65
     @ db 0XC0,0X01,0XE0,0X03,0XF0,0X07,0XF0,0X07,0XE0,0X03,0XC0,0X01,0XF8,0X0F,0XF8,0X0F,0XF8,0X0F,0XC0,0X01,0XE0,0X03,0XF0,0X07,0XF8,0X0F,0XFC,0X1F,0X00,0X00,0XFE,0X3F; // Code for char num 66
     @ db 0X3F,0XFE,0X1F,0XFC,0X0F,0XF8,0X0F,0XF8,0X1F,0XFC,0X3F,0XFE,0X07,0XF0,0X07,0XF0,0X07,0XF0,0X3F,0XFE,0X1F,0XFC,0X0F,0XF8,0X07,0XF0,0X03,0XE0,0XFF,0XFF,0X01,0XC0; // Code for char num 67
     @ db 0X3F,0XFE,0XDF,0XFD,0XEF,0XFB,0XEF,0XFB,0XDF,0XFD,0XBF,0XFE,0X87,0XF0,0XF7,0XF7,0X87,0XF0,0XBF,0XFE,0XDF,0XFD,0XEF,0XFB,0XF7,0XF7,0X03,0XE0,0XFF,0XFF,0X01,0XC0; // Code for char num 68
     ;       };
    overpawns:
    Warning I'm not a teacher

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    http://www.picbasic.co.uk/forum/show...363#post147363

    use ssd1306 code from here , it can use variable width fonts that do not have to be hand coded
    makes life easy

    i have a ver that can do bmp like images too if interested
    Warning I'm not a teacher

  3. #3
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,133


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    Thank you very much. Your support and help is beyond words.

    The selection of pixel columns and lines is really slow process. Seems you cannot numerically define lines and columns. Just adding one at a time waiting to complete.

    Then, what are your settings for export?

    Be blessed,
    Ioannis
    Last edited by Ioannis; - 20th December 2021 at 08:08.

  4. #4
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    step 1 create a font
    Name:  f0.jpg
Views: 3196
Size:  151.9 KB
    step 2 edit it to taste
    Name:  f1.jpg
Views: 3412
Size:  124.0 KB
    step 3 create blank include file
    and export
    Name:  f2.jpg
Views: 3146
Size:  154.2 KB
    step 4 paste export in suitable format into include
    Name:  f3.jpg
Views: 3602
Size:  168.4 KB

    do some editing to get it to pbp format
    remembering never allow a odd number of bytes on a line
    never change order or number of data bytes to encode
    Warning I'm not a teacher

  5. #5
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,133


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    OK, thanks!

    Ioannis

  6. #6
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    BEFORE AFTER EXAMPLE

    Code:
    '//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0
    '//MikroElektrnika 2011 
    '//http://www.mikroe.com 
    
    
    '//GLCD FontName : pawns16x12
    '//GLCD FontSize : 16 x 12
    
    
    'const unsigned short pawns16x12[] = {
    '   0x00,
    '   0x00,
    '   0x41,0x00,
    '   0x44,0x00,
    '   0x0C,
    '   0x00,
    '   0x10,0x18,0x00,0x00,
    '   0x0D,0x30,0x00,0x00,
    '   0x0D,0x48,0x00,0x00,
    '   0x0D,0x60,0x00,0x00,
    '   0x00,0x00,0x80,0x03,0x80,0x0F,0xC0,0x1F,0xC0,0x1F,0xE0,0x07,0x30,0x04,0x1C,0x0C,0x04,0x18,0x04,0x30,0x02,0x60,0x03,0xC0, // Code for char num 65
    '   0xF0,0x00,0x10,0x03,0x10,0x0D,0x10,0x19,0x10,0x11,0x30,0x17,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 66
    '   0x00,0x00,0x00,0x00,0xC0,0x0F,0x60,0x18,0x60,0x10,0xD0,0x1F,0x10,0x00,0x70,0x02,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00, // Code for char num 67
    '   0x00,0x00,0x80,0x01,0x80,0x00,0x80,0x1C,0x00,0x15,0x00,0x1F,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // Code for char num 68
    '        };
    
    
    
    
    '//Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0
    '//MikroElektrnika 2011 
    '//http://www.mikroe.com 
    
    
    '//GLCD FontName : pawns16x12
    '//GLCD FontSize : 16 x 12
    
    
    'const unsigned short pawns16x12[] = {
    goto overpawns
    pawns:  
     @ DB 0x00,0x00
     @ DB 0X41,0x00
     @ DB 0X44,0x00
     @ DB 0X0C,0x00
     @ DB 0X10,0x18,0x00,0x00
     @ DB 0X0D,0x30,0x00,0x00
     @ DB 0X0D,0x48,0x00,0x00
     @ DB 0X0D,0x60,0x00,0x00
     @ DB 0X00,0x00,0x80,0x03,0x80,0x0F,0xC0,0x1F,0xC0,0x1F,0xE0,0x07,0x30,0x04,0x1C,0x0C,0x04,0x18,0x04,0x30,0x02,0x60,0x03,0xC0' // Code for char num 65
     @ DB 0XF0,0x00,0x10,0x03,0x10,0x0D,0x10,0x19,0x10,0x11,0x30,0x17,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00' // Code for char num 66
    
    
    
     @ DB 0X00,0x00,0x00,0x00,0xC0,0x0F,0x60,0x18,0x60,0x10,0xD0,0x1F,0x10,0x00,0x70,0x02,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00' // Code for char num 67
     @ DB 0X00,0x00,0x80,0x01,0x80,0x00,0x80,0x1C,0x00,0x15,0x00,0x1F,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00' // Code for char num 68
    overpawns:

    ps , for a chess board all chrs need to be same size , the font creator will optimize the shit out of your creations it hates blank columns on either edge
    its a battle of wits .

    this ver may make fonts easier to but up to each other
    Code:
    '*******************************************************************
    '*  Name    : grx.pbpmod                                           *
    '*  Author  : richard                                              *
    '*  Notice  : Copyright (c) 2021                                   *
    '*          :                                                      *
    '*  Date    : 21/11/2021                                           *
    '*  Version : 1.0B      ;BMP ADDED                                 *
    '*  Notes   : generic graphics suite for pic18                     *
    '*          : 1 bit /pixel/colour                                  *
    '*          : uses variable width fonts up to 23 bits wide         * 
    '*          : Generated by MikroElektronika GLCD Font Creator      * 
    '*          :                                                      *
    '*          :                                                      *
    '*******************************************************************
    
    
    ;    TO MAKE AUTO FLIP  OF DISP USE
    '    #DEFINE DISPFLIP    1  
    '    #DEFINE colours 3   ;1 mono 2 rg or 3 rgb
    '    width  con 64       
    '    height con 16        
      
    
    
    ;buffers
            fbr    var byte[width/8 * height]   ;frame buffer r   4x8x16 pixels  row  0 to 31  col 0 to 15
            black   con 0
            red     con 1
        #if colours =  3 
          
            ;buffers
            fbb    var byte[width/8 * height]   ;frame buffer b   4x8x16 pixels  row  0 to 31  col 0 to 15
            fbg    var byte[width/8 * height]   ;frame buffer g   4x8x16 pixels  row  0 to 31  col 0 to 15
            ccc     con 3
            green   con 2
            yellow  con 3
            blue    con 4
            purple  con 5
            aqua    con 6
            white   con 7    
        #endif
        #if  colours = 2 
            
            ;buffers
            fbg    var byte[width/8 * height]   ;frame buffer g   4x8x16 pixels  row  0 to 31  col 0 to 15
            ccc     con 2 
            green   con 2
            yellow  con 3 
        #endif
        #if  colours = 1
            ccc     con 1  
        #endif
        
        
         
        dmd_bigaddress var byte[3] BANK0   ;ALLOWS 128K SAFE CONST STRS
        fbsb   var byte[width/8 * height  * ccc ] ;output buffer in scan order
        fpx	  var byte       ;work regs 
        tmp   var word       ;work regs 
    ' -----------    General use variables used -------------------
        gl_x     	var byte	   
        gl_y	 	var byte	   
        gl_i	 	var	word       ' General loop counter
        gl_l	 	var word       ' used in Line subroutine 
        gl_m	 	var word       ' used in Line subroutine 
        gl_byte		var	BYTE	   ' Graphic byte                                                                                  
        gl_char		var BYTE	   ' Text byte
        g_char      var BYTE
    ' ----- Circle constants and variables
        gl_pi			con	2	       
        glc_x			var word	   ' Calculation var
        glc_y			var word	   ' Calculation var
        glc_s			var WORD	   ' Slope
        glc_cx		    var word	   ' Center x
        glc_cy  		var word	   ' Center y
        glc_r			var word	   ' Radius
        g_num			var WORD
    ' -----  Line variables  
        gl_x1			var	BYTE
        gl_x2			var	BYTE
        gl_y1			var	BYTE
        gl_y2			var	BYTE
        gl_inc1		    var	WORD
        gl_inc2		    var	WORD
    ' ----- Chart Variables
        s_xstart	  var BYTE
        s_xend        var BYTE
        s_ystart      var BYTE
        s_yend        var BYTE
    '    s_tick        var BYTE
     
        
    ;cga stuff
        fontaddr        	var WORD      ;work regs 
        foffset             var WORD      ;work regs 
        f_start             var WORD      ;work regs 
        f_end               var WORD      ;work regs 
        f_height            var WORD      ;work regs 
        fw                  VAR BYTE      ;work regs   width of last chr
        fchb                var byte[4]   ;work regs 
        fchd                var byte[4]   ;work regs 
        fbp                 VAR BYTE      ;work regs 
        fbo                 var WORD      ;work regs 
        fbc                 VAR BYTE      ;work regs 
        hght                VAR BYTE      ;work regs 
        fbrow               VAR BYTE      ;work regs
        fbrc                var byte      ;work regs
        fbfp                VAR BYTE      ;work regs
        fbbpr               VAR BYTE      ;work regs
        fbscn               VAR word      ;work regs
        fbinx               VAR BYTE      ;work regs
        fbpx                VAR word      ;work regs
        dssh                VAR BYTE      ;work regs
        x0                  var BYTE      ;work regs
        x1                  var BYTE      ;work regs
        y0                  var BYTE      ;work regs
        y1                  var BYTE      ;work regs
        BMPLABEL            VAR word EXT
    ;user
        fx                  VAR BYTE 
        fy                  VAR BYTE 
        fch                 VAR BYTE
        colour              VAR BYTE      ;0-7
        bgcolour            VAR BYTE      ;0-7
        
    @BMPLABEL=  _dmd_bigaddress
        
     goto Jumpover_grx_Lib
     
     
     
      USERCOMMAND "SETFONT"     ;font must be located in first 64k block
      USERCOMMAND "FILLRECT"    ;X,Y,W,H
      USERCOMMAND "DRAWRECT"    ;X,Y,W,H
      USERCOMMAND "DMDSTR"      ;{X,Y},{buffer|const str}, {colour} is 128k safe
      USERCOMMAND "DRAWLINE"    ;X1,Y1,X2,Y2 , {colour}
      USERCOMMAND "DRAWCIRCLE"  ;X,Y,R
      USERCOMMAND "DMDBMP"      ;X,Y,LABEL
    
    
     
    
    
    
    
    sfnt: 
        readcode fontaddr + 2,f_start   
        readcode fontaddr + 4,f_end 
        readcode fontaddr + 6,f_height 
    return 
    
    
    flip:
        fbpx = width/8 * height - 1
        while fbpx >width/8 * height/2-1
             #if colours =  2 
            fbscn = fbg[fbpx]  rev 8
            #endif
            fbrc = fbr[fbpx]   rev 8
            #if colours =  3 
                fbrow = fbb[fbpx]  rev 8
            #endif
             #if colours =  2 
            fbg[fbpx] = fbg[width/8 * height - 1 - fbpx]   rev 8
            #endif
            fbr[fbpx] = fbr[width/8 * height - 1 - fbpx]   rev 8
            #if colours =  3 
                fbb[fbpx] = fbb[width/8 * height - 1 - fbpx]   rev 8 
            #endif
             #if colours =  2 
            fbg[width/8 * height - 1 - fbpx] = fbscn
            #endif
            fbr[width/8 * height - 1 - fbpx] = fbrc
            
            #if colours =  3 
                fbb[width/8 * height - 1 - fbpx] = fbrow
            #endif
            fbpx = fbpx - 1
        wend
    return
    
    
    drawch:   ;set fw to -1 if chr out of range or width of chr if successful
     ; needs h/w check
        fw=-1
        if ((fch<f_start)||(fch>f_end)) then return
        readcode fontaddr + (Fch - f_start)*4 + 8 ,fw
        readcode fontaddr + (Fch - f_start)*4 + 9 ,foffset
        if (fx+fw) > width then 
         fw=-1
         return
        endif
        for dssh = 0 to 3  ;fchb = ~0
         fchb[dssh] = 255
        next
        fbp = fx//8
        fbo = fy*width/8 + fx/8
        for dssh = 1 to (31 - fw) ; fchb = fchb>>(32 - fw)
            asm
            bcf STATUS,0
            banksel _fchb
            rrcf    _fchb +3
            rrcf    _fchb +2
            rrcf    _fchb +1
            rrcf    _fchb 
            banksel 0
            endasm
        next 
        for dssh = 1 to fbp   ;fchb = fchb<<fbp; 
            asm
            bcf STATUS,0
            banksel  _fchb
            rlcf    _fchb
            rlcf    _fchb +1
            rlcf    _fchb +2
            rlcf    _fchb +3
            banksel 0
            endasm
        next 
        for dssh = 0 to 3  ;   fchb = ~fchb
         fchb[dssh] = ~fchb[dssh]
        next
       foffset = foffset
        for fbc = 1 to f_height        
            for dssh = 0 to 3
                fchd[dssh] = 0
            next
           for  dssh=0 to  fw/8 
            readcode fontaddr + foffset,fchd[dssh]
              foffset = foffset + 1
            next
            for dssh = 1 to fbp ;fchd = fchd << fbp;
                asm
                bcf STATUS,0
                banksel  _fchd
                rlcf    _fchd
                rlcf    _fchd +1
                rlcf    _fchd +2
                rlcf    _fchd +3
                banksel 0
                endasm
            next   
            fbr[fbo] = fbr[fbo]&fchb[0]
            fbr[fbo+1] = fbr[fbo+1]&fchb[1]     
            fbr[fbo+2] = fbr[fbo+2]&fchb[2]
            fbr[fbo+3] = fbr[fbo+3]&fchb[3]
            #if colours <> 1 
            fbg[fbo] = fbg[fbo]&fchb[0]
            fbg[fbo+1] = fbg[fbo+1]&fchb[1]
            fbg[fbo+2] = fbg[fbo+2]&fchb[2]        
            fbg[fbo+3] = fbg[fbo+3]&fchb[3]
            #endif
            #if colours =  3 
            fbb[fbo] = fbb[fbo]&fchb[0]
            fbb[fbo+1] = fbb[fbo+1]&fchb[1] 
            fbb[fbo+2] = fbb[fbo+2]&fchb[2]
            fbb[fbo+3] = fbb[fbo+3]&fchb[3] 
            #endif
               #if colours <> 1
                if (bgcolour & 1)  then 
                    fbr[fbo] = fbr[fbo]|~fchb[0] 
                    fbr[fbo+1] = fbr[fbo+1]|~fchb[1] 
                    fbr[fbo+2] = fbr[fbo+2]|~fchb[2] 
                    fbr[fbo+3] = fbr[fbo+3]|~fchb[3] 
                endif             
                if (bgcolour & 2)  then 
                    fbg[fbo] = fbg[fbo]|~fchb[0]
                    fbg[fbo+1] = fbg[fbo+1]|~fchb[1]
                    fbg[fbo+2] = fbg[fbo+2]|~fchb[2]
                    fbg[fbo+3] = fbg[fbo+3]|~fchb[3]
                endif 
                #endif
                #if colours = 3
                if (bgcolour & 4)  then 
                    fbb[fbo] = fbb[fbo]|~fchb[0]
                    fbb[fbo+1] = fbb[fbo+1]|~fchb[1]
                    fbb[fbo+2] = fbb[fbo+2]|~fchb[2]
                    fbb[fbo+3] = fbb[fbo+3]|~fchb[3]
                endif 
                #endif 
                if (colour &1)then
                    fbr[fbo] = fbr[fbo] | fchd[0]
                    fbr[fbo + 1] = fbr[fbo + 1]| fchd[1] 
                    fbr[fbo + 2] = fbr[fbo + 2]| fchd[2] 
                    fbr[fbo + 3] = fbr[fbo + 3]| fchd[3]
                else
                    fbr[fbo] = fbr[fbo] & ~fchd[0]
                    fbr[fbo + 1] = fbr[fbo + 1]& ~fchd[1] 
                    fbr[fbo + 2] = fbr[fbo + 2]& ~fchd[2] 
                    fbr[fbo + 3] = fbr[fbo + 3]& ~fchd[3]
                endif  
                #if colours <> 1  
                if (colour&2) then
                    fbg[fbo] = fbg[fbo] | fchd[0] 
                    fbg[fbo + 1] = fbg[fbo + 1]| fchd[1] 
                    fbg[fbo + 2] = fbg[fbo + 2]| fchd[2] 
                    fbg[fbo + 3] = fbg[fbo + 3]| fchd[3]
                else
                    fbg[fbo] = fbg[fbo] & ~fchd[0]
                    fbg[fbo + 1] = fbg[fbo + 1]& ~fchd[1] 
                    fbg[fbo + 2] = fbg[fbo + 2]& ~fchd[2] 
                    fbg[fbo + 3] = fbg[fbo + 3]& ~fchd[3]
                endif
                #endif
             #if colours =  3 
                if (colour&4) then
                    fbb[fbo] = fbb[fbo] | fchd[0] 
                    fbb[fbo + 1] = fbb[fbo + 1]| fchd[1] 
                    fbb[fbo + 2] = fbb[fbo + 2]| fchd[2] 
                    fbb[fbo + 3] = fbb[fbo + 3]| fchd[3]
                else
                    fbb[fbo] = fbb[fbo] & ~fchd[0]
                    fbb[fbo + 1] = fbb[fbo + 1]& ~fchd[1] 
                    fbb[fbo + 2] = fbb[fbo + 2]& ~fchd[2] 
                    fbb[fbo + 3] = fbb[fbo + 3]& ~fchd[3]
                endif
              #endif
            fbo = fbo + (width)/8
        next                  
    return
     
    sbmp: 
        readcode BMPLABEL, fw  ;width
        readcode BMPLABEL+1 ,f_height ;height
        DEBUG 13,10, HEX4 BMPLABEL ,9,#fw ,9,#f_height
        foffset=2
        f_height=f_height+Y0
    '    fw=(fw/16)-1
        fw=(fw/8)-1
        DEBUG 13,10
        WHILE y0 < f_height
           fbo = y0*width/8 + x0
           DEBUG #Y0,9
           for dssh = 0 to fw   ;width
               readcode BMPLABEL+foffset  ,FBC'gl_inc1
               DEBUG HEX2 FBC,9	
               fbr[fbo] = FBC  REV 8
               fbo=fbo+1
               foffset=foffset+1
    '           fbr[fbo+1] =(gl_inc1>>8)  REV 8
    '           fbr[fbo] = gl_inc1  REV 8
    '           fbo=fbo+2
    '          foffset=foffset+2
           next
           DEBUG 13,10
          Y0=Y0+1 
        WEND   
     return    
         
    ' void lcdBitmap(char x, char y, char w, char h, const char *bd) {
    '    char tm, bm, lastrow, row, col, db, rb, i = 0, pos;
    '    char *Findex;
    '    const char *Dindex;
    '    lastrow = ((y + h) / 8) - y / 8;
    '    for (row = 0; row <= lastrow; row++) {
    '        Findex = gFrame + (y / 8 + row)*84 + x;
    '        if (row == lastrow) {
    '            Dindex = bd + (row - 1) * w;
    '            pos = w;
    '            while (pos--) {
    '                db = *Dindex++;
    '                if (gMODE == 255)db = ~db;
    '                rb = *Findex;
    '                db = mask_b(rb, db, y + h);
    '                *Findex++ = db;
    '            }
    '        } else if (row == 0) {
    '            Dindex = bd;
    '            pos = w;
    '            while (pos--) {
    '                db = *Dindex++;
    '                if (gMODE == 255)db = ~db;
    '                rb = *Findex;
    '                db = mask_t(rb, db, y);
    '                *Findex++ = db;
    '            }
    '        } else {
    '            Dindex = bd + (row - 1) * w;
    '            pos = w;
    '            while (pos--) {
    '                db = *Dindex++;
    '                if (gMODE == 255)db = ~db;
    '                rb = *Findex;
    '                db = mask_b(rb, db, y);
    '                *Findex++ = db;
    '            }
    '            Findex = gFrame + (y / 8 + row)*84 + x;
    '            Dindex = bd + row*w;
    '            pos = w;
    '            while (pos--) {
    '                db = *Dindex++;
    '                if (gMODE == 255)db = ~db;
    '                rb = *Findex;
    '                db = mask_t(rb, db, y);
    '                *Findex++ = db;
    '            }
    '        }
    '    }
    '}
    
    
    gl_setdot:		'Set a pixel to colour given gl_x,gl_y  
    ; clrs pixels colours not selected 
        fpx =  1<< (gl_x//8)   
        fbo  = gl_y* (width)/8 + gl_x/ 8
            if (colour & 1)then
                fbr[ fbo ] = fbr[ fbo ]|fpx
            else
                fbr[ fbo ] = fbr[ fbo ]&~fpx
            endif 
            #IF   colours <> 1
            if (colour & 2)then
                fbg[ fbo ] = fbg[ fbo ]|fpx
            else
                fbg[ fbo ] = fbg[ fbo ]&~fpx    
            endif 
            #endif
            #if colours =  3 
                if (colour & 4)then
                    fbb[ fbo ] = fbb[ fbo ]|fpx
                else
                    fbb[ fbo ] = fbb[ fbo ]&~fpx
                endif 
            #endif
    return
    
    
    grf_clr:
        tmp = width/8 * height
        while tmp
            tmp = tmp - 1
            if bgcolour then
                if bgcolour & 1 then fbr[tmp] = 255 
                 #if colours = 2                       
                if bgcolour & 2 then fbg[tmp] = 255
                  #endif 
                #if colours = 3     
                    if bgcolour & 4 then fbb[tmp] = 255
                #endif
            else
                fbr[tmp] = 0
                 #if colours = 2 
                fbg[tmp] = 0
                 #endif
                #if colours =  3 
                    fbb[tmp] = 0
                #endif
            endif
        wend
    return                   
    
    
    set8:        ;seems ok
    	gl_x = glc_x+glc_cx : gl_y=glc_y+glc_cy	    '1
    	gosub gl_setdot
    	gl_x = glc_cx-glc_x : gl_y=glc_y+glc_cy		'2	
    	gosub gl_setdot
    	gl_x = glc_cx+glc_x : gl_y=glc_cy-glc_y		'3	
    	gosub gl_setdot
    	gl_x = glc_cx-glc_x : gl_y=glc_cy-glc_y		'4	
    	gosub gl_setdot
    	gl_x = glc_y+glc_cx : gl_y=glc_x+glc_cy		'5
    	gosub gl_setdot			
    	gl_x = glc_cx-glc_y : gl_y=glc_cy+glc_x		'6	
    	gosub gl_setdot
    	gl_x = glc_cx+glc_y : gl_y=glc_cy-glc_x		'7	
    	gosub gl_setdot
    	gl_x = glc_cx-glc_y : gl_y=glc_cy-glc_x		'8	
    	gosub gl_setdot
    return
    
    
    '------------  gl_circle d  = diameter r = radius x,y are point locations ----------
    '*****  Given Center = glc_cx,glc_cy and Radius = glc_r            ***
    d_circ:         ;seems ok
      glc_x = 0
      glc_y = glc_r
      glc_s = gl_pi-2*glc_r
      while (glc_x <= glc_y)
          gosub set8
    	if (glc_s.15 =1) then
               glc_s = glc_s + (4*glc_x + 6)
             else
               glc_s = glc_s + (4*(glc_x-glc_y) + 10)
               glc_y = glc_y - 1
    	endif
    	glc_x = glc_x + 1
      wend
    return
    
    
    '----------------- 4 sided Star  ---------------------
    '***** Given Center = gl_cx,gl_cy and Radius = gl_r **********
    d_star4:    ;sus   r must be ? 3 and multiple of 3
      glc_x = 0
      glc_y = glc_r
      glc_s = gl_pi-2*glc_r
      while (glc_x <= glc_y)
          gosub set8
         glc_s = glc_s + (4*(glc_x-glc_y) + 10)
         glc_y = glc_y - 3
         glc_x = glc_x + 1
      wend
    return
    
    
    drect:
        gl_x2 = gl_x1+x1
        gl_y2 = gl_y1+y1-1
    gl_rect:   'Rectangle subroutine given gl_x1,gl_x2,gl_y1, gl_y2
            gosub chk_xy         
    	for gl_i= gl_x1 to gl_x2 
    		gl_x = gl_i
    		gl_y = gl_y1
              gosub gl_setdot
    	    gl_y = gl_y2
              gosub gl_setdot
    	next gl_i
    	for gl_i= gl_y1 to gl_y2 
    		gl_y = gl_i
    		gl_x = gl_x1
              gosub gl_setdot
    		gl_x = gl_x2
              gosub gl_setdot
    	next gl_i
    return
    
    
    '*** gl_gl_square45 turned 45 degrees ***
    '***** Given Center = gl_cx,gl_cy and Radius = gl_r *
    d_square45:     ;seems ok
      glc_x = 0
      glc_y = glc_r
      glc_s = gl_pi-2*glc_r
      while (glc_x <= glc_y)
          gosub set8
         glc_s = glc_s + (4*(glc_x-glc_y) + 10)
         glc_y = glc_y - 1
         glc_x = glc_x + 1
      wend
    return
    chk_xy:      ;seems ok
    	if gl_x1 > gl_x2 then
    		swap gl_x1,gl_x2
        endif
    	if gl_y1 > gl_y2 then
    		swap gl_y1,gl_y2
        endif
    return
    
    
    
    
    dline:
       gl_inc1 = 0
        if abs(s_yend - s_ystart) > abs(s_xend - s_xstart)  then
            swap s_xstart , s_ystart
            swap s_xend , s_yend
            gl_inc1 = 1
        endif
        if s_xstart > s_xend  then
            swap s_xstart , s_xend
            swap s_ystart , s_yend
        endif
        gl_inc2 = s_xend - s_xstart 
        gl_l = abs(s_yend - s_ystart )
        glc_s = gl_inc2.15
        gl_m = abs(gl_inc2)/2
        if glc_s then gl_m = -gl_m 
        if s_ystart < s_yend  then
            glc_s = 1
        else
            glc_s = -1
        endif
        while s_xstart <= s_xend
            if gl_inc1>0 then
               gl_x =  s_ystart
               gl_y =  s_xstart
               gosub gl_setdot
            else
               gl_x = s_xstart
               gl_y = s_ystart             
               gosub gl_setdot
            endif
            gl_m = gl_m - gl_l
            if gl_m.15 = 1 then 
                s_ystart = s_ystart + glc_s
                gl_m = gl_m + gl_inc2
            endif
            s_xstart = s_xstart + 1
        wenD
    return
    
    
    
    
    
    
    
    
    
    
    
    
    'dline:
    '   gl_inc1=0
    '    if abs(s_yend - s_ystart) > abs(s_xend - s_xstart) then
    '        gl_m = s_xstart;
    '        s_xstart = s_ystart;
    '        s_ystart = gl_m;
    '        gl_m = s_xend;
    '        s_xend = gl_y2;
    '        s_yend= gl_m;
    '        gl_inc1 = 1;
    '    endif
    '    if s_xstart > s_xend then
    '        gl_m = s_xstart;
    '        s_xstart = s_xend;
    '        s_xend = gl_m;
    '        gl_m = s_ystart;
    '        s_ystart = gl_y2;
    '        s_yend= gl_m;
    '    endif
    '    gl_inc2 = s_xend - s_xstart;
    '    gl_l = abs(s_yend- s_ystart);
    '    glc_s = gl_inc2.15
    '    gl_m = abs(gl_inc2) / 2;
    '    if glc_s then gl_m = ~gl_m;
    '    if s_ystart < s_yend then
    '        glc_s = 1;
    '     else 
    '        glc_s = -1;
    '    endif
    '    while s_xstart <= s_xend 
    '         if gl_inc1 > 0 then
    '            gl_x = s_ystart : gl_y= s_xstart             
    '         else 
    '            gl_x = s_xstart : gl_y= s_ystart
    '         endif
    '        gosub gl_setdot
    '        gl_m = gl_m - gl_l;
    '        if gl_m.15 then
    '            s_ystart = s_ystart+glc_s;
    '            gl_m = gl_m+gl_inc2;
    '        endif
    '        s_xstart = s_xstart +1;
    '    wend
    'return
    
    
    
    
    
    
    
    
    
    
    frect:
        s_ystart=y0
        s_yend=y0
        while y1
            s_xstart=x0
            s_xend=x0+s_xend-1
            gosub dLine
            s_ystart=s_ystart+1
            s_yend=s_ystart
            y1=y1-1
        wend
    return 
    
    
    
    
    
    
    ASM
    dmd_pmstr_out
        tblrd   *+
        movf   TABLAT,w
        bz	dmd_exit_pmstrout  ; EXIT ON Null char 
        banksel _fch
        MOVWF _fch
        banksel 0
        movff   TBLPTRU,_dmd_bigaddress
        movff   TBLPTRH,_dmd_bigaddress+1
        movff   TBLPTRL,_dmd_bigaddress+2
        L?CALL _drawch
        banksel _fw
        movf _fw, W
        bn  dmd_exit_pmstrout
        banksel _fx
        addwf _fx,f 
        incf _fx,f
        banksel 0
        movff   _dmd_bigaddress   ,TBLPTRU
        movff   _dmd_bigaddress+1 ,TBLPTRH
        movff   _dmd_bigaddress+2 ,TBLPTRL
        bra    dmd_pmstr_out        
    dmd_exit_pmstrout
        RST?RP
        return 
        
    dmd_str_out
        movf POSTINC1, W	; Get a character
        bz	dmd_exit_strout  ; EXIT ON Null char 
        banksel _fch
        MOVWF _fch
        banksel 0
        L?CALL _drawch
        banksel _fw
        movf _fw, W
        bn  dmd_exit_strout
        banksel _fx
        addwf _fx,f 
        incf _fx,f
        bra    dmd_str_out
    dmd_exit_strout
        banksel 0
        return
    
    
    DMDBMP?CCL  macro X0in ,Y0in,Lin
        ;MOVE?CW  Lin , _dmd_bigaddress
        MOVE?CB  X0in ,_x0 
        MOVE?CB  Y0in ,_y0 
        BANKSEL _dmd_bigaddress
        movlw   UPPER Lin
        movwf   _dmd_bigaddress+2
        movlw   HIGH Lin
        movwf   _dmd_bigaddress+1 
        movlw   LOW Lin
        movwf   _dmd_bigaddress 
        BANKSEL 0   
        L?CALL _sbmp
        endm
    
    
    
    
    SETFONT?L  macro Lin
        MOVE?CW  Lin , _fontaddr
        L?CALL _sfnt
        endm 
    FILLRECT?WWWW  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_x0 
        MOVE?WB    X1in ,_x1
        MOVE?WB    Y0in ,_y0
        MOVE?WB    Y1in ,_y1
        L?CALL _frect 
        endm  
    FILLRECT?WWBW  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_x0 
        MOVE?BB    X1in ,_x1
        MOVE?WB    Y0in ,_y0
        MOVE?WB    Y1in ,_y1
        L?CALL _frect 
        endm  
    
    
    FILLRECT?WWBB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_x0 
        MOVE?BB    X1in ,_x1
        MOVE?WB    Y0in ,_y0
        MOVE?BB    Y1in ,_y1
        L?CALL _frect 
        endm  
    FILLRECT?WWCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_x0 
        MOVE?CB    X1in ,_x1
        MOVE?WB    Y0in ,_y0
        MOVE?CB    Y1in ,_y1
        L?CALL _frect 
        endm       
    FILLRECT?WWWB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB  X0in ,_x0 
        MOVE?WB  X1in ,_x1 
        MOVE?WB  Y0in ,_y0
        MOVE?BB  Y1in ,_y1
        L?CALL _frect 
        endm        
    FILLRECT?BBBB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?BB     X0in ,_x0
        MOVE?BB     X1in ,_x1
        MOVE?BB     Y0in ,_y0
        MOVE?BB     Y1in ,_y1
        L?CALL _frect 
        endm  
    FILLRECT?CCCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?CB  X0in ,  _x0
        MOVE?CB  X1in ,  _x1
        MOVE?CB  Y0in,   _y0
        MOVE?CB  Y1in,   _y1
        L?CALL _frect      
      endm    
    FILLRECT?BBCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?BB  X0in ,  _x0
        MOVE?CB  X1in ,  _x1
        MOVE?BB  Y0in  , _y0
        MOVE?CB  Y1in,   _y1
        L?CALL _frect 
        endm    
    ;dr    
    DRAWRECT?WWWW  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_gl_x1
        MOVE?WB    X1in ,_x1
        MOVE?WB    Y0in ,_gl_y1
        MOVE?WB    Y1in ,_y1
        L?CALL _drect 
        endm  
    DRAWRECT?WWBW  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_gl_x1 
        MOVE?BB    X1in ,_x1
        MOVE?WB    Y0in ,_gl_y1
        MOVE?WB    Y1in ,_y1
        L?CALL _drect 
        endm  
    
    
    DRAWRECT?WWBB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_gl_x1 
        MOVE?BB    X1in ,_x1
        MOVE?WB    Y0in ,_gl_y1
        MOVE?BB    Y1in ,_y1
        L?CALL _drect 
        endm  
    DRAWRECT?WWCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_gl_x1 
        MOVE?CB    X1in ,_x1
        MOVE?WB    Y0in ,_gl_y1
        MOVE?CB    Y1in ,_y1
        L?CALL _drect 
        endm       
    DRAWRECT?WWWB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB  X0in ,_gl_x1 
        MOVE?WB  X1in ,_x1 
        MOVE?WB  Y0in ,_gl_y1
        MOVE?BB  Y1in ,_y1
        L?CALL _drect 
        endm        
    DRAWRECT?BBBB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?BB     X0in ,_gl_x1
        MOVE?BB     X1in ,_x1
        MOVE?BB     Y0in ,_gl_y1
        MOVE?BB     Y1in ,_y1
        L?CALL _drect 
        endm  
    DRAWRECT?CCCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?CB  X0in ,_gl_x1
        MOVE?CB  X1in ,_x1
        MOVE?CB  Y0in ,_gl_y1
        MOVE?CB  Y1in ,_y1
        L?CALL _drect      
      endm    
    DRAWRECT?BBCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?BB  X0in ,_gl_x1
        MOVE?CB  X1in ,_x1
        MOVE?BB  Y0in ,_gl_y1
        MOVE?CB  Y1in ,_y1
        L?CALL _drect 
        endm 
    ;CIRC
    DRAWCIRCLE?WWW  macro X0in ,Y0in ,Rad
        MOVE?WW    X0in , _glc_cx
        MOVE?WW    Rad  , _glc_r
        MOVE?WW    Y0in , _glc_cy
        L?CALL _d_circ 
        endm  
    DRAWCIRCLE?WWB  macro X0in ,Y0in ,Rad
        MOVE?WW    X0in , _glc_cx 
        MOVE?BW    Rad  , _glc_r
        MOVE?WW    Y0in , _glc_cy
        L?CALL _d_circ  
        endm 
    DRAWCIRCLE?WWC  macro X0in ,Y0in ,Rad
        MOVE?WW    X0in , _glc_cx1 
        MOVE?CW    Rad  , _glc_r
        MOVE?WW    Y0in , _glc_cy1
        L?CALL _d_circ  
        endm       
           
    DRAWCIRCLE?BBB  macro X0in ,Y0in ,Rad
        MOVE?BW     X0in , _glc_cx
        MOVE?BW     Rad  , _glc_r
        MOVE?BW     Y0in , _glc_cy
        L?CALL _d_circ     
        endm  
    DRAWCIRCLE?CCC  macro X0in ,Y0in ,Rad
        MOVE?CW  X0in , _glc_cx
        MOVE?CW  Rad  , _glc_r
        MOVE?CW  Y0in , _glc_cy
        L?CALL _d_circ       
      endm    
    DRAWCIRCLE?BBC  macro X0in ,Y0in ,Rad
        MOVE?BW  X0in , _glc_cx
        MOVE?CW  Rad  , _glc_r
        MOVE?BW  Y0in , _glc_cy
        L?CALL _d_circ 
        endm    
    ;LINE 
    DRAWLINE?WWWW  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_s_xstart
        MOVE?WB    X1in ,_s_xend
        MOVE?WB    Y0in ,_s_ystart
        MOVE?WB    Y1in ,_s_yend
        L?CALL _dline 
        endm  
    DRAWLINE?WWBW  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_s_xstart 
        MOVE?BB    X1in ,_s_xend
        MOVE?WB    Y0in ,_s_ystart
        MOVE?WB    Y1in ,_s_yend
        L?CALL _dline 
        endm 
    DRAWLINE?WWBB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_s_xstart
        MOVE?BB    X1in ,_s_xend
        MOVE?WB    Y0in ,_s_ystart
        MOVE?BB    Y1in ,_s_yend
        L?CALL _dline 
        endm  
    DRAWLINE?WWCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB    X0in ,_s_xstart
        MOVE?CB    X1in ,_s_xend
        MOVE?WB    Y0in ,_s_ystart
        MOVE?CB    Y1in ,_s_yend
        L?CALL _dline 
        endm       
    DRAWLINE?WWWB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?WB  X0in ,_s_xstart
        MOVE?WB  X1in ,_s_xend 
        MOVE?WB  Y0in ,_s_ystart
        MOVE?BB  Y1in ,_s_yend
        L?CALL _dline 
        endm        
    DRAWLINE?BBBB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?BB     X0in ,_s_xstart
        MOVE?BB     X1in ,_s_xend
        MOVE?BB     Y0in ,_s_ystart
        MOVE?BB     Y1in ,_s_yend
        L?CALL _dline 
        endm  
    DRAWLINE?CCCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?CB  X0in ,_s_xstart
        MOVE?CB  X1in ,_s_xend
        MOVE?CB  Y0in ,_s_ystart
        MOVE?CB  Y1in ,_s_yend
        L?CALL   _dline 
      endm  
    DRAWLINE?CCCB  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?CB  X0in ,_s_xstart
        MOVE?CB  X1in ,_s_xend
        MOVE?CB  Y0in ,_s_ystart
        MOVE?BB  Y1in ,_s_yend
        L?CALL   _dline 
      endm  
    DRAWLINE?CCCW macro X0in ,Y0in ,X1in ,Y1in
        MOVE?CB  X0in ,_s_xstart
        MOVE?CB  X1in ,_s_xend
        MOVE?CB  Y0in ,_s_ystart
        MOVE?WB  Y1in ,_s_yend
        L?CALL   _dline 
      endm      
    DRAWLINE?BBCC  macro X0in ,Y0in ,X1in ,Y1in
        MOVE?BB  X0in ,_s_xstart
        MOVE?CB  X1in ,_s_xend
        MOVE?BB  Y0in ,_s_ystart
        MOVE?CB  Y1in ,_s_yend
        L?CALL _dline 
        endm 
    DRAWLINE?CCCCC  macro X0in ,Y0in ,X1in ,Y1in,Col
        MOVE?CB  Col ,_colour
        MOVE?CB  X0in ,_s_xstart
        MOVE?CB  X1in ,_s_xend
        MOVE?CB  Y0in ,_s_ystart
        MOVE?CB  Y1in ,_s_yend
        L?CALL   _dline 
      endm 
           
    ;----------------------Strings------------------------------------    
    DMDSTR?CBB  macro Xin ,Yin ,Bin
            MOVE?CB   Xin ,_fx
            MOVE?BB   Yin  ,_fy
            MOVE?CB high Bin, FSR1H ;load highbyte 
            MOVE?CB low  Bin, FSR1L ;load low byte
            L?CALL  dmd_str_out
        endm         
    DMDSTR?CCB  macro Xin ,Yin ,Bin
            MOVE?CB  Xin ,_fx
            MOVE?CB  Yin  ,_fy
            MOVE?CB  high Bin, FSR1H ;load highbyte 
            MOVE?CB  low  Bin, FSR1L ;load low byte
            L?CALL  dmd_str_out
        endm  
    DMDSTR?CCBC  macro Xin ,Yin ,Bin,Col
            MOVE?CB  Xin ,_fx
            MOVE?CB  Yin  ,_fy
            MOVE?CB  Col ,_colour
            MOVE?CB  high Bin, FSR1H ;load highbyte 
            MOVE?CB  low  Bin, FSR1L ;load low byte
            L?CALL  dmd_str_out
        endm       
    DMDSTR?BBB  macro Xin ,Yin ,Bin
            MOVE?BB  Xin,_fx
            MOVE?BB  Yin,_fy
            MOVE?CB  high (Bin), FSR1H ;load highbyte 
            MOVE?CB  low (Bin), FSR1L ;load low byte
            L?CALL   dmd_str_out
        endm 
    DMDSTR?WBB  macro Xin ,Yin ,Bin
            MOVE?WB Xin,_fx 
            MOVE?BB  Yin,_fy
            MOVE?CB  high (Bin), FSR1H ;load highbyte 
            MOVE?CB  low (Bin), FSR1L ;load low byte
            L?CALL   dmd_str_out
        endm  
    DMDSTR?WWB  macro Xin ,Yin ,Bin
            MOVE?WB  Xin,_fx 
            MOVE?WB  Yin,_fy
            MOVE?CB  high (Bin), FSR1H ;load highbyte 
            MOVE?CB  low (Bin), FSR1L ;load low byte
            L?CALL   dmd_str_out
        endm 
    ;----[const String]---------------------------------------------------------------
    DMDSTR?S  macro Cin    
     local TheString, OverStr 
     goto OverStr 
    TheString 
     data Cin, 0 
    OverStr
        movlw   UPPER TheString
        movwf   TBLPTRU
        movlw   HIGH TheString 
        movwf   TBLPTRH
        movlw   LOW TheString
        movwf   TBLPTRL
        L?CALL dmd_pmstr_out 
      endm 
    DMDSTR?CCS  macro Xin ,Yin, Cin 
     local TheString, OverStr 
     goto OverStr 
    TheString 
     data Cin, 0 
    OverStr
        MOVE?CB  Xin ,_fx
        MOVE?CB  Yin ,_fy
        movlw   UPPER TheString
        movwf   TBLPTRU
        movlw   HIGH TheString 
        movwf   TBLPTRH
        movlw   LOW TheString
        movwf   TBLPTRL
        L?CALL dmd_pmstr_out 
      endm  
    DMDSTR?CCSC  macro Xin ,Yin,Bin,Col 
     local TheString, OverStr 
     goto OverStr 
    TheString 
      data Bin, 0 
    OverStr
        MOVE?CB  Xin ,_fx
        MOVE?CB  Yin ,_fy
        MOVE?CB  Col ,_colour
        movlw   UPPER TheString
        movwf   TBLPTRU
        movlw   HIGH TheString 
        movwf   TBLPTRH
        movlw   LOW TheString
        movwf   TBLPTRL
        L?CALL dmd_pmstr_out 
     endm
    
    
     ENDASM
    
    
    Jumpover_grx_Lib:
    Last edited by richard; - 20th December 2021 at 09:04.
    Warning I'm not a teacher

  7. #7
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,133


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    It seems that ssd1306_i2c.inc file is not compatible with 18F4550 in regard I2C routines. Either hardware I2C because SSPCON3 does not exist or in software IC2 because SSP1STAT, SSP1CON2 do not exist also.

    I am very reluctant to touch the include file, so any idea how to handle this please?

    I just used software I2C finally and commented out the two lines that had the problem. Then it compiled OK and first time I got the demo text on the tiny LCD! Is it safe what I did?

    Ioannis
    Last edited by Ioannis; - 23rd December 2021 at 20:02.

  8. #8
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: SSD1306 INCLUDE for PBP3

    not sure what you are trying to do
    but ssd1306_18.inc is needed for pic 18 along with font7x5_18.bas
    that system is a "light version" it has a fixed 5x7 width, the only way to change the font size is to alter the include


    the other version "grx.pbpmod" is more generic, pic18 only and uses variable width fonts and has drivers for multiple display types

Similar Threads

  1. SSD1306 Include example
    By timc in forum Code Examples
    Replies: 11
    Last Post: - 28th November 2017, 08:53
  2. SSD1306 start display problem
    By harryweb in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 14th December 2016, 19:16
  3. Using INCLUDE to add a text file in PBP3
    By Sumobob in forum PBP3
    Replies: 4
    Last Post: - 16th May 2016, 18:56
  4. PBP3 to include 18F97J94?
    By fowardbias in forum PBP3
    Replies: 1
    Last Post: - 18th December 2013, 16:42
  5. Help With OLED Display / 128X64 SSD1306
    By Denner in forum General
    Replies: 6
    Last Post: - 25th May 2013, 15:40

Members who have read this thread : 7

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts