A exibição é uma parte muito importante de qualquer aplicativo de sistema incorporado, pois ajuda os usuários a saber o status do sistema e também mostra a saída ou qualquer mensagem de aviso gerada pelo sistema. Existem muitos tipos de visores usados em eletrônicos, como visor de 7 segmentos, visor LCD, visor touchscreen TFT, visor LED, etc.
Já fizemos a interface do LCD 16x2 com o ARM7-LPC2148 em nosso tutorial anterior. Hoje, neste tutorial, faremos a interface de um Display de 7 segmentos com ARM7-LPC2148. Antes de entrar em detalhes, veremos como controlar o módulo de 7 segmentos para exibir qualquer número de caracteres.
Display de 7 segmentos
Visores de 7 segmentos estão entre as unidades de exibição mais simples para exibir os números e caracteres. Geralmente é usado para exibir números e tem iluminação mais brilhante e construção mais simples do que a exibição de matriz de pontos. E por causa da iluminação mais brilhante, a saída pode ser vista a uma distância maior do que o LCD. Conforme mostrado na imagem acima de um display de 7 segmentos, ele consiste em 8 LEDs, cada LED usado para iluminar um segmento da unidade e o 8ºLED usado para iluminar o DOT no display de 7 segmentos. 8thLED é usado quando dois ou mais módulos de 7 segmentos são usados, por exemplo, para exibir (0.1). Um único módulo é usado para exibir um único dígito ou caractere. Para exibir mais de um dígito ou caractere, vários 7 segmentos são usados.
Pinos de display de 7 segmentos
Existem 10 pinos, nos quais 8 pinos são usados para se referir a a, b, c, d, e, f, geh / dp, os dois pinos do meio são ânodo / cátodo comum de todos os LEDs. Estes ânodo / cátodo comum estão internamente em curto, então precisamos conectar apenas um pino COM
Dependendo da conexão, classificamos 7 segmentos em dois tipos:
Cátodo Comum
Neste todos os terminais negativos (cátodo) de todos os 8 LEDs são conectados entre si (veja o diagrama abaixo), chamados de COM. E todos os terminais positivos são deixados sozinhos ou conectados aos pinos do microcontrolador. Se usarmos o microcontrolador, configuramos a lógica HIGH para iluminar o particular e configuramos LOW para desligar o LED.
Ânodo Comum
Neste, todos os terminais positivos (ânodos) de todos os 8 LEDs são conectados juntos, chamados de COM. E todos os térmicos negativos são deixados sozinhos ou conectados aos pinos do microcontrolador. Se usarmos o microcontrolador, configuramos a lógica LOW para iluminar o particular e configuramos a lógica High para desligar o LED.
Portanto, dependendo do valor do pino, um determinado segmento ou linha de 7 segmentos pode ser ligado ou desligado para exibir o número ou alfabeto desejado. Por exemplo, para exibir 0 dígito, devemos definir os pinos ABCDEF como HIGH e apenas G como LOW. Como os LEDs ABCDEF estão acesos e G apagados, isso forma o dígito 0 no módulo de 7 segmentos. (Isso é para cátodo comum, para ânodo comum é oposto).
A tabela abaixo mostra os valores HEX e o dígito correspondente de acordo com os pinos LPC2148 para configuração de cátodo comum.
Dígito |
Valores HEX para LPC2148 |
UMA |
B |
C |
D |
E |
F |
G |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
IMPORTANTE: Na tabela acima, apresentei os valores HEX de acordo com os pinos que usei no LPC2148, verifique o diagrama de circuito abaixo. Você pode usar os pinos que quiser, mas alterar os valores hexadecimais de acordo com isso.
Para saber mais sobre o display de 7 segmentos, acesse o link. Verifique também as interfaces do display de 7 segmentos com outros microcontroladores:
- Interface de exibição de 7 segmentos com Raspberry Pi
- Interface de exibição de 7 segmentos com microcontrolador PIC
- Interface de exibição de 7 segmentos com Arduino
- Interface de exibição de 7 segmentos com microcontrolador 8051
- Contador 0-99 usando microcontrolador AVR
Materiais requisitados
Hardware
- ARM7-LPC2148
- Módulo de exibição de sete segmentos (único dígito)
- Tábua de pão
- Fios de conexão
Programas
- Keil uVision5
- Flash Magic
Diagrama de circuito
Para fazer a interface de 7 segmentos com LPC2148, nenhum componente externo é necessário, conforme mostrado no diagrama de circuito abaixo:
A tabela abaixo mostra as conexões de circuito entre o módulo de 7 segmentos e LPC2148
Pinos do módulo de sete segmentos |
Pinos LPC2148 |
UMA |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
Comum |
GND |
Programação ARM7 LPC2148
Aprendemos como programar ARM7-LPC2148 usando Keil em nosso tutorial anterior. Usamos o mesmo Keil uVision 5 aqui para escrever o código e criar o arquivo hexadecimal, e então carregar o arquivo hexadecimal para LPC2148 usando a ferramenta mágica do flash. Estamos usando um cabo USB para alimentar e carregar o código para LPC2148
O código completo com explicação em vídeo é fornecido no final deste tutorial. Aqui estamos explicando algumas partes importantes do código.
Primeiro, precisamos incluir o arquivo de cabeçalho para o microcontrolador da série LPC214x
#incluir
Em seguida, defina os pinos como saída
IO0DIR = IO0DIR-0xffffffff
Isso define os pinos P0.0 a P0.31 como saída, mas usaremos os pinos (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 e P0.8) apenas.
Em seguida, defina os pinos certos em LOGIC HIGH ou LOW de acordo com o dígito numérico a ser exibido. Aqui, exibiremos os valores de (0 a 9). Estaremos usando uma matriz que consiste em valores HEX para valores de 0 a 9.
unsigned int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Os valores serão exibidas continuamente como o código foi colocado em enquanto loop de
enquanto (1) { para (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // define os pinos correspondentes HIGH delay (9000); // Chama a função de atraso IO0CLR = IO0CLR-a; // Define pinos correspondentes LOW } }
Aqui, IOSET e IOCLR são usados para definir os pinos HIGH e LOW, respectivamente. Como usamos pinos PORT0, temos IO0SET e IO0CLR .
O loop For é usado para incrementar i em cada iteração e cada vez que i incrementa, 7 segmentos também incrementam o dígito que está sendo mostrado nele.
função de atraso é usada para gerar tempo de atraso entre SET e CLR
void delay (int k) // Função para fazer delay { int i, j; para (i = 0; i
O código completo e a descrição de trabalho do vídeo são fornecidos abaixo. Verifique também todos os projetos relacionados ao Display de 7 segmentos aqui.