View previous topic :: View next topic |
Author |
Message |
sahu77
Joined: 08 Sep 2011 Posts: 202
|
3 digits Digital volt meter |
Posted: Fri Mar 02, 2012 11:45 am |
|
|
Whats wrong with me. This code i was found from http://coolcircuit.com/project/meter/index.html
its code as ...
Code: | /* voltmeter For 0 volt to 300 volt link are as
http://coolcircuit.com/project/meter/index.html
Shivendra Sahu
16F676 Configuration
O = Output, I = Input
_________
vdd | 1 14 | Vss
for 1 (0)1ST_DISPLY--> RA5 | 2 13 | AN0 <-- Sense_Value (I)
(O) SEG_(G) <-- RA4 | 3 12 | AN1 --> 3RD_DISPLY (0) for 100
N\C MCLR | 4 11 | RA2 --> 2ND_DISPLY (0) for 10
(O) SEG_(F) <-- RC5 | 5 10 | RC0 --> SEG_(A) (O)
(O) SEG_(E) <-- RC4 | 6 9 | RC1 --> SEG_(B) (O)
(O) SEG_(D) <-- RC3 | 7 8 | RC2 --> SEG_(C) (O)
---------
*/
#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 5000 //5000
#define INTERRUPT_OVERHEAD 35
#define TMR1RESET (0xFFFF-(TICKS_BETWEEN_INTERRUPTS-INTERRUPT_OVERHEAD))
//// segment activates on LOW state of pins.
//const char SegCode[11] = {0x40,0x57,0x22,0x06,0x15,0x0C,0x08,0x56,0x00,0x04,0xFF};//for
|
_________________ sahu
Last edited by sahu77 on Wed Feb 12, 2014 2:15 pm; edited 1 time in total |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9244 Location: Greensville,Ontario
|
|
Posted: Fri Mar 02, 2012 12:27 pm |
|
|
what's right ???
does the ADC section work right ??
does the display section work right ?
does the PIC setup section work right ??
honestly I can see 23 things 'wrong' with the code as presented...
.., or do you just want it 'working right '??? |
|
|
sahu77
Joined: 08 Sep 2011 Posts: 202
|
|
Posted: Fri Mar 02, 2012 12:43 pm |
|
|
temtronic wrote: | what's right ???
does the ADC section work right ??
does the display section work right ?
does the PIC setup section work right ??
honestly I can see 23 things 'wrong' with the code as presented...
.., or do you just want it 'working right '??? |
display section not work right.
this is right
Code: | const char SegCode[11] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xFF};//for my vm
// 0 1 2 3 4 5 6 7 8 9
/* CA display (common anode) for my vm
A
--
F|G |B 0=ON
--
E| |C 1=OFF
--
D
A B C D E F G = in order
c0 c1 c2 c3 c4 c5 A4 = A4 c5 c4 c3 c2 c1 c0 = HEX CODE = DECIMAL
0 0 0 0 0 0 1 = 1 0 0 0 0 0 0 = 0X40 = 0
1 0 0 1 1 1 1 = 1 1 1 1 0 0 1 = 0x79 = 1
0 0 1 0 0 1 0 = 0 1 0 0 1 0 0 = 0x24 = 2
0 0 0 0 1 1 0 = 0 1 1 0 0 0 0 = 0x30 = 3
1 0 0 1 1 0 0 = 0 0 1 1 0 0 1 = 0x19 = 4
0 1 0 0 1 0 0 = 0 0 1 0 0 1 0 = 0x12 = 5
0 1 0 0 0 0 0 = 0 0 0 0 0 1 0 = 0x02 = 6
0 0 0 1 1 1 1 = 1 1 1 1 0 0 0 = 0x78 = 7
0 0 0 0 0 0 0 = 0 0 0 0 0 0 0 = 0x00 = 8
0 0 0 0 1 0 0 = 0 0 1 0 0 0 0 = 0x10 = 9
1 1 1 1 1 1 0 = 1 1 1 1 1 1 1 = 0xFF = - */
const char Column[3] = {0x06,0x03,0x02}; // may be as use \\(RA1= 0x02),(RA2= 0x04),(RA5=
0x32) my vm
|
_________________ sahu |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1934 Location: Norman, OK
|
|
Posted: Fri Mar 02, 2012 1:24 pm |
|
|
OK, so what does it do/not do?\
- the characters display wrong? If so, which ones? How are they wrong?
- None of the digits work?
- Parts of the digits work? If so, which ones
- All of the digits work but they flicker?
- Or something else? _________________ Google and Forum Search are some of your best tools!!!! |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9244 Location: Greensville,Ontario
|
|
Posted: Fri Mar 02, 2012 3:05 pm |
|
|
basic debugging101 says to try 1 digit at a time and cycle from 0 to 9.
record the results compare to desired response.
cut code to test each segment of each display.....
these 'test' programs should have been executed and confirmed before trying a 'digital voltmeter'.
standard 'post' procedure would be to cycle each segment of each display to confirm LEDs are 100% operational.. |
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
You are asking the wrong questions! |
Posted: Fri Mar 02, 2012 4:21 pm |
|
|
sahu77.
You're doing it again
You are making it very difficult for us. You are making us work out what your problem is.
Please try to make it easier.
Have you got real hardware in front of you?
What can you see?
What is your hardware doing that it should not do?
What do you expect your hardware to do that is missing?
Supply your compiler version and a short compilable code snippet which demonstrates your problem.
Read the CCS guidelines.
Mike |
|
|
sahu77
Joined: 08 Sep 2011 Posts: 202
|
|
Posted: Fri Jan 17, 2014 11:27 am |
|
|
temtronic wrote: | basic debugging101 says to try 1 digit at a time and cycle from 0 to 9.
record the results compare to desired response.
cut code to test each segment of each display.....
these 'test' programs should have been executed and confirmed before trying a 'digital voltmeter'.
standard 'post' procedure would be to cycle each segment of each display to confirm LEDs are 100% operational.. |
I'm 100% suare my each display operational .
its not shown ADC value on 7 segments . _________________ sahu |
|
|
gpsmikey
Joined: 16 Nov 2010 Posts: 588 Location: Kirkland, WA
|
|
Posted: Fri Jan 17, 2014 12:08 pm |
|
|
You are going to have a big problem in the real world if you don't learn to debug these kinds of issues. You need to create test routines that allow you to demonstrate the problem (or find the problem) in as simple a routine as it takes. Create a simple counter that updates every second - display the results - does it count right? Is it displaying the digits correct? You are "100% sure your display is right" --EXCEPT you are not seeing the expected results. You need to find why the results are not as expected - "I know it's right" isn't the correct answer. Verify it is working as expected. Then verify you are reading the ADC correctly, etc. _________________ mikey
-- you can't have too many gadgets or too much disk space !
old engineering saying: 1+1 = 3 for sufficiently large values of 1 or small values of 3 |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9244 Location: Greensville,Ontario
|
|
Posted: Fri Jan 17, 2014 12:51 pm |
|
|
You have to 'break' apart your program to debug.
Instead of reading the ADC 20 times, avg, etc. simply put in a 'dummy' value of say 123 and see what is displayed.
IF you get 123 on display
THEN you have an ADC section problem
ELSE you have a display problem.
IF you have an ADC problem
THEN confirm the Vin to ADC is correct
ELSE repair/rewire ADC section as required
IF you have a display problem
THEN confirm all wiring/LEDS/code is correct
ELSE repair/rewire as required OR recode as required
This is all 'basic debugging101'.
hth
jay |
|
|
sahu77
Joined: 08 Sep 2011 Posts: 202
|
|
Posted: Fri Jan 17, 2014 2:45 pm |
|
|
temtronic wrote: | You have to 'break' apart your program to debug.
Instead of reading the ADC 20 times, avg, etc. simply put in a 'dummy' value of say 123 and see what is displayed.
IF you get 123 on display
THEN you have an ADC section problem
ELSE you have a display problem.
IF you have an ADC problem
THEN confirm the Vin to ADC is correct
ELSE repair/rewire ADC section as required
IF you have a display problem
THEN confirm all wiring/LEDS/code is correct
ELSE repair/rewire as required OR recode as required
This is all 'basic debugging101'.
hth
jay |
no no sir
problem is not this.
problem is in digit display .
like 123
its not show properly. _________________ sahu |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9244 Location: Greensville,Ontario
|
|
Posted: Fri Jan 17, 2014 3:29 pm |
|
|
OK, the display section isn't correct.
simply cut code to display 000-999 at a 1/2Hz rate and record what you get to say a spreadsheet,or just write down the results on paper.
Even doing just 0-9 should show the problem.
I can't help you further without knowing what the results are.What is needed is a chart of input vs output(ie: input a '1' , but display shows 'E', '2' shows 'C', etc.
hth
jay |
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
|
Posted: Fri Jan 17, 2014 3:31 pm |
|
|
sahu77 wrote: | no no sir
problem is not this.
problem is in digit display .
like 123
its not show properly. | After nearly two years you still don't get it.
YOU have to tell us CLEARLY what's wrong, THEN we can help you.
Tell us EXACTLY what you can see on the display and what you expect, with a short complete compilable code we can all copy&paste to test.
Mike |
|
|
sahu77
Joined: 08 Sep 2011 Posts: 202
|
|
Posted: Fri Jan 17, 2014 3:32 pm |
|
|
temtronic wrote: | OK, the display section isn't correct.
simply cut code to display 000-999 at a 1/2Hz rate and record what you get to say a spreadsheet,or just write down the results on paper.
Even doing just 0-9 should show the problem.
I can't help you further without knowing what the results are.What is needed is a chart of input vs output(ie: input a '1' , but display shows 'E', '2' shows 'C', etc.
hth
jay |
pl give 1 exp. code.
Bcoz I'm very confused. _________________ sahu |
|
|
sahu77
Joined: 08 Sep 2011 Posts: 202
|
|
Posted: Fri Jan 17, 2014 3:42 pm |
|
|
Mike Walne wrote: | sahu77 wrote: | no no sir
problem is not this.
problem is in digit display .
like 123
its not show properly. | After nearly two years you still don't get it.
YOU have to tell us CLEARLY what's wrong, THEN we can help you.
Tell us EXACTLY what you can see on the display and what you expect, with a short complete compilable code we can all copy&paste to test.
Mike |
I wire 16f676 as
O = Output, I = Input
_________
vdd | 1
14 | Vss
for 1 (0)1ST_DISPLY--> RA5 | 2 13
| AN0 <-- Sense_Value (I)
(O) SEG_(G) <-- RA4 | 3 12
| AN1 --> 3RD_DISPLY (0) for 100
N\C MCLR | 4 11
| RA2 --> 2ND_DISPLY (0) for 10
(O) SEG_(F) <-- RC5 | 5 10
| RC0 --> SEG_(A) (O)
(O) SEG_(E) <-- RC4 | 6
9 | RC1 --> SEG_(B) (O)
(O) SEG_(D) <-- RC3 | 7
8 | RC2 --> SEG_(C) (O)
---------
*/
read ADC value with an0 . _________________ sahu |
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
|
Posted: Fri Jan 17, 2014 3:50 pm |
|
|
Answer the question.
Mike
PS We are all really trying to help you. |
|
|
|