Any idea's on porting this to PBP?


Closed Thread
Results 1 to 21 of 21

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Hey Ryan,

    mister_e's concept is correct, you just need to put it into the LCDOUT statement.

    LCDOUT Nibble1, Nibble2, Nibble3, Nibble4

    or you can just put it all in there in one shot...

    LCDOUT pat.Highbyte>>4, pat.Highbyte&$0F, pat.LowByte>>4, pat.Lowbyte&$0F
    <br>
    DT

  2. #2
    Join Date
    Sep 2006
    Location
    Indiana, USA
    Posts
    72


    Did you find this post helpful? Yes | No

    Default Hmm..

    Still just a blank LCD, I expected to get at least some garbage on the display. anyone got any other idea's what might be wrong? I added:
    LCDOUT "TEST"
    PAUSE 1000
    LCDOUT $FE, 1

    to the code just before the demo loop part and it display's correctly and then clear screens, so i guess its not totally blank, but it doesn't do much else.
    I also tried hooking the LCD to my BS2p and ran my modified version of the code using LCD out in proper pBasic format and it sorta worked but only displayed the bottom 1/4 of the numbers all shifted up to the top line. like what should be displaying on the 4th line of the LCD was showing on the top line and all the rest was off screen.

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


    Did you find this post helpful? Yes | No

    Default

    There's few missing details here
    OSC type & speed (4,8,16,20.... or internal)
    LCD DEFINEs
    Config Fuses
    Schematic

    Did you added ?
    DEFINE LCD_LINES 4

    You can also use LCDOUT $fe,1,"Hello"

    Some LCD may need some COMMANDUS and DATAUS fine tuning too.
    Last edited by mister_e; - 12th October 2006 at 06:22.
    Steve

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

  4. #4
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Here is a complete modification of Scott Edwards Program for big nums.

    Changes are marked in red, and have been tested.
    Code:
    ;Initialize your hardware first
    
    'BIGNUMS.BS2 (Display four 1" digits on 4x20 display)
    ' Connect the serial input of a Backpack-equipped 4x20 display to
    ' BS2 pin P0 and run this program. The program will define a set
    ' of symbols that allow it to display 4-line-tall numerals on the
    ' LCD. To incorporate this capability into your own programs, just
    ' substitute your code for the demo loop. When you want to display
    ' a value (0-9999) in big numerals, write it to dispVal, then
    ' gosub bigLCD.
    I       con 254 ' Instruction prefix.
    ClrLCD  con 1 ' Clear-LCD instruction.
    N96N    con $4054 ' 9600 baud, inverted, no parity.
    cgRAM   con 64 ' Address 0 of CG RAM.
    EEptr   var word ' Pointer into EEPROM.
    pat     var EEptr ' Alias for EEptr.
    dispVal var word ' Value to be displayed as big digits.
    temp    var byte ' Temporary byte variable.
    decade  var word
    nbl     var byte ' Index into number-pattern tables.
    digit   var byte ' Current digit to display
    line    var byte ' LCD line
    
    LCDOUT I,ClrLCD
    PAUSE 500
    
    ' ====This section may be omitted with newer (post July 96)
    ' ====4x20 Serial LCD modules. Cut from here...============== >>>
    bitPat0 DATA 0,0,0,1,3,7,15,31 ' Left-right up-ramp shape.
    bitPat1 DATA 0,0,0,16,24,28,30,31 ' Right-left " "
    bitPat2 DATA 31,15,7,3,1,0,0,0 ' Left-right down ramp.
    bitPat3 DATA 31,30,28,24,16,0,0,0 ' Right-left " "
    bitPat4 DATA 0,0,0,0,31,31,31,31 ' Lower block.
    bitPat5 DATA 31,31,31,31,0,0,0,0 ' Upper block.
    bitPat6 DATA 31,31,31,31,31,31,31,31 ' Full block.
    bitPat7 DATA 0,0,0,0,0,0,0,0 ' Full blank
    ' <<<...to here. ===============================================
    ;low 0 ' Make the serial output low
    ;pause 1000 ' Let the LCD wake up.
    ' ====This section may be omitted with newer (post July 96)
    ' ====4x20 Serial LCD modules. Cut from here...============= >>>
    ;serout 0,N96N,[I,cgRAM] ' Enter CG RAM.
    LCDOUT I,cgRAM
    
    for EEptr = 0 to 63 ' Write the bit patterns
        Read EEptr,temp ' to the LCD.
    ;    serout 0,N96N,[temp]
        lcdout temp
    next
    ' <<<...to here. ===============================================
    ;serout 0,N96N,[I,ClrLCD] ' Clear the LCD.
    LCDOUT I, ClrLCD
    pause 1
    ' ========================================================================
    ' Demo Loop: Show dispVal in Big Numerals, Increment, Loop
    ' ========================================================================
    again:
        gosub bigLCD
        dispVal = dispVal + 1
        pause 500
    goto again
    ' ========================================================================
    ' Subroutine Displaying Large Numbers
    ' ========================================================================
    bigLCD:
        for line = 0 to 3
            decade = 1000
            lookup line,[128,192,148,212],temp
            
    ;        serout 0,N96N,[I,temp]
            LCDOUT I, temp
            for digit = 3 to 0 step -1
                nbl = dispVal dig digit
                gosub getPattern
                if dispVal = 0 and digit = 0 then skip0
                if dispVal < decade then blankIt
                skip0:
    ;            serout 0,N96N,[pat.nib3,pat.nib2,pat.nib1,pat.nib0]
                LCDOUT pat.Highbyte>>4, pat.Highbyte&$0F, pat.LowByte>>4, pat.Lowbyte&$0F
    
                goto cont
                blankIt:
    ;            serout 0,N96N,["    "]
                lcdout "    "
                cont:
                if digit = 0 then skip1
    ;            serout 0,N96N,[32]
                LCDOUT 32
                skip1:
                decade = decade/10
            next
        next
    return
    ' Subroutines Defining Big-Character Patterns
    ' ========================================================================
    getPattern:
    branch line,[first,second,third,fourth]
    ' 0 1 2 3 4 5 6 7 8 9
    ' --- --- --- --- --- --- --- --- --- ---
    first:
    lookup2 nbl,[$0551,$7067,$0551,$0551,$6776,$6555,$0557,$2556,$0551,$0551],pat
    return
    second:
    lookup2 nbl,[$6776,$7767,$7743,$7743,$6776,$2441,$6041,$7703,$2443,$6776],pat
    return
    third:
    lookup2 nbl,[$6776,$7767,$0577,$7751,$2556,$7776,$6776,$7767,$0551,$2536],pat
    return
    fourth:
    lookup2 nbl,[$2443,$7464,$6444,$2443,$7776,$2443,$2443,$7767,$2443,$7443],pat
    return
    Not too hard eh.
    DT

  5. #5
    Join Date
    Sep 2006
    Location
    Indiana, USA
    Posts
    72


    Did you find this post helpful? Yes | No

    Talking Ah!

    Ok, the step -1 was doing it, i tried LOOKUP2 as a last resort before my last post, but still didnt help. thanks, Darrel! works fine now. i probably would have never got that in a million years. Thanks again!

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Honestly..., I had to use the MCSP debugger to find the step -1. Saw that the FOR loop was never getting executed. Made it easy.

    But a million years, you'd have got it.

    Glad to help.
    <br>
    DT

  7. #7
    Join Date
    Oct 2006
    Location
    Cape Town SA
    Posts
    23


    Did you find this post helpful? Yes | No

    Default Youre the best!

    Darrel you are amazing!
    I tried this out yesterday and it exactly what I'm looking for ( I am making a fuel consumption / complex odometer for my ancient Land Rover) and as I can't see close up without glasses, but have perfect long distance vision, a normal LCD display on the dashboard is quite useless and I had been considering large 7 seg display, but this is beautiful! Thanks a million.

    PS: any tips on saving a counter on power-down? I was going to have the PIC running off big electrolytic for long power down delay, and then have one port sensing the instant loss of the (voltage divided) 12v ignition and then quickly write to EEProm, but would it be clever to use a brown out flag or something like that?

Similar Threads

  1. PBP Book
    By Bruce in forum Off Topic
    Replies: 83
    Last Post: - 4th October 2021, 12:55
  2. Generating Timed Fades in PBP - ideas ?
    By bcd in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 10th August 2008, 00:18
  3. Compiler differences between PBP 2.33 & 2.46
    By nikopolis in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 2nd May 2006, 19:01
  4. Newby- PBP wont compile for 18F (MPLAB)
    By jd76duke in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 17th December 2005, 23:30
  5. PBP / XP Crash
    By pondindustrial in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 27th November 2005, 03:16

Members who have read this thread : 1

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