Interface de display de 7 segmentos com microcontrolador stm32f103

Este tutorial é sobre a interface do display LED de 7 segmentos com o microcontrolador stm32 usando keil arm mdk 5 com bibliotecas HAL stm32 para compilação de código. Stm32cubemx é usado para inicializar os periféricos / pinos variáveis ​​​​do microcontrolador stm32f103c8t6, ​​frequência de operação, seleção do oscilador, etc. As configurações inicializadas do Stm32cubemx são então importadas para o projeto keil mdk arm 5. Stm32cubemx gera automaticamente código para o ide em que queremos trabalhar e neste projeto vou usar keil arm mdk 5 ide. Se você é novo e não conhece o stm32cubemx e o keil uvision arm ide. Eu sugiro que você aprenda mais sobre o Stm32cubemx e o keil uvision mdk arm ide usados ​​em conjunto com as bibliotecas stm32 HAL para geração de código do microcontrolador stm32. Basta clicar no botão abaixo para fazer o tutorial

Primeiros passos stm32cubemx e keil mdk arm ide

Chegando ao projeto principal. Neste tutorial vou fazer a interface de um display de sete segmentos com o microcontrolador stm32f103. Imprimirei números de 0 a 9 e caracteres de A a F em um único display de sete segmentos. O display de sete segmentos é composto por leds dispostos em forma de matriz. Ligar e desligar os leds em um padrão dedicado imprime o número ou caractere desejado em um display de 7 segmentos. Existem dois tipos de displays de sete segmentos, ânodo comum e cátodo comum. O display de sete segmentos do ânodo comum tem todos os pinos do ânodo do LED conectados a um único ponto. Onde, como no cátodo comum, todos os pinos do cátodo estão conectados a um único ponto. Para saber mais sobre a diferença entre tipos, tamanhos e displays especiais de 7 segmentos, siga o tutorial abaixo. Clique no botão abaixo para fazer o tutorial.

Diferença entre 7 tamanhos e tipos de segmento.

Vou usar display de ânodo comum de 7 segmentos neste projeto. Os microcontroladores Stm32 não são fáceis de usar. Eles não vêm em pacote DIP. Portanto não é possível fazer um projeto DIY com eles em uma tábua de pão. Precisamos projetar uma placa especial para trabalhar com microcontroladores stm32, o que ainda é um trabalho demorado. Felizmente, há uma série de placas de introdução stm32 pré-montadas disponíveis no mercado. Eles não são apenas baratos, mas também fáceis de trabalhar. Também vou usar uma placa stm32 pré-montada que abriga um microcontrolador stm32f103c8t6.
Primeiro é feita uma inicialização no microcontrolador stm32cubemx para stm32f103c8t6. 7 pinos do microcontrolador stm32 são inicializados como saída que farão interface com o display de sete segmentos. Os pinos têm o mesmo nome dos pinos de exibição de sete segmentos. Os pinos da porta A do microcontrolador stm32 são usados ​​no projeto. A porta A do microcontrolador stm32 é uma porta de 16 bits de largura. Vou usar seus primeiros 7 pinos de 0 a 6 no projeto. A configuração Stm32cubemx para declarar pinos como saída é mostrada no lado direito.

Configurações de 7 segmentos Stm32cubemx para microcontrolador stm32f103

Configurações de 7 segmentos Stm32cubemx para microcontrolador stm32f103

Diagrama de circuito do projeto

A placa que estou usando no projeto está no diagrama de circuito abaixo. Embora na placa nem todos os pinos GPIO do microcontrolador stm32f103 estejam expostos, ele ainda tem uma quantidade razoável de pinos GPIO para trabalhar. A porta A do stm32f103 possui 16 pinos GPIO, mas apenas 12 estão expostos na placa. Felizmente, os pinos port-a de 0 a 6 estão presentes na placa e são suficientes para a necessidade do nosso projeto. eu conectei

  • O pino nº 0 da porta A está conectado ao pino A do display de 7 segmentos
  • O pino nº 1 da porta A está conectado ao pino b do display de 7 segmentos
  • O pino nº 2 da porta A está conectado ao pino C do display de 7 segmentos
  • O pino nº 3 da porta A está conectado ao pino d do display de 7 segmentos
  • O pino nº 4 da porta A está conectado ao pino E do display de 7 segmentos
  • O pino nº 5 da porta A está conectado ao pino f do display de 7 segmentos
  • O pino nº 6 da porta A está conectado ao pino g de 7 segmentos mostrar

Como estou usando o display de ânodo comum de 7 segmentos, o pino de saída de 3,3 volts do stm32 está conectado ao pino com do display de sete segmentos. Carreguei o código no microcontrolador usando o depurador stlink v2.

Microcontrolador Stm32 com display de 7 segmentos

Microcontrolador Stm32 com display de ânodo comum de 7 segmentos
Chegando ao código do projeto. O código está escrito em keil uvision mdk arm ide. Bibliotecas Stm32 HAL são usadas no projeto. O configurador de código Stm32cubemx é usado para configurar o oscilador, gpios e temporizadores do microcontrolador stm32. Apenas a parte do loop while 1 é importante aqui. Escrevi o código apenas neste loop. O código restante é gerado pelo ide stm32cubemx.
O registro ODR do Stm32 é usado para gravar nas portas do microcontrolador stm32. É um registro de 16 bits. Para acessar este registro a sintaxe do código para bibliotecas HAL está abaixo. Como estou usando a Porta A do stm32 no projeto, a sintaxe se torna

GPIOA->ODR = 0x003F; //Exibindo 0

O código acima grava uma palavra de 16 bits na Porta A do microcontrolador stm32. A palavra de 16 bits é 0x003F. É um número hexadecimal de 16 bits. Se o traduzirmos para seu binário equivalente, o comando será traduzido para 0000 0000 0011 1111. Cada bit binário é gravado no pino individual da porta a do stm32. O menor bit começa da direita e vai para a parte superior esquerda. Estamos preocupados apenas com os primeiros 7 pinos do stm32, pois os utilizamos no projeto. Portanto, 011 1111 são gravados nos primeiros sete bits da porta-a do microcontrolador stm32. O pino da porta A mais alto (6) será escrito 0 e todos os outros permanecerão altos. O pino 6 da porta a está conectado ao pino g do display de sete segmentos. O que acontece é quando esta palavra é escrita na porta a do stm32. O pino g de sete segmentos será desligado e todos os outros serão ativados, totalizando 0 no display de sete segmentos. Eu espero que isso faça sentido para você. Todos os outros caracteres são exibidos da mesma forma. Entre cada caractere é inserido um atraso de 1 segundo para ver claramente o caracter/número no display de sete segmentos.

Trabalho futuro

Você pode conectar uma série de displays de sete segmentos com a porta única do stm32 e controlá-los com pinos individuais do stm32 para exibir números de 0 a 100. Você pode fazer um relógio com display de sete segmentos. Barras de LED especiais podem ser usadas para fazer diagramas de caracteres especiais, etc.

Código/Arquivos

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.