Controle de impressora matricial com
microprocessador Z80





Ao longos dos anos em que publiquei artigos nas revistas da saudosa Editora Saber eu sempre gostei de utilizar a porta paralela. Isso por conta da sua facilidade (dependendo claro, do sistema operacional). Foram muitos projetos para uso e testes (Placa Buffer I e Placa Buffer II) além de alguns gravadores (Gravador p/ PIC16F84, Gravador PROGPIC II, Gravador para ATMEL AT89S8252, Gravador para ATMEL AVR e Placa PROPIC III), além de muitos projetos de uso direto (Placa LOGO Control, Controle para Casa Inteligente, Sensor de nível com LOGO, etc) e também o controle de alguns robôs (Robô ADR-2, Robô RF - Controle pelo PC e o Robô Desenhista). A lista de projetos que não publiquei também é grande.

Isso aconteceu porque desde de sempre eu utilizo essa porta nos vários computadores que tive. E recentemente eu estava "olhando" para o projeto da minha placa Z80 e um "estalo veio a mente"! Eu tinha portas de I/O para entrada e saída na placa, além de uma porta para comunicação serial RS-232, mas não tinha uma porta LPT para ligar a uma impressora paralela!!!

E é isso que esse artigo vai mostrar. O projeto e um pouco da teoria aplicada do projeto da minha placa LPT para minha placa Z80! Enjoy it!



O circuito




A figura acima mostra o circuito que projetei para ser ligado no barramento de expansão que coloquei na minha placa recentemente (uau!!! o projeto é de 1991 e até hoje ele recebe inclusões/alterações!). O circuito começa pela seleção das portas ou endereços 40H para dados e 41H para controle. Essa seleção é feita por U1A/U1B (74LS139), U2A (74LS32) e U6C (74LS04). U1 é um decoder com 4 saídas e em suas entradas temos os pinos A6, A0, /M1 e /IOREQ. Já nas entradas de U2A e U6C foram conectadas aos pinos /RD e /WR. A função desses CI's é permitir a seleção correta dos endereços 40H e 41H quando a CPU executar uma instrução OUT nos endereços 40H ou 41H, e uma instrução IN no endereço 41H.

Obs.: Na placa, o controle dos endereços de I/O segue uma ordem de maneira a utilizar endereços 10H, 20H, 40H e 80H. Consequentemente não existe o problema de qualquer endereço acessar "acidentalmente" um outro menor ou maior.

Para o barramento de dados foi selecionado um Octal D Lath para permitir a transferência segura dos dados para a porta paralela. Para a parte de controle da LPT (pinos de strobe e busy) outros CIs foram utilizados. Para o strobe temos U5A (um Flip-flop tipo D com preset/clear) e U6B (usado para inverter o estado da seleção no pino de clock (pulso - borda de subida) de U5A, garantindo a transferência do estado do bit D0 do barramento de dados da placa para o pino de strobe na impressora.

A entrada busy da impressora foi conectada através de um buffer (U2C) a um segundo buffer (U4A) controlado pela lógica de seleção. Sempre que uma instrução IN no endereço 41H acontecer, teremos a transferência do estado do pino busy para o bit D1 do barramento de dados. Note que U4A é um buffer com saída em tri-state quando não selecionado, o que é ideal para que este CI não interfira no barramento de dados da placa.


OS capacitores de C1 a C6 são capacitores de desacoplamento para os circuitos integrados. C7 é um pequeno capacitor de filtro e o LED1 junto do o seu resistor limitador de corrente servem para informar sobre a alimentação correta do circuito.


Minha montagem



A minha montagem inicial foi feita num proto-board e pode ser vista na figura acima. Em breve pretendo desenhar a placa para poder confeccioná-la, mantendo-a definitivamente em uso junto a placa principal.


O programa teste de controle

Para os testes preparei um pequeno programa de controle que me permitiu testar o circuito e o funcionamento do conjunto (placa LPT e placa CPU) com a minha impressora LX-300 (velha guerreira!). O mesmo pode ser visto mais abaixo. Note que nas linhas de impressão eu uso alguns comandos ESC no controle da impressora. As frases são impressas no modo enfático, mas os bytes da memória não. Além desses, cada nova linha e o Form Feed requerem também comandos ESC.





Conclusão

"Brincar" com microprocessadores mais antigos é muito interessante e um dos meus hobbies. É incrível o que se pode aprender com esses "velhos amigos". Se você curte essa praia mais vintage da eletrônica digital acredito que algumas informações presentes nesse site e também alguns vídeos no meu canal no Youtube poderão interessá-lo. Boas pesquisas, montagens, estudos e qualquer outra que seja dentro do mundo da retro-computação e claro, da Eletrônica
Digital e Microprocessadores/Microcontroladores Vintage!!! Até a próxima!
 


Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.