FAVORITAR

Como usar display 7 segmentos com a Franzininho C0

Neste exemplo, demonstraremos como integrar um display de 7 segmentos com a placa Franzininho C0, utilizando dois botões para controle. Um dos botões será responsável por incrementar o valor exibido no display, enquanto o outro será usado para decrementar esse valor. 

Componentes necessários

  • 1 Franzininho C0
  • 2 botões push-button
  • 1 resistor 300 ohms
  • 1 display 7 segmentos catodo comum

Conexões Hardware

  1. Pinos do Display de 7 Segmentos:
    1. Conecte um resistor de 300 ohms entre o pino comum do display e o GND.
    2. Conecte os demais pinos do display às portas da Franzininho C0 conforme a tabela abaixo:
SegmentoPorta
aPA6
bPA5
cPA4
dPA3
ePA2
fPA7
gPA8
  1. Botões de controle: conecte o primeiro botão ao pino PB6 e o segundo ao PB7.

As figuras abaixo mostram o esquema de conexão:

Funcionamento display 7 segmento

Dependendo do número que você deseja exibir, você deve acender os LEDs do segmentos apropriados. Para exibir o número 3, por exemplo, quatro segmentos de LED a, b, c, d, g devem estar acesos. Da mesma forma, vários dígitos de 0 a 9 podem ser exibidos em um display de 7 segmentos, como mostrado na figura abaixo:

Configurando CubeMx

  1. Abra STM32Cube , crie um novo projeto e selecione o microcontrolador de destino “STM32C011F6P6”. 
  1. Vá para a página de configurações de relógio e em HCLK digite 48 MHz para a frequência de saída desejada do sistema. Pressione a tecla “Enter” e deixe o aplicativo resolver os divisores/multiplicadores PLL necessários para atingir a taxa de clock desejada. Depois volte para a página de configuração dos pinos, selecione “Trace and Debug” e  habilite “Serial Wire.
  1. Em seguida, configuraremos os GPIOs. Selecione os pinos PA3, PA4, PA5, PA6, PA7 e PA8 e configure-os como “GPIO_Output”. Depois, selecione os pinos PB6 e PB7 e configure-os como “GPIO_Input”. No System Core, ative o resistor de pull-up para os pinos configurados como entrada e nomeie todos os pinos conforme mostrado na imagem abaixo. Isso tornará seu código mais legível e fácil de entender.
  1. Por fim, gere o código em “Project” > “Generate Code”.

Implementando o código

  1. Abra o arquivo em Core > Src > main.c 
  1. No início do programa, logo após, SystemClock_Config(void) e MX_GPIO_Init(void) inclua as seguintes declarações de protótipos de funções:
  1. Crie a função numero:

Esta função define os segmentos do display de sete segmentos. Cada parâmetro (A a G) corresponde a um segmento do display, que pode ser ligado (1) ou desligado (0).

Seminário Linux Embarcado 2024: Evento Presencial em São Paulo

Participe do Seminário Linux Embarcado 2024 em São Paulo. Conhecimento técnico, palestras, workshops e oportunidade de networking com profissionais experientes.

Inscreva-se

  1. Crie a função atualizaDisplay

Esta função atualiza o display de sete segmentos para mostrar o valor de 0 a 9. Cada caso no switch chama a função numero com os parâmetros corretos para acender ou desligar os segmentos apropriados do display.

  1. Crie a função debounceBotao

Esta função implementa um mecanismo de debounce para um botão. Ele verifica se o botão está pressionado continuamente por pelo menos 50ms para evitar leituras falsas devido a ruídos ou vibrações. Se o botão for pressionado por tempo suficiente, retorna 1, indicando que o botão foi pressionado. Caso contrário, retorna 0. O HAL_GetTick() fornece um valor em milissegundos.

  1. Modifique a função int main com o código abaixo.

Na função int main temos: 

  • HAL_Init(): Inicializa a biblioteca HAL.
  • SystemClock_Config(): Configura o clock do sistema.
  • MX_GPIO_Init(): Inicializa os pinos GPIO.
  • valor: Variável que armazena o valor a ser exibido no display.
  • atualizaDisplay(valor): Atualiza o display com o valor inicial.
  • O loop while (1) é executado continuamente:
    • Verifica se o botão de incremento (SOMA_Pin) foi pressionado, incrementa o valor e atualiza o display.
    • Verifica se o botão de decremento (SUBTRAI_Pin) foi pressionado, decrementa valor e atualiza o display.
    •  A conta valor = (valor + 1) % 10 e  valor = (valor – 1 + 10) % 10 assegura que o número a ser exibido no display permaneça no intervalo de 0 a 9. Dessa forma, quando o  valor atinge 9 e é incrementado, ele volta para 0 e quando atinge 0 e é decrementado, ele volta para 9. Por exemplo, suponha que o valor seja 9, teremos valor + 1 = 10, logo 10 % 10 = 0 (porque 10 dividido por 10 dá 1 como quociente e 0 como resto). Portanto, valor será 0.

O código pode ser visto na imagem abaixo. 

Gravação do código

Ao finalizar o código, partiremos para gravação. Nessa etapa você pode utilizar o ST-Link seguindo as conexões da imagem abaixo ou utilizar um cabo usb como apresentado em um dos tutoriais desta série. 

Funcionamento

Desafio

E que tal um desafio extra?  Modifique o código para que ao pressionar o botão de decremento, o valor seja continuamente decrementado até chegar a 0, mostrando todos os números intermediários. Exemplo, se valor no display estiver em 5 e eu pressionar o botão os números apresentados no display devem ser: 5 4 3 2 1 0. Se conseguir realizá-lo, sinta-se à vontade para compartilhar em suas redes e nos marca. 

Conclusão

Neste artigo, demonstramos como integrar um display de 7 segmentos com a placa Franzininho C0, utilizando dois botões para controle. Implementamos um código que permite incrementar e decrementar o valor exibido no display, garantindo que ele sempre esteja no intervalo de 0 a 9. Além disso, propusemos um desafio para aprimorar ainda mais o projeto.

Outros artigos da série

<< Como gravar a Franzininho C0 via USB/Serial usando o STM32CubeProgrammerTrabalhando com ADC no Franzininho C0: Tutorial Completo no STM32CubeIDE >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
Inline Feedbacks
View all comments
Home » Software » Firmware » Como usar display 7 segmentos com a Franzininho C0

EM DESTAQUE

WEBINARS

LEIA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: