Compartilhe Pictronics


AVISO DE SEGURANÇA:

INFORMAMOS AOS USUÁRIO QUE HAVERÁ NECESSIDADE DE CRIAR SEU USUÁRIO COM NOVO REGISTRO NO FÓRUM A PARTIR DE 23/05/13, ONDE SERÁ DECIDIDO A ATIVAÇÃO PELO ADMINISTRADOR DEVIDO A SPAMMERS. USUÁRIOS FALSOS SERÃO BANIDOS POR IP E DOMÍNIO

IR AO FORUM

receba nosso Newsletter

Receba todos os novos artigos publicados e fique por dentro das novidades.

Nome:

Email:

Busca de Datasheets

DataSheet Catalog em Potuguês

Atividades no fórum

Feeds

Feed Microchip

Microchip: PIC16 Microcontrollers
Recently Updated 8-bit PIC16 Microcontrollers from Microchip Technology Inc.

Quem está Online?

Nós temos 31 visitantes online

Linguagem



Siga-nos no Twitter e fique por dentro

Follow us on Twitter

Nos diga em que você está interessado

Qual seu nível de conhecimento?
 

O que procura?

Curtir Pictronics no Facebook

Share

Pictronics pelo mundo

TutorialRobo seguidor de linha
02/09/2012 | Nelson Camilo de Almeida

Veja nestes links alguns projetos fáceis de montar.     Robos diversos. Projeto rápido de Robo seguidor de linha. Veja neste tutorial como modificar um servo motor de antena parabólica p [ ... ]


Eletrônica e automaçãoCurso básico Eagle Cadsoft Freeware
08/06/2011 | Fabiane C. de Souza
article thumbnail

O Eagle é um programa de criação de circuito impresso e tem ganhado a atenção de estudantes até profissionais, devido sua facilidade de uso e versão gratuita. Em todas as versões, possui esse [ ... ]


Eletrônica e automaçãoGravador de Atmega
02/06/2011 | Fabiane C. de Souza
article thumbnail

Construindo um simples gravador para Atmega8 ou 16
  Vamos usar um método conhecido por usuários de microcontroladores Atmel, o cabo paralelo. É muito fácil e simples.
Lista de mater [ ... ]


Eletrônica e automaçãoCurso básico de Arduino - 2
31/05/2011 | Fabiane C. de Souza
article thumbnail

Conhecendo o Hardware     Começando lá em cima, no sentido horário, temos: Laranja - Pino analógico de referência Verde claro - Terra Verde escuro - pinos digitais 2-13 Verde escuro  [ ... ]


Eletrônica e automaçãoCurso básico de Arduino - 1
30/05/2011 | Fabiane C. de Souza
article thumbnail

Curso básico de Arduino - Parte 1   Estarei dividindo esse pequeno curso em partes importantes. Com as informações aqui, você será capaz de montar seus projetos com Arduino, mesmo com conhecim [ ... ]


Eletrônica e automaçãoComo funciona um servo motor
20/05/2011 | Nelson Camilo de Almeida
article thumbnail

Como funciona um servo

Para quem não sabe, os tais Servos que tanto falamos em aeromodelismo são os responsáveis por movimentar as superfícies de controle de um modelo: aileron, profundor, leme [ ... ]


Eletrônica e automaçãoControle Remoto RF 433.92 MHZ
19/05/2011 | Fabiane C. de Souza
article thumbnail

Controle Remoto RF 433,92 MHz módulos usando TWS-434 e RWS-434   Módulos e RWS-434 TWS-434 são simples de usarem, extremamente pequenos e nos permitem realizar controle de Rádio Freqüência ( [ ... ]


PDF Imprimir E-mail

Multiplexando displays de 7 segmentos com PIC16F877A

A ligação de vários displays de 7 segmentos nos PICs podem ser feitas de diversas meneiras, uma bastante interessante é a que se segue.

A ligação de displays multiplexados tráz a vantagem de que utilizamos  poucos terminais de saída dos PICs, porém, o software deve ser escrito de forma a gerar a informação adequada para podermos ver, abaixo temos um esquema que mostra a ligação de dois displays de 7 segmentos em um PIC16F877A, observe que para a ligação dos displays apenas são utilizados 9 terminais do PIC e não 14 como seria se não fossem multiplexados.

display 7seg_3

Observe a ligação dos pinos do display em que cada pino "A" de cada display são ligados juntos e apenas um conjunto de resistores limitadores são necessários, mesmo que ligassemos três ou mais displays devemos fazer as mesmas ligações e ainda, no Proteus podemos utilizar os labels que são "ligações virtuais" que melhoram a construção do esquema e sua visualização, veja no detalhe:

display 7seg_3_labels

O label é colocado em cada fio que queremos nomear e então depois, para ligar outros fios juntos basta acionar a ferramenta lable e colocar  o mesmo nome que teremos uma ligação entre eles:

clique na ferramenta Label e depois clique no fio que deseja nomear, crie  um nome e depois clique nos outros fios e coloque o mesmo nome que teremos uma ligação entre eles. Neste exemplo criamos sete Labels "A", "B", "C", "D", "E", "F" e "G" e ligamos em cada segmento dos displays com a conexão adequada, "A" com "A" e assim por diante.

Logo após é a hora de criar o programa, abaixo temos um exemplo de programa criado para apresentar o resultado de uma soma de 0 á 99 nos displays multiplexados, veja que atualizamos as saídas para um display e mostramos um dígito, logo depois, mudamos para  o segundo dígito e ligamos o outro display, alternando de tempos em tempos para "criar" a imagem estática, no vídeo não dá pra percener devido à simulação mas se montarmos numa placa te teste o efeito é bem interessane, veja o código:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* Código de exemplo de ligação dois displays de 7 segmentos com PIC16F877A    *
 * multiplexados. Para ser compilada com o PICC-CCS *
 * Autor: Nelson Camilo de Almeida *
 * www.pictronics.com.br *
 * Data 04/03/2011 */
 
#include "main_7seg multiplexado.h"
 
#define Display1 pin_c6 // Display 1 ligado ao pino pin_c6
#define Display2 pin_c7 // Display 2 ligado ao pino pin_c7
 
byte const digito[] = { 0b10111111, // 0 Define cada segmento
0b10000110, // 1 dos valores mostrados
0b11011011, // 2 no display de LEDs
0b11001111, // 3 em binário para ficar
0b11100110, // 4 mais fácil de codificar
0b11101101, // 5 cada dígito dos valores
0b11111101, // 6 mostrados no display.
0b10000111, // 7
0b11111111, // 8
0b11100111};// 9
 
void main() // Função principal
{
int contador; // variável de contagem
int unidade, dezena; // unidades da variável contador
 
setup_adc_ports(NO_ANALOGS); // Configura analógicos
setup_adc(ADC_OFF); // ADC desligado
setup_psp(PSP_DISABLED); // PSP desligado
setup_spi(SPI_SS_DISABLED); // SPI delsigado
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Configura Timer 0
setup_timer_1(T1_DISABLED); // Configura Timer 1
setup_timer_2(T2_DISABLED,0,1); // Configura Timer 2
 
 
while (true) // Loop infinito
{
for (contador = 0; contador != 100; contador++) // Contagem de 00 até 99
{
unidade = contador / 10; // Calcula a unidade
dezena = contador - (unidade * 10); // Calcula a dezena
output_b (digito[unidade]); // Apresenta Digito[unidade_do_contador]
output_high (Display1); // Habilita display 1
delay_ms (50); // Aguarda 50ms para dar uma pausa no PIC
output_low (Display1); // Desabilita display 1
output_b (digito[dezena]); // Apresenta Digito[dezena_do_contador]
output_high (Display2); // Habilita display 2
delay_ms (50); // Aguarda 50ms para dar uma pausa no PIC
output_low (Display2); // Desabilita display 2
}
}
}

Desta meneira podemos  ligar vários displays nos PICs economizando picnos paramuitos displays mas aumentando a complexidade do software de controle e ainda existem outras formas de se fazer essa multiplexação, em outra ocasião iremos mostrar mas delas, continue verificando!!

Os arquivos necessários para esta experiência estão aqui, baixe e teste você mesmo (arquivo Proteus versão 7.7).

Veja o vídeo deste exemplo, os dígitos não aparecem ligados devido a um delay grande na simulação mas, se montar na protoboard você verá que os dígitos aparecem simultaneamente, muito legal!!!!