Você está na página 1de 9

Relatório de atividade

Criação de um sistema de acesso controlado por senha com


microcontrolador 8051

Curso: Engenharia Elétrica, modalidade Eletrônica

Disciplina: Microprocessadores

Professor: Formigoni

Alunos:

Fábio Paiva Meni – B6196C-4 – EE7Q

Isaías José Amaral Soares – T39967-0 – EE7P

Marco Antonio Munhoz – B701AC-2 – EE7Q

Wuysmy Mário Pereira da Silva – B689FD-7 – EE7Q


Índice
OBJETIVOS....................................................................................................1

MATERIAL UTILIZADO....................................................................................1

RESUMO TEÓRICO.........................................................................................1

DESENVOLVIMENTO......................................................................................2

CONCLUSÃO..................................................................................................6

BIBLIOGRAFIA...............................................................................................6
1

OBJETIVOS

O objetivo do trabalho foi elaborar um sistema de acesso controlado por senha,


utilizando o microcontrolador 8051, um teclado, um display e um led, em ambiente
simulado, segundo as especificações fornecidas pelo professor.

Este relatório tem como finalidade, apresentar o desenvolvimento e o resultado


do exercício proposto, documentando informações que serão entregues ao docente
como trabalho para avaliação e composição de nota.

Este relatório segue norma de Documentação de Relatório Técnico-Científico


ABNT NBR 10719.

MATERIAL UTILIZADO
Neste experimento, foi utilizado um simulador MCU 8051 para simular a lógica
e o circuito a ser utilizado. No simulador, foram utilizados:

 01 microcontrolador 8051

 01 teclado alfanumérico

 01 display de 7 segmentos de catodo comum

 01 barra de leds verdes

RESUMO TEÓRICO
O uso de microcontroladores está difundido nas mais diversas áreas da
atividade humana. O sistema proposto consiste em um sistema de controle de acesso,
mediante a digitação de uma senha numérica no teclado. Tais sistemas são utilizados a
fim de melhorar a segurança no acesso a determinados cômodos ou áreas de uma
residência ou prédio comercial, podendo custar centenas de reais.

As especificações fornecidas pelo professor consistem em:

 O sistema deve utilizar uma senha numérica de quatro dígitos para liberar o
acesso, que será sinalizado como o acendimento de um led;

 O sistema deve permitir a gravação de uma nova senha, diferente da senha


padrão, do seguinte modo: a tecla “A” deve servir como indicador da gravação
dessa nova senha, o sistema então recebe os quatro dígitos, e ao final, a tecla
“#” deve ser utilizada para gravar a nova senha;

 Se forem digitadas 3 senhas incorretamente, o sistema deve travar;


2

 O sistema deve ter um led de erro, a fim de indicar o erro de digitação de


senha;

 O algoritmo deve ser escrito em assembly.

Estes são os requisitos funcionais para o sistema a ser desenvolvido e, embora


as funcionalidades possam variar ligeiramente, estas devem ser incluídas no trabalho.

DESENVOLVIMENTO
Além das funcionalidades apresentadas pelo professor, nossa equipe resolveu
incluir algumas extras, para tornar o sistema mais coerente:

 Uma tecla de correção de senha, que permite limpar as teclas digitadas


incorretamente. Para essa finalidade, utilizamos a tecla “C”, que limpa o buffer
do teclado.

 Exibição de um “o” no display quando a porta é aberta (juntamente com a


ativação de um led verde, que representa a porta);

 Exibição da letra “E” quando ocorre erro de digitação de senha;

 Exibição intermitente da letra “E” e o piscar de um led, indicando travamento


do sistema, com suspensão da leitura do teclado;

 O sistema reinicia a contagem de erros quando a senha é mudada, ou quando é


digitada uma senha corretamente;

 Independentemente de quanto tempo uma tecla permaneça acionada, o


sistema só contabiliza seu acionamento uma vez, e só irá contabilizar outro
acionamento quando a tecla for liberada ou quando uma tecla diferente for
acionada;

 Quando o sistema estiver aguardando a digitação de algum caractere da senha,


o display se apresenta limpo, apenas com o ponto decimal acionado;

 Dois leds adicionais de depuração foram adicionados: um para indicar que uma
tecla está pressionada, e outro para indicar que a senha foi gravada com
sucesso, após a tecla “#” ter sido pressionada.

 Se o usuário digita “#” logo após ter digitado “A”, essa digitação é ignorada,
somente sendo reconhecida após o usuário digitar, obrigatoriamente, os novos
4 dígitos da nova senha;

As funcionalidades incluídas tem duas finalidades principais: oferecer uma


indicação visual das atividades do sistema ao usuário e aprimorar o sistema dentro dos
padrões esperados para uma fechadura de segurança.
3

O algoritmo de operação foi totalmente desenvolvido em assembly para o 8051


e progressivamente depurado no simulador indicado pelo professor. As diversas rotinas
foram desenvolvidas com foco em funcionalidades que, progressivamente se tornavam
disponíveis e eram depuradas, até a conclusão e testes finais do sistema.

Para simulação, o timer foi ajustado em 112us, que era o suficiente para ver as
mudanças com o atraso imposto pela IDE. Desse modo, o programa foi totalmente
depurado no simulador. Após a simulação, estudamos como gravar o programa no
microcontrolador, via USBasp.

Não conseguimos gravar o programa no 8051 usando a IDE MCU 8051, então,
gravamos com o utilitário avrdude. Percebemos que o programa não se comportou
como na simulação, pois na simulação, o clock é atrasado para permitir a visualização
na IDE, e no hardware real, as mudanças eram tão rápidas que não eram perceptíveis
ao olho humano. Desse modo, fizemos mais ajustes no programa, de modo a aumentar
os tempos das nossas rotinas de timer e criando uma rotina adicional (que utilizamos
para debouncing do teclado), respectivamente de 0,52s (timer principal) e 65,53ms
(debouncing).

Um detalhe importante foi que tivemos de desenvolver os timers sem o uso de


registradores, pois, como todos estavam em uso, se os usássemos, alteraríamos o
programa, gerando comportamentos inesperados. Optamos por não utilizar
registradores de outros bancos (os do Banco 0 de memória estavam sendo utilizados
como buffer de teclado e diversas flags, os do banco 1, para armazenar a senha
correta). Desse modo, utilizamos os acumuladores A e B do 8051 para criar as rotinas
de tempo.

Também ajustamos as portas, pois, na placa de desenvolvimento, as portas


conectadas aos leds e ao display eram diferentes das portas que inicialmente havíamos
atribuído para controle do hardware virtual na simulação. Após ajustarmos as portas e
os timers, o programa foi carregado novamente com o comando avrdude, que havia
sido previamente instalado no Linux (Debian). A gravação foi realizada utilizando-se o
terminal bash, com o comando a seguir:
4

#> avrdude -c usbasp -p AT89S52 -B 250 -e -U flash:w:file.hex

Também existe versão do avrdude para windows, porém o desenvolvimento


ocorreu em Linux, e foi necessário configurar previamente o avrdude no Linux, para
gravar o AT89S52, utilizando a referência [5]. O programa está amplamente
comentado, e um resumo é apresentado abaixo:

Rotina Le_tec (lê teclado):


• Lê a tecla que foi acionada;
• Invoca os procedimentos Liga_”tecla”.
Rotinas Liga_”tecla” (Liga_1, Liga_2, … ,Liga_A):
• Ativa o display com o caractere pressionado;
• Efetua a ação da tecla: se a tecla for válida, ele invoca le_senha, se não, retorna à
leitura do teclado.
Rotina Le_senha:
• Verifica se a tecla é “A”. Se for, ele limpa o buffer (R7=0), ativa o modo de gravação de
senha (RS=1) e invoca Le_tec;
• Se não for “A”, verifica se á a tecla “#”. Se for, e estiver no modo de gravação de senha,
grava a senha armazenada no buffer, zera R7 e o contador de erros da senha (R6);
• Caso contrário, invoca Le_tec;
• Se for uma tecla de “0” a “9”, lê e armazena de R0 a R3. Se estiver no último caractere
(R3), ele invoca a comparação de senha, caso contrário, salva o dígito no registrador
correspondente e continua a leitura.
Rotina Compara_senha:
• Verifica se a senha está correta. Se estiver, abre a porta e dá indicações visuais e invoca
grava_senha;
• Se não estiver, invoca Erro_cmp.
Rotina Erro_cmp:
• Rotina de erro de comparação. Dá um feedback visual (display,led);
• Se R6 < 3, continua a leitura;
• Caso contrário, trava o sistema.
Rotina Grava_senha:
• copia o buffer para as posições de memória da senha;
• limpa as flags e retorna à leitura.
Rotina Tempo:
• Consome tempo de processamento (0,524 s).
Rotina Tempo2:
• Consome tempo de processamento (65.536 us).
5

A seguir, apresentamos algumas figuras do sistema implementado em


hardware, com funcionamento idêntico ao observado na simulação (Figuras 1, 2 e 3).

Figura 1: O sistema aguardando a senha (somente ponto decimal aceso).

Figura 2: Digitação da senha no sistema.

(a) (b)
Figura 3: a) abertura do sistema, b) erro na digitação da senha.
6

CONCLUSÃO
A simulação na IDE MCU 8051 se mostrou bastante útil para o desenvolvimento
do programa em assembly. O sistema foi construído progressivamente, abordando-se
as funcionalidades individualmente até a finalização de todas elas. A implementação
em hardware exigiu algumas modificações, como a mudança de portas e dos tempos
dos timers, bem como o aprendizado de gravação via USBasp no ambiente Linux, que
foi o ambiente de desenvolvimento adotado.

O sistema funcionou adequadamente tanto na simulação quanto em hardware,


ressaltando-se que, para uma execução adequada, foram desenvolvidas duas versões
do software: uma para ambiente simulado, com tempos reduzidos, para uma
adequada execução na MCU 8051 IDE, e outra versão com tempos e portas ajustadas,
para execução em hardware. Durante a fase de desenvolvimento e testes, foram
corrigidos diversos erros menores, sendo que no final, o sistema apresentou todas as
suas funcionalidades operando corretamente.

A implementação foi muito produtiva, e consideramos que os objetivos da


aprendizagem foram plenamente atingidos, pois levou ao aprofundamento do
aprendizado teórico e a um maior contato com a linguagem assembly e o
microcontrolador 8051.

BIBLIOGRAFIA

1. Delay using 8051 timer. Circuits Today. URL: http://www.circuitstoday.com/delay-

using-8051-timer. Acesso em 27/05/2016.

2. Programming timers on 8051. University of Portsmouth - Department of Electronic

and Computer Engineering. URL: http://www.8051projects.net/files/public/


1252055169_5507_FT25871_l2_timers_and_counters.pdf. Acesso em 27/05/2016.

3. Microcontroladores – família MCS-8051. Wilson Ruiz. URL: http://


aragao.spo.ifsp.edu.br/files/apostilas/microcontroladores.pdf. Acesso em
27/05/2016.
7

4. 4x4 Matrix Keypad Interfacing with 8051 Microcontroller. Circuit Digest. URL:

http://circuitdigest.com/microcontroller-projects/keypad-interfacing-with-8051-
microcontroller. Acesso em 27/05/2016.

5. Writing to a AT89S52 through a USBasp. Angrysurgeon – AVRfreaks. URL:


http://www.avrfreaks.net/forum/writing-at89s52-through-usbasp. Acesso em
27/05/2016.

6. USB 8051 (89 series) & AVR Microcontroller Programmer. Embedded Engineering.

URL: http://www.circuitvalley.com/2011/06/usb-8051-avr-microcontroller-
programmer.html. Acesso em 27/05/2016.

7. USBasp - USB programmer for Atmel AVR controllers. Thomas Fischl. URL:
http://www.fischl.de/usbasp/. Acesso em 27/05/2016.

8. AVR Tutorial: starting out with avrdude. Lady Ada. URL: http://
www.ladyada.net/learn/avr/avrdude.html. Acesso em 27/05/2016.

9. AVRDUDE: Using the programmer with avrdude. Lady Ada. URL: https://
learn.adafruit.com/usbtinyisp/avrdude. Acesso em 27/05/2016.

Você também pode gostar