This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| pt:examples:display:lcd [2015/12/14 17:45] – Criação deste novo documento. artica | pt:examples:display:lcd [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | < | ||
| + | ====== Mostrador LCD ====== | ||
| + | // | ||
| + | [HW] [[pt: | ||
| + | [LIB] [[pt: | ||
| + | [LIB] [[pt: | ||
| + | |||
| + | ===== Teoria ===== | ||
| + | |||
| + | [{{ : | ||
| + | /*[{{ : | ||
| + | |||
| + | [{{ : | ||
| + | |||
| + | Os mostradores de LCD, que são utilizados com microcontroladores, | ||
| + | |||
| + | A principal característica de um LCD alfanumérico é a colocação de seus segmentos. A tela é dividida em vários indicadores. Cada indicador tem, ou segmentos suficientes para a exibição de letras e números, ou que é formada a partir de uma matriz de pequenos segmentos quadrados (pixels). Por exemplo, uma matriz de 5 x 7 pixels é o suficiente para exibir todos os números e letras do alfabeto latino. Há geralmente 1 - 4 filas de indicadores e 8 - 32 colunas. Cada indicador tem uma pequena diferença semelhante às diferenças das letras no texto. | ||
| + | |||
| + | Além do ecrã LCD alfanumérico existe também um controlador que controla os segmentos do ecrã de acordo com os comandos da interface de comunicação. Um controlador tem um cartão pré-programado de letras, em que cada letra, número ou símbolo tem o seu próprio índice. Exibir o texto na tela é feito basicamente enviando os índices para o controlador. Na realidade, existem mais instruções de controlo enviados para o controlador antes de qualquer coisa possa ser exibida. É importante obter conhecimento em cada data-sheet do LCD, porque há muitos tipos diferentes de LCDs e todos eles são controlados de forma diferente. | ||
| + | |||
| + | Os displays de LCD gráficos de cristal líquido são displays que permitem visualizar imagens e texto. A sua construção é semelhante aos LCDs alfanuméricos, | ||
| + | |||
| + | Os displays monocromáticos gráficos têm geralmente uma matriz passiva, grandes monitores de cor, incluindo ecrãs de computador têm uma matriz ativa. Toda a informação relativa à cor do fundo e aos pixels gráficos dos LCDs são semelhantes à dos LCDs alfanuméricos. De forma similar às telas alfanuméricas, | ||
| + | |||
| + | |||
| + | ===== Prática ===== | ||
| + | |||
| + | No conjunto HomeLab III está presente um LCD TFT de 128 × 160 pixels a cores de 1,8 polegadas. O controlador ST7735 Sitronixi está ligado ao mostrador com o qual se pode comunicar através do interface serial SPI. A iluminação de fundo do módulo de visualização é controlada separadamente, | ||
| + | |||
| + | A principal diferença do HomeLab III para HomeLab II é um LCD monocromático gráfico de 84 × 48 pixels. É o mesmo ecrã utilizado no telemóvel Nokia 3310. O controlador Philips PCD8544 está ligado ao mostrador com o qual se pode comunicar através de um interface serial do género SPI. A iluminação de fundo do módulo visor é controlada separadamente. | ||
| + | |||
| + | Primeiro, a tela gráfica LCD deve ser iniciada com a função // | ||
| + | |||
| + | O que se segue é um exemplo de contador de tempo. O programa conta segundos (aproximadamente), | ||
| + | |||
| + | <code c> | ||
| + | // Example of using the graphic LCD of the HomeLab | ||
| + | // Time of day is displayed on LCD since the beginning of the program | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | // Main program | ||
| + | int main(void) | ||
| + | { | ||
| + | int seconds = 0; | ||
| + | char text[16]; | ||
| + | |||
| + | // Set-up of the LCD | ||
| + | lcd_gfx_init(); | ||
| + | |||
| + | // Cleaning the screen | ||
| + | lcd_gfx_clear(); | ||
| + | |||
| + | // Switching on the background light | ||
| + | lcd_gfx_backlight(true); | ||
| + | |||
| + | // Displaying the name of the program | ||
| + | lcd_gfx_goto_char_xy(1, | ||
| + | lcd_gfx_write_string(" | ||
| + | |||
| + | // Endless loop | ||
| + | while (true) | ||
| + | { | ||
| + | // Converting the seconds to the form of clock | ||
| + | // hh:mm:ss | ||
| + | sprintf(text, | ||
| + | (seconds / 3600) % 24, | ||
| + | (seconds / 60) % 60, | ||
| + | seconds % 60); | ||
| + | |||
| + | // Displaying the clock text | ||
| + | lcd_gfx_goto_char_xy(3, | ||
| + | lcd_gfx_write_string(text); | ||
| + | |||
| + | // Adding one second | ||
| + | seconds++; | ||
| + | |||
| + | // Hardware delay for 1000 ms | ||
| + | hw_delay_ms(1000); | ||
| + | } | ||
| + | } | ||
| + | </ | ||