rx tx pic16f877





/////////codigo transmisor  by luis portilla

//////////////////////////////////////////////////////////////////////////////////////

#include <16F877A.h>
#device ADC=8         // usaremos conversor A/D con 10 bits de resolución
 
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use rs232(baud=2400, xmit=PIN_C6, rcv=PIN_C7,timeout=30)
int8 DatoTX, DatoRX,a,b;
#include <lcd.c>

#use fast_io(A)       // Para configurar manualmente el puerto como entrada o salida
#use fast_io (B)
//////////////////////////////////////////////////////////////////////////////////////

int16 Voltaje,bina;    
int8  Dig1,Dig2,Dig3,Dig4,Dig5;

float Valor;

//////////////////////////////////////////////////////////////////////////////////////

void IniConversorAD(){
   setup_adc(ADC_CLOCK_INTERNAL);    // Configura el conversor
   setup_adc_ports(AN0);          // Entrada RA0 como analógica
   set_tris_A(0xFF);            // Todo el PortA como entrada
}

void LeerSenal(){
   set_adc_channel(0);      // Seleccionar un canal (en este caso Canal 0)
   delay_us(10);         // Retardo necesario entre la selección de canal y la adquisición.
   Valor=read_adc();      // Adquisición de la señal.
   bina=read_adc();
}

void DescomponerEnDigitos(){
int16 aux;
int16 Dato;

int16 bitdec;
Valor= (Valor*5)/255;
Valor=Valor*1000;
 Dato=Valor;

   Dig1= Dato/1000;
   aux= Dato% 1000;
   Dig2= aux/100;
   aux%= 100;
   Dig3= aux/10;
   Dig4= aux%10;

 
     Dig1+= '0';         // Convierte los dígitos a código ASCII
   Dig2+= '0';
   Dig3+= '0';
   Dig4+= '0';
   if (Dig1== '0'){
      Dig1= " ";
   }
}


void IniPantallaLCD(){
   lcd_init();
   lcd_putc("\f");                  // Borrar Pantalla
}

void VisualizaLCD(){
   lcd_gotoxy(1,1);               // Direccionamos la RAM de la LCD
 lcd_putc( Dig1);
  lcd_putc( Dig2);
   lcd_putc( Dig3);
 
}



//////////////////////////////////////////////////////////////////////////////////////
//                       PROGRAMA PRINCIPAL                           //
//////////////////////////////////////////////////////////////////////////////////////

void main() {
   IniConversorAD();
   IniPantallaLCD();
   while (true){
      LeerSenal();
      DescomponerEnDigitos();
     VisualizaLCD();
   

putc(Dig1);
delay_ms(10);
putc(46); //es un punto
delay_ms(10);
putc(Dig2);
delay_ms(10);
putc(Dig3);
delay_ms(10);
putc(Dig4);
delay_ms(50);

}
}



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////  codigo receptor


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <16F877A.h>
#device ADC=10         // usaremos conversor A/D con 10 bits de resolución
 
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use rs232(baud=2400, xmit=PIN_C6, rcv=PIN_C7,timeout=30)
int8 DatoTX, DatoRX,a,b;
#include <lcd.c>

#use fast_io(A)       // Para configurar manualmente el puerto como entrada o salida
#use fast_io (B)
//////////////////////////////////////////////////////////////////////////////////////

int16 Valor,Voltaje;    
int8  Dig1,Dig2,Dig3,Dig4,Dig5,sumar1;

//////////////////////////////////////////////////////////////////////////////////////






void IniPantallaLCD(){
   lcd_init();
   lcd_putc("\f");                  // Borrar Pantalla
}

//!void VisualizaLCD(){
//!   lcd_gotoxy(a,1);               // Direccionamos la RAM de la LCD
//!   lcd_putc(DatoRX);
//!if(a>16){
//!lcd_gotoxy(b,2);
//!lcd_putc(DatoRX);
//!}
//!}
void VisualizaLCD(){
   lcd_gotoxy(1,1);               // Direccionamos la RAM de la LCD
 lcd_putc( Dig1);
  lcd_putc( Dig2);
   lcd_putc( Dig3);
    lcd_putc( Dig4);
     lcd_putc( Dig5);
 
}


//////////////////////////////////////////////////////////////////////////////////////
//                       PROGRAMA PRINCIPAL                           //
//////////////////////////////////////////////////////////////////////////////////////

void main() {

   IniPantallaLCD();
   while (true){
      delay_ms(5);
   VisualizaLCD();




if (kbhit()){


Dig1=getc();
delay_ms(15);
Dig2=getc();
delay_ms(15);
Dig3=getc();
delay_ms(15);
Dig4=getc();
delay_ms(15);
Dig5=getc();
delay_ms(15);
//lcd_putc(DatoRX);
//if(a==16){
//   lcd_gotoxy(1,2);
//}else if(a==33){
//      lcd_init();
//   lcd_putc("\f");
//   a=0;
       }
}
}
rx tx pic16f877 rx tx pic16f877 Reviewed by libros google on octubre 17, 2012 Rating: 5

No hay comentarios

Post AD

home ads