Aqui está um projeto simples sobre como fazer a interface do 8255 com o microcontrolador 8051 (89c51). O projeto demonstra um programa simples de leds piscando. Os LEDs são conectados à porta A do 8255. Quando os quatro bits inferiores da porta A do 8255 estão altos, os quatro bits superiores estão baixos. Os LEDs conectados à ponta superior permanecerão apagados e os da parte inferior acenderão. Após algum atraso, os bits são alterados e os leds superiores acenderão e os inferiores apagarão. Toda esta condição está em execução contínua. Fazendo a porta A morder alto e baixo ou acender e apagar os LEDs.
Se você não estiver familiarizado com o periférico programável 8255. Aqui é bom tutorial
- PIN 8255 E DESCRIÇÃO DE TRABALHO.
Eu recomendo que você faça o tutorial porque se você não estiver familiarizado com o 8255, identifique seu funcionamento e sua inicialização. Então é muito difícil entender o código abaixo.
O circuito é muito fácil. Conecte a porta 2 do 8051 com os pinos de dados do 8255. Faça os pinos CS (seleção de chip) e RESET do aterramento do 8255. Conecte A0 com a porta 1, pino 0 do microcontrolador 8051, e A1 com a porta 1, pino 1. Conecte o pino WR (gravação) de 8255 com a porta 3, pino 6. Conecte o pino RD (leitura) de 8255 com a porta 3, pino 7. O diagrama de circuito é fornecido abaixo.
Interface 8255 com microcontrolador 8051(89c51,89c52)
A codificação é muito fácil se você estiver totalmente familiarizado com os microcontroladores da série 8051 (89c51,89c52), sua programação e o funcionamento do 8255 PPI. A função delay é usada para gerar algum atraso. Na função principal, primeiro faço a saída das portas 2 e 3. Então eu fiz rd(read)=1. Fazer rd=1 significa que eu não queria ler nada do 8255. Então fiz WR(write)=0 significa que quero escrever qualquer coisa no 8255. Então envio 0x80 para os pinos de dados do 8255, é minha palavra de controle. Ele define todas as portas A, B e C do 8255 como saída. Então selecionei o registro de controle porque a palavra de controle é sempre escrita no registro de controle. Então, em loop while contínuo, estou fazendo a porta A mordiscar alto e baixo. Que alternativamente pisca leds.
- P2=0xF0 -> Fazendo quatro mordidelas superiores da porta A de 8255 alta e inferior baixa.
- P2=0x0F -> Fazendo quatro mordidelas inferiores da porta A do 8255 alto e superior baixo.
Essas duas condições superiores fazem com que os LEDs pareçam estar piscando. Os atrasos entre as condições são muito importantes. Eles são usados para fazer com que os leds permaneçam em determinadas condições por algum tempo, por exemplo, 0xF0 deve permanecer na porta A por algum tempo e depois mudar para 0x0F. Se você não usar atrasos nessas duas condições você não conseguirá ver os leds piscando. O programa é executado tão rápido que fica tão difícil identificar o que está acontecendo.
Você pode alterar o código de acordo com seu desejo. Você pode usar o LCD conectado ao 8255 para exibir o que quiser. Você pode estender suas portas conectando 8255 ao microcontrolador 8051 (89c51,89c52). Baixe os arquivos do projeto Code (C++,HEX) compilados em keil u vision-3 e nos dê seu feedback sobre o projeto. Escreva suas dúvidas abaixo na seção de comentários.
Leds piscando com microcontrolador 8255 e 8051(89c51,89c52)