Baixe Apostila programação e outras Manuais, Projetos, Pesquisas em PDF para Matérias técnicas, somente na Docsity!
MINISTÉRIO DA EDUCAÇÃO
SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE
CAMPUS LUZERNA CURSO DE EDUCAÇÃO PROFISSIONAL TÉCNICO DE NÍVEL MÉDIO SUBSEQUENTE EM AUTOMAÇÃO INDUSTRIAL
Programação Aplicada a
Microcontroladores
Aluno: ________________________________
Prof: Ricardo Kerschbaumer Luzerna, 2018
Programação Aplicada a
Microcontroladores
Este material foi desenvolvido pelo professor Ricardo Kerschbaumer para ser utilizado na componente curricular de programação aplicada a microcontroladores do curso de educação profissional técnico de nível médio subsequente em automação industrial. O objetivo deste material é servir como material de apoio as aulas teóricas e práticas, bem como de material de estudo para que os alunos possam tirar suas dúvidas nos períodos extra classe. Os assuntos são distribuídos em aulas, cada aula diz respeito a um determinado assunto e não necessariamente a um encontro. No decorrer do material serão apresentados vários exercícios e vários exemplos. Os exemplos estarão dispostos em quadros com o fundo escurecido, como no exemplo a seguir. void setup() { // Código executado uma vez: } void loop() { // Código executado repetidamente } Bons estudos.
- Aula 1 - Sistemas computacionais......................................................................................................
- 1.1 Objetivo:..................................................................................................................................
- 1.2 Introdução................................................................................................................................
- 1.2.1 Sinais Analógicos e Sinais Digitais..................................................................................
- 1.2.2 Portas lógicas...................................................................................................................
- 1.2.3 Registradores....................................................................................................................
- 1.2.4 Memórias........................................................................................................................
- 1.2.5 Memória RAM (Memória de Acesso Aleatório)............................................................
- 1.2.6 Memórias ROM.............................................................................................................
- 1.2.7 Memórias ROM Programáveis (Prom’s).......................................................................
- 1.2.8 Memórias ROM Programáveis e Apagáveis (EPROM’s, EEPROMS’s e FLASH)......
- 1.2.9 Associação de memórias................................................................................................
- 1.3 Componentes básicos de um sistema computacional............................................................
- 1.4 Processador............................................................................................................................
- 1.5 Memória.................................................................................................................................
- 1.6 Dispositivos de entrada e saída..............................................................................................
- 1.7 Conclusão...............................................................................................................................
- Aula 2 - Arquitetura Dos Microcontroladores..................................................................................
- 2.1 Objetivo:................................................................................................................................
- 2.2 Arquitetura interna dos microprocessadores..........................................................................
- 2.3 Registradores de propósito geral............................................................................................
- 2.4 Unidade Lógica Aritmética (ULA ou ALU)..........................................................................
- 2.5 Registrador temporário..........................................................................................................
- 2.6 Acumulador............................................................................................................................
- 2.7 Program Counter (PC)...........................................................................................................
- 2.8 Registrador de Instrução........................................................................................................
- 2.9 Decodificador de Instrução e Unidade de Controle...............................................................
- 2.10 Unidade de Deslocamento...................................................................................................
- 2.11 Arquitetura C.I.S.C. versus R.I.S.C.....................................................................................
- 2.12 Arquitetura HARVARD versus VON NEUMANN.............................................................
- 2.13 Sinais de Controle entre microprocessador e Memória.......................................................
- 2.14 Microcontroladores e Microprocessadores..........................................................................
- Aula 3 - Lógica de programação......................................................................................................
- 3.1 Objetivo:................................................................................................................................
- 3.2 Programas..............................................................................................................................
- 3.3 Lógica de programação..........................................................................................................
- 3.4 Linguagem de programação...................................................................................................
- 3.5 Algoritmos.............................................................................................................................
- 3.5.1 Regras para construção do Algoritmo............................................................................
- 3.5.2 Exemplo de Algoritmo...................................................................................................
- 3.6 Fluxograma............................................................................................................................
- 3.7 Conclusão...............................................................................................................................
- Aula 4 - Fluxogramas parte 1...........................................................................................................
- 4.1 Objetivo:................................................................................................................................
- 4.2 Introdução..............................................................................................................................
- 4.2.1 Variáveis e atribuição de valores....................................................................................
- 4.2.2 Entradas e saídas............................................................................................................
- 4.3 Fluxogramas com o software Flowgorithm...........................................................................
- 4.3.1 Variáveis e no Flowgorithm...........................................................................................
- 4.4 Entradas e saídas no Flowgorithm.........................................................................................
- 4.5 Conclusão...............................................................................................................................
- 4.6 Lista de exercícios.................................................................................................................
- Aula 5 - Fluxogramas parte 2...........................................................................................................
- 5.1 Objetivo:................................................................................................................................
- 5.2 Introdução..............................................................................................................................
- 5.2.1 Estruturas de controle.....................................................................................................
- 5.2.2 Estruturas de repetição...................................................................................................
- 5.3 Estruturas de controle no Flowgorithm.................................................................................
- 5.4 Estruturas de repetição no Flowgorithm................................................................................
- 5.4.1 O laço “Enquanto” no Flowgorithm..............................................................................
- 5.4.2 O laço “Para” no Flowgorithm.......................................................................................
- 5.4.3 O laço “Fazer” no Flowgorithm.....................................................................................
- 5.5 Conclusão...............................................................................................................................
- 5.6 Lista de exercícios.................................................................................................................
- Aula 6 - Introdução ao Arduino........................................................................................................
- 6.1 Objetivo:................................................................................................................................
- 6.2 Introdução..............................................................................................................................
- 6.3 O microcontrolador utilizado no Arduino..............................................................................
- 6.4 Alimentação do Arduino........................................................................................................
- 6.5 Entradas e saídas do Arduino.................................................................................................
- 6.6 O ambiente de desenvolvimento do Arduino.........................................................................
- 6.7 Utilização da IDE Arduino....................................................................................................
- 6.8 Conclusão...............................................................................................................................
- 6.9 Exercício................................................................................................................................
- Aula 7 - Programação do Arduino....................................................................................................
- 7.1 Objetivo:................................................................................................................................
- 7.2 Introdução..............................................................................................................................
- 7.3 Programação do Arduino.......................................................................................................
- 7.3.1 Comentários...................................................................................................................
- 7.3.2 Finalização de instruções com ponto e vírgula..............................................................
- 7.3.3 Definição de blocos de código com chaves...................................................................
- 7.3.4 Funções..........................................................................................................................
- 7.3.5 A função "void setup()"..................................................................................................
- 7.3.6 A função “void loop()”...................................................................................................
- 7.3.7 Funções de entrada e saída.............................................................................................
- 7.3.8 Intervalos de tempo........................................................................................................
- 7.4 Conclusão...............................................................................................................................
- 7.5 Exercício................................................................................................................................
- Aula 8 - Variáveis e tomada de decisões...........................................................................................
- 8.1 Objetivo:................................................................................................................................
- 8.2 Variáveis no Arduino..............................................................................................................
- 8.3 Operadores.............................................................................................................................
- 8.4 Tomadas de decisão no Arduino............................................................................................
- 8.5 Exemplo de tomada de decisão..............................................................................................
- 8.6 Conclusão...............................................................................................................................
- 8.7 Exercício................................................................................................................................
- Aula 9 - Entradas e saídas digitais....................................................................................................
- 9.1 Objetivo:................................................................................................................................
- 9.2 Entradas digitais no Arduino..................................................................................................
- 9.3 Saídas digitais no Arduino..................................................................................................... - 9.3.1 Conexão de reles............................................................................................................ - 9.3.2 Conexão de um motor utilizando transistor mosfet....................................................... - 9.3.3 Conexão de lâmpada de sinalização............................................................................... - 9.3.4 Conexão de pequenos motores....................................................................................... - 9.3.5 Conexão de motores de passo........................................................................................ - 9.3.6 Conexão de motores CC com reversão.......................................................................... - 9.3.7 Conexão de displays de LED......................................................................................... - 9.3.8 Circuitos especializados de saída...................................................................................
- 9.4 Shields de entrada e saída digital para Arduino.....................................................................
- 9.5 Conclusão...............................................................................................................................
- 9.6 Exercício................................................................................................................................
- Aula 10 - Funções e Laços de Repetição..........................................................................................
- 10.1 Objetivo:..............................................................................................................................
- 10.2 Funções na programação do Arduino..................................................................................
- 10.3 Estruturas de controle.......................................................................................................... - 10.3.1 O laço “Enquanto” ou while........................................................................................ - 10.3.2 O laço “Fazer” ou do-while.......................................................................................... - 10.3.3 O laço “Para” ou for.....................................................................................................
- 10.4 Conclusão.............................................................................................................................
- 10.5 Exercício..............................................................................................................................
- Aula 11 - Interrupções e Contadores................................................................................................
- 11.1 Objetivo:..............................................................................................................................
- 11.2 Interrupções no Arduino...................................................................................................... - 11.2.1 Configuração das Interrupções externas......................................................................
- 11.3 Contadores e Temporizadores no Arduino...........................................................................
- TCCR1A – Registrador de controle do Timer 1 A....................................................................
- TCCR1B – Registrador de controle do Timer 1 B....................................................................
- 11.4 Conclusão...........................................................................................................................
- 11.5 Exercício............................................................................................................................
- Aula 12 - Entradas e Saídas Analógicas.........................................................................................
- 12.1 Objetivo:............................................................................................................................
- 12.2 O hardware do conversor Analógico/Digital (A/D)...........................................................
- 12.3 A utilização do conversor Analógico/Digital do Arduino..................................................
- 12.4 Sinais PWM.......................................................................................................................
- 12.5 Saídas PWM no Arduino...................................................................................................
- 12.6 Conclusão...........................................................................................................................
- 12.7 Exercício............................................................................................................................
- Aula 13 - Comunicação Serial no Arduino.....................................................................................
- 13.1 Objetivo:............................................................................................................................
- 13.2 Fundamentos da Comunicação Serial................................................................................
- 13.3 O padrão RS232.................................................................................................................
- 13.4 O padrão RS485.................................................................................................................
- 13.5 Comunicação Serial noArduino.........................................................................................
- 13.5.1 O padrão RS232 no Arduino......................................................................................
- 13.5.2 O padrão RS485 no Arduino......................................................................................
- 13.5.3 Programação do Arduino para comunicação serial....................................................
- 13.6 Conversão USB - Serial.....................................................................................................
- 13.6.1 Comunicação Serial Através da porta USB do Arduino............................................
- 13.6.2 Conversores USB-Serial comerciais..........................................................................
- 13.7 Conclusão...........................................................................................................................
- 13.8 Exercício............................................................................................................................
- Aula 14 - Circuitos Com Microcontroladores................................................................................
- 14.1 Objetivo:............................................................................................................................
- 14.2 A fonte de alimentação do microcontrolador.....................................................................
- 14.3 A conexão do microcontrolador com a fonte....................................................................
- 14.4 O circuito de reset..............................................................................................................
- 14.5 O circuito de clock.............................................................................................................
- 14.6 Conector de programação.................................................................................................
- 14.7 Circuito completo..............................................................................................................
- 14.8 O circuito programador......................................................................................................
- 14.9 A programação dos Microcontroladores............................................................................
- 14.10 Automatização de Processos utilizando Microcontroladores..........................................
- 14.11 Conclusão.........................................................................................................................
AULA 1 - SISTEMAS COMPUTACIONAIS Revisão de Eletrônica Digital e introdução aos Sistemas Computacionais. 1.1 Objetivo: O objetivo desta primeira aula é revisar alguns tópicos de eletrônica digital, necessários ao estudo de microcontroladores. Ao final desta aula os alunos serão capazes de compreender o funcionamento dos sistemas computacionais e seus principais elementos. 1.2 Introdução 1.2.1 Sinais Analógicos e Sinais Digitais Apesar de todos os sinais que circulam nos circuitos serem sinais elétricos, eles podem ser divididos em duas classes, analógicos e digitais. Nas figuras a seguir tem-se um exemplo de cada uma dessas classes de sinais.
a(V)
t(s)
(a)
a(V) t(s) (b) (a) Sinal analógico, (b) Sinal digital. Observando a figura acima notamos que o sinal analógico pode assumir qualquer valor, enquanto que o sinal digital só pode assumir apenas dois valores, um alto e outro baixo. Assim é costume na eletrônica digital denotar o nível alto por (1) e o nível baixo por (0).
Registrador de quatro bits. Dentre os inúmeros componentes digitais, os registradores têm uma importância muito grande no que diz respeito aos microcontroladores. O que torna os registradores tão especiais é a capacidade deles de armazenar informações. A seguir é apresentado um registrador comercial, o 74373. Este componente é um registrador de oito bits com entrada e saída paralela. 74373 Pinos Função D0 – D 7 Entradas de dados O0 – O 7 Saída de dados LE Habilita a gravação dos dados, é ativo em nível lógico 1 OE Habilita a saída dos dados, é ativo em nível lógico 0 O diagrama lógico a seguir mostra a configuração interna do 74373, e abaixo tem-se a tabela verdade do componente, com o índice n de 0 a 7.
Lógica interna do 74373. Entradas Saída LE OE Dn On 1 0 1 1 1 0 0 0 0 0 X Não Muda X 1 X Z Funcionamento do 74373. 1.2.4 Memórias Já vimos que através de dispositivos eletrônicos como os registradores, podemos armazenar uma palavra de “n” bits. Memórias são dispositivos utilizados para armazenar palavras binárias na ordem de centenas de milhares. Podem-se utilizar flip-flop’s para o armazenamento em memórias ou outro dispositivo qualquer que sirva para este fim. Os circuitos de memória normalmente têm as seguintes entradas e saídas: Algumas vias de entrada para gravação e/ou saídas para leitura (que fisicamente podem ser as mesmas); Algumas vias para endereçamento, que selecionará qual registrador será lido/escrito, de acordo com um código (endereço de memória); Um pino que habilita o circuito (Chip Select - CS). Se o circuito não estiver habilitado, as saídas permanecem em alta impedância; Um pino de leitura/escrita, que habilita uma destas duas operações ou apenas leitura, dependendo do tipo de memória.
A maioria das memórias tem saídas em coletor aberto ou terceiro estado para permitir a ligação em paralelo e conseqüentemente melhorar a capacidade de manuseio de dados. Assim, quando o “Chip Select” não estiver ativo, o componente ficará em estado de alta impedância, e não se pode nem escrever na memória nem ler os seus conteúdos. Isto significa que a memória estará desconectada dos demais componentes do circuito. A operação de gravação ou escrita é feita colocando-se os dados nas vias de entrada, habilitando-se o chip, colocando-se os sinais de endereço na posição desejada e habilitando a escrita da memória. Deste modo os dados das vias de entrada serão escritos na posição selecionada. Do mesmo modo, a operação de leitura é feita habilitando-se o chip, colocando-se os sinais de endereço na posição desejada e habilitando a leitura da memória. Deste modo os dados da posição de memória selecionada ficarão disponíveis na saída, para leitura. 1.2.6 Memórias ROM Uma memória ROM (Read Only Memory) é um tipo de memória no qual podemos ler, mas não escrever. Os conteúdos são fixos e inalterados, sendo estabelecidos na hora da fabricação. Em uma ROM, os conteúdos não precisam ser alterados. Portanto não necessitamos de flip-flop’s ou dispositivos semelhantes. Uma ROM na verdade nada mais é do que um conversor de código e pode ser construído a partir de dispositivos mais simples e baratos que as portas normalmente utilizadas. 1.2.7 Memórias ROM Programáveis (Prom’s) Existem circuitos de ROM que permitem que o usuário estabeleça as informações que serão armazenadas, ao invés do fabricante. Estas memórias são chamadas de memórias PROM (Memórias de leitura programáveis). A gravação só pode ser feita uma única vez e não mais alterada. Normalmente a gravação é feita através da queima de elos fusíveis que determinam se a posição de memória conterá “um” ou “zero”. 1.2.8 Memórias ROM Programáveis e Apagáveis (EPROM’s, EEPROMS’s e FLASH) Na EPROM, os dados são armazenados em dispositivos baseados em MOSFET’s. Estes dispositivos fazem ou não a conexão (guardam bit “um” ou “zero”) conforme haja ou não carga elétrica na porta do transistor. A programação é feita através de um programador de EPROM’s. Uma característica importante é a de que a exposição à luz ultravioleta forte (por aproximadamente 30 min.) permite a fuga das cargas, apagando a memória. O apagamento possibilita uma nova
programação (gravação). Já nas memórias EEPROM e FLASH o processo para apagar pode ser feito eletricamente, facilitando muito assim o processo de alteração das informações armazenadas. Apesar de estas memórias serem graváveis e apagáveis elas não são iguais as memórias RAM, pois as informações não são perdidas quando a energia é desligada. Outra característica que difere este tipo de memórias das memórias RAM é que o tempo gasto para armazenar a informação nestas é muito maior, e o número de gravações que se pode fazer é limitado. 1.2.9 Associação de memórias A ligação de memórias em paralelo é utilizada quando o número de palavras e/ou o número de bits por palavra disponível em um determinado circuito integrado não é suficiente. Abaixo está representada uma ligação em paralelo para aumentar o número de bits por palavra: Ligação de Memórias em Paralelo para Aumentar Número de Bits por Palavra O próximo desenho mostra uma ligação em paralelo para aumentar o número de palavras do conjunto:
- A memória é responsável pela armazenagem dos programas e dos dados.
- Periféricos, que são os dispositivos responsáveis pelas entradas e saídas de dados do computador, ou seja, pelas interações entre o computador e o mundo externo. Exemplos de periféricos são o monitor, teclados, mouses, impressoras, etc.
- Barramento, que liga todos estes componentes e é uma via de comunicação de alto desempenho por onde circulam os dados tratados pelo computador. 1.4 Processador Um microprocessador, ou simplesmente processador, é um circuito integrado (ou chip), que é considerado o "cérebro" do computador (Figura a seguir). É ele que executa os programas, faz os cálculos e toma as decisões, de acordo com as instruções armazenadas na memória. Processador de computador Os microprocessadores formam uma parte importantíssima do computador, chamada de UCP (Unidade Central de Processamento), ou em inglês, CPU (Central Processing Unit). Ligando- se um microprocessador existem alguns chips de memória e alguns outros chips auxiliares, tornou- se possível construir um computador inteiro em uma única placa de circuito. Esta placa, como visto na Figura a seguir, é comumente chamada de placa-mãe.
Placa-mãe de um computador Não importa de que tipo de CPU estamos falando, seja um microcontrolador, microprocessador, ou uma das várias placas que formam a CPU de um computador de grande porte, podemos dizer que a CPU realiza as seguintes tarefas: a) Busca e executa as instruções existentes na memória. Os programas e os dados que ficam na memória não volátil, são transferidos para a memória. Uma vez estando na memória, a CPU pode executar os programas e processar os dados. b) Comanda todos os outros chips do computador. A CPU é composta basicamente de três elementos: unidade de controle, unidade lógica e aritmética e registradores, conforme a figura a seguir.
Disco rígido de computador 1.6 Dispositivos de entrada e saída Todos os sistemas computacionais necessitam interagir com o mundo exterior. A entrada e a saída de dados ou informações é crítica para seu funcionamento. Existem muitos dispositivos que podem ser conectados aos sistemas computacionais. Os mais comuns são o teclado, mouse e monitor, porém existem outros não tão comuns, tais como equipamentos científicos, equipamentos de aquisição e processamento de dados, máquinas industriais e assim por diante. 1.7 Conclusão Esta aula apresentou de forma bastante superficial os fundamentos necessários à compreensão do funcionamento dos sistemas computacionais, bem como a formação do núcleo de um computador. Porem os sistemas computacionais são máquinas complexas, em constante atualização e envolvem muitos outros elementos de software e hardware para funcionarem.
AULA 2 - ARQUITETURA DOS MICROCONTROLADORES Arquiteturas CISC, RISC, Harvard e Von Neumann 2.1 Objetivo: Apresentar aos alunos as arquiteturas internas e externas mais comuns aos microcontroladores, ao final desta aula os alunos serão capazes de compreender como um microcontrolador trabalha internamente, como ele executa seus comandos e o que faz cada um de seus componentes. 2.2 Arquitetura interna dos microprocessadores Os microprocessadores são o coração de um microcontrolador, assim para compreendermos o funcionamento de um microcontrolador é necessário primeiro compreender o funcionamento de um microprocessador. Embora todos os microprocessadores tenham suas peculiaridades, a maioria deles possui grande semelhança quanto a seu modo geral de funcionamento. A figura a seguir ilustra a arquitetura básica de um microprocessador. Arquitetura interna genérica de microprocessadores