CONTROLE DE ACESSO Á AMBIENTES BASEADO EM I … · 2015-06-18 · O sistema de controle de acesso...
Transcript of CONTROLE DE ACESSO Á AMBIENTES BASEADO EM I … · 2015-06-18 · O sistema de controle de acesso...
UnicenP – Centro Universitário Positivo
Núcleo de Ciências Exatas e Tecnológicas
Curso de Engenharia da Computação
PROJETO
CONTROLE DE ACESSO Á AMBIENTES BASEADO EM
I-BUTTON
Autor: Fernando Bomfim Boszczowski
Prof. Orientador: Valfredo Pilla Jr.
Curitiba
2002
II
SUMÁRIO
LISTA DE FIGURAS ....................................................................................................................................................IV
LISTA DE TABELAS .................................................................................................................................................... V
LISTA DE ABREVIATURAS .....................................................................................................................................VI
RESUMO ........................................................................................................................................................................VII
ABSTRACT ................................................................................................................................................................... VIII
1 INTRODUÇÃO.............................................................................................................................................................1
2 ESPECIFICAÇÃO.......................................................................................................................................................3
2.1 DESCRIÇÃO.......................................................................................................................................................... 3 2.2 ESTUDO TEÓRICO.............................................................................................................................................. 6
2.2.1 I-Button ...........................................................................................................................................................6 2.2.2 Características dos I-Buttons......................................................................................................................7 2.2.3 Protocolo 1-Wire...........................................................................................................................................8
2.3 ESPECIFICAÇÂO DO HARDWARE ............................................................................................................... 10 2.3.1 O 8031...........................................................................................................................................................12 2.3.2 Placa com o microcontrolador 8031 .......................................................................................................12 2.3.3 Teclado..........................................................................................................................................................12
2.4 ESPECIFICAÇÃO DO SOFTWARE............................................................................................................................. 13 2.4.1 Interface com o usuário..............................................................................................................................14
2.5 ESPECIFICAÇÃO DA VALIDAÇÃO DO PROJETO................................................................................. 14 2.6 CUSTOS................................................................................................................................................................... 16
3 PROJETO.....................................................................................................................................................................17
3.1 PROJETO HARDWARE ............................................................................................................................................ 17 3.1.1 I-Button .........................................................................................................................................................17 3.1.2 Teclado..........................................................................................................................................................17 3.1.3 Acionamento do relé...................................................................................................................................18 3.1.4 Interface com o usuário..............................................................................................................................18
3.2 PROJETO SOFTWARE............................................................................................................................................... 19 3.2.1 Leitura do i-button......................................................................................................................................20 3.2.2 Leitura do Teclado......................................................................................................................................22 3.2.3 Acionamento do relé...................................................................................................................................24 3.2.4 Interface com o usuário..............................................................................................................................24
4 RESULTADOS.............................................................................................................................................................25
5 CONCLUSÃO ..............................................................................................................................................................27
6 REFERÊNCIAS ..........................................................................................................................................................29
III
ANEXO 1 PLACA COM O MICROCONTROLADOR 8031 ..........................................................................30
ANEXO 2 COMUNICAÇÃO COM O COMPUTADOR....................................................................................31
ANEXO 3 RECEPTÁCULO DE LEITURA DO I-BUTTON ...........................................................................32
ANEXO 4 INTERFACE COM O TECLADO.......................................................................................................33
ANEXO 5 INTERFACE COM O LCD...................................................................................................................34
ANEXO 6 INTERFACE COM O RELÉ................................................................................................................35
ANEXO 7 COMPONENTES UTILIZADOS.........................................................................................................36
ANEXO 8 CÓDIGO FONTE .....................................................................................................................................38
IV
LISTA DE FIGURAS
FIGURA 1 - FLUXOGRAMA DO SOFTWARE......................................................................................................................... 4 FIGURA 2 - FLUXOGRAMA DO SOFTWARE C/MÓDULO EXTRA........................................................................................ 5 FIGURA 3 - I-BUTTON........................................................................................................................................................... 6 FIGURA 4 – DIAGRAMA INTERNO DO I-BUTTON.............................................................................................................. 7 FIGURA 5 – PULSO DE RESET E PRESENÇA....................................................................................................................... 8 FIGURA 6 – TRANSFERÊNCIA DE DADOS ATRAVÉS DE JANELA DE TEMPO.................................................................. 9 FIGURA 7 - DIAGRAMA DE BLOCO DE HARDWARE........................................................................................................ 10 FIGURA 8 - TECLADO NUMÉRICO..................................................................................................................................... 13 FIGURA 9 - FLUXOGRAMA DAS FASES DO SISTEMA....................................................................................................... 19 FIGURA 10 - FLUXOGRAMA DA LEITURA DO I-BUTTON................................................................................................. 21 FIGURA 11 - FLUXOGRAMA DA LEITURA DO TECLADO............................................................................................... 23 FIGURA 12 - FLUXOGRAMA DAS MENSAGENS EXIBIDAS PELO LCD .......................................................................... 24
V
LISTA DE TABELAS
TABELA 1 - PRINCIPAIS COMPONENTES ......................................................................................................................... 11 TABELA 2 - TABELA DE CUSTOS...................................................................................................................................... 16 TABELA 3 - LIGAÇÕES DO TECLADO COM O KIT 8031 ................................................................................................. 17 TABELA 4 - PINOS ENVOLVIDOS POR TECLA.................................................................................................................. 22 TABELA 5 - ESTADO DA PORTA PARA O ACIONAMENTO DA RELÉ............................................................................... 24
VI
LISTA DE ABREVIATURAS
CPU – Central Processing Unit
CRC – Cyclic Redundancy Check
RAM – Random Acess Memory
ROM – Read Only Memory
TTL – Transistor-Transistor Lógic
LCD – Liquid Crystal Display
VII
RESUMO
A dificuldade em se controlar o acesso a ambientes está presente em nosso meio,
desde o controle de uma simples porta de uma casa até um laboratório contendo materiais
ofensivos ao contato humano. O sistema de controle de acesso deve ser funcional e além de
tudo seguro, dificultando ao máximo qualquer tipo acesso indevido.
Neste trabalho foi desenvolvido um sistema capaz de controlar o acesso de pessoas
em ambientes restritos. Sua aplicação pode ser feita para residenciais, comércios, cofres e
laboratórios, com um número de acessos ilimitados, pois é um sistema rápido e com um
identificador de baixo custo.
O sistema é microprocessado com base em um identificador pessoal chamado de i-
button, que é uma memória de toque com aparência muito semelhante a uma pilha de
relógio. A liberação é feita através de um número de série único contido em cada i-button e
uma contra-senha. O processamento dos sinais provenientes do i-button e do teclado
numérico são feitos através do microcontrolador 8031.
Palavras-chave: i-button, sistema microprocessado, microprocessador, sistema de
segurança
VIII
ABSTRACT
The difficulty in control place´s entrance are present in our way, since the control
of the access in entrance door of a house until the control of the access of dangerous
material laboratory. In all cases, the access system control must be functional and beyond
all insurance, making the entrance difficult to the maximum.
A system capable to control the people’s access in restricted areas was developed in
this work. Its application can be made in places as residential, commerce, strongbox and
laboratories, with a number of limitless accesses, in the system is fast and low cost
identification.
The system is microprocessed based on a personal identification called i-button.
The i-button is a memory of touch very similar with a clock´s stack. The release is made
through an only array number contained in each i-button and a counter-password. The
processing of the signals proceeding from i-button and the numerical keyboard is made
through microcontroller 8031.
Keywords : i-button, microprocessed system, microcontroller 8031, accused, security
system.
1
1 INTRODUÇÃO
O i-button é um dispositivo portátil, de baixo custo e pequena dimensão com
capacidade de comunicação com dispositivos receptores. Os diversos i-button possuem
armazenados internamente códigos únicos que permitem a identificação inequívoca de seu
portador / proprietário. Assim, estes dispositivos podem ser utilizados nos mais diversos
sistemas de acesso, tais como fechaduras eletrônicas, ativação de chave de criptografia, e
outros. Alguns modelos mais sofisticados são capazes de portar vários quilobytes de
informação ou mesmo o resultado de horas de monitoração de temperaturas, podendo ser
aplicados no armazenamento de informações pessoais ou profissionais do usuário ou no
controle de ambientes em que a temperatura é variável crítica, como os encontrados no
transporte e armazenamento de alimentos perecíveis.
O objetivo deste trabalho é desenvolver um dispositivo stand-alone baseado no
microcontrolador 8051/31 capaz de ativar fechaduras elétricas para o controle de acesso de
ambientes, desde uma simples casa, um setor de uma fábrica, até um ambiente altamente
restrito como de um laboratório nuclear. Um usuário poderá acessar um ambiente
controlado por este equipamento via apresentação de um i-button e de uma contra-senha
(inserida via teclado), ambos de uso pessoal.
Para o controle de acesso são normalmente utilizados cartões com tarja magnética,
cartões com código de barras e SmartCards, mas estes levam uma grande desvantagem em
relação ao i-button. A tecnologia empregada no i-button tem a vantagem de ser um produto
pequeno, fácil de operar, operação de leitura rápida e sem dúvida a maior delas que é a
durabilidade que é maior que 10 anos sem exigir nenhum cuidado especial, o que não
ocorre com os cartões magnéticos que não podem ficar perto de nenhum campo magnético,
nem o SmartCard que se deve ter um cuidado especial na região aonde se encontra o chip.
Seu desenvolvimento é ideal, pois é um sistema ultra-seguro e praticamente
inviolável. Além do mais é muito prático, pois não é necessário nenhum funcionário para
controlá- lo, sua manutenção consiste em apenas atualizar a lista de usuários, que esta
presente na memória ROM do kit 8031, quando tiver atualizações.
3
2 ESPECIFICAÇÃO
Nesta etapa será apresentado a especificação do projeto de controle de acesso
baseado em i-button.
2.1 DESCRIÇÃO
O projeto é um sistema de controle de acesso para ambientes baseado em um i-
button e uma contra-senha, ambos de uso pessoal. O projeto basicamente consiste em
leituras e processamentos de sinais provenientes tanto do i-button, teclado e do
microcomputador quando existe um servidor de senhas.
O sistema é composto por uma placa microprocessada, um identificador pessoal e
um teclado numérico. A placa contêm um microcontrolador 8031 capaz de executar todas
as funções do processamento referentes a leitura do i-button e do teclado. Tanto o
identificador pessoal, i-button, quanto o teclado fazem a interface do usuário com o
sistema microprocessado.
Inicialmente o usuário coloca o i-button em seu leitor enviando para o Kit 8031 o
sinal lido do i-button que é constituído por 8 bits do código do produto, mais 48 bits de um
número serial único e 8 bits para a verificação de erro (CRC- Cyclic Redundancy Check).
Após a aquisição do sinal a placa do microcontrolador 8031 fará uma busca na sua
memória ROM externa para verificar a existência do usuário, liberando assim a entrada no
teclado da cont ra-senha. A contra senha é um número qualquer de 4 bits previamente
cadastrado, aonde cada portador de um i-button terá uma. Caso o usuário tenha digitado
sua contra senha corretamente será liberado o seu acesso ao ambiente, como mostrado na
figura a seguir.
4
Figura 1 - Fluxograma do Software
Com o sistema conectado a um servidor de senhas(módulo extra) o seu
funcionamento será da mesma forma como citado acima, caso não seja encontrado o
número serial na memória ROM do Kit 8031, a busca será feita em um servidor local
conectado com o Kit 8031 via RS232 com uma velocidade de 9600Kbps, como mostra a
Figura 2.
5
Figura 2 - Fluxograma do Software c/módulo extra
O projeto é composto pelos módulos:
1. Módulo de aquisição do sinal do I-button:
Neste módulo, através do Kit 8051 será feita a comunicação entre o
microcontrolador e o i-button, usando a porta serial, para executar a leitura
do i-button.
2. Módulo de software de processamento:
Desenvolver um software usando a linguagem assembly para que o Kit 8051
consiga processar o sinal proveniente do i-button. O processamento se dará
com a verificação de erro (CRC - Cyclic Redundancy Check) e uma busca
na lista de usuários presente na memória ROM.
3. Módulo da interface do teclado:
Neste módulo será implementada a comunicação entre o teclado e o Kit
8051, para que o usuário possa digitar sua contra-senha, após ter efetuado a
leitura do i-button.
4. Módulo de software do teclado:
6
O objetivo deste modulo é processar o sinal digitado através do teclado,
observando se ele confere com a contra-senha do i-button que se encontra
na memória ROM.
5. Módulo de acionamento da fechadura elétrica:
Após os módulos anteriores estiverem prontos será adicionada uma
fechadura elétrica ao sistema, que será ativada através de um relé, com o
objetivo de criar uma aplicação stand-alone, capaz de controlar o acesso de
pessoas a entrada de ambientes.
2.2 ESTUDO TEÓRICO
2.2.1 I -Button
É um chip encapsulado em uma caixa de aço inoxidável fabricado pela Dallas
Semiconductor, com uma vida útil maior que 10 anos, figura 3. As dimensões do i-button
são de 17,35mm de diâmetro e 5,89mm de altura. O encapsulamento do i-button é dividido
em duas partes totalmente isoladas, a tampa frontal e o restante da caixa. A parte frontal é
onde se encontra a linha de dados, é o restante do encapsulamento é a parte que deve ser
ligada ao terra para a comunicação. Sua necessidade de tensão é a mínima possível, apenas
2,8V que o i-button já interpreta como nível lógico alto. A tensão que é necessária para a
comunicação e o correto funcionamento do i-button é proveniente da linha de dados [02] e
é chamada tensão parasita.
Figura 3 - I-Button
7
Figura 4 – Diagrama interno do i-button
O i-button é uma memória de toque fabricado com tecnologia CMOS. O modelo
utilizado para este projeto foi o 1990A, ele é composto por uma memória ROM contendo
um número de série único. O seu consumo de energia é de até 5V, o que o torna
compatível com a família lógica TTL[02].
2.2.2 Características dos I-Buttons
As informações contidas na memória do i-button são de 64 bits, nos quais os 8 bits
mais significativos são códigos do i-button, os 48 bits seguintes é um número serial único e
os 8 bits menos significativos são bits para o teste de erro CRC (Cyclic Redundancy Check)
[04].
O CRC é calculado pelo resto da divisão em módulo da seqüência de dados por um
polinômio gerador que no caso de 8 bits é X8 + X5 + X4 + 1, gerando um binômio igual a
10011000 [02].
O tempo de leitura de um i-button é menor que 5ms e sua faixa de temperatura de é
de -40ºC a +85ºC [04].
O i-button comunica-se utilizando as regras do protocolo 1-Wire através de portas
físicas do microcontrolador 8031.
O nível de tensão deve ficar entre 2.8V a 5V. Este valor de 2.8V é o mínimo para
recarregar o capacitor interno responsável pelo suprimento da tensão do i-button quando a
8
linha de tensão esta em 1. Todas as tensões maiores que 2.2V são considerado como nível
lógico 1, tensões menores de 0.8V são consideradas nível lógico 0 [03].
2.2.3 Protocolo 1-Wire
O protocolo de comunicação do i-button é bidirecional, é chamado de 1-wire. A
transmissão via serial é half-duplex, não pode transmitir e receber ao mesmo tempo. Sua
transmissão é feita através de janelas de tempos, em todos os casos o i-button é o escravo
e o microcontrolador o mestre, este é o responsável pela inicialização da transferência de
dados ou comandos [02].
Os comandos ou dados são enviados bit a bit formando os bytes, iniciando sempre
com o bit menos significativo. A sincronização entre o mestre e o escravo é baseada em
uma rampa; quando o i-button é conectado no receptáculo de leitura o microprocessador
coloca a linha de dados em nível baixo durante 480µs fazendo um reset logo a linha de
dados volta a nível alto e é colocada em nível baixo pelo i-button. Esta segunda forma de
onda é chamada de pulso de presença e tem uma duração de 60µs, após decorrido este
tempo a linha de dados volta ao nível lógico alto, estando apto a iniciar a transmissão de
dados. A sincronização é sempre feita por um pulso de reset seguido por um de presença
[02].
Figura 5 – Pulso de Reset e Presença
A leitura é definida de dois modos, leitura de 1 ou leitura de 0 sendo realizadas
diversas vezes geram os bytes. Para iniciar uma leitura de um bit do i-button o
microcontrolador 8031, mestre, deve sempre mudar o nível da linha de dados, passando do
nível lógico alto para o nível lógico baixo. Assim o i-button identifica o comando de
leitura.
9
Como por exemplo o mestre, microcontrolador 8031, coloca a linha de dados em 1
e em seguida em 0 por um período máximo de 15µs indicando que está pronto para receber
um bit, o i-button manda um bit 1 a linha de dado é colocada em 1 imediatamente, fazendo
com que o mestre leia 1. Após um período chamado de tempo de recuperação, o mestre
coloca novamente a linha de dados em nível baixo para receber outro bit, o i-button manda
um bit 0 a linha de dados permanece em 0 por um período de no mínimo 60µs para que
seja lido 0 e novamente vai para o nível alto para executar nova leitura.
O intervalo de tempo que a janela permanece ativa, ou seja em nível baixo, para
efetuar a leitura pode se estender por mais de 60µs, mas não pode ser superior a 120µs pois
pode ser considerado um pulso de reset em casos extremos, mas normalmente ocorre
somente com 480µs [03]. O tempo mínimo para o envio de um novo bit após a janela
fechada, ou seja, após a linha de dados passar de nível baixo para alto é de 1µs para um
novo comando [02].
Figura 6 – Transferência de Dados através de janela de tempo
A transmissão é feita com uma taxa de 9600 bits/s, mas pode ser aumentada para
19200, 57600 e 115200 bits/s por controle de software[02].
10
2.3 ESPECIFICAÇÂO DO HARDWARE
O hardware deverá exercer as funções de leitura do i-button, leitura do teclado,
acionamento do LCD para a interface com o usuário, e acionamento de um relé que ativará
a fechadura elétrica.
A comunicação via RS232, é feita utilizando a serial da placa com o
microprocessador 8031 e uma porta serial do microcomputador. A escolha da serial se
deve por aceitar uma distância muito grande entre o Kit 8031 e o servidor.
Ao Kit 8031 será acoplado em suas portas o leitor de i-button, um teclado numérico
com 12 teclas e o LCD de comunicação com o usuário, conforme mostra a figura 7.
Figura 7 - Diagrama de Bloco de Hardware
11
I-Button
O sinal proveniente do i-button é composto por 64 bits. Os 8
bits iniciais caracterizam o código do produto, os 48 bits
subseqüentes compõem um número serial único capaz de
identificar um usuário. Os 8 bits restantes formam o código
do CRC( Cyclic Redundancy Check), que é usado para a
conferência da transmissão. A transmissão é feita de modo
serial, com uma taxa de transmissão variável. O receptáculo de
leitura do i-button será conectado ao microprocessador através
da porta P1.0. O modelo utilizado será DS1990A-F5
Microprocessador 8031
O microprocessador utilizado é da família Intel muito
semelhante ao 8051, diferindo em não ter uma memória ROM
interna e algumas portas de entrada e saída serem distintas. A
comunicação com o meio externo será feita pelos 8 bits da
porta P1 e 2 bits da porta P3. O modelo utilizado é o 8031A
fabricado pela Siemens.
Memória ROM
A memória utilizada é do tipo EPROM tem a capacidade de
256Kbits, 32K linhas de 8 bits cada, nela estará contida o
programa responsável pelo microprocessador e a lista de
usuários.
Memória RAM
A memória RAM também tem sua capacidade máxima de
256Kbits divididos em 32K linhas de 8bits cada e terá a
função de armazenar dados durante o processamento.
Teclado
O teclado utilizado é numérico com 12 teclas. Para o seu
funcionamento são necessários 9 linhas de informações, mas
só utilizaremos 7 pois não sendo utilizado a tecla ´*´. A
ligação com o microprocessador se dará através das portas
P1.1 à P1.7.
LCD
O LCD utilizado é do tipo caracter, com a capacidade de 16
colunas por 2 linhas. O seu funcionamento é feito através de 5
bits de controle e 8 bits de dados. A ligação com o
microcontrolador será feita com um mapeamento da memória
RAM.
Tabela 1 - Principais Componentes
12
2.3.1 O 8031
Um microprocessador é um elemento eletrônico, desenvolvido para executar tarefas
específicas, com linguagem de comando específica chamada assembly. Ele se utiliza de
uma memória de programa (ROM) para ler as instruções que deve executar e se utiliza uma
memória de dados (RAM) para armazenar temporariamente informações de uso próprio das
instruções, enquanto essas informações devem ser armazenadas.
A escolha do microcontrolador 8031 se deve por ser um componente altamente
compacto e simples de manusear e por ser familiar ao meio acadêmico.
2.3.2 Placa com o microcontrolador 8031
A placa utilizada com o microprocessador 8031 (Kit 8031) foi desenvolvida para o
3ºAno de Engenharia da computação UnicenP, para a disciplina de microprocessadores.
A placa contém um cristal de 11,0592MHz para a oscilação, uma memória ROM externa
de 256 KBits, uma memória RAM externa de 256 KBits, uma porta serial, um reset e as
portas de entrada e saída P1 com 8 bits e P3 com 6 bits.
O Kit 8031 deverá estar em um ambiente seco e com temperaturas entre -5ºC a
35ºC para um perfeito funcionamento.
2.3.3 Teclado
O teclado é do tipo numérico composto pelas teclas 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *.
Internamente suas ligações são da forma de uma matriz, que quando pressionada uma tecla
há um contato entre uma linha e uma coluna desta matriz. Cada tecla pressionada tem um
contanto distinto em cada vértice da matriz.
13
Figura 8 - Teclado numérico
2.4 ESPECIFICAÇÃO DO SOFTWARE
O software tem uma função muito importante, sendo o responsável pela leitura do i-
button e pela liberação ou não do acesso ao ambiente. Após ser feita a leitura do i-button o
software fará a conferência dos bits lidos através do CRC, em seguida será consultado a
lista de usuários na ROM, receberá a contra-senha digitada no teclado e conferirá na lista
de usuários se a senha está correta de acordo com o serial do i-button, liberando assim o
acesso.
No módulo extra, será desenvolvido a comunicação via RS232 para a consultar a
lista de usuários em um servidor. Após a leitura do i-button ser executada, o Kit 8031
receberá o número serial contido no i-button e buscará na memória ROM, caso não exista
será consultado no servidor remoto. Se a senha for encontrada no servidor, este retornará a
contra-senha para o kit 8031 para que seja conferida após ser digitada pelo usuário. O
servidor será desenvolvido utilizando o compilador Borland C.
O CRC pode ser conferido de duas maneiras, a primeira é realizar a divisão da
mensagem mais CRC pelo polinômio gerador se o resto for 0, a transmissão esta correta. A
segunda maneira é separar a mensagem do CRC recalcular e comparar. O software do
microprocessador fará do segundo modo.
O software para o Kit 8031 será desenvolvido em linguagem assembly e testado em
um simulador do microcontrolador 8031.
14
2.4.1 Interface com o usuário
O usuário tem a sua disposição para a liberação da porta um leitor de i-button e um
teclado numérico. Para uma facilidade de comunicação entre o usuário e o equipamento,
este contará com o auxílio de um display de cristal líquido(LCD). O LCD mostrará passos
a ser seguido pelo usuário e erros que podem ocorrer durante o processo de liberação do
acesso.
1. i-button: 6 bytes com um número de série único por produto.
2. Teclado: 4 digitos numéricos escolhidos entre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 para a
contra-senha.
3. Mensagens do display:
Insira o i-button no leitor
I-button não cadastrado
Insira a senha no teclado
Senha inválida
Porta liberada
No módulo extra, o operador terá a sua disposição um menu com a possibilidade de
adicionar ou remover usuários da lista de pessoas que tem a permissão para o acesso.
2.5 ESPECIFICAÇÃO DA VALIDAÇÃO DO PROJETO
Os testes serão realizados a partir da fase de desenvolvimento. Inicialmente será
feito testes na placa do microprocessador 8031.
1. Teste de leitura e escrita da memória RAM.
O programa desenvolvido irá escrever em todas as posições da memória
RAM, a palavra FFh. Posteriormente irá ler os endereços vendo se a palavra
FFh está escrita em todas as posições..
2. Teste de leitura e escrita da porta P1 e P3.
Para executar o teste de leitura das portas P1 e P3 coloca-se todos os pinos
das portas no nível lógico 1 e executa-se a leitura dos 8 bits da porta P1 e
compara-se com o valor FFh, a mesma coisa é feita para a porta P3. O teste
15
de escrita é feito com o auxilio de leds, em cada porta coloca-se 8 leds e
escreve AAh em cada porta, caso os leds acendam de forma alternada a
escrita na porta está funcionando corretamente.
3. Teste da serial da placa.
O teste da serial consiste em fazer um programa em assembly para enviar
alguns bits e receber outros e é feito com o auxilio de um
microcomputador. O programa para o PC vai ser desenvolvido usando a
linguagem C.
Após ter testado a placa do microprocessador inicia-se os testes dos módulos após
terem sido desenvolvidos. Os testes serão os seguintes:
1. Teste de comunicação entre o i-button e o Kit 8031.
O objetivo aqui é que o Kit 8051 através da porta P1.7 consiga efetuar a
leitura o i-button.
2. Teste da checagem de erro (CRC).
Após a mensagem ser recebida o microprocessador deve separar o CRC e
comparar com o CRC calculado por ele.
3. Teste da busca do serial do i-button na memória ROM.
Neste teste o microcontrolador deve ter a capacidade de encontrar ou não o
número serial lido do i-button.
4. Teste da leitura do teclado numérico.
O teste consiste em fazer a leitura da porta P1.0 à P1.6, identificando os 4
números digitados pelo usuário formado sua contra-senha. Este teste será
realizado com um auxilio de um display de 7-segmentos, ao pressionar uma
tecla o display mostrava a tecla correspondente no display.
5. Teste da busca da contra-senha digitada pelo teclado na memória ROM.
Este teste será semelhante ao da busca do serial, apenas difere que a busca é
executado em um endereço conhecido.
16
6. Teste do acionamento de um relé.
O teste consiste em verificar o funcionamento do relé, e posteriormente
testar a ativação do mesmo através do Kit 8031.
Completando os testes acima citados, inicializará os teste finais de validação. Que
consiste em ligar o sistema a uma fechadura elétrica e executar varias simulações de uso.
2.6 CUSTOS
Os custos levantados dizem respeito apenas a parte de desenvolvimento do projeto
de controle de acesso através do i-button, não contabilizando equipamentos de
laboratórios.
Tabela 2 - Tabela de Custos
Nome Descrição Custos
Componentes eletrônicos diversos
Placa Impressa, microprocessador, memória RAM, memória ROM, capacitores, resistores, conectores, LCD, etc
R$ 100,00
I-Button 2 i-buttons, 2 chaveiros R$ 30,00
Horas de Trabalho 350h estimada para a conclusão do projeto
R$ 8750,00
Total R$ 8880,00
17
3 PROJETO
3.1 PROJETO HARDWARE
3.1.1 I -Button
O receptáculo de leitura do i-button utiliza 2 fios para a comunicação serial. Um
deles é o terra comum a todo o sistema, e o outro é a linha de dados que será conectado a
porta P1.0 do microcontrolador 8031. Na linha de dados foi utilizado um resistor de pull-
up para garantir 5v no nível lógico alto, ver Anexo 3.
3.1.2 Teclado
São necessários 9 linhas para poder realizar a leitura do teclado numérico (12
teclas). O caracter ‘*’ não será utilizado sendo necessário então apenas 7 linhas. As linhas
estão conectadas em 3 colunas e 4 filas. A detecção da tecla digitada é feita lendo a coluna
e a fila da tecla correspondente.
A conexão com o kit 8031 é feita através dos pinos P1.1 ao P1.7 conforme
mostrado no Anexo 4.
Porta física do microcontrolador Fila/Coluna correspondente do teclado
P1.1 Fila 1 (Pino 1)
P1.2 Coluna 1 (Pino 2)
P1.3 Fila 2 (Pino 3)
P1.4 Coluna 2 (Pino 4)
P1.5 Fila 3 (Pino 5)
P1.6 Coluna 3 (Pino 6)
P1.7 Fila 4 (Pino 7)
Tabela 3 - Ligações do teclado com o KIT 8031
18
3.1.3 Acionamento do relé
Para o acionamento do relé utilizou-se um transistor com a função de uma chave
on-off. Isto se deve porque se a ligação fosse feita diretamente entre o relé e a porta
P3.3(INT0) não teria corrente necessária para o acionamento do relé.
O circuito de polarização utilizado nesta aplicação é o de corrente de base
constante, a fonte de polarização da base é, na realidade, o sinal de entrada que controla o
transistor, cortando-ô(chave aberta) ou saturando-ô(chave fechada). O resistor R8 tem a
função de limitar a corrente no transistor, para não danificá- lo. O diodo em paralelo com a
bobina serve para evitar que o transistor se danifique devido à corrente reversa gerada por
ela no chaveamento do relé. Ver detalhes no Anexo 6.
3.1.4 Interface com o usuário
A ligação entre o kit8031 e o display de cristal líquido é feita mapeando um
endereço da memória externa. Para enviar os dados para o LCD utiliza o barramento de
dados da memória RAM e os bits de endereço A0 e A1 para controle junto com uma lógica
extra, ver Anexo 5
Endereços Mapeados:
8000h Escrita de instruções no LCD
8001h Escrita de dados no LCD
8002h Leitura do Barramento de dados
19
3.2 PROJETO SOFTWARE
Nesta etapa do projeto esta descrito como será o funcionamento do programa
desenvolvido para o microcontrolador 8031.
O fluxograma mostrado abaixo representa os passos do sistema a partir que ele
entra em funcionamento.
Figura 9 - Fluxograma das fases do sistema
20
3.2.1 Leitura do i-button
A leitura do i-button inicia-se pela detecção do mesmo, quando ele se encontra no
receptáculo de leitura. Após a detecção é necessário executar a inicialização do processo de
leitura que é composto por um reset seguido por uma nova verificação de presença do i-
button, este processo pode ser chamado de handshake entre o microcontrolador
8031(mestre) e o i-button(escravo).
A leitura do número serial único contido em cada i-button é feita de forma serial,
são lidos bit a bit até formarem os bytes que são salvos na pilha, esta operação se repete
até serem lido os 64 bits ou 8 bytes.
Após ser feita a leitura inicia o teste de erro da transmissão (CRC), com a
mensagem recebida calcula-se um CRC e compara-se com os 8 bits finais recebidos, caso
os números forem iguais a informação lida do i-button esta correta, caso contrário é
necessário refazer a leitura.
22
3.2.2 Leitura do Teclado
A detecção de uma tecla é feita da seguinte maneira: originalmente todas as filas e
colunas estão em nível lógico 1. Primeiramente coloca-se em nível lógico 0 uma coluna,
após varre todas as filas para ver o seu nível lógico, caso o nível lógico esteja em 0 alguma
tecla foi digitada. A confirmação desta tecla digitada ocorre apenas quando o nível lógico
da fila passa de 0 para 1 evitando assim que quando pressionada uma vez a tecla mais de
um digito seja lido. Este loop ocorre um todas as colunas até que 4 digitos sejam digitados.
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 Num
1 0 1 0 0 0 0 1 0 BDh
2 0 1 0 0 1 0 0 0 EDh
3 0 1 1 0 0 0 0 0 F9h
4 0 0 0 1 0 0 1 0 B7h
5 0 0 0 1 1 0 0 0 E7h
6 0 0 1 1 0 0 0 0 F3h
7 0 0 0 0 0 1 1 0 9Fh
8 0 0 0 0 1 1 0 0 CFh
9 0 0 1 0 0 1 0 0 DBh
0 0 0 0 0 1 0 0 1 6Fh
# 0 0 1 0 0 0 0 1 84h
Tabela 4 - Pinos envolvidos por tecla
24
3.2.3 Acionamento do relé
O software irá acionar o relé colocando o nível lógico da porta P3.3 (INT0) em 1.
Com o auxílio do Timer 1 do microcontrolador 8031 o relé permanecerá com sua chave
fechada por um período de aproximadamente 5s, após o qual porta P3.3 retornará ao nível
lógico igual a 0.
Nível Lógico Porta P3.3 Estado do Relé
0 Desativado
1 Ativado
Tabela 5 - Estado da porta para o acionamento da relé
3.2.4 Interface com o usuário
A interface com o usuário pode ser feita em várias etapas do sistema, desde seu
inicio até o fim com o acionamento de relé, como mostra o fluxograma abaixo.
Figura 12 - Fluxograma das mensagens exibidas pelo LCD
25
4 RESULTADOS
O sistema apresentou os resultados esperados, sendo capaz de distinguir um i-
button de outro. Com o desenvolvimento do software para controlar o microcontrolador
8031 o sistema executa a leitura do i-button e do teclado, faz o cálculo e a conferência do
CRC, busca o número de serie do i-button e a contra-senha na memória ROM e comunica-
se com o servidor. Já o software desenvolvido para o servidor executa a comunicação entre
o PC e o microcontrolador 8031 e faz a interface entre o servidor e o banco de dados.
27
5 CONCLUSÃO
O sistema desenvolvido para controle de acesso à ambientes utilizando i-button,
teve seu funcionamento testado e os resultados esperados foram obtidos.
A utilização do identificado pessoal, i-button, é muito interessante. O identificador
é um produto de fácil manuseio, resistente e compatível com a família TTL o que torna seu
funcionamento simples e adaptável a qualquer projeto.
Desenvolvimentos futuros incluem uma interface amigável para o administrador do
sistema registrar novos i-buttons, uma criptografia para que ocorra uma transmissão segura
e um sistema de controle de fluxo para que se tenha certeza de que apenas uma pessoa
entrou quando a porta foi liberada.
29
6 REFERÊNCIAS
[01] Dallas Semiconductor Corp., http://www.ibutton.com (20/03/2002).
[02] Dallas Semiconductor Corporation, iButton Data Books, standard.pdf,
http://www.ibutton.com/ibuttons/standard.pdf (28/03/2002).
[03] Dallas Semiconductor Corporation, iButton Application Notes, app74.pdf,
http://pdfserv.maxim-ic.com/arpdf/AppNotes/app74.pdf(28/03/2002).
[04] Dallas Semiconductors Corporation, Serial Number iButton, DS1990Aserial.pdf,
http://www.ibutton.com/ibuttons/ DS1990Aserial.pdf (05/04/2002).
[06]Dallas Semiconductors Corporation, iButton Probe, DS9092.pdf,
http://www.ibutton.com/ibuttons/ DS9092.pdf (05/04/2002).
[07] NICOLOSI, Denys E. C. Microcontrolador 8051 Detalhado. São Paulo: Érica,
2000.
[08] SILVA JUNIOR, Vidal P. da. Aplicações Práticas do Microcontrolador 8051. São
Paulo: Érica, 1998.
33
ANEXO 4 INTERFACE COM O TECLADO
P1.2
*
7
P1.0
8
P1.1
1
P1.79 P1.6
3
#
2
5
P1.3P1.4
4
0
P1.5
6
8
9
34
ANEXO 5 INTERFACE COM O LCD
VCCU2C
74LS00
9
108
/RD
GND
VCC
R 1RESISTOR
/WR
D3
D1LCD
D6
D4
R2RESISTOR VAR1
3
2 D2
R/W
D0
J2
CON7
1234567GND
RS
EN
RSU2A
74LS00
1
23
D7
EN
VO
U2B
74LS00
4
56
R/WD5
35
ANEXO 6 INTERFACE COM O RELÉ
Vcc5V
R7
1k
R8100
LS1
RELAY_SPDT
35
412
110V
P3.2
Q32N2222
D4
1N4001
36
ANEXO 7 COMPONENTES UTILIZADOS
Circuitos Integrados:
U1 – Microcontrolador 80c31
U2 – Latch 74LS372
U3 – Memória RAM 62256
U4 – Memória EPROM 27C256
U5 – Regulador de tensão LM7805
Resistores:
R1 – 10KΩ
R2, R3, R4, R5 - 4K7Ω
R6, R8 - 100Ω
R7, R9, R10 – 1KΩ
Capacitores:
C1 - 10µF/16V
C2, C3 – 33pF
C4 - 470µF/16V
C5 - 100µF/16V
C6, C7, C8, C9 – 100nF
Diodos:
D1, D2, D3, D4 – 1N4148
Cristal:
Xtal – 11,0592MHz
Transistores:
Q1 – BC327B
Q2 – BC337B
Q3 – 2N2222
Soquetes:
37
Soquete 40 pinos para microcontrolador
Soquete 28 pinos para memória
Conectores
BAT – clip para bateria 9V
DB9 – conector RS232 fêmea para placa
RESET – push buttom, normalmente aberto
POWER ON – chave liga-desliga
PLUG VCC – conector jack para alimentação
Barra de conectores fêmea para barramento de endereços, dados, portas P1 e P3
Display
LCD 16x2
Relé
Rele miniatura modelo A marca Metaltex
Teclado
Teclado numérico (12 teclas)
I-Button
ibutton DS1990A – F5
Chaveiro p/i-button
Chaveiro DS9093A
38
ANEXO 8 CÓDIGO FONTE
ORG 0h ACALL INICIO org 0bh JNC ERRO_SERV RETI org 23h CLR TR0 CLR C MOV R0,sp DEC R0 INC @R0 INC @R0 MOV A,SBUF CLR RI RETI ORG 30h ERRO_SERV: SETB C MOV R0,SP DEC R0 INC @R0 INC @R0 RETI TECLADO: MOV R4,#070H ACALL LCDCOM MOV R4,#001H ACALL LCDCOM MOV R4,#'D' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'g' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'s'
39
ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'h' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#0C0H ACALL LCDCOM MOV B,#4 JMP TECLADO1 TECLA0: MOV P1,#7Fh MOV A, P1 CLR C SUBB A,#6Fh JZ TECLA0 LJMP TECLA01 TECLADO1: MOV P1,#7Fh MOV A, P1 CLR C SUBB A,#6Fh JZ TECLA0 CLR C MOV P1,#DFh MOV A, P1 CLR C SUBB A,#DBh JZ TECLA9 MOV P1,#DFh MOV A, P1 CLR C SUBB A,#CFh JZ TECLA8 MOV P1,#DFh MOV A, P1 CLR C SUBB A,#9Fh JZ TECLA7 MOV P1,#F7h MOV A, P1 CLR C SUBB A, #F3h JZ TECLA6 MOV P1,#F7h MOV A, P1 CLR C
40
SUBB A,#E7h JZ TECLA5 MOV P1,#F7h MOV A, P1 CLR C SUBB A, #B7h JZ TECLA4 MOV P1,#FDh MOV A, P1 CLR C SUBB A,#F9h JZ TECLA3 MOV P1,#FDh MOV A, P1 CLR C SUBB A,#EDh JZ TECLA2 MOV P1,#FDh MOV A, P1 CLR C SUBB A,#BDh JZ TECLA1 LJMP TECLADO1 TECLA9: MOV P1,#DFh MOV A, P1 CLR C SUBB A,#DBh JZ TECLA9 LJMP TECLA91 TECLA8: MOV P1,#DFh MOV A, P1 CLR C SUBB A,#CFh JZ TECLA8 LJMP TECLA81 TECLA7: MOV P1,#DFh MOV A, P1 CLR C SUBB A,#9Fh JZ TECLA7 LJMP TECLA71 TECLA5: MOV P1,#F7h MOV A, P1 CLR C SUBB A,#E7h JZ TECLA5
41
LJMP TECLA51 TECLA6: MOV P1,#F7h MOV A, P1 CLR C SUBB A, #F3h JZ TECLA6 LJMP TECLA61 TECLA4: MOV P1,#F7h MOV A, P1 CLR C SUBB A, #B7h JZ TECLA4 LJMP TECLA41 TECLA3: MOV P1,#FDh MOV A, P1 CLR C SUBB A,#F9h JZ TECLA3 LJMP TECLA31 TECLA1: MOV P1,#FDh MOV A, P1 CLR C SUBB A,#BDh JZ TECLA1 LJMP TECLA11 TECLA2: MOV P1,#FDh MOV A, P1 CLR C SUBB A,#EDh JZ TECLA2 LJMP TECLA21 ABERTA: clr P3.5 MOV R4,#080H ACALL LCDCOM MOV R4,#001H ACALL LCDCOM MOV R4,#'P' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'t' ACALL LCDHR
42
MOV R4,#'a' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'b' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'a' ACALL LCDHR ABERTA2: setb p3.2 JB P3.2,ABERTA2 LJMP RESET ABERTA1: LJMP ABERTA INICIO: MOV TMOD,#21h mov TCON, #50H ; RUN DO TM1 E RUN DO TM0 mov PCON, #00H mov TL1, #FDH ; valor de recarga do Timer1, pra TX 9600bps mov TH1, #FDH SETB TR1 MOV IE,#92h mov SCON, #50H SETB REN ACALL LCDSET ;vai para rotina de inicializacao do display RESET: MOV TH0,#3ch MOV TL0,#00h setb P3.5 MOV R4,#080H ;endereço da 1ª posicao da 1ª linha ACALL LCDCOM MOV R4,#001H ACALL LCDCOM MOV R4,#'I' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'s' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'r'
43
ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'b' ACALL LCDHR MOV R4,#'u' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#0C0H ACALL LCDCOM MOV R4,#'n' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'l' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#'r' ACALL LCDHR JMP RESET1 ABERT: LJMP ABERTA1 RESET1 ;setb P3.2 ;JB P3.2, ABERT
44
MOV R7,#00h MOV R4,#00h MOV SP,#30h MOV A, #4 CLR P1.0 ; Inicia o pulso de reset MOV B, #221 ; Temporizador para 480microsegundos DJNZ B, $ SETB P1.0 ; Finaliza o reset MOV B, #6 ; Tempo de recuperação CLR C ; Limpa o Flag do pulso de presença CONFERE: JB P1.0, LINHA ; Sai se a linha estiver em nível lógico alto DJNZ B, CONFERE ;certifica se a linha de dados esta em nível alto DJNZ ACC, CONFERE SJMP RETORNO LINHA: MOV B, #110 ; Tempo para o pulso de presença PULSO: ORL C, /P1.0 ; Caso ocorra o pulso de presença o Flag retorna em 1 DJNZ B, PULSO RETORNO: JC ENVIA_COMANDO LJMP RESET1 LERINI: MOV B,#8 ; 8 bytes LER: PUSH B MOV A,#0FFh MOV B, #8 ; 8 bits. LEITURA_BIT: RRC A ; Move o bit lido ACALL LE_BIT ; Lê o primeiro bit DJNZ B, LEITURA_BIT ; Chama o próximo bit a ser lido RRC A ; Move o ultimo bit lido POP B PUSH A MOV A,#01h CLR C SUBB A,B POP A JC DO_CRC LER1: DJNZ B, LER CLR C SUBB A,R7 ; Confere o CRC JNZ RESET1 ; CRC errado refaz a leitura JMP BUSCA_SERIAL ; LE_BIT: CLR P1.0 ; Inicia a Leitura NOP
45
NOP NOP NOP MOV P1.0, C NOP NOP NOP NOP NOP NOP MOV C, P1.0 ; Copia o dado lido para Carry PUSH B MOV B, #12H DJNZ B, $ POP B SETB P1.0 ; Termina a leitura do Bit RET DO_CRC: PUSH ACC MOV A, R5 MOV R6, A MOV A, R4 MOV R5, A MOV A, R3 MOV R4, A MOV A,R2 MOV R3, A MOV A, R1 MOV R2, A MOV A, R0 MOV R1, A POP ACC MOV R0, A PUSH ACC PUSH B PUSH ACC MOV B,#8 CRC_LOOP: XRL A,R7 RRC A MOV A,R7 JNC ZERO XRL A,#18H ZERO: RRC A MOV R7,A POP ACC RR A PUSH ACC DJNZ B,CRC_LOOP
46
POP ACC POP B POP ACC CALL LER1 ENVIA_COMANDO: CLR P1.0 NOP NOP NOP NOP NOP NOP NOP SETB P1.0 MOV B, #29 DJNZ B, $ CLR P1.0 NOP NOP NOP NOP NOP NOP NOP SETB P1.0 MOV B, #29 DJNZ B, $ CLR P1.0 MOV B, #28 DJNZ B, $ SETB P1.0 MOV B, #4 DJNZ B, $ CLR P1.0 MOV B, #28 DJNZ B, $ SETB P1.0 MOV B, #4 DJNZ B, $ CLR P1.0 NOP NOP NOP NOP NOP NOP NOP SETB P1.0 MOV B, #29 DJNZ B, $
47
CLR P1.0 NOP NOP NOP NOP NOP NOP NOP SETB P1.0 MOV B, #29 DJNZ B, $ CLR P1.0 MOV B, #28 DJNZ B, $ SETB P1.0 MOV B, #4 DJNZ B, $ CLR P1.0 MOV B, #28 DJNZ B, $ SETB P1.0 MOV B, #4 DJNZ B, $ LJMP LERINI BUSCA_SERIAL: MOV DPTR,#NUM_SERIAL BUSCA_SERIAL1: CLR A CLR C MOVC A,@A+DPTR SUBB A,R0 JNZ ERRO CLR A INC DPTR MOVC A,@A+DPTR SUBB A,R1 JNZ ERRO CLR A INC DPTR MOVC A,@A+DPTR SUBB A,R2 JNZ ERRO CLR A INC DPTR MOVC A,@A+DPTR SUBB A,R3 JNZ ERRO CLR A INC DPTR MOVC A,@A+DPTR
48
SUBB A,R4 JNZ ERRO CLR A INC DPTR MOVC A,@A+DPTR SUBB A,R5 JNZ ERRO INC DPTR mov R7,DPH MOV R5,DPL MOV R6,#02h LJMP TECLADO ERRO: INC DPTR clr c MOV A,DPH subb A,#FFh JnZ BUSCA_SERIAL1 ERRO1: CLR C CLR TI CLR ES MOV SBUF,#'i' JNB TI,$ CLR TI MOV SBUF,R0 JNB TI,$ CLR TI MOV SBUF,R1 JNB TI,$ CLR TI MOV SBUF,R2 JNB TI,$ CLR TI MOV SBUF,R3 JNB TI,$ CLR TI MOV SBUF,R4 JNB TI,$ CLR TI MOV SBUF,R5 JNB TI,$ CLR TI CLR RI CLR C MOV TH0,#3ch MOV TL0,#00h SETB ES SETB TR0 SJMP $
49
JC CONEC SUBB A,#41H CLR TR0 CLR TF0 MOV R7,#ffh MOV R6,#02h JZ DIG_TECLADO MOV R4,#001H ACALL LCDCOM MOV R4,#080H ACALL LCDCOM MOV R4,#'U' ACALL LCDHR MOV R4,#'s' ACALL LCDHR MOV R4,#'u' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'o' ACALL LCDHR mov R4,#0C0h ACALL LCDCOM MOV R4,#'c' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'d' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'s' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'a'
50
ACALL LCDHR MOV R4,#'d' ACALL LCDHR MOV R4,#'o' ACALL LCDHR LJMP TEMPO DIG_TECLADO: LJMP TECLADO CONEC: MOV R4,#001H ACALL LCDCOM MOV R4,#080H ACALL LCDCOM MOV R4,#'F' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'l' ACALL LCDHR MOV R4,#'h' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'o' ACALL LCDHR mov R4,#0C0h ACALL LCDCOM MOV R4,#'S' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'v' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'d' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R0,#cdh LJMP TEMPO TECLA11:
51
mov A,#01h MOV R4,#'*' ACALL LCDHR MOV A,#01h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA21: mov A,#02h MOV R4,#'*' ACALL LCDHR MOV A,#02h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA31: mov A,#03h MOV R4,#'*' ACALL LCDHR MOV A,#03h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA ESTAGIO: LJMP TECLADO1 TECLA41: mov A,#04h MOV R4,#'*' ACALL LCDHR MOV A,#04h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA51: mov A,#5h MOV R4,#'*' ACALL LCDHR MOV A,#05h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA61: mov A,#6h MOV R4,#'*' ACALL LCDHR MOV A,#06h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA71:
52
mov A,#7h MOV R4,#'*' MOV A,#07h ACALL LCDHR CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA81: mov A,#8h MOV R4,#'*' ACALL LCDHR MOV A,#08h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA91: mov A,#9h MOV R4,#'*' ACALL LCDHR MOV A,#09h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA TECLA01: mov A,#0h MOV R4,#'*' ACALL LCDHR MOV A,#00h CALL SALVA_SENHA DJNZ B,ESTAGIO LCALL BUSCA_SENHA SALVA_SENHA: PUSH ACC MOV A, R2 MOV R3, A MOV A, R1 MOV R2, A MOV A, R0 MOV R1, A POP ACC MOV R0, A RET BUSCA_SERV: CLR TI CLR ES MOV SBUF,#'s' JNB TI,$ CLR TI MOV SBUF,R0 JNB TI,$
53
CLR TI MOV SBUF,R1 JNB TI,$ CLR TI MOV SBUF,R2 JNB TI,$ CLR TI MOV SBUF,R3 JNB TI,$ CLR TI CLR RI SETB ES SJMP $ SUBB A,#'A' JC ABRE JZ ABRE DJNZ R6,NOVAMENTE LJMP ERRO_SENHA1 ABRE: LJMP ABRE_PORTA BUSCA_SENHA: MOV A,R7 SUBB A,#ffh JZ BUSCA_SERV mov DPH,R7 MOV DPL,R5 CLR A MOVC A,@A+DPTR SUBB A,R3 JNZ ERRO_SENHA CLR A INC DPTR MOVC A,@A+DPTR SUBB A,R2 JNZ ERRO_SENHA CLR A INC DPTR MOVC A,@A+DPTR SUBB A,R1 JNZ ERRO_SENHA CLR A INC DPTR MOVC A,@A+DPTR SUBB A,R0 JNZ ERRO_SENHA JMP ABRE_PORTA ERRO_SENHA: DJNZ R6,NOVAMENTE ERRO_SENHA1: MOV R4,#01H
54
ACALL LCDCOM MOV R4,#080H ACALL LCDCOM MOV R4,#'s' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'h' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'d' ACALL LCDHR MOV R4,#'a' ACALL LCDHR mov R0,#FFh JMP TEMPO NOVAMENTE: MOV R4,#01H ACALL LCDCOM MOV R4,#080H ACALL LCDCOM MOV R4,#'S' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'h' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'I' ACALL LCDHR MOV R4,#'n' ACALL LCDHR
55
MOV R4,#'v' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'l' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'d' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#0c0H ACALL LCDCOM MOV R4,#'D' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'g' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#' ' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'o' ACALL LCDHR MOV R4,#'v' ACALL LCDHR MOV R4,#'a' ACALL LCDHR MOV R4,#'m' ACALL LCDHR MOV R4,#'e' ACALL LCDHR MOV R4,#'n' ACALL LCDHR MOV R4,#'t' ACALL LCDHR MOV R4,#'e' ACALL LCDHR mov R0,#FFh TEMPO1: mov TH0,#ACh mov TL0,#6Ch
56
clr TF0 setb TR0 JNB TF0,$ clr TF0 clr TR0 djnz R0,TEMPO1 LJMP TECLADO ABRE_PORTA: MOV R4,#01H ACALL LCDCOM MOV R4,#80H ACALL LCDCOM MOV R4,#'A' ACALL LCDHR MOV R4,#'b' ACALL LCDHR MOV R4,#'r' ACALL LCDHR MOV R4,#'i' ACALL LCDHR MOV R4,#'u' ACALL LCDHR setb p3.3 mov R0,#FFh TEMPO mov TH0,#3Ch mov TL0,#00Ch clr TF0 setb TR0 JNB TF0,$ clr TF0 clr TR0 djnz R0,TEMPO clr p3.3 LJMP RESET LCDSET: MOV dptr,#08002h BUSY_SET: MOVX A, @DPTR JB ACC.7, BUSY_SET MOV dptr,#08000h ;12 pulsos de clock //armazena em A o valor que seta o display p/ 2 linhas 5x7 8 bits MOV A, #38H MOVX @DPTR, A LCALL LOOP MOVX @DPTR, A
57
LCALL LOOP MOV A, #06H MOVX @DPTR, A LCALL LOOP MOV A,#01H MOVX @dptr, A LCALL LOOP MOV A,#02H MOVX @dptr, A LCALL LOOP MOV A, #0CH MOVX @dptr, A RET LOOP: mov r0,#6d LOOPR: mov r4,#250d djnz r4,$ djnz r0,LOOPR RET LCDCOM: MOV dptr,#08002h BUSY_COM: MOVX A, @dptr JB ACC.7, BUSY_COM MOV DPTR,#08000h MOV A, R4 MOVX @dptr, A RET LCDHR: MOV DPTR,#08002h BUSY_CHR: MOVX A, @dptr JB ACC.7, BUSY_CHR MOV DPTR,#08001h MOV A, R4 MOVX @dptr, A RET NUM_SERIAL: ;REGISTRO DOS IBUTTONS DB 00H ;numero serial ibutton mais significativo