//******************************************************************* // Biblioteca de funções para manipulação de módulos LCD gráficos //******************************************************************* // Autor: Fábio Pereira // Para o livro Microcontroladores MSP430: Teoria e Prática //******************************************************************* // Este arquivo contém as definições e protótipos de funções de // acesso e manipulação de módulos de display LCD gráfico que utili- // zam o controlador T6963C //******************************************************************* // As definições a seguir são utilizadas para acesso aos pinos do // módulo LCD gráfico // Para redefinir estes pinos, basta declará-los no programa, antes // da inclusão desta biblioteca #ifndef lcdg_cd #define lcdg_cd P2OUT_bit.P2OUT_1 #define lcdg_cd_dir P2DIR_bit.P2DIR_1 #endif #ifndef lcdg_rd #define lcdg_rd P2OUT_bit.P2OUT_3 #define lcdg_rd_dir P2DIR_bit.P2DIR_3 #endif #ifndef lcdg_wr #define lcdg_wr P2OUT_bit.P2OUT_2 #define lcdg_wr_dir P2DIR_bit.P2DIR_2 #endif #ifndef lcdg_ce #define lcdg_ce P2OUT_bit.P2OUT_0 #define lcdg_ce_dir P2DIR_bit.P2DIR_0 #endif #ifndef lcdg_dados_out #define lcdg_dados_dir P1DIR #define lcdg_dados_out P1OUT #define lcdg_dados_in P1IN #endif // definições do display gráfico #define lcdg_largura_caractere 6 // 6 = 6x8 - 8 = 8x8 #define lcdg_pixels_x 240 // largura do display em pixels #define lcdg_pixels_y 128 // altura do display em pixels #define lcdg_memoria_ram 8192 // capacidade de memória RAM #define lcdg_inicio_area_grafica 0 #define lcdg_bytes_por_linha_grafica lcdg_pixels_x/lcdg_largura_caractere #define lcdg_bytes_por_linha_texto lcdg_bytes_por_linha_grafica #define lcdg_inicio_area_texto lcdg_memoria_ram-((lcdg_pixels_y/8)*lcdg_bytes_por_linha_texto) #define lcdg_auto_write_mode 0xB0 #define lcdg_auto_read_mode 0xB1 #define lcdg_desliga_auto_mode 0xB2 #define lcdg_modo_OR 0x80 #define lcdg_modo_XOR 0x81 #define lcdg_modo_AND 0x82 //******************************************************************* // lcdg_aguarda_status //******************************************************************* // Entrada: unsigned char valor - valor de estado a ser comparado // Retorna: void //******************************************************************* // Aguarda que os bits de status especificados sejam apagados. //******************************************************************* void lcdg_aguarda_status(unsigned char valor); //******************************************************************* // lcdg_escreve_comando //******************************************************************* // Entrada: unsigned char comando - comando a ser enviado // Retorna: void //******************************************************************* // Envia um comando para o display //******************************************************************* void lcdg_escreve_comando(unsigned char comando); //******************************************************************* // lcdg_escreve_byte //******************************************************************* // Entrada: unsigned char dado - informação a ser enviada para o LCD // Retorna: void //******************************************************************* // Envia um dado para o display //******************************************************************* void lcdg_escreve_byte(unsigned char dado); //******************************************************************* // lcdg_escreve_byte_auto //******************************************************************* // Entrada: unsigned char dado - informação a ser enviada para o LCD // Retorna: void //******************************************************************* // Envia um dado para o display no modo automático (transferência de // um bloco de dados) //******************************************************************* void lcdg_escreve_byte_auto(unsigned char dado); //******************************************************************* // lcdg_escreve_word //******************************************************************* // Entrada: unsigned int dado - informação a ser enviada para o LCD // Retorna: void //******************************************************************* // Envia um dado de 16 bits para o display //******************************************************************* void lcdg_escreve_word(unsigned int dado); //******************************************************************* // lcdg_seta_address_pointer //******************************************************************* // Entrada: unsigned int end - configura o apontador de endereços do // display // Retorna: void //******************************************************************* // Envia um dado de 16 bits para o display //******************************************************************* void lcdg_seta_address_pointer(unsigned int end); //******************************************************************* // lcdg_apaga_tela_grafica //******************************************************************* // Entrada: void // Retorna: void //******************************************************************* // Apaga a informação da área gráfica do display, preenchendo toda a // área gráfico com o valor 0, utilizando o modo automático //******************************************************************* void lcdg_apaga_tela_grafica(void); //******************************************************************* // lcdg_apaga_tela_texto //******************************************************************* // Entrada: void // Retorna: void //******************************************************************* // Apaga a informação da área de texto do display, preenchendo toda a // área de texto com zero, utilizando o modo automático //******************************************************************* void lcdg_apaga_tela_texto(void); //******************************************************************* // lcdg_ini //******************************************************************* // Entrada: void // Retorna: void //******************************************************************* // Inicializa o display //******************************************************************* void lcdg_ini(void); //******************************************************************* // lcdg_seta_modo //******************************************************************* // Entrada: unsigned char modo - modo do display // Retorna: void //******************************************************************* // Seleciona um dos modos de interação entre a área gráfica e a área // de texto: // OR - operação OR entre os pontos gráficos e de texto // XOR - operação XOR entre os pontos gráficos e de texto // AND - operação AND entre os pontos gráficos e de texto //******************************************************************* void lcdg_seta_modo(unsigned char modo); //******************************************************************* // lcdg_posiciona_texto //******************************************************************* // Entrada: unsigned char col - coluna da tela de texto // unsigned char linha - linha da tela de texto // Retorna: void //******************************************************************* // Posiciona o cursor para a escrita de caracteres no display //******************************************************************* void lcdg_posiciona_texto(unsigned char col,unsigned char linha); //******************************************************************* // lcdg_escreve_char //******************************************************************* // Entrada: unsigned char dado - caractere a ser escrito // Retorna: void //******************************************************************* // Escreve um caractere na área indicada pelo cursor //******************************************************************* void lcdg_escreve_char(unsigned char dado); //******************************************************************* // lcdg_escreve_string //******************************************************************* // Entrada: unsigned char dado[] - ponteiro para uma string de carac- // teres terminada por nulo // Retorna: void //******************************************************************* // Escreve uma string de caracteres no local apontado pelo cursor //******************************************************************* void lcdg_escreve_string(unsigned char dado[]); //******************************************************************* // lcdg_pixel //******************************************************************* // Entrada: unsigned char x - coluna da tela gráfica // unsigned char y - linha da tela gráfica // unsigned char cor - 0 - apagado, 1 - aceso // Retorna: void //******************************************************************* // Liga ou desliga um pixel na tela gráfica //******************************************************************* void lcdg_pixel(unsigned char x, unsigned char y, unsigned char cor); //******************************************************************* // lcdg_linha //******************************************************************* // Entrada: unsigned char x1 - coluna inicial // unsigned char y1 - linha inicial // unsigned char x2 - coluna final // unsigned char y2 - linha final // unsigned char cor - 0 - apagado, 1 - aceso // Retorna: void //******************************************************************* // Liga ou desliga um pixel na tela gráfica //******************************************************************* void lcdg_linha(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char color); //******************************************************************* // lcdg_retangulo //******************************************************************* // Entrada: unsigned char x1 - coluna inicial // unsigned char y1 - linha inicial // unsigned char x2 - coluna final // unsigned char y2 - linha final // unsigned char cor - 0 - apagado, 1 - aceso // Retorna: void //******************************************************************* // Desenha um quadrado/retângulo na tela //******************************************************************* void lcdg_retangulo(unsigned char x0, unsigned char y0, unsigned char x1, unsigned char y1, unsigned char cor); //******************************************************************* // lcdg_retangulo_preenchido //******************************************************************* // Entrada: unsigned char x1 - coluna inicial // unsigned char y1 - linha inicial // unsigned char x2 - coluna final // unsigned char y2 - linha final // unsigned char cor - 0 - apagado, 1 - aceso // Retorna: void //******************************************************************* // Desenha um quadrado/retângulo totalmente preenchido na tela //******************************************************************* void lcdg_retangulo_preenchido(unsigned char x0, unsigned char y0, unsigned char x1, unsigned char y1, unsigned char cor); //******************************************************************* // lcdg_escreve_tela //******************************************************************* // Entrada: unsigned char *matriz - ponteiro para a matriz com os // elementos da tela // Retorna: void //******************************************************************* // Copia uma matriz da memória para a tela do display //******************************************************************* void lcdg_escreve_tela (const unsigned char *matriz); #include