Volta Je

download Volta Je

If you can't read please download the document

description

voltajes

Transcript of Volta Je

ACTIVIDAD TRES: MOSTRAR LA VARIACION DE VOLTAJE DE ACUERDO AL POTENCIOMETRO EN LA LCD, TX Y 7 SEGMENTOS// PIC16F887 Opciones de los Bits de configuracione#include //Librera del Microcontrolador en C#include // CONFIG1#pragma config FOSC = XT //Oscladores#pragma config WDTE = OFF //Activacin del Perro Guardin#pragma config PWRTE = ON#pragma config MCLRE = ON //Configuracin del Master Clear#pragma config CP = OFF //Proteccin del Cdigo#pragma config CPD = OFF#pragma config BOREN = ON#pragma config IESO = ON#pragma config FCMEN = ON#pragma config LVP = OFF //Programacin con alto o Bajo voltaje// CONFIG2#pragma config BOR4V = BOR40V //Sin reset por encima de de 4V o 2V#pragma config WRT = OFF//Encabezado#define _XTAL_FREQ 4000000 //Declaracin del Oscilador#define LCD_RS RD6 //Asociar la variable LCD_RS al PIN RD6#define LCD_EN RD7 //Asociar la variable LCD_EN al PIN RD7#define BUS_DE_DATOS PORTB //Asociar BUS_DE_DATOS al PUERTOBchar unidades, decenas, centenas, miles, diezmiles, unidadesd, decenasd, centenasd, milesd, diezmilesd;int x = 0, y, digital;int unsigned voltajelcd,aux, auxd ;float voltaje;void lcd_init(void);void set_lcd(void);void lcd_puts(const char * s);void lcd_putch(char c);void lcd_goto(unsigned char pos);void lcd_write(unsigned char c);void Binbcd(void) { aux = voltajelcd; unidades = 0; decenas = 0; centenas = 0; miles = 0; diezmiles = 0; while (aux >= 10000) { aux = aux - 10000; diezmiles = diezmiles + 1; } while (aux >= 1000) { aux = aux - 1000; miles = miles + 1; } while (aux >= 100) { aux = aux - 100; centenas = centenas + 1; } while (aux >= 10) { aux = aux - 10; decenas = decenas + 1; } unidades = aux;}void Binbcdd(void) { auxd = voltajelcd; unidadesd = 0; decenasd = 0; centenasd = 0; milesd = 0; diezmilesd = 0; while (auxd >= 10000) { auxd = auxd - 10000; diezmilesd = diezmilesd + 1; } while (auxd >= 1000) { auxd = auxd - 1000; milesd = milesd + 1; } while (auxd >= 100) { auxd = auxd - 100; centenasd = centenasd + 1; } while (auxd >= 10) { auxd = auxd - 10; decenasd = decenasd + 1; } unidadesd = auxd;}void Multiplex(void) { PORTC = diezmilesd; PORTD = 0X01; __delay_ms(1); PORTC = milesd; PORTD = 0X02; __delay_ms(1); PORTC = centenasd; PORTD = 0X04; __delay_ms(1);}void main() { ANSEL = 0X20; ANSELH = 0; TRISC = 0X80; TRISE = 0X01; TRISB = 0; TRISD = 0X38; PORTE = 0; PORTB = 0; PORTD = 0; PORTC = 0; TXSTA = 0X24; RCSTA = 0X80; SPBRG = 25; ADCON0 = 0X95; ADCON1 = 0X80; lcd_init(); lcd_goto(0X80); // selecciono primera lnea lcd_puts("OSCAR E IVAN XSI"); lcd_goto(0XC0); // Selecciono segunda lnea lcd_puts("VOLTAJE: "); while (1) { GO = 1; while(GO == 1) continue; digital = (ADRESL + (ADRESH * 256)); voltajelcd = digital * 49; Binbcd(); lcd_goto(0XCA); lcd_putch(diezmiles + 48); lcd_goto(0XCB); lcd_putch(44); lcd_goto(0XCC); lcd_putch(miles + 48); lcd_goto(0XCD); lcd_putch(centenas + 48); lcd_goto(0XCF); lcd_putch('V'); voltaje = digital * 0.00488; printf("El voltaje es: %f\n\r", voltaje); Binbcdd(); for (y = 0; y