Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




¿Cómo Crear un menú en un micro?


       



#1  ¿Cómo Crear un menú en un micro?
Diederick
Ubicación: USA
Registrado: 25 Jun 2007
Mensajes: 34
citar
Hola gente qué tal, sucede que estoy montando un programa sobre un PIC16F877 en el que necesito ofrecer diferentes alternativas para la visualización sobre unos displays 7 segmentos, por ejemplo: si oprimo la tecla A; que me muestre sobre los displays la hora....o si oprimo la tecla B; que me muestre la puntuación de un deporte....He estado probando con switch, con condiciones, con funciones, y ninguna me funciona porque cuando oprimo la opción sobre el teclado, el programa deja de ejecutarse, saben ustedes ¿Cómo Crear un menú en un micro?.

Agradezco su respuesta..

Un saludo

#2  
enigma_myvs
Ubicación: Venezuela
Registrado: 06 Oct 2007
Mensajes: 30
citar
Bueno, lo que tendrás que hacer es una rutina de condiciones; es decir, coloca pulsadores un teclado en uno de los puertos, y pon al programa a que chequee ese puerto constantemente; cada bit del puerto (depende de cuantos vayas a utilizar), representará una acciión; por ejemplo, Si el bit 0 del puerto B es 1, (eso quiere decir que apretaste A, por ejemplo) y entonces pues que muestre la hora; si el bit 1 es 1 (significa que apretaste la B) pues que muestre otra cosa, y así sucesivamente!

O simplemente con el teclado, y a cada momento lo estás encuestando para ver si presionaron algín número y de acuerdo a eso lo mandas a ejecutar la acción que quieras, como por ejemplo la visualización de la hora en los displays! espero haya servido! Smile

Atte: Enigma... La llanerita de Guayana Razz

#3  
Diederick
Ubicación: USA
Registrado: 25 Jun 2007
Mensajes: 34
citar
Gracias por la respuesta; lo que no tengo muy claro es si la solución que me ofreces es con pulsadores o con un teclado, porque recuerda que con un teclado ya no estaríamos hablando de un bit sino del juego de interrupciones que se dá de acuerdo al caracter que oprimo...

Un saludo....

#4  
macraig
Registrado: 27 Abr 2007
Mensajes: 145
citar
Si lo que quieres es ejecutar mas de una tarea a la vez sobre el microcontrolador, lo mas facil es usar interrupciones. En tu caso, al presionar una tecla, dispararias una interrupcion externa, que transfiera el flujo del programa a la rutina correspondiente, dependiendo de la tecla pulsada.

Es solo una sugerencia general, si explicas exactamente q hace tu circuito, tal vez pueda ser un poco mas especifico.

#5  
Diederick
Ubicación: USA
Registrado: 25 Jun 2007
Mensajes: 34
citar
HOla macraig y quienes estén interesados en el tema; sucede que el programa debe visualizar sobre una LCD dos opciones para que el usuario seleccione qué es lo que desea, por ejemplo:

1. Visualización de deporte 1 (deporte 1 es una rutina que visualiza sobre un juego de siete segmentos los marcadores).

2. Visualización de deporte 2(deporte 2 es una rutina que visualiza sobre un juego de siete segmentos los marcadores de un deporte totalmente diferente):

Qué crees que debo utilizar: pulsadores, switch o el teclado? cómo podría hacer las instrucciones porque lo he intentando y no ha salido.....

Agradezco tu respuesta

#6  
macraig
Registrado: 27 Abr 2007
Mensajes: 145
citar
pues cualquiera de esas opciones funciona, marcadores switch o teclado... Si solo quieres cambiar entre deporte 1 y deporte 2, un switch seria tal vez mas comodo para el usuario, o un unico pulsador... Si quieres ingresar datos, o un menu mas complicado, un conjunto de pulsadores, una combinacion switch pulsador o un teclado serian posibles...

#7  ¿Algún menú de opciones para lcd?
Diederick
Ubicación: USA
Registrado: 25 Jun 2007
Mensajes: 34
citar
HOla gente qué tal, he tratado de implementar un menú de opciones en picc para Lcd a través de un pic16f877, pero no he conseguido que la lcd visualice lo que tiene que visualizar con la opción dada (he intentado con funciones, y con switch) pero el programa muestra el menú y ahí se queda, pareciera como si el micro o la lcd no reconocieran el dato que llega del teclado matricial...

Si alguno de ustedes ha implementado un menú de este tipo en C le agradecería la asesoría porque he intentado y no me funciona por ningún lado...

Un saludo...[/b]

#8  
Airoa Airon
Ubicación: México
Registrado: 08 Dic 2007
Mensajes: 21
citar
Yo hice este si te interesa alguna rutina de ahi dime.
Funciones:
Alarma, contraseña, juego del 777, tonos, piano, calculadora, resuelve sistemas de ecuaciones de 2x2, 3x3 y 4x4




Esta es la de teclado, tienes que definir r1,r2,r3 y r4 antes de poder usarla, usa el puerto e y el puerto X donde definas r pero puede ser fácilmente modificada

Código: Seleccionar todo
int keypad(int time)
{
   
  output_e(0x01);
 
     if (input (r1))
        {       
        delay_ms(time);
        return 1;}
       
     if (input (r2))
        {       
        delay_ms(time);
        return 4;}

     if (input (r3))
        {
        delay_ms(time);
        return 7;}

     if (input (r4))
        {   
        delay_ms(time);
        return 10;}
  output_e(0x02);       
 
     if (input (r1))
        {             
        delay_ms(time);
        return 2;}
     if (input (r2))
        {           
       delay_ms(time);
        return 5;}
     if (input (r3))
        {
         delay_ms(time);
        return 8;}
     if (input (r4))
        {
      delay_ms(time);
        return 11;}
  output_e(0x04);
 
     if (input (r1))
        { 
        delay_ms(time);
        return 3;}
     if (input (r2))
        {
        delay_ms(time);
        return 6;}
     if (input (r3))
        {     
        delay_ms(time);
        return 9;}
     if (input (r4))
     {
        delay_ms(time);
        return 12;}
       
        return 0;
        }

#9  
Diederick
Ubicación: USA
Registrado: 25 Jun 2007
Mensajes: 34
citar
OYe gracias por la respuesta, hay algo que no tengo muy claro...tu utilizas pulsadores como entradas?

#10  
Airoa Airon
Ubicación: México
Registrado: 08 Dic 2007
Mensajes: 21
citar
Si uso una matriz de botones de 3x4. Cuando quiero obtener algun valor solo le pongo

Código: Seleccionar todo
switch(keypad())
{
case 1:
lcd_putc("\fxxxxxx");
lcd_putc("\nxxxxxx");
case 2:
etc..
}


si te interesa te puedo pasar la funcion de la barrita de progreso xD puedes elegir el tiempo de duracion y el renglon donde aparece.

 Responder





 Otros temas de interés 
No hay mensajes nuevos Estado inicial de 555
No hay mensajes nuevos Aumentar potencia en bobina tesla de estado solido
No hay mensajes nuevos amplificador para electromiografo
No hay mensajes nuevos Detectar cambio de estado (VB)
No hay mensajes nuevos Diseño de un relé de estado solido DC

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||