need help in lookup


Closed Thread
Results 1 to 28 of 28

Hybrid View

  1. #1
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    OK I am not clear on what you want to do. Are you still wanting to retrieve your lookup from external eeprom? Because that is way more code than pulling it out of your main chip. Look at my tachometer code. I stored those values in the on chip eeprom, but I could have just as easily used a lookup table in code space, the primary immediate advantage to storing it in eeprom, is if you change to a different display you can easily change the eeprom data, to match.
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  2. #2
    Join Date
    Apr 2009
    Posts
    36


    Did you find this post helpful? Yes | No

    Default

    thank you joe, the problem i have is not lookup or eeprom or lcd,the problem is when i put variables the code doesnt works, like when i put the variables with the code above. i have problem when the pic start it losts betweenm the main shiftout and the variable so it doesnt work bcz im pausing the variable 1000 and shiftout is too fast so can i see the numbers on lcd ,the lcd and numbers shown good but just i add any variables it doesnt work or shift out things , i use pic 16f84 i think it hasnt analog stuff , thank you joe for your best


    for b = 0 to 9
    lookup n, [...,...,...,],bo
    or read ..,..
    pause 1000
    next b
    example
    Include "modedefs.bas"
    'DEFINE SHIFT_PAUSEUS 1

    DEFINE OSC 4
    SDO VAR PortB.0
    SCLK var PortB.1
    DPIN var PORTA.0
    CPIN var PORTA.1
    B0 var byte
    B1 var byte
    B2 var byte
    B3 var byte
    B4 var byte

    symbol Digit_1 = portb.4 renaming portb.4 to Digit_1, These can only hold the value 1 or 0

    symbol Digit_2 = portb.5
    symbol Digit_3 = portb.6
    symbol Digit_4 = portb.7

    SCLK = 8 attempt to give portb.1 the value of 8 ???
    TRISB = 0 set all port b as outputs
    for b3 = 0 to 9
    I2CREAD DPIN,CPIN,$A0,b3,[B1]
    pause 1000
    next b
    main:
    Digit_2 = 1 Make renamed ports HIgh.
    Digit_3 = 1
    digit_4 = 1
    SHiftOUT SDO,SCLK,0,[b1]
    Digit_1 = 0

    pause 1
    Digit_1 = 1
    Digit_3 = 1
    digit_4 = 1
    SHiftOUT SDO,SCLK,0,[b2]
    Digit_2 = 0

    pause 1
    Digit_1 = 1
    Digit_2 = 1
    digit_4 = 1
    SHiftOUT SDO,SCLK,0,[..]
    Digit_3 = 0

    pause 1
    Digit_1 = 1
    Digit_2 = 1
    digit_3= 1
    SHiftOUT SDO,SCLK,0,[..]
    Digit_4 = 0

    pause 1
    goto main

    end

    and shiftout the variables it keeps just blinkin very slow no numbers nothings .
    Last edited by malwww; - 14th May 2009 at 04:32.

  3. #3
    Join Date
    Apr 2009
    Posts
    36


    Did you find this post helpful? Yes | No

    Default

    hi again joe i found this link it has a few projects maybe you'll like it http://www.compsys1.com/workbench/

  4. #4
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    I wrote you a counter, here is the code, would you like fries and a coke?
    Code:
    @ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF &_CP_OFF & _BODEN_OFF & _LVP_OFF
    
    DEFINE OSC 4
    
    SDO  Var PortB.4
    SCLK Var PortB.5
    DLE  Var PortB.7
    EECON1 = 7
    B0      Var WORD
    B1      Var byte
    
    D1      Var byte
    D10     Var byte
    D100    Var Byte
    D1000   Var Byte
    ONES    Var Byte
    TENS    Var Byte
    HUNS    Var Byte
    THOUS   Var Byte
    'WPUA = %00110001
    'ANSEL   = 0  ' FOR USE IN 16F690
    'ANSELH  = 0
    CCP1CON = 0
    'CM1CON0 = 0
    'CM2CON0 = 0
    CMCON = 7   ' Disable comparators 16F648A
    OPTION_REG = 0     '16f628a       
            'OPTION_REG = %00111000     ' set for 16f690  
    data @0,252,96,218,242,102,182,190,224,254,246
    Pause 10
     PORTB = 0
     PORTA = 0
     TRISB = %00000000 ' lower 4 pins outputs
     TRISA = %00000001 ' RA2 = TMR0 clock input
     
    Main:
    count portA.0,100,b1
     B0 = B0+B1   'STORE THE RESULTS BETWEEN COUNTER LOOPS
     If B0 >= 9999 then B0 = 0
    
    D1    = b0 DIG 0        ' Load Thousands Digit
        Read D1, ONES           ' Convert and Load Thousands Variable
    d10   = B0 DIG 1        ' Load Hundreds Digit
        READ D10,TENS           ' Convert and Load Hundreds Variable
    D100  = B0 DIG 2        ' Load Tens Digit
        READ D100,HUNS          ' Convert and Load Tens Variable
    D1000 = B0 DIG 3        ' Load Ones Digit
        READ D1000,THOUS        ' Convert and Load Ones Variable
    Shiftout SDO,SCLK,4,[ONES\8,TENS\8,HUNS\8,THOUS\8]   ' Send digits to display module 0
    PAUSE 10
    HIGH PORTB.7
    pulsout DLE, 125 
    pause 12
    Goto MAIN
    
    end
    Last edited by Archangel; - 14th May 2009 at 10:12.
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  5. #5
    Join Date
    Apr 2009
    Posts
    36


    Did you find this post helpful? Yes | No

    Default

    thank you joe for helping i did that code im still fighting with it it didnt work but its good i have took some more ideas about variables , have a great day .!

  6. #6
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    It works here, I tried it first on 16f690, and this version on 16f628A, 16f648A and it works on both, I uses a simple blinky to drive the count as it's output is clean unlike a switch.
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  7. #7
    Join Date
    Apr 2009
    Posts
    36


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Joe S. View Post
    It works here, I tried it first on 16f690, and this version on 16f628A, 16f648A and it works on both, I uses a simple blinky to drive the count as it's output is clean unlike a switch.

    hi joe, im using dsr display which has ic 74hc164 and 4 wires for each digits now i know there no ports output to count digits throu the lcd ,and ur code it works just 1 digit when i plug 1 dgit wire to the GND, i wanted to enable each port to change digits for shiftout and i use pic16f84, sorry for bothering you that much joe and thank you so much for teaching me ,


    define _config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF &_CP_OFF & _BODEN_OFF & _LVP_OFF

    DEFINE OSC 4

    SDO Var PortB.4
    SCLK Var PortB.5
    DLE Var PortB.7
    EECON1 = 7
    B0 Var WORD
    B1 Var byte

    D1 Var byte
    D10 Var byte
    D100 Var byte
    D1000 Var byte
    ONES Var Byte
    TENS Var Byte
    HUNS Var Byte
    THOUS Var Byte
    'WPUA = %00110001
    'ANSEL = 0 ' FOR USE IN 16F690
    'ANSELH = 0
    'CCP1CON = 0
    'CM1CON0 = 0
    'CM2CON0 = 0
    'CMCON = 7 ' Disable comparators 16F648A
    OPTION_REG = 0 '16f628a
    'OPTION_REG = %00111000 ' set for 16f690
    data @0,252,96,218,242,102,182,190,224,254,246
    Pause 10
    PORTB = 0
    PORTA = 0
    TRISB = %00000000 ' lower 4 pins outputs
    TRISA = %00001 ' RA2 = TMR0 clock input

    Main:

    B0 = B0+B1 'STORE THE RESULTS BETWEEN COUNTER LOOPS
    If B0 >= 9999 then B0 = 0

    D1 = b0 DIG 0 ' Load Thousands Digit
    Read D1, ONES ' Convert and Load Thousands Variable

    d10 = B0 DIG 1 ' Load Hundreds Digit
    READ D10,TENS ' Convert and Load Hundreds Variable

    D100 = B0 DIG 2 ' Load Tens Digit
    READ D100,HUNS ' Convert and Load Tens Variable

    D1000 = B0 3 ' Load Ones Digit
    READ D1000,THOUS ' Convert and Load Ones Variable

    Shiftout SDO,SCLK,4,[ONES\8,TENS\8,HUNS\8,THOUS\8] 'when it shiftout it needs to eneble each digits bcz i have 4 wires i 'donno where i add them in this code so when it shiftout the 0 dig it enebles digit 1 on lcd then 2 so on i use digital satellite receiver 7 segments 4 digit it has 74hc164 for serial input data and clock then paralil output to 7 segments and each 1 wire ,from each digit i wanted to plug them in the pic so i need to eddit the code im still trying lol'
    PAUSE 10
    HIGH PORTB.7
    pulsout DLE, 125
    pause 12
    Goto MAIN

    end
    Attached Images Attached Images  
    Last edited by malwww; - 16th May 2009 at 14:05.

  8. #8
    Join Date
    Apr 2009
    Posts
    36


    Did you find this post helpful? Yes | No

    Default

    still waiting help, in this 7 seg with 74 hc164 ,i drawed a sample schema , thanks

  9. #9
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by malwww View Post
    hi joe, im using dsr display which has ic 74hc164 and 4 wires for each digits now i know there no ports output to count digits throu the lcd ,and ur code it works just 1 digit when i plug 1 dgit wire to the GND, i wanted to enable each port to change digits for shiftout and i use pic16f84, sorry for bothering you that much joe and thank you so much for teaching me ,


    define _config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF &_CP_OFF & _BODEN_OFF & _LVP_OFF

    DEFINE OSC 4

    SDO Var PortB.4
    SCLK Var PortB.5
    DLE Var PortB.7
    EECON1 = 7
    B0 Var WORD
    B1 Var byte

    D1 Var byte
    D10 Var byte
    D100 Var byte
    D1000 Var byte
    ONES Var Byte
    TENS Var Byte
    HUNS Var Byte
    THOUS Var Byte
    'WPUA = %00110001
    'ANSEL = 0 ' FOR USE IN 16F690
    'ANSELH = 0
    'CCP1CON = 0
    'CM1CON0 = 0
    'CM2CON0 = 0
    'CMCON = 7 ' Disable comparators 16F648A
    OPTION_REG = 0 '16f628a
    'OPTION_REG = %00111000 ' set for 16f690
    data @0,252,96,218,242,102,182,190,224,254,246
    Pause 10
    PORTB = 0
    PORTA = 0
    TRISB = %00000000 ' lower 4 pins outputs
    TRISA = %00001 ' RA2 = TMR0 clock input

    Main:

    B0 = B0+B1 'STORE THE RESULTS BETWEEN COUNTER LOOPS
    If B0 >= 9999 then B0 = 0

    D1 = b0 DIG 0 ' Load Thousands Digit
    Read D1, ONES ' Convert and Load Thousands Variable

    d10 = B0 DIG 1 ' Load Hundreds Digit
    READ D10,TENS ' Convert and Load Hundreds Variable

    D100 = B0 DIG 2 ' Load Tens Digit
    READ D100,HUNS ' Convert and Load Tens Variable

    D1000 = B0 3 ' Load Ones Digit
    READ D1000,THOUS ' Convert and Load Ones Variable

    Shiftout SDO,SCLK,4,[ONES\8,TENS\8,HUNS\8,THOUS\8] 'when it shiftout it needs to eneble each digits bcz i have 4 wires i 'donno where i add them in this code so when it shiftout the 0 dig it enebles digit 1 on lcd then 2 so on i use digital satellite receiver 7 segments 4 digit it has 74hc164 for serial input data and clock then paralil output to 7 segments and each 1 wire ,from each digit i wanted to plug them in the pic so i need to eddit the code im still trying lol'
    PAUSE 10
    HIGH PORTB.7
    pulsout DLE, 125
    pause 12
    Goto MAIN

    end
    OK, it took some hair pulling as I am not really good with arrays.
    here is a sample as to how to do this. What you want to do is load the variable with the value to display, and display that digit, then do the next and the next. Using an array to hold the value:
    Code:
    Goldfish var byte ' cause it's late and I am tired
    Digit var byte[4] ' 4 variables all named digit, an array
    index var byte    ' a counting variable
    displays var word ' from the program
    digit_output var byte 'from the program
    ' this code changed from program
    loop:
    DIGIT_OUTPUT = DISPLAYS dig 0 ' Load Thousands Digit
    READ DIGIT_OUTPUT, DIGIT.0    ' Convert and Load Thousands Variable
    DIGIT_OUTPUT = DISPLAYS DIG 1 ' Load Hundreds  Digit
    READ DIGIT_OUTPUT, DIGIT.1    ' Convert and Load Hundreds Variable
    DIGIT_OUTPUT = DISPLAYS DIG 2 ' Load Tens of Units Digit
    READ DIGIT_OUTPUT, DIGIT.2    ' Convert and Load Tens  Variable
    DIGIT_OUTPUT = DISPLAYS dig 3 ' Load Ones of Units Digit
    READ DIGIT_OUTPUT, DIGIT.3    ' Convert and Load Units Variable
    ' notice the digits were changed to reflect the array variable name
    'here is where we do the magic
    for index = 0 to 3  '  loop 4 times
    Goldfish = digit[index]  ' load goldfish with the digit values
    shiftout SDO,SCLK,4,[Goldfish\8]  ' send the values to display
    portC.0[index] = 1 ' here we energise each display digit in sequence
    PAUSEUS 900 ' this number alters the brightness verses display flash rate
    PORTC=0 ' this blanks the numbers between loading data so it does not read 8888
    next index ' select the next digit
     GOTO LOOP
    you notice the word index in red, this syncronizes the digit selection on portc with the data being shifted out.
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

Similar Threads

  1. Graphic LCD with PICbasic pro
    By amindzo in forum mel PIC BASIC Pro
    Replies: 41
    Last Post: - 25th November 2012, 11:45
  2. Lookup Table
    By yasser hassani in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 11th March 2008, 10:38
  3. ADCIN and LOOKUP ...
    By Acetronics2 in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 16th June 2007, 21:02
  4. problem with USART
    By leemin in forum Serial
    Replies: 4
    Last Post: - 11th December 2006, 17:56
  5. Confused On Dig & Lookup
    By SOMRU in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 5th December 2006, 21:49

Members who have read this thread : 0

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

Tags for this Thread

Posting Permissions

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