Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: PalitroqueZ en 05 de Diciembre de 2005, 08:51:00
Título: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: PalitroqueZ en 05 de Diciembre de 2005, 08:51:00
Este es un voltímetro mas de la colección, pero este trabaja multiplexando 3 displays 7-SEG cátodo comúm y según el proteus dá una buena precisión (a 10bits). le sustituí los transistores NPN por inversores para controlar los segmentos de los displays debido a q el proteus c pone muy lento y de todas maneras los inversores cumplen la misma función. ya sabes si lo van a implementar cambien por NPN
y el código fuente: //*************************************************************// // Simple voltimetro usando el 16F873, con: // *- CAD a 10 bits // *- 3 displays 7-seg cátodo común // *- el valor mostrado corresponde al valor DC en la entrada del CAD //************************************************************** #include <16F873.h> #device ADC=10 #use delay(clock=4000000) #fuses NOCPD,NOWDT,BROWNOUT,PUT,XT,NOWRT,NOLVP,NODEBUG,NOPROTECT //0x3F71 //****************************************************************
#use fast_io(A) #use fast_io(B) #use fast_io(C) #DEFINE PASADOR PIN_A0 // el switche #DEFINE Q1 PIN_B1 // transistor 1 #DEFINE Q2 PIN_B2 // transistor 2 #DEFINE Q3 PIN_B3 // transistor 3 #DEFINE punto PIN_C7 // punto decimal #BYTE salida=7 long value; float voltaje; int a; //**************************************************************** struct digitos_separados { // variables en bcd de unidad,decena,centena int unidad, decena, centena; } digito; //**************************************************************** struct mis_datos { // variables de datos de entrada y salida int dato1, dato2, resultado; } numeros; //**************************************************************** void separar_digitos(){ // separa resultado en unidad, decena y centena int temp; digito.unidad=0; digito.decena=0; temp=numeros.resultado; while(temp>=10){ temp-=10; digito.decena++; } digito.unidad=temp; } //**************************************************************** void mostrar(){ // multiplexa en tres display 7-seg anodo común int const bcd_7seg[10]= {0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x73}; int contador; output_low(Q1); output_low(Q2); output_low(Q3); output_low(punto); for(contador=0;contador<11;contador++){ salida=bcd_7seg[digito.unidad]; // muestra unidad output_high(Q1); delay_ms(5); output_low(Q1); delay_cycles(4); salida=bcd_7seg[digito.decena]; // muestra decena output_high(Q2); delay_ms(5); output_low(Q2); delay_cycles(4); salida=bcd_7seg[digito.centena]; // muestra centena output_high(Q3); output_high(punto); delay_ms(5); output_low(Q3); output_low(punto); delay_cycles(4); } } //**************************************************************** // RUTINA PRINCIPAL // c puede hacer mediante poleo ó por interrupciones //**************************************************************** #int_ad CAD(){ value = Read_ADC(); delay_us(30); } //***************************************// void main(){ set_tris_a(0x1); // ra0=entradas, los demas=salida set_tris_b(0x0); // puertob=entrada set_tris_c(0x0); // puertoc=salida
Título: RE: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: Nocturno en 05 de Diciembre de 2005, 09:20:00
El foro no admite ficheros adjuntos por falta de espacio, pero si es una foto, puedes subirla fácilmente a http://www.imageshack.us/ por ejemplo, y adjuntar el link.
Por cierto, tu otro post lo he borrado por razones evidentes.
Título: RE: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: PalitroqueZ en 06 de Diciembre de 2005, 09:35:00
Ahora si pude meter la imagen, gracias nocturno66. me imaginaba algo con el otro post. ¿estaba como muy directo, verdad?. bueno pero yo podría colocar un link desde sharefile y no creo q sería tan malo. De todas maneras estamos en navidad y hay q dar regalos. ja ja ja
"Hay q atakar a las adversidades de la misma forma en q las adversidades nos ataka"
Título: RE: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: elmasvital en 06 de Diciembre de 2005, 11:15:00
Muy bueno el aporte... además que estaba buscando cómo hacer uno de estos. De todas formas. Hasta qué rangos pueden llegar a medir?
1 saludo
Título: RE: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: RaDoN en 06 de Diciembre de 2005, 11:33:00
Escrito originalmente por elmasvitalMuy bueno el aporte... además que estaba buscando cómo hacer uno de estos. De todas formas. Hasta qué rangos pueden llegar a medir?
1 saludo
Con divisores de tensión y algun selector, "todo" lo que quieras no?
Título: Re: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: hectdiaf en 17 de Febrero de 2009, 18:42:11
hola PalitroqueZ me encontrba recogiendo ideas de varios proyectos y encontre el tuyo me llamo mucho la atencion de como logras multiplexar los datos y me interesaria que me explicaras mas detalladamente como funciona lo del struc.
te lo agradeceria ucho PalitroqueZ
Título: Re: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: cmontoya en 20 de Febrero de 2013, 22:13:08
Por lo que veo este voltimetro solo mide hasta 5v
Existe la posiblidad de modificar este valor??
Título: Re: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: callecuatro1976 en 27 de Enero de 2015, 13:43:48
y la imagen de proteus
Título: Re: Voltímetro con 16F873 y multiplexado con 7-SEG
Publicado por: PalitroqueZ en 27 de Enero de 2015, 14:50:58