Tutorial Multiplexando Displays de Sete Segmentos com PIC 16F628A

Documentos relacionados
Experiência. Montagem Kit Didático. 2. Turma: Nota: 5. MICRO-I Prof. Mauricio. Identificação dos Alunos:

01/08/2011 PROGRAMAÇÃO EM LINGUAGEM C. Histórico

Projeto para interligação do Teclado Matricial 4X3 o módulo PIC PCI-208 Princípio de Funcionamento:

Guia da Placa de desenvolvimento PD Mega16 N1

Programação em Linguagem C

Programação em Linguagem C

TECLADO MATRICIAL. Universidade Tecnológica Federal do Paraná - UTFPR Sistemas Microcontrolados Monitor da disciplina: Luís Paulo Custódio

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Usando display LCD tipo 16x2

Painel de Senhas S 0103 M S 0105 M. Manual do usuário

LIGAR LUZ COM BOTÃO. Projeto 2

Objetivos MICROCONTROLADORES SOFTWARE PROGRAMAÇÃO (PARTE: 04) Programação em Linguagem C

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 02: DISPLAY DE 7 SEGMENTOS MICROCONTROLADO

Placa de desenvolvimento USB AFSmartBoard utiliza PIC18F4550 da Microchip, microcontrolador com o Flash 32kb, 2048 bytes de memória RAM

Kit para Adaptação de IPDs WT. NanoIPD. Rev. 1 05/2015

Cerne Tecnologia e Treinamento

Seqüencial de Leds utilizando o microcontrolador PIC16F628A Vitor Amadeu

Características da Linguagem C

Sequencial Supermáquina (TEMPORIZAÇÃO SIMPLES)

O 7490 na prática O circuito integrado 7490 tem a aparência mostrada na figura 1.

Aula 8: Método de Maximização de Contatos

Conhecendo o PIC24 e o mikropascal

Figura 1 - Display de 7 segmentos

Sistemas Operacionais de Tempo Real Displays de 7 segmentos

MANUAL DE INSTRUÇÕES RELÓGIO MORMAII DIGITAL 9259M

Painel de Guichê G 0102 M. Manual do Usuário

Eder Terceiro. Programação C com o PIC16F628a. Eder Terceiro. 31 de Outubro de 2016

Matemática em Libras. Parte 4 Quatro operações. Professora Surda Zanúbia Dada

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

a) Com o equipamento desenergizado, retire os parafusos de fixação do painel traseiro e retire-o, de modo a acessar a parte interna do indicador.

Cerne Tecnologia e Treinamento

Linguagem C para Microcontroladores

Cerne Tecnologia e Treinamento

Projetos de Decodificadores

Projeto No. 15 Sensor Óptico Reflexivo

Microcontroladores AVR Conceitos básicos. Breve introdução

Circuito Eletrônico. Entendendo o circuito eletrônico na robótica. domingo, 28 de agosto de 11

TEMPORIZADOR MICROCONTROLADO PARA BACKLIGHT DO RÁDIO TURNIGY 9X

Copyright 2014 VW Soluções

Microcontroladores: Programação em C

Estruturas de Repetição

Programação Básica em Arduino Aula 2

Relatório Circuitos Lógicos. Calculadora 4 bits

By Marco br Manuais Faça você mesmo Compre no Mercado Livre DE QUEM É. Usuário MARCOTOCO Conta Giros Digital

Equipamento de Teste de Circuito de Baixa e Jumpers

SISTEMAS DIGITAIS. Módulo 7 Prof. Celso DECODIFICADOR:

Cerne Tecnologia e Treinamento

CURSO TERMO TURMA PERIODO DISCIPLINA ENGENHARIA MECATRÔNICA 8 A NOTURNO SISTEMAS DE AQUISIÇÃO DE DADOS

SISTEMAS DIGITAIS Universidade Católica - Exercício I. Nome do Aluno :

Painel de Senhas S 0103/2.3 WI. Manual do Usuário

Módulo de Desenvolvimento PIC16F877A PCI208

Sistemas Microcontrolados

Revisão C++ - Parte 1

EXPERIÊNCIA 3: INTERFACE COM TECLADO E DISPLAY

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Manual de Operação SBU 400 / SBU 410. Rev Rev Turkey Table of contents Turkey Introduction

MANUAL MORMAII REF. Y94227

Comunicação RC5 com o dspic Vitor Amadeu Souza

Manual Placa Expansão PE v2.0 Copyright 2011 VW Soluções

Manual de Operação SBU Rev SBU Turkey Table of contents Turkey Introduction

Introdução do Arduino para aquisição de dados e controle de instrumentos

CENTRAL DE ALARME DE INCÊNDIO Série ACS.

Guia de Utilização da Placa de Testes da FPGA 10K10

Linguagem C Princípios Básicos (parte 1)

Programação Básica em Arduino Aula 5

Laboratório de Hardware

Cerne Tecnologia e Treinamento

Cerne Tecnologia e Treinamento

Kit Teclado TS 4x4 v1..0 Manual do usuário

Projeto de Conclusão em Circuitos Digitais

Objetivo Geral Compreender o funcionamento dos softwares de simulação Mplab e Proteus com um simples programa.

Manual Técnico Módulo Ponte H 5A

Lógica de Programação I

Tutorial Modem. O recurso poderá ser acessado a partir das seguintes telas do sistema:

TREINADOR LÓGICO. O treinador lógico destina-se ao desenvolvimento de experiências com circuitos digitais em Laboratório Convencional.

Atividade de laboratório 005. Prof: Carlos Eduardo de Brito Novaes 20 de maio de Alunos RA Nome Curso Semestre

MANUAL MORMAII REF.SO8039. Cronógrafo Unidade de medida: 1/100 de segundos Capacidade máxima de medição: 23 horas, 59 minutos e 59 segundos.

Kit controle remoto IR acionando 3 Led com Arduino

Programação em BASIC para o PIC Vitor Amadeu Souza

Manual do usuário: 3192D/ 02W079G078)

Sistemas Microcontrolados

Sumário Introdução Revisão de Números Complexos Programação em Delphi... 94

Ligando uma lâmpada com Arduino. Professor: Paulo Marcos Trentin

Estruturas Condicionais

Microcontroladores PROF. ME. HÉLIO ESPERIDIÃO

Transcrição:

Tutorial Multiplexando Displays de Sete Segmentos com PIC 16F628A

Introdução Mostrarei neste tutorial, com enfoque no programa, em C, através da técnica de multiplexação como exibir um número de três algarismos em displays de sete segmentos com um PIC 16F628A. - 2 -

1. MOTIVAÇÃO A iniciativa de construir o projeto foi apartir de uma dúvida anunciada em um fórum de robótica apresentando algo como: Como exibir um número com três ou mais dígitos em um PIC16F628A com 18 pinos, sendo que cada display utiliza sete pinos?, duvida comum entre vários iniciantes. Havia no momento duas soluções para a proposta, a primeira era de utilizar, para cada display, um circuito integrado que convertesse o código BCD8421 para os sete segmentos, ou seja, seriam utilizados doze pinos, quatro para cada display, a segunda solução, mais interessante e prática era utilizar a técnica da multiplexação, que será abordada no decorrer do tutorial. O circuito eletrônico e a parte mais simples deste projeto, diferente da primeira solução proposta esta utiliza dez pinos, e esta técnica torna se mais vantajosa a medida que o número de display aumenta. 2. CIRCUITO O circuito abaixo que será utilizado para exibir os números. - 3 -

Observa se a simplicidade do circuito em questão, lembrando que este está sem o circuito oscilador, e a fonte de alimentação, sendo o praticante da montagem o responsável por sua elaboração. Foram utilizados displays de cátodo comum e transistores NPN de uso geral. 3. PROGRAMA A essência deste projeto é seu programa, este deve ser provido com a lógica de funcionamento a seguir: para exibição dos três dígitos cada display deve ser acionado individualmente e em seqüência, exemplificando: para exibir o numero 456 deve ser acionado o primeiro display contendo o numero quatro, após deve ser acionado o numero cinco no segundo display e por fim deve ser exibido no terceiro display o numero seis, todo este procedimento deve ser feito na maior velocidade possível, isso faz com que haja sensação de que todos os displays estão acesos ao mesmo tempo. O acionamento individual de cada dígito deve ser feito configurando o programa de modo que se deve escolher o numero a ser exibido e escolher o display correspondente a ele. Para acender o primeiro display, escolhe-se o número e coloca em condução seu respectivo transistor, isto deve ser feito também com os outros dois displays. Após testes foi percebido que deveria ser desligado o número em exibição antes de passar a exibir o próximo algarismo no display seguinte, pois não se obtinha um grande contraste de cada dígito dificultando a visualização de todo o número. Qualquer e apenas numero inteiros de no máximo três algarismos podem ser exibidos com o programa a seguir, que será desenvolvido em partes para então serem agrupadas. Queremos encontrar o valor absoluto de todos os algarismos para então em conjunto formar o número por completo. Display das Unidades Ao dividir um numero dentro do conjunto dos números inteiros por dez o resto da divisão será o valor absoluto do seu algarismo menos significativo, utilizando esta técnica elaboramos seguinte função: - 4 -

////////// DISPLAY DAS UNIDADES display_unidade(){ porta.b1 = 1; uni = num%10; switch(uni){ case 0: portb = 63; case 1: portb = 6; case 2: portb = 91; case 3: portb = 79; case 4: portb = 102; case 5: portb = 109; case 6: portb = 125; case 7: portb = 7; case 8: portb = 127; case 9: portb = 111; delay_ms(1); porta.b1 = 0; portb = 0; - 5 -

ou seja, deve se ligar o primeiro display, encontrar com lógica matemática o algarismo da unidade, depois através da execução do comando switch comparar o valor da variável uni e exibir este número no display logo após zerar, ou seja não exibir numero algum e desligar o display. Display das Dezenas O procedimento será semelhante neste display, com diferença no modo de encontrar o valor para as dezenas, será utilizado o seguinte enunciado: ////////// DISPLAY DAS DEZENAS display_dezena(){ porta.b0 = 1; dez = (num%100); dez = (dez/10) - ((dez%10)/10); switch(dez){... Display das Centenas Novamente o que mudará é o modo de encontrar o valor do algarismo ////////// DISPLAY DAS CENTENAS display_centena(){ porta.b2 = 1; cen = (num/100)-((num%100)/100); switch(cen){... - 6 -

Programa Final O programa final e já testado ficará do seguinte modo: /////////////////////////////////////////////////////////// ///////// 3 DISPLAY (7-SEGMENTOS) MULTIPLEXADOS /////////// ///////// -------------------------------------- ////////// ///////// LUIGI EDUARDO /////// 15/07/2011 //////////////// /////////////////////////////////////////////////////////// unsigned int cen, dez, uni, num; ////////// DISPLAY DAS CENTENAS display_centena(){ porta.b2 = 1; cen = (num/100)-((num%100)/100); switch(cen){ case 0: portb = 63; case 1: portb = 6; case 2: portb = 91; case 3: portb = 79; case 4: portb = 102; case 5: portb = 109; case 6: portb = 125; case 7: portb = 7; - 7 -

case 8: portb = 127; case 9: portb = 111; delay_ms(1); porta.b2 = 0; portb = 0; ////////// DISPLAY DAS DEZENAS display_dezena(){ porta.b0 = 1; dez = (num%100); dez = (dez/10) - ((dez%10)/10); switch(dez){ case 0: portb = 63; case 1: portb = 6; case 2: portb = 91; case 3: portb = 79; case 4: portb = 102; case 5: portb = 109; case 6: portb = 125; - 8 -

case 7: portb = 7; case 8: portb = 127; case 9: portb = 111; delay_ms(1); porta.b0 = 0; portb = 0; ////////// DISPLAY DAS UNIDADES display_unidade(){ porta.b1 = 1; uni = num%10; switch(uni){ case 0: portb = 63; case 1: portb = 6; case 2: portb = 91; case 3: portb = 79; case 4: portb = 102; case 5: portb = 109; case 6: portb = 125; - 9 -

case 7: portb = 7; case 8: portb = 127; case 9: portb = 111; delay_ms(1); porta.b1 = 0; portb = 0; ////////// PROGRAMA PRINCIPAL void main(){ trisa = 0b0; trisb = 0b10000000; porta = 0b0; portb = 0b0; num = 0; while(1){ display_centena(); display_dezena(); display_unidade(); /////////// FIM DO PROGRAMA O numero exibido nos displays é definido ao atribuir um valor a variável num. 4. MONTAGEM A montagem, assim como seu circuito, é simples pode ser desenvolvida como mostrado a seguir ou de modo permanente em placas próprias para circuitos. - 10 -

- 11 -

Na montagem eu adicionei um anexo ao circuito sendo este um botão que ao pressionado soma uma unidade à variável num. Foi feita apenas uma modificação na função void main(), e a adição de uma variável chamada mem. void main() { trisa = 0b0; trisb = 0b10000000; porta = 0b0; portb = 0b0; num = 0; mem = 0; while(1){ if(portb.b7 == 0b1 & mem == 0){ num = num + 1; mem = 1; if(num == 1000){ num = 0; if(portb.b7 == 0b0 & mem == 1){ mem = 0; display_centena(); display_dezena(); display_unidade(); displays. Toda a lógica do tutorial pode ser aplicada para construir outro projeto com mais - 12 -

Não tenho responsabilidade pelo mau funcionamento do projeto, danos, até mesmo de sanar dúvidas se este for alterado. Caso este for usado como base em algum trabalho acadêmico, favor citar a fonte como incentivo e contribuição para repercussão deste tutorial. Caso não tenha descoberto este documento em um fórum, as dúvidas devem ser enviadas por e-mail, no campo relacionado ao assunto deve ser colocado o nome do tutorial. Grato, Luigi Eduardo Sica Nery - 13 -

Tutorial desenvolvido e apresentado por: Luigi Eduardo Sica Nery luigiesn@gmail.com 18/07/2011-14 -