Upload
alfredo
View
41
Download
1
Embed Size (px)
DESCRIPTION
Microcontroladores
Citation preview
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
aç
ão
.
Pre
pa
rad
o d
e a
co
rdo
co
m o
re
fere
nc
ial d
e f
orm
aç
ã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
aç
ão
Ro
bó
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
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.
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
aç
ão
.
Pre
pa
rad
o d
e a
co
rdo
co
m o
re
fere
nc
ial d
e f
orm
aç
ã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
aç
ão
Ro
bó
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;
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.
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
aç
ão
.
Pre
pa
rad
o d
e a
co
rdo
co
m o
re
fere
nc
ial d
e f
orm
aç
ã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
aç
ão
Ro
bó
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
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.
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
aç
ão
.
Pre
pa
rad
o d
e a
co
rdo
co
m o
re
fere
nc
ial d
e f
orm
aç
ã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
aç
ão
Ro
bó
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.
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.
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
aç
ão
.
Pre
pa
rad
o d
e a
co
rdo
co
m o
re
fere
nc
ial d
e f
orm
aç
ã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
aç
ão
Ro
bó
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.
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
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
aç
ão
.
Pre
pa
rad
o d
e a
co
rdo
co
m o
re
fere
nc
ial d
e f
orm
aç
ã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
aç
ão
Ro
bó
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;}
}
}
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);
}
}