CIRCUITOS DIGITAIS II



Documentos relacionados
CIRCUITOS DIGITAIS II

Copyright 2011 VW Soluções

Programação em BASIC para o PIC Mostrando Mensagens no Display LCD Vitor Amadeu Souza

1. Considerações Sobre o Hardware

Arquitetura de Computadores. Tipos de Instruções

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO

Estrutura de um Computador

Sistemas Embarcados. Introdução aos sistemas embarcados

Copyright 2013 VW Soluções

Programação em BASIC para o PIC Projetos com Display Gráfico Vitor Amadeu Souza

Leitor MaxProx-Lista-PC

Entrada e Saída. Prof. Leonardo Barreto Campos 1

Guia de consulta rápida

Microprocessadores e Microcontroladores Parte 3. Expansão de Memória Mapeamento de Memória

EXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO

PAINEL ELETRÔNICO DE MENSAGENS MANUAL DE OPERAÇÃO E INSTALAÇÃO CARROS URBANOS E G7 MARCOPOLO

Prática 8: Comunicação SPI. 8.1 Introdução e objetivos. 8.2 Princípios básicos do protocolo SPI

Tutorial de Eletrônica Aplicações com 555 v

Dispositivos de Entrada e Saída

TUTORIAL DE PROGRAMAÇÃO. Configuração do cartão de entrada / saída analógica CP1W-MAD11.

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH

5 Entrada e Saída de Dados:

Projecto de uma placa com DIP-Switches e LCD com ligação à placa DETIUA

ULA Sinais de Controle enviados pela UC

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO

Interrupções e timers

Placa Acessório Modem Impacta

GERTEC Manual de Operação e Instalação MTi-760 Versão 1.0

TEM VÁRIOS ESTADOS: 0V,0.1V,3V,3.3V,4V,5V,10V, ETC.

ARQUITETURA DE COMPUTADORES

CONTROLE DIGITAL DE VOLUME

Organização de Computadores 1

Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21

PIC18F4550. Curso Engenharia de Controle e Automação. Alex Vidigal Bastos alexvbh@gmail.com

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

LABORATÓRIO DE ELETRÔNICA DIGITAL Experiência 9: Análise de Circuitos com Contadores

Introdução aos Computadores

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

Programação de Robótica: Modo Circuitos Programados - Avançado -

28/9/2010. Unidade de Controle Funcionamento e Implementação

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

ÍNDICE 1. INTRODUÇÃO DESCRIÇÃO DO PICKIT Ligação da porta USB LEDs de estado Botão... 5

Controle e monitoramento da fonte de alta-tensão: proposta, desenvolvimento e estágio atual.

Manual de Instalação. GPRS Universal

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

Quadro de consulta (solicitação do mestre)

Introdução à Programação

Aplicações de Microprocessadores I. Prof. Adilson Gonzaga

Funções de Posicionamento para Controle de Eixos

Introdução à Lógica de Programação

Programação Básica em Arduino Aula 2

Geral: Manual de Utilização do Software de Teste Gradual Windows

Sistemas Computacionais II Professor Frederico Sauer

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

Capítulo VIII Registradores de Deslocamento e Contadores

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

ARQUITETURA DE COMPUTADORES

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Micro Controladores Programáveis

Comunicação Serial com o AVR ATMEGA8

ACENDENDO AS LUZES. Capitulo 2 - Aula 1 Livro: Arduino básico Tutor: Wivissom Fayvre

CAPÍTULO 5 CONTADORES NA FORMA DE CIRCUITO INTEGRADO

Arquitetura e Organização de Computadores I

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

IINTRODUÇÃO SOFTWARE DE PROGRAMAÇÃO GP-SOFTWARE

Projeto Dirigido: Genius

1.3 Conectando a rede de alimentação das válvulas solenóides

CRONÔMETRO MICROPROCESSADO

3. Arquitetura Básica do Computador

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

BARRAMENTO DO SISTEMA

WATCHDOG ELITE NTC OPÇÃO DE COMUNICAÇÕES SERIAIS

EA773 - Experimento 5

TECLADO PAINEL OPERADOR USB COM DISPLAY GRÁFICO. Código : FT 023/09 REV: 02

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada.

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

PIC16F628a. Pinagem do PIC16F628a:

Monitor de Rede Elétrica Som Maior Pro. Manual do Usuário Versão 3.9f

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Gerência de Entrada/Saída

Multiplexando displays de 7 segmentos com PIC16F877A

Automação Industrial Parte 2

Boletim Técnico R&D 03/08 CARACTERÍSTICAS DO DRIVER MPC6006L 14 de março de 2008

Manual de operação. BS Ponto Versão 5.1

Manual de Configuração e Operação

Estruturas do Sistema de Computação

Baseado na portaria n 373 de 25 de fevereiro de 2011 do Ministério do Trabalho e Emprego;

Organização de Computadores Hardware

Manual do instalador Box Input Rev Figura 01 Apresentação do Box Input.

Manual de Instruções. Rastreador Via Satelite para Automóveis e Caminhões

LCD (LiquidCrystal Display) Alex Vidigal Bastos

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

Manual de Configuração e Operação

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

Transcrição:

Universidade Federal do Piauí Centro de Tecnologia epartamento de Engenharia Elétrica CIRCUITOS IGITIS II Programação do PIC Prof. Marcos Zurita zurita@ufpi.edu.br www.ufpi.br/zurita Teresina - 2011

Sumário 1. Comandos de Saída no CCS C 2. Comandos de Entrada no CCS C 3. isplay de 7 Segmentos 4. Módulos LC 5. Conversor / Interno 6. Temporizadores 2

1. Comandos de Saída no CCS C 3

Comandos de Saída no CCS C Comandos de Saída no CCS C set_tris_x() output_bit() output_low() output_high() output_float() output_x() 4

Comandos de Saída no CCS C set_tris_x(config) Configura os pinos da porta X como entrada ou saída: Bit = 1: entrada (1 lembra I de input ). Bit = 0: saída (0 lembra O de output ). Ex: set_tris_b(0b00000111); /* configura os pinos da porta B: b0 a b2 como entradas b3 a b7 como saídas */ 5

Comandos de Saída no CCS C output_bit(pino, estado) Coloca o pino indicado em nível lógico alto ou baixo, conforme o estado especificado. Caso a direção do pino não esteja configurada como saída, ela é alterada automaticamente antes da atribuição. Ex: output_bit(pin_a2,1); // coloca o pino 2 em nível 1 output_bit(pin_a2,0); // coloca o pino 2 em nível 0 6

Comandos de Saída no CCS C output_low(pino) Coloca o pino indicado em nível lógico baixo (idem a output_bit(pino,0)). Caso a direção do pino não esteja configurada como saída, ela é alterada automaticamente antes da atribuição. Ex: #define LE pin_a0 output_low(pin_b7); output_low(le); // coloca o pino B7 em nível 0 // coloca o pino 0 em nível 0 7

Comandos de Saída no CCS C output_high(pino) Coloca o pino indicado em nível lógico alto (idem a output_bit(pino,1)). Caso a direção do pino não esteja configurada como saída, ela é alterada automaticamente antes da atribuição. Ex: #define OUTRO_LE pin_c1 output_high(pin_d0); // coloca o pino 0 em nível 1 output_high(outro_le);// coloca o pino C1 em nível 1 8

Comandos de Saída no CCS C output_float(pino) Coloca o pino indicado em tri-state (como entrada). Quando um pino não está sendo utilizado ou está desconectado, é conveniente deixa-lo em 3-state para economizar energia. Ex.: output_float(pin_c7); // coloca o pino C7 em 3-state 9

Comandos de Saída no CCS C output_x(valor) Coloca um byte inteiro na saída da porta X. Caso a direção da porta não esteja configurada como saída, ela é alterada automaticamente antes da atribuição. Ex: output_b(0x0f); /* Toda a porta B é colocada como saída Os pinos B0 a B3 em nível alto; Os pinos B4 a B7 em nível baixo. */ 10

Comandos de Saída no CCS C Ex. 1: Semáforo de 3 Tempos Escreva um programa para controlar um semáforo de 3 tempos cujo circuito é representado abaixo. O tempo de cada estado deve ser: V: 5 s M: 2 s VM: 4 s Funcionamento ininterrupto. XTL = 4MHz. 11

Comandos de Saída no CCS C Porta B: Portas, C, e E: pinos ligados aos LEs devem ser configurados como pinos de saída; demais pinos devem ser configurados como entrada; todos os pinos devem ser configurados como tri-state. Escolha corretamente as instruções de mudança de estado dos pinos para assegurar que os demais não terão suas direções (E/S) iniciais alteradas. Utilize a função delay_ms() para ajustar os tempos. Modele o circuito e simule o programa. Se simulação correr bem, implemente-o na plataforma de prototipagem. 12

2. Comandos de Entrada no CCS C 13

Comandos de Entrada no CCS C Comandos de Entrada no CCS C int input() int input_x() 14

Comandos de Entrada no CCS C int input(pino) Retorna o estado do pino indicado. Ex.: tecla = input(pin_d2); /* lê o nível lógico do pino d2 e copia para a Variável tecla. */ 15

Comandos de Entrada no CCS C int input_x() Retorna um byte contendo o valor lido da porta indicada. Ex: dado8bits = input_b(pin_d2); // lê a porta B e guarda na variável dado. 16

Comandos de Entrada no CCS C Ex. 2: Semáforo de 3 Tempos Comandado ltere o projeto do semáforo de modo que ele só saia do verde 5 segundos após a solicitação de passagem de um pedestre, por meio de um botão. solicitação só deve ser aceita após o botão ser liberado. Voltando para o verde o semáforo volta a aguardar nova solicitação. 17 XTL = 4MHz.

3. isplay de 7 Segmentos 18

isplay de 7 segmentos isplay de 7 Segmentos Como cada segmento é um LE, os mesmos cuidados tomados com a limitação de corrente em LEs comuns devem ser tomados. Composto por 7 (ou 8) LEs conectados em Catodo Comum ou em nodo Comum. Pode ser acionado diretamente pelo microcontrolador ou através de um decodificador BC para 7 segmentos. 19

isplay de 7 segmentos tivação ireta Requer 7 pinos do uc (8 se o ponto for usado). Não requer componentes intermediários (salvo os resistores de limitação de corrente). Permite gerar outros caracteres além dos dígitos. 20

isplay de 7 segmentos Representação do lfabeto em 7 Segmentos a b c d e f g h i j k l m B C E F G H I J K L M n o p q r s t u v w x y z N O P Q R S T U V W X Y Z 21

isplay de 7 segmentos tivação Via ecodificador BC Requer 4 pinos do uc (5 se o ponto for usado). Requer um componente adicional: ec BC->7 segm. Permite gerar apenas os dígitos de 0 a 9 (para maioria dos decodificadores comerciais). 22

isplay de 7 segmentos Multiplexação de isplays Em aplicações que requerem mais de um display, a quantidade de pinos de I/O necessária para comandar diretamente todos eles pode tornar-se inviável. solução mais comum para este problema é comandalos de forma multiplexada, isto é, ativando um a um alternadamente em alta velocidade. esvantagens: É necessário o refresh contínuo dos displays, mesmo não havendo alteração no valor mostrado. Quanto maior o número de displays multiplexados, maior será o tempo que cada um passará desligado e consequentemente, menor será seu brilho aparente. 23 umento da complexidade do sistema.

isplay de 7 segmentos Ex.: Multiplexação de 4 displays. 24

isplay de 7 segmentos Ex. 3: Voltímetro True-RMS Um voltímetro True-RMS baseado em um microcontrolador está sendo projetado. O valor da tensão lida deve ser apresentado através de 4 displays de 7 segmentos, sendo o ponto decimal deslocado automaticamente pelo uc, conforme a faixa de tensão lida. Proponha um circuito capaz de acionar os 4 displays e seus respectivos pontos, utilizando uma única porta de 8 bits do uc. 25

isplay de 7 segmentos Ex. 4: Cronômetro Escreva um programa para cronometrar o tempo em décimos de segundos decorrido após o reset. 26

Comandos de Saída no CCS C O programa deve conter uma sub-rotina dedicada apenas a apresentar nos displays o valor passado para ela como argumento. contagem deve reiniciar automaticamente quando o tempo atingir FFFF. Modele o circuito e simule o programa. Se simulação correr bem, implemente-o na plataforma de prototipagem. 27

4. Módulos LC 28

Módulos LC Os Módulos de isplay LC Em sistemas embarcados é comum a necessidade de interação do sistema com o usuário. Quando o volume de informações visuais a serem entregues cresce, o uso de LEs indicadores ou displays de 7 segmentos pode tornar-se inadequado ou mesmo inviável. solução mais simples para esse problema é adoção de módulos LC como interface de exibição. 29

Módulos LC Módulos de display LC são padronizados, isto é, possuem uma interface comum e obedecem ao mesmo protocolo de comunicação, independente da resolução. Entre os mais populares estão os Módulos de display LC alfanuméricos, baseados no H44780 da Hitachi. Resoluções comerciais: 8x1 a 40x4 (caracteres x linhas). 30

Módulos LC Características dos Módulos LC Baseados no H44780 Capacidade de exibição de caracteres alfanuméricos, pontuação, símbolos matemáticos, letras gregas e caracteres kana; Capacidade de exibição de caracteres customizados; Recursos de deslocamento automático de mensagens (para a direita e para a esquerda); Exibição opcional do cursor; Retenção automática do conteúdo (não requer refresh); Interfaceamento através de 6 a 11 pinos; Baixo custo. 31

Módulos LC Módulos de isplay LC: lgumas Resoluções 32

Módulos LC Módulos de isplay LC: Cores 33

Módulos LC Tela do Módulo LC Cada caractere é formado por uma matriz de 5x8 ou 5x11 pixels. Um módulo 16x2 pode conter duas linhas de 16 caracteres cada. O ajuste de contraste é dado pela tensão no pino 3 (0 a 5V) e pode ser feito simplesmente através de um trim-pot. 34

Módulos LC Módulos de isplay LC: Pinagem PINO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 NOME Vss Vdd Vee RS R/W E 0 1 2 3 4 5 6 7 FUNÇÂO Terra (GN) Vcc (5V) Contraste (0 a 5V) Register Select Read / Write Enable ata bit 0 ata bit 1 ata bit 2 ata bit 3 ata bit 4 ata bit 5 ata bit 6 ata bit 7 35

Módulos LC Memórias Internas Internamente o Módulo LC contém 3 blocos de memória: RM (isplay ata RM) RM de ados Mostrados. CGRM (Caracter Generator RM) RM do Gerador de Caracteres. CGROM (Caracter Generator ROM) - ROM do Gerador de Caracteres. 36

Módulos LC Memória RM rmazena os caracteres que serão exibidos na tela. Tem capacidade para armazenar até 80 caracteres; Sua operação é bastante simples: caracteres enviados ao módulo são armazenados em posições consecutivas da memória (endereço incrementado automaticamente). tela exibirá os caracteres contidos dentro da janela de visualização, cuja posição relativa pode ser movida para a direita ou para a esquerda, criando o efeito de shifting. 37

Módulos LC Memória CGROM Contém o mapa de todos os caracteres padrão que podem ser exibidos na tela. Cada caractere está associado a uma posição de memória 38

Módulos LC Os primeiros 128 caracteres da CGROM são mapeados de forma que seus códigos correspondam aos da Tabela SCII: Ex.: se o caractere 65 ('') é enviado ao módulo ele exibirá a letra ''. 39

Módulos LC Memória CGRM rmazena caracteres customizados pelo usuário. Pode conter até 8 caracteres de 5x8 pixels. Cada símbolo é gerado a partir de 8 registros de 8 bits (apenas os bits 0 a 4 são usados). 40

Módulos LC Interfacemento LC - PIC Pode ser feito através da biblioteca lcd.c do diretório picc\drivers, para módulos compatíveis com o H44780. Interfaceamento no modo de 4 bits. Opera de modo transparente ao usuário através da função printf(). 41

Módulos LC Biblioteca lcd.c Utiliza os bits b0 a b2 e b4 a b7 da porta ou B (default porta ) Para empregar a porta B deve-se retirar o comentário da instrução da linha 39 do arquivo lcd.c : #define use_portb_lcd TRUE 42

Módulos LC Conexão Entre o LC e o PIC +5V Vdd 5KΩ RS E R1 R0 Vss R/W 3 R3 Vee R2 4 R4 0 5 R5 1 6 R6 2 7 R7 LC PIC 43

Módulos LC Interfacemento Com LC Principais rotinas da biblioteca lcd.c void lcd_init() void lcd_gotoxy(byte x, byte y) void lcd_putc(char c) char lcd_getc(byte x, byte y) byte lcd_read_byte() void lcd_send_byte(byte address, byte n) 44

Módulos LC Rotina lcd_init() Inicializa o LC Configura como LC de 2 linhas (default); Seta o modo de operação em 4 bits; Seleciona cursor simples; Limpa a tela; Posiciona o cursor na posição (0,0). pós a inicialização o LC está pronto para receber caracteres. 45

Módulos LC Rotina lcd_gotoxy(byte x, byte y) Posiciona o cursor de escrita na coluna x, linha y da tela. Rotina lcd_putc(char c) Imprime um ou mais caracteres na tela. Rotina lcd_getc(byte x, byte y) Retorna o caractere localizado na coluna x, linha y. É necessário que o pino R/W esteja conectado ao PIC para poder utiliza-la. 46

Módulos LC Rotina lcd_read_byte() Lê o último byte enviado ao LC. É necessário que o pino R/W esteja conectado ao PIC. Rotina lcd_send_byte(byte address, byte n) Envia um byte de controle (address = 0) ou de caractere (address = 1) ao LC. 47

Módulos LC Palavras de Controle do LC 48

Módulos LC Interfaceamento com o LC Incluir a biblioteca lcd.c Inicializar o LC com lcd_init() #include <lcd.c> // biblioteca de suporte ao LC void main() { // instruções de inicialização do PIC } int coisa = 12; lcd_init(); // inicializa o módulo LC lcd_putc( Teste LC\n ); printf(lcd_putc, Time: %U s, coisa); 49

Módulos LC Ex. 5: Cronômetro LC Reescreva o programa do cronômetro para exibir o tempo em um módulo LC de 16x2 caracteres. 50

Módulos LC contagem deve reiniciar automaticamente quando o tempo atingir FFFF. Modele o circuito e simule o programa. Se simulação correr bem, implemente-o na plataforma de prototipagem. 51

5. Conversor / Interno 52

Conversor / Interno Conversor / Interno Conversor por aproximação sucessiva; Resolução máxima de 10 bits; Múltiplas entradas multiplexadas; Clock configurável; Impedância máxima da fonte: 10KΩ. Tempo de aquisição: de 10 a 20 µs. 53

Conversor / Interno Comandos Básicos Para Conversão / iretiva #device adc=10 O comando setup_adc_ports(xxx) Configura as portas do xxx pode assumir valores como LL_NLOG NO_NLOG R0_R1_R3_NLOG R0_R1_NLOGR3_REF Configurações possíveis de xxx definidos na biblioteca do dispositivo ( 16F877.h, neste caso). 54

Conversor / Interno Possíveis Configurações do C no PIC16F877 MOO N7 N6 N5 N4 N3 N2 N1 N0 Vref+ Vref- LL_NLOG V VSS NLOG_R3_REF Vref+ N3 VSS _NLOG V VSS _NLOG_R3_REF Vref+ N3 VSS R0_R1_R3_NLOG V VSS R0_R1_NLOG_R3_REF Vref+ N3 Vss NO_NLOGS --- --- NLOG_R3_R2_REF Vref+ Vref- N3 N2 NLOG_NOT_RE1_RE2 V VSS NLOG_NOT_RE1_RE2_REF_R3 Vref+ Vref- N3 VSS NLOG_NOT_RE1_RE2_REF_R3_R2 Vref+ Vref- N3 N2 _NLOG_R3_R2_REF Vref+ Vref- N3 N2 R0_R1_NLOG_R3_R2_REF Vref+ Vref- N3 N2 R0_NLOG V VSS R0_NLOG_R3_R2_REF Vref+ Vref- N3 N2 =Entrada nalógica =Entrada/Saída igital 55

Conversor / Interno O Comando setup_adc(mode) Configura se o modo de operação do conversor. O modo de operação resume-se a habilitação ou não do C e, em caso positivo, sua frequência de operação. Por exemplo, mode pode assumir valores como: C_OFF C_CLOCK_INTERNL C_CLOCK_IV_32 Valores de mode definidos na biblioteca do dispositivo ( 16F877.h, neste caso). 56

Conversor / Interno set_adc_channel(channel) Seleciona o canal do / em que serão feita as próximas leituras. Para um conversor de 8 canais pode assumir valores de 0 a 7. read_adc() Colhe uma amostra analógica no canal selecionado. O valor da amostra deve estar entre 0 e Vref Volts (normalmente Vref = 5V). 57

Conversor / Interno Exemplo de código para aquisição no canal 6: #device adc=10 // conversor de 10bits void main() { int16 tensao; // instruções de configuração do PIC... setup_c_ports(ll_nlog); // Toda porta como // entradas analógicas setup_adc(c_clock_internl); // C com clock interno set_adc_channel(6); // Seleciona o canal 6 tensao = read_adc(); // Faz uma aquisição } 58

Conversor / Interno Ex. 6: Voltímetro Escreva um programa exibir a tensão (0 a 5V) lida no canal 1 do / em um LC de 16x2 caracteres. 59

Conversor / Interno O conversor / deverá operar no modo 10 bits. Utilize V como Vref+ e VSS como Vref precisão da leitura deve ser informada na primeira linha do LC (p/ ex.: Tensão +/- 8 mv: ); tensão deve ser exibida com 3 casas decimais de precisão na segunda linha do LC. Modele o circuito e simule o programa. Se simulação correr bem, implemente-o na plataforma de prototipagem. 60

Conversor / Interno Ex. 7: Termômetro igital Reescreva o código do exemplo anterior para que ele apresente também a temperatura dada por um sensor. 61

Conversor / Interno Sensor de temperatura utilizado: LM35. Saída: 0mV + 10mv/ C. O conversor / deverá operar no modo 10 bits. Utilize V como Vref+ e VSS como Vref temperatura deve ser informada na primeira linha do LC (p/ ex.: Temp.: 026.5 C ); tensão deve ser exibida com 3 casas decimais de precisão na segunda linha do LC. Modele o circuito e simule o programa. Se simulação correr bem, implemente-o na plataforma de prototipagem. 62

6. Temporizadores (Timers) 63

Temporizadores Temporizadores (Timers) São circuitos destinados a contagem do tempo. 64

Temporizadores Temporizadores digitais podem ser implementados simplesmente através de um contador cujo incremento (ou decremento) é comandado por uma fonte de clock de frequência precisa e conhecida. Considere um contador de 3 Início bits incrementado por um clock 1 ms 1 ms de 1kHz: 0 Um incremento será feito a cada 1ms. Um estouro do contador ocorrerá a cada 8ms. O sistema comporta-se como um temporizador capaz de contar intervalos de 8ms. 1 7 1 ms 1 ms 6 1 ms 2 3 5 1 ms 4 1 ms 1 ms 65

Temporizadores detecção de tempo decorrido é feita através da detecção do estouro do contador, isto é, toda vez que, após atingir o valor máximo, um incremento provoca a transição para o valor zero, reiniciando a contagem. ois parâmetros de um timer são notáveis neste ponto: Resolução: é intervalo de tempo entre cada incremento, sendo dependente do clock de entrada do temporizador. Para este exemplo a resolução é de 1ms. Período de Estouro: (overflow period) é o intervalo entre dois estouros consecutivos do temporizador. epende da resolução e do número de incrementos entre um estouro o o valor máximo do contador. Para este exemplo vale 8ms. Tamanho: é o número de bits do contador associado ao temporizador. Neste exemplo o temporizador é de 3 bits. 66

Temporizadores Reduzindo o Período de Estouro Reduzindo-se o número de estados da máquina é possível contar intervalos de tempo menores. Isto pode ser obtido por meio de desvios na sequência de contagem. Início esvios podem ser síncronos 1 ms 1 ms (consumindo um ciclo de clock) 0 ou assíncronos (ocorrendo tão 7 1 1 ms 1 ms logo o estado proibido seja 0 ou 1 ms detectado). 6 2 1 ms 3 5 1 ms 4 1 ms 1 ms 67

Temporizadores Uma forma de tornar o número de estados configurável é comparar o estado atual da máquina a um valor informado e reinicia-la caso este valor seja alcançado. Tal solução é comumente adotada por requerer apenas um comparador binário de Início mesma dimensão (em bits) 1 ms do temporizador. 1 ms 0 Para o exemplo adotado, o 1 ms 1 7 1 ms período de estouro poderia 1 ms ser reduzido para 5 ms CMP & 6 2 RESET configurando-se o comparador para reiniciar após o 1 ms 1 ms 3 5 estado 4. 1 ms 4 1 ms 68

Temporizadores umentando o Período de Estouro esde que o número máximo de estados da máquina é fixado pelo contador, o período de estouro do temporizador pode ser aumentado de três formas: Via Prescaler: O prescaler ou pré-escalonador nada mais é que um divisor de clock configurável capaz de dividir o clock de alimentação do temporizador. Para o exemplo dado, se um prescaler de 2:1 fosse usado, o período de estouro do timer passaria de 8 para 16ms. Via Postscaler: O postscaler ou pós-escalonador pode ser visto como um divisor de estouros. Ele conta um determinado número de estouros do contador antes de sinalizar um estouro em sua saída; Uso conjunto do Prescaler + Postscaler. 69

Temporizadores Temporizadores no PIC16F877 O PIC16F877 possui três temporizadores independentes: Timer 0; Timer 1; Timer 2. Cada temporizador possui características e recursos diferentes, embora sejam baseados nos mesmos princípios anteriormente expostos. 70

Temporizadores Timer 0 Possui uma vasta gama de aplicações. Pode ser programado para gerar pulsos de duração arbitrária, medir o tempo ou contar pulsos externos. Suas características são: Tamanho: 8 bits; Prescaler: 8 bits; Postscaler: não possui; Fonte de clock selecionável: Interna: RTCC (fosc/4); Externa: Pino R4/T0CK. Clock externo com borda de detecção selecionável; Interrupção associada ao estouro do contador. 71

incompleto 72

Bibliografia Milan Verle, PIC Microcontrollers Programming in C, 1a Ed., MikroElektronika, 2009. Fábio Pereira, Microcontroladores PIC: programação em C, 7 ed., Érica, 2009. Custom Computer Services Inc., C Compiler Reference Manual, 2011. Microchip Tec. Inc., 8-bit PIC Microcontrollers, ata Sheet, 2010. Microchip Tec. Inc., PIC16F87X - 28/40/44-Pin Enhanced Flash Microcontrollers, ata Sheet, 2003. 73