Escolar Documentos
Profissional Documentos
Cultura Documentos
A LCD, TX Y 7 SEGMENTOS
// PIC16F887 Opciones de los Bits de configuracione
#include <xc.h>
#include <stdio.h>
// CONFIG1
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
#pragma
config
config
config
config
config
config
config
config
config
config
FOSC = XT
WDTE = OFF
PWRTE = ON
MCLRE = ON
CP = OFF
CPD = OFF
BOREN = ON
IESO = ON
FCMEN = ON
LVP = OFF
//Oscladores
//Activacin del Perro Guardin
//Configuracin del Master Clear
//Proteccin del Cdigo
// CONFIG2
#pragma config BOR4V = BOR40V
#pragma config WRT = OFF
//Encabezado
#define _XTAL_FREQ 4000000
lcd_init(void);
set_lcd(void);
lcd_puts(const char * s);
lcd_putch(char c);
lcd_goto(unsigned char pos);
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 <= 170; y++) {
Multiplex();
}
//__delay_ms(1000);
}
}