TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: pacalaconcurso en 20 de Noviembre de 2002, 10:26:00

Título: Un menu en la LCD para configurar nuestro programa
Publicado por: pacalaconcurso en 20 de Noviembre de 2002, 10:26:00
este codigo es un pequeño ejemplo de como se puede realizar un menu de opciones con la LCD y tres botones.

esta bien estructurado para poder ver la idea rapidamente.

se trata de poder controlar el numero de parpadeos de un led y el tiempo encendido y apagado en cada parpadeo.

creo recordar que funciona bien pues hace algun tiempo que lo hize.

creo que puede servir de patron para programas mucho mas complejos. (una idea seria guardar la configuracion el la eeprom para no perderla.....)

espero que os sirva

un saludo
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: CARLOSFER en 28 de Noviembre de 2002, 01:41:00
hola pacalaconcurso.

gracias por el codigo de menus, muy bueno.

por si te vale para algo, consegui no se como un programilla que genera un codigo muy similar al tuyo, en el se pueden crear menus y submenus utilizando cuatro botones , no lo he utilizado todabia pero creo que es bueno.

un saludo.

¿¿¿ Alguien tiene el microcode studio pro ???
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: mlastraj en 15 de Agosto de 2004, 17:39:00
Yo tengo la version 2.0.5.0 pesa alrededor de 2 MB y ademas tengo el PBP 2.44.

Marcelo Santiago-Chile
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: tornar en 16 de Marzo de 2005, 05:17:00
Yo tambien habia pensado usar un LCD y un miniteclado para hacer cosas parecidas. Habia pensado montar un mini-S.O. que nos permita realizar funciones basicas, como copiar o mover datos entre la memoria externa y el codigo del programa a ejecutar, que nos permita editar los datos que tenemos, etc.
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: J1M en 04 de Abril de 2005, 04:04:00
Os pongo aquí el menu que hize para configurar mis programillas por si os es de utilidad:

#byte pb       =0xF81
#bit t_ok      =pb.0      // RB0, pin21
#bit t_mas       =pb.1      // RB1, pin22
#bit t_mns       =pb.2      // RB2, pin23

#byte intcon   =0xFF2
#byte intcon3  =0xFF0
#bit  intf     =intcon.1
#bit  intf1    =intcon3.0
#bit  intf2    =intcon3.1

#INT_EXT
menu()
{
   disable_interrupts(GLOBAL);
   disable_interrupts(INT_EXT);
   disable_interrupts(INT_EXT1);
   disable_interrupts(INT_EXT2);
   delay_ms(300);
   testado=0;
   lcd_putc("f");
   lcd_gotoxy(1,1);
   lcd_putc("1 OPCION1");
   lcd_gotoxy(1,2);
   lcd_putc("2 OPCION2");
   lcd_gotoxy(1,3);
   lcd_putc("3 OPCION3");
   lcd_gotoxy(1,4);
   lcd_putc("OPCION :");
   for(i=0;i!=255;i++)
   {
      delay_ms(20);
     
      lcd_gotoxy(11,4);
      printf(lcd_putc,"%u",testado);
      if (!t_ok){delay_ms(300); break;}
      else if (!t_mas){i=0; delay_ms(300); testado++; if(testado>3){testado=0;};}
      else if (!t_mns){i=0; delay_ms(300); testado--; if(testado==255){testado=3;};}
   };
   if(testado==0)
   {
      intf=0; intf1=0; intf2=0;
      enable_interrupts(GLOBAL);
      enable_interrupts(INT_EXT);
      enable_interrupts(INT_EXT1);
      enable_interrupts(INT_EXT2);
      lcd_putc("f");
      break;
   }
   else if(testado==1){OPCION1(); lcd_putc("f");}
   else if(testado==2){OPCION2(); lcd_putc("f");}
   else if(testado==3){OPCION3(); lcd_putc("f");}
}

En mi caso utilizo un 18F2520 y me interesa que las interrupciones se activen al pulsar las teclas que están en el puertoB... supongo q no hay problemas para entender como funciona... ocupa bastante poco en rom y el código se queda "limpito"

un saludo!
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: pepes2 en 04 de Abril de 2005, 21:16:00
Hola a todos!!!, soy nuevo integrante de este foro y más encima mis conocimientos son pequeños, los cuales espero ampliar. He estado absorviendo mucho toda la información todo lo relacionado con los PICs, alguien me puede enviar el esquematico para probar los menús.

Saludos a todos desde Ecuador

Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: J1M en 05 de Abril de 2005, 13:29:00
pero el esquematico es para implementarlo fisicamente??? para simularlo con proteus o como?? y para que pic?? yo tengo por aquí una simulación en proteus, si quieres subo eso a algun lado y posteo por aquí el link. Ya nos diras...

un saludo!
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: pepes2 en 05 de Abril de 2005, 20:43:00
gracias por responder tan rapido es para utilizar con el pic16f877, lo que pretendo hacer es con los botones ir desplazando por los menús y visualizar en pantalla de los nokia.
saludos
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: J1M en 06 de Abril de 2005, 08:17:00
ok, el esquemático en proteus lo tengo para un 18F252, y con un LCD de 20x4 ... pero vamos que teniendo la librería del nokia, y tomando ese como base no creo q tengas ningun problema... lo único el que deberás refrescar la pantalla entera en cada pulsación de tecla ya que al ser un display gráfico sino lo haces de esta forma se te superpondrán los caracteres.

saludos!
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: pepes2 en 06 de Abril de 2005, 20:58:00
 Por favor enviame el esquematico
Gracias
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: J1M en 20 de Abril de 2005, 06:51:00
Akí te dejo un menú de tres botones, te dejo tb una simulación en Proteus 6.7 SP3 para un PIC18

http://j1m.foroscatv.us/ejemplos/menu.zip

Saludos y espero q os sirva Giño
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: ognat en 29 de Julio de 2005, 18:14:00
hola a todos.....una pregunta...como podriamos hacer para en vez de visualizar el voltaje con el 7107...y cuatro led-disp,hacerlo con un pic que contenga puertos analagicos y conversion A/D, como el pic 16F877...y un lcd de 2x16....

estoy tratando de hacerlo andar...pero no logro una rutina (en picbasic) para obtener un voltaje con 1 o 2 decimales, me los redondea en 2 digitos, y no tiene una mediad precisas, me han dicho que tengo que usar un voltaje de referencia....y apartir de ahi....desarrollar un algoritmo de medida ----.....como podria hacer?....

tienen alguna idea?....

desde ya muchas gracias.......

Buenos Aires - Argentina
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: RaDoN en 30 de Julio de 2005, 02:51:00
¿J1M podrias revisar ese link? Estoi interesado, mala suerte que llegue a este hilo tarde Enfurruñado

Por cierto el programita que postearon por arriba, ¿hace menú en que lenguaje?
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: J1M en 03 de Agosto de 2005, 13:48:00
radon estoy preparando una web para colgar lo q he ido posteando... q x desgracia el espacio q tenia me lo han tirado sin avisar ni ná y ntre las vakaziones i demas...

en unos dias posteo direcciones nuevas

si lo necesitas con urgencia te lo paso x msn

jim2k2@hotmail.com

xao! Giño
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: Algec en 03 de Agosto de 2005, 14:15:00
YO ando igual con un display de dos lineas, y un 16F877, pasamelo a mi tambien , si puedes por favor.
masmontero@hotmail.com
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: RaDoN en 11 de Agosto de 2005, 05:12:00
Yo en C hago los menús con un "switch" dentro de un while, antes de este lee la variable de donde provenga (por ejemplo un teclado matricial) y así siempre hasta que pulse alguna tecla y salga como si fuese una "bandera", un ejemplo (el menú se mueve con el mando a distancia de la TV, 1 y 2 y el 0 para salir).

Codigo:

//***********************************************
//* RaDoN-Bot 877
//* Por Daniel G - by RaDoN (8/8/05)
//* *********************************************

  #include <16f877.h>
  #fuses NOLVP,XT,NOWDT,NOPROTECT,PUT
  #use delay(clock=4000000)

  #include "LCD.C"
  //#include "24256.C"

  #ORG 0x1F00,0x1FFF {} //for the 8k 16F876/7 bootloader

  //#use fast_io(A)
  //#use fast_io(B)
  //#use fast_io(C)
  //#use fast_io(D)

  #byte port_a = 5
  #byte port_b = 6
  #byte port_c = 7

  int x, menu=1;

  void zumbador(int x)
  {
      output_bit(PIN_C5,1);
      delay_ms(x);
      output_bit(PIN_C5,0);
  }

  int rc5(void) {
   int i, x = 0;
   while(input(PIN_B6) == 1);
   delay_us(444);
   for(i=0;i<=7;++i) {
      delay_us(1778);} // nos saltamos los bit de start, toggle y sistema (8bits)
   for(i=0;i<=5;++i) {
      x = x + input(PIN_B6);
      if(i != 5) x = x * 2;
      delay_us(1778);}
   delay_ms(139); // tiempo para repeticiones entre tramas
   return x; }

  void main(void)
  {
      lcd_init();
      printf(lcd_putc,"fDany-Bot 877
");
      while(menu != 0)
      {
      menu = rc5();
         switch(menu)
         {
            case 1:  lcd_gotoxy(1,2);
                     printf(lcd_putc,"menu 1");
                     break;
            case 2:  lcd_gotoxy(1,2);
                     printf(lcd_putc,"menu 2");
                     break;
            case 0:  lcd_gotoxy(1,2);
                     printf(lcd_putc,"Saliendo...");
                     delay_ms(1000);
                     break;
         }
      }
      zumbador(10);
  }



Si alguien lo hace de otra forma en C me gustaria que lo comentaran para conocer nuevas formas :]
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: J1M en 18 de Agosto de 2005, 16:14:00
Radon despues de nose cuanto tiempo, te he subido a la página el menú que te dije en su dia.

http://perso.wanadoo.es/j1m/index.htm

http://perso.wanadoo.es/j1m/proyectos/ejemplos/menu.zip


Es un menú controlable con 3 botones, escrito en C para el CCS, le he puesto un LCD de 20x4 para que sea mas "vistoso", en principio para el 18F2520. He subido tb una simulación en Proteus para que veais su funcionamiento, tardará un poco en ejecutarse, es por el dichoso WDT en los PIC18 y el Proteus que se llevan muuu malamente.

saludos y sorry x el retraso! Giño
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: RaDoN en 18 de Agosto de 2005, 16:41:00
Jo ... no me deja abrir el archivo de proteus (no se que de la version). ¿Cual usas tu? Creo que tengo la 6.5 ... ¿Te importaria subir una foto con el esquematico y ya lo monto yo como pueda? Gracias J1M.

Voi a hecharle un vistazo al menu.h ... por cierto enhorabuena por la web (ya ta en mis favoritos Sonrisa Gigante).
Título: RE: Un menu en la LCD para configurar nuestro programa
Publicado por: J1M en 18 de Agosto de 2005, 16:59:00
<img   src="http://pics.miarroba.com/caretos/wink.gif" alt="Giño" title="Giño" />

si no kieres bajart esa version te pongo una fotillo, aunq... renovarse o morí :P

xao xao! y thx x el comentario d la web <img   src="http://pics.miarroba.com/caretos/smile.gif" alt="Sonrisa" title="Sonrisa" />