Big characters on HD44780 4x20


Closed Thread
Results 1 to 24 of 24

Hybrid View

  1. #1
    Join Date
    Jan 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mister_e View Post
    Will people stopping using 16F84A one day? LOL!

    Anyways, do you mind if i try to do the code for the 16F877A right now as you'll end up using this one anyway?

    I'm only using it because it's the test pic! I've flashed it at least 500 times!

    This is a little bit smaller code:

    Code:
    DEFINE OSC 12
    define LCD_LINES 4
    
    Clr     CON 1
    Comm    Con $FE
    LINE1   con 2
    LINE2   con $c0
    LINE3   con $94
    LINE4   con $d4
    Dx      con $14
    
    Begin:
            Pause 500       
      LCDOUT  $FE,$40,$1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F  ' Cust Char #0  
      LCDOUT  $FE,$48,$1F,$1F,$1F,$1F,$00,$00,$00,$00  ' Cust Char #1  
      LCDOUT  $FE,$50,$00,$00,$00,$00,$1F,$1F,$1F,$1F  ' Cust Char #2  
      LCDOUT  $FE,$58,$00,$00,$00,$0E,$1F,$1F,$1F,$0E  ' Cust Char #3  
      LCDOUT  $FE,$60,$00,$00,$00,$00,$00,$1F,$1F,$1F  ' Cust Char #4  
      LCDOUT  $FE,$68,$1F,$1F,$1F,$00,$00,$00,$00,$00  ' Cust Char #5  
      LCDOUT  $FE,$70,$00,$01,$03,$07,$0F,$1F,$1F,$1F  ' Cust Char #6  
      LCDOUT  $FE,$78,$00,$00,$00,$00,$00,$00,$01,$03  ' Cust Char #7    
    Main:
            LCDOUT comm, clr
            lcdout comm, line1, "T", COMM, LINE2, "E", COMM, LINE3, "S", COMM, LINE4, "T"
            PAUSE 1000
            GOSUB NUMERO11
            PAUSE 1000
            GOSUB NUMERO22
            PAUSE 1000
            GOSUB NUMERO33
            pause 1000
            gosub punto3
            pause 1000
            gosub numero44
            PAUSE 3000
            GOTO MAIN
    
    Numero11:
            lcdout comm, $82, $07, $06, $00
            lcdout comm, $C4, $00
            lcdout comm, $98, $00
            lcdout comm, $D8, $00        
            RETURN
            
    Numero22:
            LCDOUT comm, $86, $01, $01, $01, $00
            LCDOUT comm, $C6, $02, $02, $02, $00
            LCDOUT comm, $9A, $00, $01, $01, $01
            LCDOUT comm, $DA, $00, $02, $02, $02
            RETURN
    Numero33:
            LCDOUT comm, $8B, $01, $01, $01, $00
            LCDOUT comm, $CC, $04, $04, $00
            LCDOUT comm, $A0, $05, $05, $00
            LCDOUT comm, $DF, $02, $02, $02, $00
            RETURN 
    Punto3:
            LCDOUT Comm, $E3, $03
            return
    Numero44:
            lcdout comm, $90, $00
            lcdout COMM, $D0, $00, COMM, $D3, $00
            lcdout COmm, $A4, $01, $01, $01, $00
            lcdout comm, $E7, $00
            return      
    end
    But of course it's not what I want!

  2. #2
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    OK then i'll try with my favourite 16F84A

    OK everybody, the code shrinking competition start RIGHT NOW!
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  3. #3
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Doh! i miss this line...

    But of course it's not what I want!
    So what do you want? smaller only ?
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  4. #4
    Join Date
    Jan 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mister_e View Post
    Doh! i miss this line...



    So what do you want? smaller only ?
    Simply better! I'm working on it, in about 1 hour I will post the result!

  5. #5
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Maybe not FAR BETTER but interesting...
    Code:
    Clr     CON 1
    Comm    Con $FE
    LINE1   con $80  ;2
    LINE2   con $c0
    LINE3   con $94
    LINE4   con $d4
    Dx      con $14
    offset  var byte
    Begin:
            Pause 500       
            LCDOUT  $FE,$40,$1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F  ' Cust Char #0  
            LCDOUT  $FE,$48,$1F,$1F,$1F,$1F,$00,$00,$00,$00  ' Cust Char #1  
            LCDOUT  $FE,$50,$00,$00,$00,$00,$1F,$1F,$1F,$1F  ' Cust Char #2  
            LCDOUT  $FE,$58,$00,$00,$00,$00,$00,$0E,$0E,$0E  ' Cust Char #3  
            LCDOUT  $FE,$60,$00,$00,$00,$00,$00,$1F,$1F,$1F  ' Cust Char #4  
            LCDOUT  $FE,$68,$1F,$1F,$1F,$00,$00,$00,$00,$00  ' Cust Char #5  
            LCDOUT  $FE,$70,$00,$01,$03,$07,$0F,$1F,$1F,$1F  ' Cust Char #6  
            LCDOUT  $FE,$78,$00,$00,$00,$00,$00,$00,$01,$03  ' Cust Char #7  
    Main:
            offset=0
            LCDOUT comm, clr
            lcdout comm, line1, "T", _
                   COMM, LINE2, "E", _
                   COMM, LINE3, "S", _
                   COMM, LINE4, "T"
            offset=2
            PAUSE 1000
            GOSUB NUMERO2
            PAUSE 1000
            GOSUB NUMERO1
            PAUSE 1000
            GOSUB NUMERO3
            PAUSE 2000
            GOTO MAIN
    
    Numero1:
            LCDOUT COMM,LINE1+offset,7,6,0,_
                   COMM,LINE2+offset+2,0,_
                   COMM,LINE3+offset+2,0,_
                   COMM,LINE4+offset+2,0 
    
            offset=offset+4
            RETURN
    
    Numero2:
            LCDOUT COMM,(LINE1+offset),1,1,1,0,_
                   COMM,(LINE2+offset),2,2,2,0,_
                   COMM,(LINE3+offset),0,1,1,1,_
                   COMM,(LINE4+offset),0,2,2,2                
            offset=offset+5
            RETURN
    
    Numero3:
            LCDOUT COMM,LINE1+offset,1,1,1,0,_
                   COMM,LINE2+offset+1, 4, 4, 0,_
                   COMM,LINE3+offset+1, 5, 5, 0,_
                   COMM,LINE4+offset,$02, $02, $02, $00
            offset=offset+5
            RETURN
    I'm still working on something...
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  6. #6
    Join Date
    Jan 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    I think this is quite good:

    Code:
    DEFINE OSC 12
    define LCD_LINES 4
    
    Clr     CON 1
    Comm    Con $FE
    LINE1   con 2
    LINE2   con $c0
    LINE3   con $94
    LINE4   con $d4
    Offset  VAR BYTE
    
    Begin:
            Pause 500       
      LCDOUT  254,64,31,31,31,31,0,0,0,0       ' Cust Char #0  
      LCDOUT  254,72,0,0,0,0,31,31,31,31       ' Cust Char #1  
      LCDOUT  254,80,31,31,31,15,7,3,1,0       ' Cust Char #2  
      LCDOUT  254,88,31,31,31,30,28,24,16,0    ' Cust Char #3  
      LCDOUT  254,96,0,16,24,28,30,31,31,31    ' Cust Char #4  
      LCDOUT  254,104,0,1,3,7,15,31,31,31      ' Cust Char #5
      LCDOUT  254,112,31,31,31,31,31,31,31,31  ' Cust Char #6   
      LCDOUT  254,120,0,0,0,14,31,31,31,14     ' Cust Char #7  
        
    Main:
            LCDOUT comm, clr
            lcdout comm, line1, "T", COMM, LINE2, "E", COMM, LINE3, "S", COMM, LINE4, "T"
            OFFSET=0
            gOSUB NUMERO0
            OFFSET=5
            GOSUB NUMERO1
            OFFSET=10
            GOSUB NUMERO2
            OFFSET=15
            GOSUB NUMERO3
            PAUSE 9000
            LCDOUT COMM, CLR
            OFFSET=0
            GOSUB NUMERO4
            OFFSET=5
            GOSUB NUMERO5
            OFFSET=10
            GOSUB NUMERO6
            OFFSET=15
            GOSUB NUMERO7
            PAUSE 9000
            LCDOUT COMM, CLR
            OFFSET=0
            GOSUB NUMERO8
            OFFSET=5
            GOSUB NUMERO9
            OFFSET=5
            GOSUB PUNTO
            OFFSET=10
            GOSUB NUMERO0
            PAUSE 9000
            GOTO MAIN       
               
    END
        
    Punto:
            LCDOUT Comm, ($D9 + OFFSET), $07
            return
    Numero0:
            LCDOUT COMM, ($81 + OFFSET), $05, $FF, $FF, $04
            LCDOUT COMM, ($C1 + OFFSET), $FF, COMM, ($C4 + OFFSET), $FF
            LCDOUT COMM, ($95 + OFFSET), $FF, COMM, ($98 + OFFSET), $FF
            LCDOUT COMM, ($D5 + OFFSET), $02, $FF, $FF, $03
            RETURN
    Numero1:
            lcdout comm, ($82 + OFFSET), $05, $FF
            lcdout comm, ($C3 + OFFSET), $FF
            lcdout comm, ($97 + OFFSET), $FF
            lcdout comm, ($D7 + OFFSET), $FF        
            RETURN
            
    Numero2:
            LCDOUT comm, ($81 + OFFSET), $00, $00, $00, $04
            LCDOUT comm, ($C4 + OFFSET), $FF
            LCDOUT comm, ($95 + OFFSET), $05, $00, $00, $00
            LCDOUT comm, ($D5 + OFFSET), $FF, $01, $01, $01
            RETURN
    Numero3:
            LCDOUT comm, ($81 + OFFSET), $00, $00, $00, $04
            LCDOUT comm, ($C2 + OFFSET), $01, $01, $FF
            LCDOUT comm, ($96 + OFFSET), $00, $00, $FF
            LCDOUT comm, ($D5 + OFFSET), $01, $01, $01, $03
            RETURN 
    
    Numero4:
            lcdout comm, ($81 + OFFSET), $FF
            lcdout COMM, ($C1 + OFFSET), $FF, COMM, ($C4 + OFFSET), $FF
            lcdout COmm, ($95 + OFFSET), $00, $00, $00, $FF
            lcdout comm, ($D8 + OFFSET), $FF
            return      
    Numero5:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $00
            LCDOUT COMM, ($C1 + OFFSET), $FF
            LCDOUT COMM, ($95 + OFFSET), $00, $00, $00, $04
            LCDOUT COMM, ($D5 + OFFSET), $01, $01, $01, $03
            RETURN    
    Numero6:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00
            LCDOUT COMM, ($C1 + OFFSET), $FF
            LCDOUT COMM, ($95 + OFFSET), $FF, $00, $00, $04
            LCDOUT COMM, ($D5 + OFFSET), $02, $01, $01, $03
            RETURN
    Numero7:
            LCDOUT COMM, ($81 + OFFSET), $00, $00, $00, $FF
            LCDOUT COMM, ($C3 + OFFSET), $01, $FF
            LCDOUT COMM, ($97 + OFFSET), $00, $FF
            LCDOUT COMM, ($D8 + OFFSET), $FF
            RETURN
    Numero8:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $04
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $03
            LCDOUT COMM, ($95 + OFFSET), $05, $00, $00, $04
            LCDOUT COMM, ($D5 + OFFSET), $02, $01, $01, $03
            RETURN       
    Numero9:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $04
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $FF
            LCDOUT COMM, ($98 + OFFSET), $FF
            LCDOUT COMM, ($D6 + OFFSET), $01, $01, $03
            RETURN
    It's "only" 1002 words and about 900 words w/o the little "show" in Main.

  7. #7
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by erpalma View Post
    I think this is quite good:

    Code:
    DEFINE OSC 12
    define LCD_LINES 4
    
    Clr     CON 1
    Comm    Con $FE
    LINE1   con 2
    LINE2   con $c0
    LINE3   con $94
    LINE4   con $d4
    Offset  VAR BYTE
    
    Begin:
            Pause 500       
      LCDOUT  254,64,31,31,31,31,0,0,0,0       ' Cust Char #0  
      LCDOUT  254,72,0,0,0,0,31,31,31,31       ' Cust Char #1  
      LCDOUT  254,80,31,31,31,15,7,3,1,0       ' Cust Char #2  
      LCDOUT  254,88,31,31,31,30,28,24,16,0    ' Cust Char #3  
      LCDOUT  254,96,0,16,24,28,30,31,31,31    ' Cust Char #4  
      LCDOUT  254,104,0,1,3,7,15,31,31,31      ' Cust Char #5
      LCDOUT  254,112,31,31,31,31,31,31,31,31  ' Cust Char #6   
      LCDOUT  254,120,0,0,0,14,31,31,31,14     ' Cust Char #7  
        
    Main:
            LCDOUT comm, clr
            lcdout comm, line1, "T", COMM, LINE2, "E", COMM, LINE3, "S", COMM, LINE4, "T"
            OFFSET=0 : gOSUB NUMERO0
            OFFSET=5 : GOSUB NUMERO1
            OFFSET=10 : GOSUB NUMERO2
            OFFSET=15 : GOSUB NUMERO3
            PAUSE 9000 : LCDOUT COMM, CLR
            OFFSET=0 : GOSUB NUMERO4
            OFFSET=5 : GOSUB NUMERO5
            OFFSET=10 : GOSUB NUMERO6
            OFFSET=15 : GOSUB NUMERO7
            PAUSE 9000 : LCDOUT COMM, CLR
            OFFSET=0 : GOSUB NUMERO8
            OFFSET=5 : GOSUB NUMERO9
            OFFSET=5 : GOSUB PUNTO
            OFFSET=10 : GOSUB NUMERO0
            PAUSE 9000 : GOTO MAIN       
               
    END
        
    Punto:
            LCDOUT Comm, ($D9 + OFFSET), $07 : return
    Numero0:
            LCDOUT COMM, ($81 + OFFSET), $05, $FF, $FF, $04
            GOSUB COMBO1
            LCDOUT COMM, ($95 + OFFSET), $FF, COMM, ($98 + OFFSET), $FF
            LCDOUT COMM, ($D5 + OFFSET), $02, $FF, $FF, $03
            RETURN
    Numero1:
            lcdout comm, ($82 + OFFSET), $05, $FF
            lcdout comm, ($C3 + OFFSET), $FF
            lcdout comm, ($97 + OFFSET), $FF
            lcdout comm, ($D7 + OFFSET), $FF        
            RETURN
    Numero2:
            GOSUB COMBO2
            LCDOUT comm, ($C4 + OFFSET), $FF
            LCDOUT comm, ($95 + OFFSET), $05, $00, $00, $00
            LCDOUT comm, ($D5 + OFFSET), $FF, $01, $01, $01
            RETURN
    Numero3:
            GOSUB COMBO2
            LCDOUT comm, ($C2 + OFFSET), $01, $01, $FF
            LCDOUT comm, ($96 + OFFSET), $00, $00, $FF
            GOSUB COMBO3
            RETURN 
    Numero4:
            lcdout comm, ($81 + OFFSET), $FF
            GOSUB COMBO1
            GOSUB COMBO4
            GOSUB COMBO5
            return      
    Numero5:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $00
            GOSUB COMBO6
            GOSUB COMBO4
            GOSUB COMBO3
            RETURN    
    Numero6:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00
            GOSUB COMBO6
            LCDOUT COMM, ($95 + OFFSET), $FF, $00, $00, $04
            GOSUB COMBO7
            RETURN
    Numero7:
            GOSUB COMBO2
            LCDOUT COMM, ($C3 + OFFSET), $01, $FF
            LCDOUT COMM, ($97 + OFFSET), $00, $FF
            GOSUB COMBO5
            RETURN
    Numero8:
            GOSUB COMBO8
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $03
            LCDOUT COMM, ($95 + OFFSET), $05, $00, $00, $04
            GOSUB COMBO7
            RETURN       
    Numero9:
            GOSUB COMBO8
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $FF
            GOSUB COMBO5
            LCDOUT COMM, ($D6 + OFFSET), $01, $01, $03
            RETURN
    COMBO1:
            LCDOUT COMM, ($C1 + OFFSET), $FF, COMM, ($C4 + OFFSET), $FF
            RETURN
    COMBO2:
            LCDOUT comm, ($81 + OFFSET), $00, $00, $00, $04
            RETURN
    COMBO3:
            LCDOUT comm, ($D5 + OFFSET), $01, $01, $01, $03
            RETURN
    COMBO4:
            LCDOUT comm, ($95 + OFFSET), $00, $00, $00, $FF
            RETURN
    COMBO5:
            LCDOUT comm, ($D8 + OFFSET), $FF
            RETURN
    COMBO6:
            LCDOUT COMM, ($C1 + OFFSET), $FF
            RETURN
    COMBO7:
            LCDOUT COMM, ($D5 + OFFSET), $02, $01, $01, $03
            RETURN
    COMBO8:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $04
            RETURN
    It's "only" 1002 words and about 900 words w/o the little "show" in Main.
    I combined a few of your lcdout statement into gosub's. See how much (if any) code space that saves/uses.

Similar Threads

  1. Only the first 8 characters.
    By timseven in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 22nd September 2009, 01:43
  2. Big big big memory or tiny SDs!
    By Ron Marcus in forum Off Topic
    Replies: 9
    Last Post: - 25th May 2007, 18:02
  3. Led scrolling display: How to mirror characters?
    By mahia2005 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 11th May 2007, 03:25
  4. LCD 16 characters inline: only first 8 work
    By Mugel in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 20th October 2006, 22:07
  5. LCD 4x20 HD44780
    By inteco in forum mel PIC BASIC
    Replies: 13
    Last Post: - 27th June 2006, 16:52

Members who have read this thread : 0

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