Artigo Clube Delphi 100 - Controle de Hardware com Delphi

Artigo da Revista Clube Delphi Edição 100.

Esse artigo faz parte da revista Clube Delphi Edição 100. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

Boa Idéia - Expert

Controle de Hardware com Delphi

Usando um LCD no Delphi

 

 

Neste artigo veremos

·Breve histórico de acesso ao hardware em diferentes versões do Windows;

·Acesso ao hardware através de funções em Assembly;

·Acesso ao hardware através de dlls como o InpOut32.dll;

·Detalhes sobre LCDs (Arquitetura e Funcionamento);

·Construção de uma classe de controle de LCDs (THD44780);

·Projeto de um programa de Controle de LCDs.

Qual a finalidade?

·Controle e manipulação de LCDs do tipo HD44780 pela porta paralela.

Quais situações utilizam esses recursos?

·CaseModding, hobbistas de eletrônica e projetos de interfaceamento de dispositivos eletrônicos.

 

Resumo do DevMan

Durante a época do MS-DOS e Windows 3.1, 95  e 98 tínhamos como desenvolver facilmente programas para envio de informações ao hardware utilizando diversas linguagens. Uma delas era o próprio Delphi em sua primeira versão. A utilização da porta paralela para interfacear hardware era comum, porém, hoje, nos deparamos com um grande problema: a dificuldade em se enviar comandos para a porta paralela usando programas de modo usuário.

Nesse artigo veremos como fazer uso do Delphi e do componente LPTPort para criar um exemplo que manipula um display de LCD.

 

Engenheiros, hobbistas e outros interessados em utilizar o computador para manipular hardware externo, durante muito tempo utilizaram o Turbo Pascal e o Delphi 1, pois estas ferramentas possuíam uma combinação de poder e velocidade de compilação, facilitando o interfaceamento de circuitos e outros dispositivos eletrônicos. Esta flexibilidade e poder de programação eram ótimos em DOS, também no Windows 3.1 e Windows 95 com o Delphi 1, que possuía comandos de acesso as portas do PC. Mas a partir do Delphi 2 em diante, juntamente com o Windows NT, a manipulação direta do hardware não é mais permitida e devido a isto o acesso nativo ao hardware pelas linguagens visuais modernas foi retirada.

Neste artigo faremos uma revisão dos métodos mais utilizados para acesso ao hardware através do Delphi, e mostrar todas as formas utilizadas de acesso ao hardware através da evolução do Windows e do Delphi. E para demonstrar as capacidades de controle do Delphi controlaremos um LCD de 16x2 pela porta paralela (Figura 1) utilizando o componente LPTPort.

 

Nota DevMan

A porta paralela é uma ferramenta de controle simples e barata para construção de dispositivos e projetos. A simplicidade e facilidade de programação fazem da comunicação paralela a mais popular dos hobbistas eletrônicos, ela também é utilizada em robôs controlados por computador, programadores de micro controladores, automação doméstica, etc, por isso sua utilização nesse artigo é indispensável, visto que conseguiremos elaborar um exemplo simples, mas bastante detalhado.

 

 

Figura 1. Interfaceamento de módulos LCD

 

A saga do acesso ao hardware

No final dos anos 80, caso alguém desejasse acender LEDs através do computador teria de ligá-los a um cabo de impressora, e escrever um programa que alterasse o valor armazenado em um endereço específico de memória (no caso o endereço da porta paralela). Em Turbo Pascal era possível utilizar o comando Port a seguir:

 

Port[Endereço] := Valor;

 

Este comando funcionava sem dificuldades nas primeiras versões do Windows e Delphi 1, já que o Delphi 1 era 16 bits e até meados de 1995 ainda possuía um comando Port de 8 bits e PortW de 16 bits. Então o Windows ficou “melhor”. Acesso direto a localizações específicas se tornou uma má idéia, e a partir do Delphi 2 o comando foi retirado. Apesar de não ser mais comercializado, o Delphi 1 acompanha versões subseqüentes do Delphi. Em sua primeira versão é possível produzir programas que rodam nas versões 3.1, 95 e 98 do Windows, porém nada de Windows NT 4.0.

A partir da versão 2 em diante, ainda era possível acessar o hardware do computador de forma direta através de instruções em assembly como na Listagem 1.

 

Listagem 1. Código para escrita e leitura na porta paralela nas versões do Windows 95 e 98

procedure WritePort(Port: word; Value: byte);

asm

 push word ptr Port

 mov al, Value

 pop dx

 out dx, al

end;

 

function ReadPort(Port: word): byte;

asm

 mov dx, Port

 in al, dx

end;

 

Nota: Essas funções, WritePort e ReadPort, funcionavam apenas nas versões do Windows 95 e 98.

 

A título de curiosidade, veja que o cabeçalho das funções é Delphi, mas o corpo em si é todo Assembly. Inclusive diversas funções que utilizamos no dia-a-dia são desenvolvidas em Assembly, como IntToStr, por exemplo.

 

A era das restrições

Como vimos, escrever programas para controlar a porta paralela no tempo do velho MS-DOS era muito simples, assim como na época do Windows 95/98." [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados