Autor Tema: lcd en 15 minutos  (Leído 2551 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado proclamer

  • PIC10
  • *
  • Mensajes: 30
lcd en 15 minutos
« en: 31 de Octubre de 2007, 14:12:22 »
bueno aqui les dejo  un proyectico realisable en 15 min:

se trata de la realisacion de un ecualizador grafico de 8 canales con un pic 16f877a una lcd y 8 potenciometros.

el codigo se basa en la lectura de los ocho canales de antrada analogicos de el pic para la posterios asignacion de los mismos segun el valor leido a la pantalla lcd jejeje no es muy complicado espero lo entiendan:



#include <16f877a.h>
#byte puerto_a = 0x05
#byte puerto_b = 0x06
#byte puerto_c = 0x07
#byte puerto_d = 0x08
#byte puerto_e = 0x09
#use delay(clock=4000000)

int byte_c,byte_d,valor,incremento;

void control(byte_c)
{
   bit_clear(puerto_c,1);
   bit_clear(puerto_c,0);
   puerto_d=byte_c;
   delay_us(100);
   bit_set(puerto_c,1);
   delay_us(1);
   bit_clear(puerto_c,1);
}

void dato(byte_d)
{
   bit_clear(puerto_c,1);
   puerto_d=byte_d;
   delay_us(100);
   bit_set(puerto_c,1);
   bit_set(puerto_c,0);
   delay_us(1);
   bit_clear(puerto_c,1);
}

void inicio_lcd()
{
   control(0x01);
   delay_ms(20);
   control(0x38);
   delay_ms(5);
   control(0x38);
   delay_ms(5);
   control(0x38);
   delay_ms(5);
   control(0x0c);
   control(0x06);
}



void main()
{

set_tris_a(0xff);
set_tris_e(0xff);
set_tris_d(0x00);
set_tris_c(0x00);
setup_adc_ports( ALL_ANALOG );
setup_adc(adc_clock_div_2);
inicio_lcd();

      for(;;)
         {
          
          for(incremento=0;incremento<=7;incremento++)
          {
          
            set_adc_channel(incremento);
            delay_ms(15);
            valor=read_adc();
            
               if(valor>=50)
                  {
                     control(0xd4+incremento);
                     dato(0xff);
                  }
                  
               if(valor<=50 && valor>=0 )
                  {
                     control(0xd4+incremento);
                     dato(0x00);
                  }
                  
               if(valor>=100)
                  {
                     control(0xd4+incremento);
                     dato(0xff);
                     control(0x94+incremento);
                     dato(0xff);
                  }
                  
               if(valor<=100 && valor>=50 )
                  {
                     control(0xd4+incremento);
                     dato(0xff);
                     control(0x94+incremento);
                     dato(0x00);
                  }
                  
               if(valor>=150)
                  {
                     control(0xd4+incremento);
                     dato(0xff);
                     control(0x94+incremento);
                     dato(0xff);
                     control(0xc4+incremento);
                     dato(0xff);
                  }
               if(valor<=150 && valor>=100 )
                  {
                     control(0xd4+incremento);
                     dato(0xff);
                     control(0x94+incremento);
                     dato(0xff);
                     control(0xc4+incremento);
                     dato(0x00);
                  }
                  
               if(valor>=200)
                  {
                     control(0xd4+incremento);
                     dato(0xff);
                     control(0x94+incremento);
                     dato(0xff);
                     control(0xc4+incremento);
                     dato(0xff);
                     control(0x84+incremento);
                     dato(0xff);
                  }
              
               if(valor<=200 && valor>=150 )
                  {
                     control(0xd4+incremento);
                     dato(0xff);
                     control(0x94+incremento);
                     dato(0xff);
                     control(0xc4+incremento);
                     dato(0xff);
                     control(0x84+incremento);
                     dato(0x00);
                  }
          }
          
         }
        
}



ademas de esto no se como subir las imagenes para que vean en el proteus como es el montaje jeje me da problemas, a otra cosilla quisiera saber si me pueden dar ayudas
acerca de como hacer filtros para no tener que darles los valores manuales a los potenciometros, gracias que disfruten.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: lcd en 15 minutos
« Respuesta #1 en: 31 de Octubre de 2007, 14:19:24 »
Proclamer, puedes subir imágenes a www.imageshack.us y pegar aquí el link que te dará.
Lo de los 15 minutos es complicado, incluso copiando, eh.

Desconectado proclamer

  • PIC10
  • *
  • Mensajes: 30
Re: lcd en 15 minutos
« Respuesta #2 en: 31 de Octubre de 2007, 15:10:32 »
jejeje no te entiendo nocturno como que incluso copiando......

Desconectado proclamer

  • PIC10
  • *
  • Mensajes: 30
Re: lcd en 15 minutos
« Respuesta #3 en: 31 de Octubre de 2007, 15:14:57 »
no me funciono el lick tienes otro porfavor nocturno......

Desconectado proclamer

  • PIC10
  • *
  • Mensajes: 30
Re: lcd en 15 minutos
« Respuesta #4 en: 31 de Octubre de 2007, 17:30:47 »
aqui esta el link jejejeje casi que hay que tener suerte para utyilisar este servicio........... 8) :-/ 8) :-/ 8)


http://img100.imageshack.us/my.php?image=92647010cn4.png

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: lcd en 15 minutos
« Respuesta #5 en: 31 de Octubre de 2007, 18:31:37 »
gracias proclamer por el aporte.

para lo de subir imagenes, mira el post
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek