- EEPROM em PIC16F877A:
- Diagrama de circuito e explicação:
- Simulação de uso de PIC EEPROM:
- Programando PIC para EEPROM:
- Trabalhando:
Neste tutorial vamos aprender como é fácil salvar dados usando o EEPROM presente no Microcontrolador PIC16F877A. Na maioria dos projetos de tempo real, pode ser necessário salvar alguns dados que não devem ser apagados, mesmo quando o instrumento é desligado. Isso pode parecer um processo complicado, mas com a ajuda do Compilador XC8, essa tarefa pode ser feita usando apenas uma única linha de código. Se os dados forem grandes em termos de Mega bytes, podemos conectar um dispositivo de armazenamento como um cartão SD e armazenar esses dados neles. Mas podemos evitar esses processos cansativos se os dados forem pequenos, podemos simplesmente usar a EEPROM presente no Microcontrolador PIC para salvar nossos dados e recuperá-los a qualquer hora que quisermos.
Este tutorial PIC EEPROM é parte de uma sequência de Tutoriais de Microcontrolador PIC em que começamos de um nível muito básico. Se você não aprendeu os tutoriais anteriores, seria melhor dar uma olhada neles agora, porque este tutorial assume que você está familiarizado com a interface LCD com o microcontrolador PIC e como usar ADC com o microcontrolador PIC.
EEPROM em PIC16F877A:
EEPROM significa “memória somente leitura apagável eletronicamente e programável”. Como o nome sugere, é uma memória presente dentro do microcontrolador PIC na qual podemos escrever / ler dados programando-o para isso. Os dados salvos neste serão apagados somente se for mencionado para fazê-lo no programa. A quantidade de espaço de armazenamento disponível na EEPROM varia em cada microcontrolador; os detalhes serão fornecidos na folha de dados como de costume. No nosso caso para PIC16F877A, o espaço disponível é de 256 bytes, conforme mencionado na folha de especificações. Agora vamos ver como podemos usar esses 256 bytes para ler / gravar dados usando uma configuração experimental simples.
Diagrama de circuito e explicação:
O diagrama de circuito do projeto é mostrado acima. Conectamos um LCD para visualizar os dados sendo salvos e recuperados. Um potenciômetro normal é conectado ao canal analógico AN4 para alimentar a tensão variável, esta tensão variável será usada como os dados a serem salvos na EEPROM. Também utilizamos um botão de pressão no RB0, quando este botão é pressionado os dados do canal analógico são salvos na EEPROM.
Essa conexão pode ser feita em uma placa de ensaio. A pinagem do microcontrolador PIC é mostrada na tabela abaixo.
S.No: |
Número do PIN |
Nome do Pin |
Conectado a |
1 |
21 |
RD2 |
RS de LCD |
2 |
22 |
RD3 |
E de LCD |
3 |
27 |
RD4 |
D4 de LCD |
4 |
28 |
RD5 |
D5 de LCD |
5 |
29 |
RD6 |
D6 de LCD |
6 |
30 |
RD7 |
D7 de LCD |
7 |
33 |
RBO / INT |
Botão de apertar |
8 |
7 |
AN4 |
Potenciômetro |
Simulação de uso de PIC EEPROM:
Este projeto também envolve uma Simulação desenhada em Proteus, com a qual podemos simular o funcionamento do projeto sem nenhum hardware. O programa para esta simulação é fornecido no final deste tutorial. Você pode simplesmente usar o arquivo Hex a partir daqui e simular todo o processo.
Durante a simulação, você pode visualizar o valor ADC atual e os dados salvos na EEPROM na tela LCD. Para salvar o valor ADC atual na EEPROM, simplesmente pressione a chave conectada ao RB0 e ele será salvo. Um instantâneo da simulação é mostrado abaixo.
Programando PIC para EEPROM:
O código completo para este tutorial é fornecido no final deste tutorial. Em nosso programa, temos que ler os Valores do módulo ADC e quando um botão é pressionado, temos que salvar esse valor em nosso EEPROM. Como já aprendemos sobre ADCs e interface de LCD, irei explicar melhor o código para salvar e recuperar dados da EEPROM.
De acordo com a Folha de Dados “Esses dispositivos possuem 4 ou 8K palavras do programa Flash, com uma faixa de endereço de 0000h a 1FFFh para o PIC16F877A”. Isso significa que cada espaço de armazenamento EEPROM tem um endereço através do qual pode ser acessado e em nosso MCU o endereço começa de 0000h a 1FFFh.
Para salvar dados dentro de um endereço EEPROM específico, simplesmente use a linha abaixo.
eeprom_write (0, adc);
Aqui, “adc” é uma variável do tipo inteiro em que os dados a serem salvos estão presentes. E “0” é o endereço da EEPROM no qual nossos dados são salvos. A sintaxe “eeprom_write” é fornecida por nosso compilador XC8, portanto, os registros serão automaticamente atendidos pelo compilador.
Para recuperar um dado que já está armazenado na EEPROM e salvá-lo em uma variável, a seguinte linha de código pode ser usada.
Sadc = (int) eeprom_read (0);
Aqui, “Sadc” é a variável na qual os dados da EEPROM serão salvos. E “0” é o endereço da EEPROM do qual estamos recuperando os dados. A sintaxe “eeprom_read” é fornecida por nosso compilador XC8, portanto, os registros serão automaticamente atendidos pelo compilador. Os dados salvos na EEPROM serão do tipo hexadecimal. Portanto, nós os convertemos para o tipo inteiro prefixando a (int) antes da sintaxe.
Trabalhando:
Depois de entender como o código funciona e ficar pronto com o hardware, podemos testar o código. Carregue o código para o seu microcontrolador PIC e ligue a configuração. Se tudo estiver funcionando conforme o esperado, você deverá ver os valores ADC atuais exibidos no LCD. Agora você pode pressionar o botão para salvar o valor ADC na EEPROM. Agora você verifica se o valor foi salvo desligando todo o sistema e ligando-o novamente. Quando ligado, você deve ver o valor salvo anteriormente na tela LCD.
O trabalho completo deste projeto para usar o Microcontrolador PIC EEPROM é mostrado no vídeo abaixo. Espero que você tenha entendido o tutorial e gostado de fazê-lo. Se você tiver alguma dúvida, pode escrevê-los na seção de comentários abaixo ou publicá-los em nossos fóruns.