hola compañeros del foro
ante todo un cordial saludo, bueno les comento una gran noticia la compañia Labcenter Proteus me ha Obsequiado Licencia para el programa proteus en formato original, y con 1 año de soporte Gratuito, asi que estoy empezando estudiar todas la opciones de simular y diseñar Pcb con la version 8.4.
para empezar me diseñe una fuente digital con Pic 16F876a, utilizando un Lcd y el conversor AD. y este el es programa realizado en ccs en version Demo.
#include <16f876A.h> //LIBRERIA DEL PIC QUE SE VA A USAR
#fuses XT,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT //FUSES DE AJUSTE PARA CRISTAL XT DE 4MHZ Y SIN PROTECCION
#device adc=10 //CONFIGURA EL CONVERSOR AD A 10 BITS
#use delay (clock = 4000000) //CRISTAL DE 4 MHZ
#define use_portb_lcd TRUE //CONFIGURA EL PUERTO B PARA LA LCD
#include <LCD.C> //LIBRERIA PARA LA LCD 2*16
#include <math.h> //LIBRERIA PARA USO MATEMATICO
#use standard_io (All) //CONFIGURA TODOS LOS PUERTOS Y AUTOMATICAMENTE LOR TRIS CON ESTANDARD IO
float t; //VARIABLE DE TIPO FLOTANTE LLAMADA t
float s; //VARIABLE DE TIPO FLOTANTE LLAMADA s
void med_ir () //SE CREA LA FUNCION PARA MEDIR VOLTAJE
{ //CORCHETE QUE ABRE EL INICIO DE LA FUNCION
setup_adc_ports (AN0); //CONFIGURA EL PUERTO AN0 PIN 2 COMO CONVEROR ANALOGO DIGITAL
setup_adc (ADC_CLOCK_DIV_32); //CONFIGURA EL RELOJ PARA LA CONVESION CON UN DIVISOR DE 32 DE LOS CILOS DEL RELOJ
set_adc_channel (0); //habilitacion canal 0 //INICIA LA CONVERSION DEL CANAL 0 PIN 2
delay_us (20); //RETARDO PARA DAR TIEMPO A LA CONVERSION
t = read_adc(); //LO QUE LEE EN EL CONVESROR AD LO GUARDA EN LA VARIABLE t
s= 5.0 *t / 1024; //LO CONVIERTE A VOLTAJE 5V DE VOLTAJE DE REFERENCIA DIVIDIDO EN 2^10 QUE ES LA RESOLUCION DEL CONVERSOR
} //CIERRA EL CORCHETE Y TERNMINA LA FUNCION DE MEDIR
void publi_ca () //FUNCION DE PUBILAR EN EL DISPLAY LO MEDIDO
{ //CORCHETE QUE INICIA LA FUNCION
lcd_putc('\f'); //BORRA LA LCD YA DEBE ESTAR INICIALIZADA CUANDO LA LLAME
lcd_gotoxy (1,1); //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER UNO
printf (lcd_putc, "VOLTAJE AJUSTADO"); //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
lcd_gotoxy (6,2); //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER SEIS
printf(lcd_putc, " +\%2.1f v",(s*7)); //DESPLIEGA EL CARACTER + Y LO QUE ESTA EN LA VARIABLE FLOTANTE CON DOS CARACTERES ENTEROS Y UN DECIMAL YLUEGO EL CARACTER v LA VARIABLE LA MULTIPLICA POR 7
} //CIERRA EL CORCHETE Y TERNMINA LA FUNCION DE PUBLICAR
void main () //FUNCION PRINCIPAL ,PROGAMA PRICIPAL
{ //CORCHETE QUE INICIA LA FUNCION
lcd_init(); //INICIALIZA LA LDC
lcd_gotoxy (4,1); //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER CUATRO
printf (lcd_putc, "FUENTE DE"); //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
lcd_gotoxy (5,2); //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER CINCO
printf (lcd_putc, "VOLTAJE"); //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
delay_ms (2200); //RETARDO DE 2.2 SEGUNDOS PARA QUE SE VEA EL AVISO
lcd_putc('\f'); // BORRA LCD
lcd_gotoxy (2,1); //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER DOS
printf (lcd_putc, "CON INDICADOR"); //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
lcd_gotoxy (5,2); //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER CINCO
printf (lcd_putc, "DIGITAL"); //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
delay_ms (2200); //RETARDO DE 2.2 SEGUNDOS PARA QUE SE VEA EL AVISO
lcd_putc('\f'); // BORRA LCD
lcd_gotoxy (1,1); //CORDENADAS DEL TEXTO EN RENGLON UNO CARACTER UNO
printf (lcd_putc, "Jose Luis Comas "); //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
lcd_gotoxy (1,2); //CORDENADAS DEL TEXTO EN RENGLON DOS CARACTER CINCO
printf (lcd_putc, " Est Electronica "); //DESPLIEGA EN LA PANTALLA LO QUE ESTA EN LAS COMILLAS
delay_ms (2200); //RETARDO DE 2.2 SEGUNDOS PARA QUE SE VEA EL AVISO
while (true) //CONDICION VERDADERA PARA HACER UN BUCLE SIN FIN
{ //CORCHETE QUE INICIA LA FUNCION
med_ir (); //LLAMA LA FUNCION DE MEDIR QUEDA EN L AVARIABLE S EL VALOR MEDIDO
publi_ca (); //DESPLIEGA EN PANTALLA MO MEDIDO QUE ESTA EN LA VARIABLE FLOTANTE s
delay_ms (100); //RETARDO DE 100ms TIEMPO EN QUE REFRESCA DESPLIEGUE Y HACE MEDICION
} //CIERRA CORCHETE DEL BUCLE SIN FIN
}
este es un programa muy sencillo, bueno la simulacion es perfecta, y me visualiza el voltaje deseado en forma digital.
compañeros les quiero pedir una ayuda, con el programa que hice y lo que deseo es que el programa me permita visualizar el voltaje negativo.
quiero utilizar el puerto AN1 del Pic 16F876a, mediante divisor de tension con resistor 20k, poten de 10k y un Zener 1n4733, cuando diseñe la parte negativa de la fuente utilizando el Lm337 y su salida de tension despues de regulado lo pueda utilizar en el puerto An1 del Pic mediante un divisor de tension, pero se que que en el codigo hay que realizar la configuracion, pero lo he intentado, pero me da errores, ya llevos muchas horas intentandolos, pero no he podido realizarlo, el programa ya esta realizado, lo que unico que hace falta es una configuracion para que me pueda leer el voltaje negativo.
espero que me puedan ayudar
gracias
jose luis