Transcript

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.

2

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.

21

Figura 10 - Fluxograma da leitura do i-button

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

23

Figura 11 - Fluxograma da Leitura do Teclado

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.

26

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.

28

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.

30

ANEXO 1 PLACA COM O MICROCONTROLADOR 8031

31

ANEXO 2 COMUNICAÇÃO COM O COMPUTADOR

9600KbpsP1

PC SERIAL

594837261

P2

KIT8031 SERIAL

594837261

32

ANEXO 3 RECEPTÁCULO DE LEITURA DO I-BUTTON

Leitor de I-Button

R1100

P1.0

VCC

R22.2k

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

58

DB 00H DB 06H DB 36H DB B2H DB A9H ;numero menos significativo DB 04H ;senha teclado DB 04H ;senha teclado DB 08H ;senha teclado DB 08H ;senha teclado DB 00h DB 00h DB 07h DB 35h DB DBh DB E7h DB 02h DB 04H DB 06h Db 08h RET END


Recommended