This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

pressure

hi sir

i need one help

now iam doing project on 89c51 using C51 Evaluation Software

i converted 0-5 analog volatge to 0-5 digital voltage .

now i want convert digital data to pressure

my output should be like this

0v 1.1E-1 3v 4.1E-4
0.1 1.2E-1 4v 5.1E-5
1v 2.1E-2 5v 6.1E-6
2v 3.1E-3

i want 500 values in between 0 to 5 volts
how to calibrate the voltage interms of preesure
what logic i want use to convert Voltage to pressure
my C51 not taking floting oparations

please help

regards
chandra sri

Parents
  • thank you sir

    thank you for your valueble answers

    Hear in my project iam using 4 seven segment display for to display the pressure.

    up to now iam displaying the pressure on the serial window.

    pleace tell how to display the data on 7 segment display with out using printf statement.

    Because printf is taking lot of memory .

    regards

    chandu

Reply
  • thank you sir

    thank you for your valueble answers

    Hear in my project iam using 4 seven segment display for to display the pressure.

    up to now iam displaying the pressure on the serial window.

    pleace tell how to display the data on 7 segment display with out using printf statement.

    Because printf is taking lot of memory .

    regards

    chandu

Children
  • "in my project iam using 4 seven segment display for to display the pressure."

    Do you mean a four-digit 7-segment display?

    If so, how do you plan to display, for example, "4.1E-4" on four 7-segment digits:

    4. = 1st digit
    1  = 2nd digit
    E  = 3rd digit
    -  = 4th digit
    4  = Oops! no more digits!!
    Or, as all the values contain the 'E' and '-', will they just be permanently marked on the panel?
    In which case, you only need 3 digits - not 4!

    "please tell how to..."

    No - you need to learn how to think these things out for yourself!

    The Lookup-Table technique can still be used; you could even still make it a table of strings.
    Instead of using printf, you just write the 1st character of the string to the left-most 7-segment digit, and so on...

    Using a table of strings for this is probably quite inefficient, because:
    1. each string has a null-terminator added, which you don't need;
    2. the actual table contains pointers to the strings (textbook basics) - so these pointers have to be stored in addition to the actual strings, With such small strings, this is a significant overhead!

    A more compact way would be to use a two-dimensional array...

    Textbook time, again!

    "Because printf is taking lot of memory"

    Yes, printf does take quite a lot of memory.
    But, in this case are you sure that it's printf that's the real problem - or is it just the size of the table?

  • "in my project iam using 4 seven segment display for to display the pressure."

    Do you mean a four-digit 7-segment display?

    If so, how do you plan to display, for example, "4.1E-4" on four 7-segment digits:

    4. = 1st digit
    1  = 2nd digit
    E  = 3rd digit
    -  = 4th digit
    4  = Oops! no more digits!!
    Or, as all the values contain the 'E' and '-', will they just be permanently marked on the panel?
    In which case, you only need 3 digits - not 4!

    "please tell how to..."

    No - you need to learn how to think these things out for yourself!

    The Lookup-Table technique can still be used; you could even still make it a table of strings.
    Instead of using printf, you just write the 1st character of the string to the left-most 7-segment digit, and so on...

    Using a table of strings for this is probably quite inefficient, because:
    1. each string has a null-terminator added, which you don't need;
    2. the actual table contains pointers to the strings (textbook basics) - so these pointers have to be stored in addition to the actual strings, With such small strings, this is a significant overhead!

    A more compact way would be to use a two-dimensional array...

    Textbook time, again!

    "Because printf is taking lot of memory"

    Yes, printf does take quite a lot of memory.
    But, in this case are you sure that it's printf that's the real problem - or is it just the size of the table?

  • Textbook time, again!

    Andy, do not come to the US, we have laws against cruel and unusual punishment :)

    Erik

  • we have laws against cruel and unusual punishment

    Textbook time may be cruel, but it is certainly not unusual, and therefore perfectly fine. :)

  • "Textbook time ... is certainly not unusual"

    It seems to be becoming increasingly unusual amongst today's students... :-(

  • hi sir

    this is my code

    {
    unsigned int voltage;
    unsigned char *pressure_string[] ={"3.07E-12","1.22E-10","6.56E-10");
    v=0x02;
    voltage=voltage*50;
    P1=string[voltage];
    }


    For voltage=0x02 carresponding pressure is

    6.56E-10 from table.

    that is P1=6.56E-10;

    sir my doubt is PORT 1 well takes only 1 byte

    (8bits) then how it takes 6.56E-10;

    and how to devide the pressure 6.56E-10

    into "6",".=constant","5","6","E=constant",

    "-=constant","1","0" .

    sir here iam using seven numbers 7segment

    Led display for displaying the pressure.

    thank you sir

    Regards

    chandu

  • Hi sir

    how to divide the "string" into singal elements

    example:

    string={"3.56E-12") in to "3", "." ,"5","6","E","-","1","2".

    Thank you

    Regards

    chandu

  • Stop! Now!!

    You are struggling with absolutely basic concepts of both 'C' programming and, apparently, the hardware itself.

    You seriously need to set this project aside, go back to basics, and get a proper understanding in the 'C' Language

    Get yourself a good book, and study it:
    http://www.keil.com/books/8051books.asp
    http://www.8052.com/books.phtml


    "my doubt is PORT 1 well takes only 1 byte (8bits) ... i am using seven numbers 7segment LED display"

    Sure, all the 8051's ports are 8 bits (1 byte) wide.
    So how have you connected seven 7-Segment digits to your 8051?

    Obviously, the way you write stuff to the display will depend entirely on how it is connected to the 8051!!