CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Voltmeter with 7-segment display
Goto page 1, 2  Next
 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
abadade



Joined: 24 May 2014
Posts: 4

View user's profile Send private message

Voltmeter with 7-segment display
PostPosted: Sat May 24, 2014 4:27 pm     Reply with quote

hello,
I want to make a digital voltmeter based on the PIC16F676 and 3 digit max, 30v with a lower consumption of 15 mA. I already tested it but consumption was 30 mA.
Thank you
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Sat May 24, 2014 6:33 pm     Reply with quote

post a schematic for your circuit and some code that drives it.
then help may be possible. otherwise what can you expect ?
temtronic



Joined: 01 Jul 2010
Posts: 9226
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Sat May 24, 2014 7:48 pm     Reply with quote

If really running from 30 volts, redesign the power supply to be closer to 5 volts using low power regulators, schottky diodes, etc. You could be wasting 10-20 ma just in the basic 5V power supply.
Be sure to set high or low any/all unused I/O pins.
Disable any internal peripherals you are not using.
Choose a lower clock frequency as 'transitions' consume power.
Experiment with the LED 'refresh' rate. Again slower is better but too slow is bad.
Read the uChip application notes about 'low power' designs.
Use low current LED displays.

As requested, upload your code and schematic. From there we can 'fine tune' both to reduce power.

hth
jay
abadade



Joined: 24 May 2014
Posts: 4

View user's profile Send private message

voltmetre numerique a 7 seg
PostPosted: Sun May 25, 2014 4:20 am     Reply with quote

Code:

#include <16F676.h>
#device adc=10
#fuses INTRC_IO,NOWDT,PUT,NOPROTECT,BROWNOUT,NOMCLR
#use delay (clock=4000000) // 4MHz clock

#rom  0x3ff={0x3444}

#byte PORTA = 0x05
#byte PORTC = 0x07
#byte TRISA = 0x85
#byte TRISC = 0x87

#define SPORTA PORTA
#define SPORTC PORTC

#define  TICKS_BETWEEN_INTERRUPTS      1500 //5000
#define  INTERRUPT_OVERHEAD            35
#define  TMR1RESET (0xFFFF-(TICKS_BETWEEN_INTERRUPTS-INTERRUPT_OVERHEAD))

const char SegCode[11] = {0x40,0x57,0x22,0x06,0x15,0x0C,0x08,0x56,0x00,0x04,0xFF};
   //                       0    1    2    3    4    5    6    7    8    9
const char Seg_mask_C[7] = {0x01,0x02,0x4,0x08,0x10,0x20,0x00};
//                           C0   C1   C2  C3   C4   C5
const char Column[3]   = {0x02,0x01,0x04};
static char Segment[3] = {0x7f,0x7f,0x7f};   
static char Segment_port[2] = {0x7f,0x7f};
static unsigned char ColCount=0x00;
static unsigned char SegCount=0x00;

void CPU_SETUP(void);
void Display(void);
void HTO7S(unsigned int32 Num);

byte i;
unsigned int32 result;

#INT_TIMER1
void Timer1(void)
{   
   set_timer1(TMR1RESET);
   Display();   

}   

void main()
{     
   unsigned char i;
   
   CPU_SETUP();
   
   while(true)
   {         
      result=0;
      for (i=0;i<20;i++)
      {
         set_adc_channel(3);
         delay_ms(1);
         result=result+read_adc();
      }
         //result = 0x3fe;                           
       HTO7S(result/20);   
       delay_ms(1000);         
   }
   
}

void CPU_SETUP()
{
   
   setup_comparator(NC_NC_NC_NC);   // not use comparator module
   setup_adc_ports( sAN3 | VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_64);
   TRISA=0b00010000;
   PORTA=0x27;
   TRISC=0b00000000;
   PORTC=0x37;
   
   
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   set_timer1(TMR1RESET);
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_TIMER1);   
}

//-------------------------------------
// Display routine
//-------------------------------------
void Display()
{

   
   if (ColCount>=3) {ColCount=0;SegCount++;}
   if (SegCount>=7)SegCount=0;
 
   Segment_port[1] = Segment[ColCount] |  (Seg_mask_C[segcount]^0xFF);
   if (segcount>=6)Segment_port[0] = ((Segment[ColCount]>>1) & 0b00100000) | (Column[ColCount]& 0b00000111);
   if (segcount<6)Segment_port[0] =  0b00100000|(Column[ColCount]& 0b00000111);
   
   sportc=Segment_port[1];
   sporta=Segment_port[0];
   
   ColCount++;           
}   

//--------------------------------------
// Convet HEX 2 byte to 7-Segment code
//--------------------------------------
void HTO7S(unsigned int32 Num)
{

   unsigned int32 res;

   Segment[0]=SegCode[30*Num/10230];
   if (Segment[0]==0x40)
   Segment[0]=0xFF;
   res = 30*Num%10230;
   Segment[1]=SegCode[10*res/10230];
   res=10*res%10230;
   Segment[2]=SegCode[10*res/10230];
//!   Segment[0]=SegCode[1];
//!   Segment[1]=SegCode[2];
//!   Segment[2]=SegCode[5];
}   


[img]
http://www.coolcircuit.com/project/meter/circuit.gif[/img]
without resistor and transistor
abadade



Joined: 24 May 2014
Posts: 4

View user's profile Send private message

voltmetre numerique a 7 seg
PostPosted: Sun May 25, 2014 5:07 am     Reply with quote

j'ai remarque que si je debranche l'afficheur le pic a lui seule consomme 15mA ????bizzare
temtronic



Joined: 01 Jul 2010
Posts: 9226
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Sun May 25, 2014 5:19 am     Reply with quote

Link to schematic is busted ( internal server error 500).

jay
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Sun May 25, 2014 5:22 am     Reply with quote

Your link did not work for me.
I'm assuming your PIC circuit looks something like this.
Code:

                     _______
                vdd | 1  14 | Vss
       ________ RA5 | 2  13 | AN0 ______________________________________________________________
      |         RA4 | 3  12 | AN1 ___________________________________________                   |
      |        MCLR | 4  11 | RA2 ______________________                     |                  |
      |  ______ RC5 | 5  10 | RC0 ______                |                    |                  |
      | |  ____ RC4 | 6   9 | RC1 ____  |        _______________     _______________     _______________
      | | |  __ RC3 | 7   8 | RC2 __  | |       |      ______   |   |      ______   |   |      ______   |
      | | | |        _______        | | |       |   F /  A  /   |   |   F /  A  /   |   |   F /  A  /   |
      | | | |                       | | |       |    /_____/ B  |   |    /_____/ B  |   |    /_____/ B  |
      | | | |                       | | |       | E /  G  /     |   | E /  G  /     |   | E /  G  /     |
      | | | |                       | | |       |  /_____/ C    |   |  /_____/ C    |   |  /_____/ C    |
      | | | |                       | | |       |     D         |   |     D         |   |     D         |
      | | | |                       | | |       |             H |   |             H |   |             H |
      | | | |                       | | |       |_______________|   |_______________|   |_______________|
      | | | |                       | | |        A B C D E F G H     A B C D E F G H     A B C D E F G H
      | | | |                       | | |__WWW___|_|_|_|_|_|_|_______|_|_|_|_|_|_|_______| | | | | | |
      | | | |                       | |____WWW_____|_|_|_|_|_|_________|_|_|_|_|_|_________| | | | | |
      | | | |                       |______WWW_______|_|_|_|_|___________|_|_|_|_|___________| | | | |
      | | | |______________________________WWW_________|_|_|_|_____________|_|_|_|_____________| | | |
      | | |________________________________WWW___________|_|_|_______________|_|_|_______________| | |
      | |__________________________________WWW_____________|_|_________________|_|_________________| |
      |____________________________________WWW_______________|___________________|___________________|   
If it does not, modify and show us exactly what you are doing.

Mike

PS This forum uses English only.
abadade



Joined: 24 May 2014
Posts: 4

View user's profile Send private message

PostPosted: Sun May 25, 2014 5:28 am     Reply with quote

Code:
                   _______
                vdd | 1  14 | Vss
       ________ RA5 | 2  13 | AN0 ______________________________________________________________
      |         RA4 | 3  12 | AN1 ___________________________________________                   |
      |        MCLR | 4  11 | RA2 ______________________                     |                  |
      |  ______ RC5 | 5  10 | RC0 ______                |                    |                  |
      | |  ____ RC4 | 6   9 | RC1 ____  |        _______________     _______________     _______________
      | | |  __ RC3 | 7   8 | RC2 __  | |       |      ______   |   |      ______   |   |      ______   |
      | | | |        _______        | | |       |   F /  A  /   |   |   F /  A  /   |   |   F /  A  /   |
      | | | |                       | | |       |    /_____/ B  |   |    /_____/ B  |   |    /_____/ B  |
      | | | |                       | | |       | E /  G  /     |   | E /  G  /     |   | E /  G  /     |
      | | | |                       | | |       |  /_____/ C    |   |  /_____/ C    |   |  /_____/ C    |
      | | | |                       | | |       |     D         |   |     D         |   |     D         |
      | | | |                       | | |       |             H |   |             H |   |             H |
      | | | |                       | | |       |_______________|   |_______________|   |_______________|
      | | | |                       | | |        A F E B D C G H     A F E B D C G H     A F E B D C G H
      | | | |                       | | |__WWW___|_|_|_|_|_|_|_______|_|_|_|_|_|_|_______| | | | | | |
      | | | |                       | |____WWW_____|_|_|_|_|_|_________|_|_|_|_|_|_________| | | | | |
      | | | |                       |______WWW_______|_|_|_|_|___________|_|_|_|_|___________| | | | |
      | | | |______________________________WWW_________|_|_|_|_____________|_|_|_|_____________| | | |
      | | |________________________________WWW___________|_|_|_______________|_|_|_______________| | |
      | |__________________________________WWW_____________|_|_________________|_|_________________| |
      |____________________________________WWW_______________|___________________|___________________|
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Sun May 25, 2014 7:57 am     Reply with quote

OK. I've guessed at your PIC circuit.

1) What is the value of the current limiting resistors?
2) Are you running the whole thing from a 30V supply?

Mike
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Sun May 25, 2014 8:53 am     Reply with quote

my 2 cents

i think he means his INLET measurement span is 30vdc
NOT his PSU Vdd ....

if my hunch is right - this is a proteus -
CLASSIC school project - you are struggling to elicit details on.

i am not losing any sleep based on what i've seen.

has anybody who is

(dry behind the ears- && posted seriously,
more than a few times -&& done a muxed LED display )

USED it in a PRODUCT lately?
in my case - its at least 6 years in the PAST
since we have these newfangled (reflective) LCD's that can use
a single ma or two - to do the display job for us now.
Very Happy Very Happy Very Happy
sahu77



Joined: 08 Sep 2011
Posts: 202

View user's profile Send private message

PostPosted: Wed Sep 17, 2014 10:04 am     Reply with quote

any body can explain this line ?


TRISA=0b00010000;
PORTA=0x27;
TRISC=0b00000000;
PORTC=0x37;
_________________
sahu
temtronic



Joined: 01 Jul 2010
Posts: 9226
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Wed Sep 17, 2014 10:40 am     Reply with quote

easy as reading the datasheet !

1st line says to configure PORTA as one input( bit4) the rest outputs

2nd line says to send to PORTA the data '0x27' or '0010 0111' in binary

3rd line says to configure PORTC as all outputs ( '0'=output, '1' = input)

4th line says to send to PORTC the data '0x37' or '0011 0111' in binary

Now as to WHAT this code does in the program is up to you to comprehend.

This is all basic microcontroller information that should have been taught in the FIRST week of the course.It is vitally important to KNOW and forms the basis of everything else.

hth
jay

hth
jay
sahu77



Joined: 08 Sep 2011
Posts: 202

View user's profile Send private message

PostPosted: Wed Sep 17, 2014 11:08 am     Reply with quote

temtronic wrote:
easy as reading the datasheet !

1st line says to configure PORTA as one input( bit4) the rest outputs

2nd line says to send to PORTA the data '0x27' or '0010 0111' in binary

3rd line says to configure PORTC as all outputs ( '0'=output, '1' = input)

4th line says to send to PORTC the data '0x37' or '0011 0111' in binary

Now as to WHAT this code does in the program is up to you to comprehend.

This is all basic microcontroller information that should have been taught in the FIRST week of the course.It is vitally important to KNOW and forms the basis of everything else.

hth
jay

hth
jay


I understand line 1&3.
but confused with line 2&4.
why 27 & 37 ?
_________________
sahu
temtronic



Joined: 01 Jul 2010
Posts: 9226
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Wed Sep 17, 2014 1:55 pm     Reply with quote

probably used as a 'power up' test of the LED segments to confirm they all light up ??? it would be nice to have this brief test,and the original programmer might have done it.

I don't know as I haven't seen a good schematic( properly labelled) let alone a 'paragrah of comments' detailing the pinout usage of the PIC , which normally would be in the first section of code.
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Wed Sep 17, 2014 5:09 pm     Reply with quote

sahu77 wrote:
any body can explain this line ?


TRISA=0b00010000;
PORTA=0x27;
TRISC=0b00000000;
PORTC=0x37;

Oh, come on Sahu.
The lines are very close to your own thread dating back to February this year.
Like I said before, you can work out with pencil and paper what the effects are.
(Assuming you know whether the displays are CA or CC.)

Mike
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group