Utilizando o LCD PSoC Acoplado a Placa de Desenvolvimento
Uso do LCD PSoC Caso ainda não tenha lidos os posts anteriores, acesse o link: http://www2.decom.ufop.br/imobilis/psoc-development-kit-microprocessador-psoc-3-parte-3-de-5/ 😀
Introdução ao Propósito do Projeto LCD PSoC
É importante lembrar que o PSoC Creator possui várias bibliotecas de componente prontos para o uso. Estas além de serem otimizadas, facilitam a vida do projetista pois incluir e utilizar estas torna tudo simples e rápido deixando de lado as preocupações de implementação do componente.
Como exemplo, para criar um projeto que utilize o LCD, basta utilizar a biblioteca que o PSoC Creator oferece. Isso pois componente está acoplado à placa de desenvolvimento (pertencente ao kit original) e caso o usuário deseje utilizar alguma outra (mesmo que esta não faça parte do kit original) basta verificar se a biblioteca de componentes do PSoC Creator possui suporte a esta e usar.
Criando o Projeto LCD PSoC
Então o primeiro passo para a utilização de uma biblioteca, deve ser criar um Novo Projeto. Então cria-se um novo projeto em File, Open, Project… . Será selecionado o microprocessador que será usado no projeto que neste caso é o PSoC 3 Design. É possível ver que nas abas abaixo, existem vários modelos para demonstração da ferramenta tudo para facilitar o entendimento e agilizar as tarefas do projetista mas não será selecionado nenhuma dessas pois será criado um projeto novo e este será feito todo passo a passo.
Adição e Configuração de Bibliotecas LCD PSoC
Após criado o projeto, será exibida uma janela com um palco branco no centro. No canto esquerdo é exibido todos os projetos pertencentes ao Workspace (conjunto de projetos), todos os arquivos dos projetos organizados de uma maneira hierárquica para fácil visualização. O projeto que estiver com o nome em negrito é o que está ativo no momento. Deve-se tomar atenção para que ao trabalhar com vários projetos é importante diferenciar quais alterações devem ser feitas em quais projetos pois podem confundir o projetista e realizar alterações em arquivos de projetos diferentes. No canto direito é exibido um catálogo de componentes que podem ser utilizado no projeto. Tais componentes já estão todos prontos e o único passo que devem ser feito é configurar de acordo com o propósito do projeto. A configuração é intuitiva e facilitada sendo realizada em instantes. E, por final, no centro localiza-se o palco onde é exibido todos os componentes que estão acoplados ao projeto.
Para utilizar o módulo LCD, componente já pertencente ao CY8CKIT-001, basta na seção do canto direito na aba Cypress ir em Display e em seguida arrastar o componente com nome Character LCD [v2.10] para o palco (a etiqueta do nome pode diferenciar pelo fato da biblioteca sofrer alterações ou melhorias).
A seguir a Figura 1 exibindo como o palco deve ficar:
Porém, simplesmente arrastar o componente para o palco não indica que o projeto está pronto para ser construído. Deve-se definir quais pinos do processador serão conectados os componentes pertencentes ao projeto para que estes funcionem corretamente.
Definição dos Pinos do Projeto LCD PSoC
Então, no canto esquerdo, deve-se abrir o arquivo nomeDoProjeto.cydwr (logo abaixo do TopDesing.cysch). Nele será definido os pinos de saída do processador que farão conexão com o componente LCD.
Aberto este arquivo, será exibida uma ilustração do processador acompanhado de seus pinos nas suas laterais como mostra a Figura 2. Assim, deve-se conectar os pinos corretamente no componente LCD através de configurações do PSoC Creator.
Com isso, basta alterar a pinagem do processador trocando os valores do campo Pin de 71..74, 76..78 para 95..99, 1..2. Assim, o resultado será como mostra a Figura 3:
Após isso, o microprocessador terá conexão direta com o componente podendo enviar sinais até ele.
Compilação do Projeto
A compilação é feita selecionando dentro do menu Build a opção Clear and Build. Ela limpará todo o trabalho antigo deste projeto (se este existir) e construirá/compilará o novo substituindo completamente o antigo pelo novo. Esta estratégia impede que qualquer instrução ou dados do projeto antigo interfira na execução do novo.
Adicionado este componente, após a primeira compilação, aparecerá todos as propriedades e funções para a execução deste.
Biblioteca do Módulo LCD PSoC Adicionado
Existem várias funções que agilizam o manuseio do componente (neste caso o LCD). São listados na Tabela 1 as mais importantes:
Definição do Código-fonte
Para iniciar a programação do projeto, deve-se abrir o arquivo main.c para desenvolver o código. Como qualquer programa escrito em linguagem C este projeto também pode ser modularizado em vários arquivos com extensões .h e .c para a fácil manutenção e controle sobre as funcionalidades e aspectos do sistema. Assim, arquivos de cabeçalho (.h) devem localizar na pasta Header Files e arquivos com código devem localizar em Source Files. Generated_Files é o local onde é exibido os arquivos após a compilação. Não se deve alterá-los pois estes podem ser substituídos após uma recompilação.
A seguir será mostrado um código simples que utiliza algumas funções que utilizarão o display LCD.
Código fonte
[code language=”c”]
// Adiciona bibliotecas padrões para o funcionamento
// Do projeto
#include <project.h>
// Define constantes
// Quantidade de Linhas
#define LCD_ROWS 2
// Quantidade de Colunas
#define LCD_COLUMNS 16
// Fontes padrões
extern uint8 const CYCODE lcd_customFonts[];
int main() {
// Define variáveis do programa
int8 height;
int8 width;
int8 row;
// Tempo de espera entre cada desenho
uint8 tempoEspera = 5u;
// Inicia o módulo
lcd_Start();
// Carrega as fontes padrões
lcd_LoadCustomFonts(lcd_customFonts);
// Limpa o LCD por precaução
lcd_ClearDisplay();
// Define a posição inicial para escrita
lcd_Position(0u, 0u);
// Imprime uma frase
lcd_PrintString("Testando o LCD");
// Muda de linha
lcd_Position(1u, 0u);
// Escreve outra frase
lcd_PrintString("(IFMG – Formiga)");
// Espera por 3 segundos (delay)
CyDelay(3000u);
// Realiza uma contagem regressiva de 3 segundos
lcd_ClearDisplay();
lcd_Position(0u, 0u);
lcd_PrintString("3");
CyDelay(1000u);
lcd_ClearDisplay();
lcd_Position(0u, 0u);
lcd_PrintString("2");
CyDelay(1000u);
lcd_ClearDisplay();
lcd_Position(0u, 0u);
lcd_PrintString("1");
CyDelay(1000u);
// Realiza impressões de barras verticais
// Apagando-as logo em seguida.
lcd_ClearDisplay();
// Percorre as colunas
for(width = 0; width < LCD_COLUMNS; width++)
{
// Percorre as linhas
for(row = LCD_ROWS; row >= 0; row–)
{
//Preenche o caractere
for(height = 0; height < 8; height++)
{
lcd_DrawVerticalBG(row -1 , width, 3, height);
//A cada linha preenchida, espera-se um tempo
CyDelay(tempoEspera);
}
}
// Apaga a barra criada para a construção da nova.
lcd_ClearDisplay();
}
// Certifica que fio apagado
lcd_ClearDisplay();
// Reimprime porém sem apagar as barras
for(width = 0; width < LCD_COLUMNS; width++)
{
for(row = LCD_ROWS; row >= 0; row–)
{
for(height = 0; height <= 8; height++)
{
lcd_DrawVerticalBG(row, width, 1, height);
CyDelay(tempoEspera);
}
}
}
// Apaga a impessão pouco a pouco
for(width = 0u; width < LCD_COLUMNS; width++)
{
for(row = 0; row <= LCD_ROWS; row++)
{
for(height = 8; height >= 0; height–)
{
lcd_DrawVerticalBG(row, width, 1, height);
CyDelay(tempoEspera);
}
}
}
lcd_ClearDisplay();
tempoEspera = tempoEspera + 30;
return 0;
}
[/code]
Resultado do Projeto com LCD no PSoC
Assim, com a finalização do desenvolvimento, o projeto estará memorizado no microcontrolador para sua execução. Assim, como foi decidido definir o código dentro do loop infinito, ele será amiúde sendo facilmente perceptível o seu funcionamento.
Ao final, foram capturadas algumas imagens durante seu funcionamento.
A Figura 4 mostra uma pequena apresentação em um momento da execução.
É possível ver que nas Figuras 5, 6 e 7 (principalmente nas duas últimas) que a imagem não captura perfeitamente a impressão no módulo LCD. Isso deve ao fato das instruções serem executadas numa velocidade altíssima em relação a captura da câmera que não consegue capturar.
A Figura 5 mostra o LCD sendo impresso em linhas horizontais. Essas linhas preenchem um bloco de 5×8 no qual é mostrado na figura. Esses só serão apagados quando o LCD estiver todo preenchido.
Após de todos os blocos estarem preenchidos no LCD, eles serão apagados um a um na mesma direção no qual foram preenchidos como mostra a Figura 6.
Imprimindo a apagando um bloco ao mesmo tempo (Figura 7).
Até o próximo Post 😀
One thought on “PSoC Development Kit – Microprocessador PSoC 3 – Parte 4 de 5”