12
CURSO DE TÉCNICO ESPECIALISTA AUTOMAÇÃO ROBÓTICA E CONTROLO INDUSTRIAL UFCD 5136 – Sistemas de micro controladores TRABALHOS LABORATORIAIS – MICROCONTROLADORES ________________________________________________________________________________________________________________ Trabalhos Laboratoriais – Microcontroladores 1 Página 1 Este documento é propriedade da ATEC - Academia de Formação. Preparado de acordo com o referencial de formação do CNQ para o curso 523229- Técnico/a Especialista de Automação Robótica e Controlo Industrial (NQ:5). Documento actualizado em 11.06.2013 Objectivos Criação de projetos no ambiente de desenvolvimento MPLAB IDE. Conhecer o processo de tradução de código fonte para código máquina. Introdução à programação em linguagem C. Programação dos registos associados aos portos de E/S; Leitura e escrita de dados nos portos; Implementação de um descodificador hexadecimal / 7Segmentos por software. Implementação de um sistema de visualização hexadecimal com 3 displays, com a construção de uma rotina para refrescamento dos 3 displays por multiplexagem no tempo. Introdução teórica O MPLab IDE da Microchip é a ferramenta de desenvolvimento que o fabricante disponibiliza aos programadores. Este ambiente de desenvolvimento conta já com 6 gerações e muitos anos de experiências, aperfeiçoamentos, adição de novas tecnologias, que o tem mantido a par dos melhores IDE que existem, para inúmeras linguagens de programação. Execução do MPLAB IDE: 1. Para executar o MPLAB IDE, clique no “ícon” instalado no ambiente de trabalho TRABALHOS LABORATORIAIS – MICROCONTROLADORES 1

TL.fm Microcontroladores

  • Upload
    alfredo

  • View
    41

  • Download
    1

Embed Size (px)

DESCRIPTION

Microcontroladores

Citation preview

Page 1: TL.fm Microcontroladores

CURSO DE TÉCNICO ESPECIALISTA AUTOMAÇÃO ROBÓTICA E CONTROLO INDUSTRIAL

UFCD 5136 – Sistemas de micro controladores

TRABALHOS LABORATORIAIS – MICROCONTROLADORES

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores 1 Página 1

Est

e d

oc

um

en

to é

pro

prie

da

de

da

ATE

C -

Ac

ad

em

ia d

e F

orm

ão

.

Pre

pa

rad

o d

e a

co

rdo

co

m o

re

fere

nc

ial d

e f

orm

ão

do

CN

Q p

ara

o c

urs

o 5

23

22

9-

Téc

nic

o/a

Esp

ec

ialis

ta d

e

Au

tom

ão

Ro

tic

a

e C

on

tro

lo

Ind

ust

ria

l (N

Q:5

). D

oc

um

en

to a

ctu

aliz

ad

o e

m 1

1.0

6.2

01

3

Objectivos

Criação de projetos no ambiente de desenvolvimento MPLAB IDE.

Conhecer o processo de tradução de código fonte para código máquina.

Introdução à programação em linguagem C.

Programação dos registos associados aos portos de E/S;

Leitura e escrita de dados nos portos;

Implementação de um descodificador hexadecimal / 7Segmentos por software.

Implementação de um sistema de visualização hexadecimal com 3 displays, com a construção de uma rotina para

refrescamento dos 3 displays por multiplexagem no tempo.

Introdução teórica

O MPLab IDE da Microchip é a ferramenta de desenvolvimento que o fabricante disponibiliza aos programadores. Este

ambiente de desenvolvimento conta já com 6 gerações e muitos anos de experiências, aperfeiçoamentos, adição de novas

tecnologias, que o tem mantido a par dos melhores IDE que existem, para inúmeras linguagens de programação.

Execução do MPLAB IDE:

1. Para executar o MPLAB IDE, clique no “ícon” instalado no ambiente de trabalho

TRABALHOS LABORATORIAIS – MICROCONTROLADORES 1

Page 2: TL.fm Microcontroladores

CURSO DE TÉCNICO DE ELECTRÓNICA AUTOMAÇÃO E COMANDO

TRABALHOS LABORATORIAIS - Microcontroladores

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores N3 Página 2

2. Criação de um projeto utilizando o ”Project Wizard”

3. A caixa de diálogo seguinte (Step One) permitir-nos-á selecionar o tipo de dispositivo

4. O segundo passo do “Project Wizard” define as ferramentas a utilizar neste projeto.

Page 3: TL.fm Microcontroladores

CURSO DE TÉCNICO ESPECIALISTA AUTOMAÇÃO ROBÓTICA E CONTROLO INDUSTRIAL

UFCD 5136 – Sistemas de micro controladores

TRABALHOS LABORATORIAIS – MICROCONTROLADORES

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores 1 Página 3

Est

e d

oc

um

en

to é

pro

prie

da

de

da

ATE

C -

Ac

ad

em

ia d

e F

orm

ão

.

Pre

pa

rad

o d

e a

co

rdo

co

m o

re

fere

nc

ial d

e f

orm

ão

do

CN

Q p

ara

o c

urs

o 5

23

22

9-

Téc

nic

o/a

Esp

ec

ialis

ta d

e

Au

tom

ão

Ro

tic

a

e C

on

tro

lo

Ind

ust

ria

l (N

Q:5

). D

oc

um

en

to a

ctu

aliz

ad

o e

m 1

1.0

6.2

01

3

5. O terceiro passo permite-nos atribuir um nome ao nosso projeto e guardá-lo numa pasta

6. O quarto passo permite-nos selecionar os ficheiros a incluir no projeto

7. A caixa de diálogo final do “Project Wizard” apresenta o resumo dos passos efetuados, indicando o dispositivo

selecionado, as ferramentas e o nome de projeto;

Page 4: TL.fm Microcontroladores

CURSO DE TÉCNICO DE ELECTRÓNICA AUTOMAÇÃO E COMANDO

TRABALHOS LABORATORIAIS - Microcontroladores

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores N3 Página 4

8. Depois da criação do "project", ter terminado, é altura de começarmos a escrever um programa. Um novo ficheiro

deve ser aberto e vai ser para abrir um novo ficheiro, clica-se em FILE>NEW

9. A nova janela representa o ficheiro onde o programa vai ser escrito.

Template do programa a escrever

#include <HTC.h>

//comentários

__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);

#define _XTAL_FREQ 4000000

void main()

{

TRISC=0B00000000;

PORTC=0B00000000;

ANSEL=0B00000000;

while(1)

{

RC0=1;

}

}

Vejamos o significado de cada linha do programa:

# include <HTC.H>

O comando # INCLUDE é uma diretiva do compilador. Neste caso está a determinar ao compilar que anexe ao

programa o arquivo especificado “HTC.H”.

Os arquivos com extensão “H” são designados de arquivos de cabeçalho e são utilizados em C para definir

variáveis, tipos, símbolos e funções uteis ao programa.

Page 5: TL.fm Microcontroladores

CURSO DE TÉCNICO ESPECIALISTA AUTOMAÇÃO ROBÓTICA E CONTROLO INDUSTRIAL

UFCD 5136 – Sistemas de micro controladores

TRABALHOS LABORATORIAIS – MICROCONTROLADORES

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores 1 Página 5

Est

e d

oc

um

en

to é

pro

prie

da

de

da

ATE

C -

Ac

ad

em

ia d

e F

orm

ão

.

Pre

pa

rad

o d

e a

co

rdo

co

m o

re

fere

nc

ial d

e f

orm

ão

do

CN

Q p

ara

o c

urs

o 5

23

22

9-

Téc

nic

o/a

Esp

ec

ialis

ta d

e

Au

tom

ão

Ro

tic

a

e C

on

tro

lo

Ind

ust

ria

l (N

Q:5

). D

oc

um

en

to a

ctu

aliz

ad

o e

m 1

1.0

6.2

01

3

//comentários

É chamado de comentário. Os comentários são descrições inseridas no código-fonte pelo programador com o

intuito de documentar o programa.

__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);

Configura o estado dos “fusíveis” da palavra configuração, vejamos cada item deste config.

FOSC_INTRCIO - Habilita o oscilador interno, mantendo os pinos RA4 e RA5 como portas.

WDTE_OFF - Basicamente é um contador de ciclo de instruções separado do programa principal, a sua função é

fazer o RESET do programa caso o WDT não seja “limpo” pelo software.

MCLRE_OFF - MASTER CLEAR ENABLE (Habilita o RESET EXTERNO), quando em ON, o RESET será

acionado através do pino 4 quando em VSS, ou seja quando levamos a massa o pino 4. É evidente que nesta

condição ele perde a função de PORTA,5 (RA5), para trabalhar apenas como RESET, para tanto devemos ligar um

resistência do pino para VDD, e um interruptor do pino para VSS.

CP_OFF - CODE PROTECT (código de proteção) tem por finalidade não permitir quando habilitado ( ON), que

consigam copiar ou ler o programa gravado.

void main()

Especifica o nome de uma função. No caso, a função é padronizada na linguagem C e é utilizada para

definir a função principal, ou corpo principal do programa.

A partir este ponto poderemos iniciar o nosso programa.

TRISC=0B00000000;

Inicialização do porto quando é necessário usar uma ou mais linhas de E/S de um determinado porto, importante

fazer-se a sua inicialização logo no início da rotina main do programa. A inicialização não é mais que a

configuração da direção dos dados presentes nas linhas de E/S

O registo TRIS é um registo programável de 1 byte (8 bits) disponível no banco 1 (memória RAM), que controla se

uma linha em particular é uma entrada ou uma saída. Existe um registo TRIS para cada porto.

Todos os bits contidos nos registos mencionados, correspondem univocamente a uma linha de entrada/ saída de

um bit. Por exemplo, o bit 0 do registo PORTC e do registo TRISC, correspondem à linha RC0, o bit 1 à linha RC1 e

assim por diante. Um ‘1’ no bit 0 do registo TRIS configura a linha como entrada enquanto um ‘0’ configura a linha

como saída.

PORTC=0B00000000;

Uma vez configuradas as direções pretendidas das linhas do porto, por programação do registo TRIS, pode-se

efetuar leituras ou escritas no porto usando o registo PORT.

ANSEL=0B00000000;

No PIC16F677, podemos selecionar como entrada analógica, por programação. O registo ANSEL e ANSELH

configuram as linhas do PIC como entradas analógicas/digitais ou referência; a entrada selecionada deve ser

Page 6: TL.fm Microcontroladores

CURSO DE TÉCNICO DE ELECTRÓNICA AUTOMAÇÃO E COMANDO

TRABALHOS LABORATORIAIS - Microcontroladores

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores N3 Página 6

programada como entrada afetando o bit correspondente no registo TRIS. No exemplo todos os registos AN0 até

AN7 serão considerados entradas digitais.

RC0=1;

Ativa o bit 0 do porto C correspondendo ao pino 16 do PIC 16F677

10. Uma vez escrito o programa faz-se a designação (como em todos os programas Windows) clicando em

FILE>SAVE AS, ao qual vamos designar por "exerc_X.c

"

11. Após o programa escrito vamos adicionar o ficheiro ao nosso projeto. Com o rato em ”Source Files” clica no botão

do lado direito e seleciona “Add Files”.

12. Após a escrita do programa e adicionado ao projeto, Vamos agora compilar o nosso programa. Recorrendo ao

comando PROJECT -> BUILD ALL (se não existirem erros), uma nova janela idêntica à representada na figura ao

lado.

Page 7: TL.fm Microcontroladores

CURSO DE TÉCNICO ESPECIALISTA AUTOMAÇÃO ROBÓTICA E CONTROLO INDUSTRIAL

UFCD 5136 – Sistemas de micro controladores

TRABALHOS LABORATORIAIS – MICROCONTROLADORES

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores 1 Página 7

Est

e d

oc

um

en

to é

pro

prie

da

de

da

ATE

C -

Ac

ad

em

ia d

e F

orm

ão

.

Pre

pa

rad

o d

e a

co

rdo

co

m o

re

fere

nc

ial d

e f

orm

ão

do

CN

Q p

ara

o c

urs

o 5

23

22

9-

Téc

nic

o/a

Esp

ec

ialis

ta d

e

Au

tom

ão

Ro

tic

a

e C

on

tro

lo

Ind

ust

ria

l (N

Q:5

). D

oc

um

en

to a

ctu

aliz

ad

o e

m 1

1.0

6.2

01

3

13. Programar o microcontrolador

A programação de um dispositivo é realizada seguindo os seguintes passos:

a) Ligar o programador PICKIT via cabo USB.

b) Realizar as ligações necessárias entre conector do PICKIT 2 e dispositivo que se deseja programar.

c) Abrir o projeto anteriormente efetuado a em ‘MPLAB’ que contém o código a ser programado.

d) Selecionar o programador no MPLAB.

Page 8: TL.fm Microcontroladores

CURSO DE TÉCNICO DE ELECTRÓNICA AUTOMAÇÃO E COMANDO

TRABALHOS LABORATORIAIS - Microcontroladores

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores N3 Página 8

Esquema

Trabalhos a realizar

1. Escreva um programa que faz com que um LED, ligado à porta RC0, seja aceso, caso um interruptor

C, ligada à porta RB4, esteja em “1”. Caso contrário, o LED apaga-se.

2. Escreve um programa que faz com que o LED, ligado ao pino RC0 da porta B acenda e apague a

cada segundo.

Page 9: TL.fm Microcontroladores

CURSO DE TÉCNICO ESPECIALISTA AUTOMAÇÃO ROBÓTICA E CONTROLO INDUSTRIAL

UFCD 5136 – Sistemas de micro controladores

TRABALHOS LABORATORIAIS – MICROCONTROLADORES

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores 1 Página 9

Est

e d

oc

um

en

to é

pro

prie

da

de

da

ATE

C -

Ac

ad

em

ia d

e F

orm

ão

.

Pre

pa

rad

o d

e a

co

rdo

co

m o

re

fere

nc

ial d

e f

orm

ão

do

CN

Q p

ara

o c

urs

o 5

23

22

9-

Téc

nic

o/a

Esp

ec

ialis

ta d

e

Au

tom

ão

Ro

tic

a

e C

on

tro

lo

Ind

ust

ria

l (N

Q:5

). D

oc

um

en

to a

ctu

aliz

ad

o e

m 1

1.0

6.2

01

3

3. Escreve um programa que utiliza a cada impulso em RC0, alterne o estado do relé ligado a RC6

4. Escreve um programa que utiliza um display de 7 segmentos, ligado ao porto C . para mostrar o valor

de um interruptor ligado ao pino RB4. Se o interruptor estiver ligado, o display exibe o número 1. Caso

contrário, é exibido o número 0.

5. Aproveitando o circuito anterior escreve um programa que efetue a contagem de 0 a 9. O contador

será incrementado a cada impulso na RB4.

Page 10: TL.fm Microcontroladores

CURSO DE TÉCNICO DE ELECTRÓNICA AUTOMAÇÃO E COMANDO

TRABALHOS LABORATORIAIS - Microcontroladores

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores N3 Página 10

6. Escreve um programa que faça ligar sequencialmente cada um dos leds, ligado aos pino RC0 a RC7.

7. Igual ao programa anterior, mas quando chegar à saída RC7 recua até a RC0.

8. Contador 0 a 999, com botão RESET.

R1

330R

R2

330R

R3

330R

R4

330R

R5

330R

R6

330R

R7

330R

RA0/AN0/C1IN+/ICSPDAT/ULPWU19

RB710

RC0/AN4/C2IN+16

RC1/AN5/C12IN1-15

RC2/AN6/C12IN2-14

RC3/AN7/C12IN3-7

RC4/C2OUT6

RC55

RC6/AN8/SS8

RA4/AN3/T1G/OSC2/CLKOUT3

RA5/T1CKI/OSC1/CLKIN2

RB4/AN10/SDI/SDA13

RB5/AN1112

RB6/SCK/SCL11

RA1/AN1/C12IN0-/VREF/ICSPCLK18

RA3/MCLR/VPP4

RA2/AN2/T0CKI/INT/C1OUT17

RC7/AN9/SDO9

Q1BC548

Q2BC548R8

10k

R9

10k

R10

10k

R11

10k

Q3BC548

R13

10k

Page 11: TL.fm Microcontroladores

CURSO DE TÉCNICO ESPECIALISTA AUTOMAÇÃO ROBÓTICA E CONTROLO INDUSTRIAL

UFCD 5136 – Sistemas de micro controladores

TRABALHOS LABORATORIAIS – MICROCONTROLADORES

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores 1 Página 11

Est

e d

oc

um

en

to é

pro

prie

da

de

da

ATE

C -

Ac

ad

em

ia d

e F

orm

ão

.

Pre

pa

rad

o d

e a

co

rdo

co

m o

re

fere

nc

ial d

e f

orm

ão

do

CN

Q p

ara

o c

urs

o 5

23

22

9-

Téc

nic

o/a

Esp

ec

ialis

ta d

e

Au

tom

ão

Ro

tic

a

e C

on

tro

lo

Ind

ust

ria

l (N

Q:5

). D

oc

um

en

to a

ctu

aliz

ad

o e

m 1

1.0

6.2

01

3

EXERCÍCIOS RESOLVIDOS

Exercício 1

#include<htc.h>

__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);

#define _XTAL_FREQ 4000000

void main()

{

TRISC=0;

PORTC=0;

ANSEL=0;

while(1)

{

RC0=1; }

}

Exercício 2

#include<htc.h>

__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);

#define _XTAL_FREQ 4000000

#define led RC0

#define bot RB4

void main()

{

TRISB4=1;

TRISC=0;

PORTC=0;

ANSEL=0;

ANSELH=0;

while(1)

{

if(bot) {led=1;}

else {led=0;}

}

}

Page 12: TL.fm Microcontroladores

CURSO DE TÉCNICO DE ELECTRÓNICA AUTOMAÇÃO E COMANDO

TRABALHOS LABORATORIAIS - Microcontroladores

________________________________________________________________________________________________________________

Trabalhos Laboratoriais – Microcontroladores N3 Página 12

Exercício 3

#include<htc.h>

__CONFIG ( MCLRE_OFF & CP_OFF & WDTE_OFF & FOSC_INTRCIO);

#define _XTAL_FREQ 4000000

void main()

{

TRISC=0;

PORTC=0;

ANSEL=0;

while(1)

{

RC0=1;

__delay_ms (1000);

RC0=0;

__delay_ms (1000);

}

}