¿Cómo diseñar una GUI usando GLCD?

0

Tengo un pequeño proyecto en el que estoy trabajando. Tiene un LCD NOKIA 5110. Quiero hacer una buena interfaz gráfica de usuario para ver las mediciones, y también controlar el hardware. He diseñado diseños de pantalla de remolque que puedes ver en las imágenes a continuación

lacosaesquesicompletoelcódigodelamaneraquelohice(elcódigoestáalfinal),serágrande.Ynocreoqueestasealaformaóptimaderealizardiseñosdepantallamúltiple.Seríafantásticoquealguienmeayudaraomedieraconsejos.

Esteeselcódigoparaelbotón"ok":

if(bit_is_clear(PINC, 5))
    {
        UART_Send_String("OK\n");
        switch(screenIndex)
        {
        case HOME_LAYOUT:
            switch(cursor_index)
            {
            case 5:
                lcdSetupLayout();
                cursor_index = 0;
                break;
            default:
                break;
            }
            break;
        case LCD_SETUP_LAYOUT:
            switch(cursor_index)
            {
            case 0:
                PCD8544_send_command(video_inverse);
                break;
            case 1:
                PCD8544_send_command(display_norm);
                break;
            case 3:
                cursor_index = 0;
                homeLayout();
                break;
            default:
                break;
            }
            break;
        default:
            break;
        }

        _delay_ms(300);
    }

Y este es el código para el botón "arriba" (el botón "abajo" tiene algo similar)

if(bit_is_clear(PINC, 6))
    {
        UART_Send_String("UP\n");
        if(cursor_index > 0)
        {
            set_x_y(0,cursor_index);
            PCD8544_send_char(' ');
            set_x_y(0,--cursor_index);
            PCD8544_send_char('>');
        }
        else
        {
            set_x_y(0,cursor_index);
            PCD8544_send_char(' ');
            cursor_index = 5;
            set_x_y(0,cursor_index);
            PCD8544_send_char('>');
        }
        _delay_ms(300);
    }
    
pregunta Ahmed Osama

1 respuesta

0

reduce el código de tu botón "ARRIBA" como este

busca otras áreas similares

piense claramente sobre lo que hace el código en cada punto de la lista del programa

nota: tu sangría es ligeramente inconsistente

if(bit_is_clear(PINC, 6))
{
    UART_Send_String("UP\n");

    set_x_y(0,cursor_index);        // roll these two lines into a function if they repeat a lot 
    PCD8544_send_char(' ');

    if(cursor_index = 0)  cursor_index = 6; 

    set_x_y(0,--cursor_index);      // decrements cursor_index before calling set_x_y()
    PCD8544_send_char('>');

    _delay_ms(300);
}
    
respondido por el jsotola

Lea otras preguntas en las etiquetas