segunda-feira, maio 12, 2025

Microcomputador Z80 - Os Displays na Placa I/O

 Retomando (devagar) este projeto, vamos falar um pouco sobre a segunda placa, onde ficam os displays e o teclado.

O display é composto de seis dígitos (displays de 7 segmentos); o monitor utiliza quatro deles para apresentar um endereço e dois para apresentar um valor. Na minha montagem, estou usando um display de quatro dígitos e um de dois dígitos.

Parece simples... Aguardem para ver o outro lado quando estiver pronto!

Entre a minha dispersão, preguiça e um certo receio da soldagem de dezenas de fios de wire-wrap, este projeto vai caminhando bem devagar.

No final de agosto do ano passado eu completei a montagem da primeira placa, onde estão o Z80, memórias, reset, oscilador e a decodificação dos I/Os:


Depois disto o projeto ficou praticamente encostado até abril, quando comecei a trabalhar na segunda placa. O esquema é derivado do projeto original do CEDM-80, porém substituindo os integrados 7475 (Quad Latch) e 74174 (Hex D Flip/Flop) por 74373 (Octal Latch), como vimos no episódio anterior. A outra alteração, mais trivial, foi trocar os transistores que acionam o display de modelos da linha BC (BC308 e BC237) por modelos da linha 2N (2N3906 e 2N3904).

O funcionamento do display, de forma resumida, é o seguinte:

  • A entrada do primeiro 373 é a via de dados do Z80. A saída aciona (através de transistores PNP) os segmentos dos displays e é a entrada do segundo 373.
  • A saída do segundo 373 seleciona (através de transistores NPN) os dígitos do display e também as colunas da matriz do teclado.
O circuito original não indicava qual bit de dados corresponde a cada segmento. Foi preciso fazer um pequeno trabalho de detetive, usando uma tabela da documentação do CEDM-80 que listava os valores em hexa que correspondem aos vários dígitos.

O esquema ficou assim:


Uma dúvida era os valores dos resistores. Para confirmar o funcionamento (e fazer eventuais acertos), montei o circuito para um único segmento e dois dígitos (um de cada display físico).

Na hora de fazer o software, resolvi primeiro fazer uma engenharia reversa parcial do firmware original (tenho o HEX mas não os fontes) e descobri que é possível escrever simultaneamente nos dois 373 (ou seja, selecionar um dígito) usando um único OUT. O programa abaixo pisca o segmento A dos dígitos 1 e 4:
    .cpu Z80
    
    ORG 0
    
    LD  A,11h
    OUT	03h, A	   ; seleciona digitos 1 e 4
    
    LD  C,0        ; C = valor a escrever nos segmentos
l1:
    LD  A,C
    OUT 01h,A   ; escreve na porta
    CPL         ; inverte
    LD	C,A
    
    ; aguarda um tempo
pausa:
    LD  HL,0
l2:
    DEC HL
    LD  A,H
    OR  L
    JP  NZ,l2
    
    JP  l1     ; repete
Agora é vencer a procrastinação, soldar todas as ligações do display e testar o display completo.
 

Nenhum comentário: