
Pic 16f676 Microcontroller Voltmeter:
After reading this post you will be able to understand the basics of the circuit Pic 16f676 Microcontroller Voltmeter and also you will learn about the important c code for pic voltmeter 7 segment So sit back keep reading and enjoy learning.
Equipment Required of project :
we are using these components
- common andoe 7segment displsy
- pic microcontroller 16f676
- 14 pin base
- resistor 10k,10k veriable resistors
- 7805 for voltage regulator
- 100uf .01uf capcitor
- led
- diode
- pic kit 2 for programming
here is the code of reading adc in c language and it is compile in pic ccs c compiler
SET_ADC_CHANNEL(3); // for(i=0;i<2;i++) // { // delay_ms(1); mux(); mux();mux();mux(); mux();mux(); result=read_adc(); //} val2=result; // value = (int8) (read_adc() * 500)/1023; //val2 = read_adc (); value = (val2* 5000)/1023;
pic voltmeter 7 segment:
3 digit 7 segment with pic 16f676 microcontroller. this is a very simple pic microcontroller voltmeter using 7 segment it can measure up to 99.9 voltage
here is the circuit of 7 segment voltmeter
pic16f676 voltmeter code:
in this code we are using pic ccs c compiler and read analog signal and convert in to digital
here is the full code of pic16f676 voltmeter
#include <16f676.h> #FUSES NOWDT //No Watch Dog Timer #FUSES INTRC //Internal RC Osc, no CLKOUT #FUSES NOMCLR //Master Clear pin used for I/O #FUSES NOBROWNOUT //No brownout reset #FUSES PUT #device ADC=10 #use delay(INT=4Mhz) #define aon output_LOW(PIN_C0); #define aof output_HIGH (PIN_C0); #define bon output_LOW(PIN_C1); #define bof output_HIGH (PIN_C1); #define con output_LOW(PIN_C2); #define cof output_HIGH (PIN_C2); #define don output_LOW(PIN_C3); #define dof output_HIGH (PIN_C3); #define eon output_LOW(PIN_C4); #define eof output_HIGH (PIN_C4); #define fon output_LOW(PIN_C5); #define fof output_HIGH (PIN_C5); #define gon output_LOW(PIN_A2); #define gof output_HIGH (PIN_A2); #define d1_of output_LOW(PIN_A1); #define d1_on output_HIGH (PIN_A1); #define d2_of output_LOW(PIN_A0); #define d2_on output_HIGH (PIN_A0); #define d3_of output_LOW(PIN_A5); #define d3_on output_HIGH (PIN_A5); int32 value=0,val2,ind=0,ind2=0,cnt5=0,d1; void off(); int thu,ten,unit,digit; void zero(){ aon; bon; con; don; eon; fon; gof; } void one(){ aof; bon; con; dof; eof; fof; gof; } void two(){ aon; bon; cof; don; eon; fof; gon; } void three(){ aon; bon; con; don; eof; fof; gon; } void four(){ aof; bon; con; dof; eof; fon; gon; } void five(){ aon; bof; con; don; eof; fon; gon; } void six(){ aon; bof; con; don; eon; fon; gon; } void seven(){ aon; bon; con; dof; eof; fof; gof; } void eight(){ aon; bon; con; don; eon; fon; gon; } void nine(){ aon; bon; con; don; eof; fon; gon; } void comp1(){ if(digit==0)zero(); if(digit==1)one(); if(digit==2)two(); if(digit==3)three(); if(digit==4)four(); if(digit==5)five(); if(digit==6)six(); if(digit==7)seven(); if(digit==8)eight(); if(digit==9)nine(); DELAY_MS(1);} void mux(){ d1_on;digit=thu;comp1();d1_of; d2_on;digit=ten;comp1();d2_of; d3_on;digit=unit;comp1();d3_of; //d3_on;digit=unit;comp1();d3_of;} void mdelay() { mux();mux();//mux();mux(); mux();mux();mux();mux(); mux();mux();mux();mux(); mux();mux();mux();mux(); mux();mux();mux();mux(); mux();mux();mux();mux(); //mux();mux();mux();mux(); //mux();mux();mux();mux(); } void getad(){ int32 result=0;int8 i; SET_ADC_CHANNEL(3); // for(i=0;i<2;i++) // { // delay_ms(1); mux(); mux();mux();mux(); mux();mux(); result=read_adc(); //} val2=result; // value = (int8) (read_adc() * 500)/1023; //val2 = read_adc (); value = (val2* 5000)/1023; thu = (value/1000); mux(); mux();mux();mux(); mux();mux(); ten = (value/100)%10; mux(); mux();mux();mux(); mux();mux(); unit = (value/10)%10; mux(); mux();mux();mux(); mux();mux(); /* putc(thu+48); putc(ten+48); putc(unit+48); unit = value%10; putc(unit+48); putc(10);putc(13); */ } void main () { DELAY_MS(1); /* //SETUP_ADC_PORTS(NO_ANALOGS); // set_tris_a(0); set_tris_c(0x00); setup_comparator(NC_NC_NC_NC); setup_adc_ports(sAN0 | VSS_VDD); setup_adc(ADC_CLOCK_INTERNAL); setup_adc(ADC_CLOCK_INTERNAL ); set_tris_c(0x00); set_tris_a(0xff); set_tris_a(0b00011001); setup_comparator(NC_NC_NC_NC); // not use comparator module setup_adc_ports( sAN3 | VSS_VDD); setup_adc(ADC_CLOCK_DIV_64); set_tris_a(0b00011001); zero();//DELAY_MS(1000); while(1) { // DELAY_MS(10); //pwmd(); getad(); mdelay(); }}
digital voltmeter using microcontroller:
you can download pic16f676 voltmeter hex file and source code below link
Pic16f676 Pinout
Here is the pinout of pic16f676 microcontroller
pic16f676 example c code:
pic16f676 is a 8 bit microcontroller and it has 14 pins.
List of Pic16f676 Microcontroller Projects
here is the best and easy pic microcontroller projects
- Frequency Counter using Pic 16f676
- ac/dc voltmeter using pic microcontroller
- digital free fall
- timer circuit
- traffic signal
- mark space timer
- fridge timer
- 50hz comparator
- automatic battery monitor circuit
- stablizer timer and circuit
- multi steps battery charger circuit
- digital stop watch
- solar energy measurement
- ac dimmer using pic microcontroller
- ir remote control devices
- home automation using pic16f676
- digital clock
- lcd alarm clock
- temperature control +timer
- home automation with bluetooth hc04
- sonar sensor hcsr04 interfacing
- pir light on/off circuit
Pic16f676 Frequiency Counter
Solar Energy Measurement Using Pic Microcontroller
here is the circuit of solar energy meter or Solar Energy Measurement Using Pic Microcontroller
it can measure
- Solar Voltage
- Battery Voltage
- Solar Current
- Solar Power
temperature controller ds18b20 using pic16f676 microcontroller
stepper motor control using pic
wapda ups voltage display
DOTMATRIX display pic microcontroller
DOTMATRIX display pic microcontroller
all
for more Engineering Projects click below link
Related Articles
- Introduction to PIC18F452 Microcontroller
- Pic18f4550 microcontroller Basic Tutorial
- pic16f887 microcontroller
give me full circuit diagram
i cant find the link to download the HEX file of Pic Microcontroller. Please send me the link or send me the HEX file directly.