newbie question


Closed Thread
Results 1 to 9 of 9

Thread: newbie question

  1. #1
    Join Date
    Nov 2008
    Posts
    3

    Default newbie question

    I'm a final year student of BEE course.Currently I'm having problem with my final year project.How to interface temperature sensor lm35 with PIC16f876 to two seven segment display.I would like to get the schematic diagram and the source code about how to display the temperature value in seven segment display.I'm using CCS c compiler for my project........Anyone can help me?I need it urgently!!!!! thanks.

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


    Did you find this post helpful? Yes | No

    Default

    Hello Lcj100,
    Where do I start?
    1. This forum is about 99 percent Basic from M E Labs, there are people here who write in C as well.
    2. Most here do not do homework or school projects, because we want <b>YOU</b> to learn by doing it yourself.
    3. If you want help, post the code you are struggling with, and you may well get HELP, not prewritten code, but help.
    4. As for a schematic . . . You as the designer of your project will determine that, because it is your decision as to which port you drive the 7 segment display from, which port you use for inputs etc . . . Unless your professor gave you a P/C board or instructions to use a certain port . . .
    Oh, that other 1% . . assembly, embedded into the basic code.
    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.

  3. #3
    Join Date
    Jan 2009
    Posts
    4


    Did you find this post helpful? Yes | No

    Default

    This is the subroutine for 2 digit 7 segment display that I used to make a similar thing:

    DIGIT:
    B11 = B10 / 10
    B12 = B10 // 10
    LookUp B11, ( 119, 36, 107, 109, 60, 93, 95, 100, 127, 124 ), B13
    LookUp B12, ( 119, 36, 107, 109, 60, 93, 95, 100, 127, 124 ), B14
    Poke PORTC, B13
    Poke PORTB, B14
    Return

    The idea is that the number you want to display is in variable B10 when you call DIGIT. It's then split in two and sent to port c and port b. This means that 7 pins from both port b and port c are used up but it's very simple to wire up and leaves you with RB7 to run the POT command on your thermistor.

    I put this in comments:
    ' ---6
    ' ¦4 ¦5
    ' ---3
    ' ¦1 ¦2
    ' ---0
    to remind me which pin goes to which segment. The numbers in the lookup command are calculated according to which pin is connected to which segment. If you change a pin - segment connection, you will have to calculate new values for the LOOKUP command.

  4. #4
    Join Date
    Nov 2008
    Posts
    3


    Did you find this post helpful? Yes | No

    Smile

    Quote Originally Posted by Alektric View Post
    This is the subroutine for 2 digit 7 segment display that I used to make a similar thing:

    DIGIT:
    B11 = B10 / 10
    B12 = B10 // 10
    LookUp B11, ( 119, 36, 107, 109, 60, 93, 95, 100, 127, 124 ), B13
    LookUp B12, ( 119, 36, 107, 109, 60, 93, 95, 100, 127, 124 ), B14
    Poke PORTC, B13
    Poke PORTB, B14
    Return

    The idea is that the number you want to display is in variable B10 when you call DIGIT. It's then split in two and sent to port c and port b. This means that 7 pins from both port b and port c are used up but it's very simple to wire up and leaves you with RB7 to run the POT command on your thermistor.

    I put this in comments:
    ' ---6
    ' ¦4 ¦5
    ' ---3
    ' ¦1 ¦2
    ' ---0
    to remind me which pin goes to which segment. The numbers in the lookup command are calculated according to which pin is connected to which segment. If you change a pin - segment connection, you will have to calculate new values for the LOOKUP command.
    Thanks for ur idea.i would like to ask u some question.Can i know what is the meaning of Poke command?Can u show me the example how to calculate the numbers in lookup command?What is the meaning of B12 = B10 // 10?

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Lcj100 View Post
    Can u show me the example how to calculate the numbers in lookup command?What is the meaning of B12 = B10 // 10?
    You have to think binary to figure out the numbers in the lookup table, so here goes . . . take a port to drive displays, I pick PortB
    connect the segments to the port, to make it easy on myself, I will select ports in numerical/alphabetical order, so PortB.0 is segment A, PortB.1 is segment b, PortB.2 is segment C . . . . Now to make zero you must illuminate the following segments: abcdef, which means portsB 012345 which translates to %00111111 or decimal 63 or hex 3F. The number 1 would be binary %00000110 or Dec. 6 or Hex 06 and so on and so forth.
    Last edited by Archangel; - 2nd February 2009 at 05:02.
    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.

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


    Did you find this post helpful? Yes | No

    Default

    Can i know what is the meaning of Poke command?
    Poke is a PBC statement (still usable in PBP) who write to a specific register.

    POKE PORTB, 10

    will write 10 to PORTB

    In PBP, you may reduce it to
    PORTB=0
    add a semicolon at the end of the line and it's in C

    // is the modulus.
    PBP performs 16x16 division. The '/' operator returns the 16-bit result. The '//' operator returns the remainder. This is sometimes referred to as the modulus of the number.

    Example

    W1 = W0 / 1000 ‘ Divide value in W0 by 1000 and place the result in W1
    W2 = W0 // 1000 ‘ Divide value in W0 by 1000 and place the remainder in W2
    Last edited by mister_e; - 2nd February 2009 at 05:07.
    Steve

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

  7. #7
    Join Date
    Nov 2008
    Posts
    3


    Did you find this post helpful? Yes | No

    Default

    Thanks for ur explanation.This is the program that i write to display the temperature value in seven segment display once LM 35 sense the temperature.As a results from the source code,the seven segment only display the value 16 in seven segment display.Can i know what wrong with this source code?

    #include<16f877.h>
    #device adc=10
    #use delay(clock=10000000)
    #fuses hs, noprotect, nowdt, nolvp

    #byte porta=5
    #byte portb=6
    #byte portd=8

    int i;
    int temp;

    void main()
    {
    set_tris_d(0b00000000);
    set_tris_b(0b00000000);
    setup_port_a(RA0_analog);
    setup_adc(adc_clock_internal);

    do
    {
    set_adc_channel(0);
    delay_ms(10);
    temp=read_adc()/2;

    if (temp=16)
    { portb=0b00000110;
    portd=0b01111101; }

    else if (temp=17)
    { portb=0b00000110;
    portd=0b00000111; }

    else if (temp=18)
    { portb=0b00000110;
    portd=0b01111111; }

    else if (temp=19)
    { portb=0b00000110;
    portd=0b01101111; }

    else if (temp=20)
    { portb=0b01011011;
    portd=0b00111111; }

    else if (temp=21)
    { portb=0b01011011;
    portd=0b00000110; }

    else if (temp=22)
    { portb=0b01011011;
    portd=0b01011011; }

    else if (temp=23)
    { portb=0b01011011;
    portd=0b01001111; }

    else if (temp=24)
    { portb=0b01011011;
    portd=0b01100110; }

    else if (temp=25)
    { portb=0b01011011;
    portd=0b01101101; }

    else if (temp=26)
    { portb=0b01011011;
    portd=0b01111101; }

    else if (temp=27)
    { portb=0b01011011;
    portd=0b00000111; }

    else if (temp=28)
    { portb=0b01011011;
    portd=0b01111111; }

    else if (temp=29)
    { portb=0b01011011;
    portd=0b01101111; }

    else if (temp=30)
    { portb=0b01001111;
    portd=0b00111111; }

    delay_ms(2000);

    }while(1);

    }

  8. #8
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    CCS has a forum here http://www.ccsinfo.com/forum/ for their C compilers. I think you'll get answers a lot faster if you post your questions there for CCS C code examples....;o}
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  9. #9
    thcwefh's Avatar
    thcwefh Guest


    Did you find this post helpful? Yes | No

    Default

    Hi! i'm newbie! I'm trying to learn all in this forum! i'm not good at E. Can you tell me how can i begin to learn about code

Similar Threads

  1. Newbie 74hc595 question
    By manjero in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 22nd January 2008, 22:22
  2. newbie with serial com question...
    By kevlar129bp in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 16th December 2006, 05:34
  3. Newbie Question - Info Please
    By ehoskins in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 2nd October 2006, 14:50
  4. Greetings from Newbie and a question
    By ChrisHelvey in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 24th July 2006, 15:52
  5. Newbie question
    By senojlr in forum General
    Replies: 7
    Last Post: - 11th April 2006, 21:23

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