Esse circuito tem o objetivo de gerar sons através do teclado do computador e com ele faremos uma verdadeira viagem no tempo. Nove osciladores astáveis, um contador sequencial e um demultiplexador controlados por um programa em linguagem Assembler possibilita efetuar diversos arranjos musicais ou batidas estilo Beat box.
Um projeto interessante não só aos leitores que ainda possuam um computador antigo funcionando, mas a todos, pois pode ser controlado por microcontrolador ou outros meios, basta fazer as conexões e escrever o programa em linguagem apropriada.
Caso queira obter outros sons, um ou mais osciladores astáveis podem ser substituídos por osciladores de duplo T.
Perfeito para quem gosta de fazer modificações.(figura 1)
Como funciona:
Os bits D0, D1 e D2 da saída paralela ( LPT1) do computador foram utilizados para endereçar um circuito demultiplexador CMOS CD 4051, contendo uma entrada e oito saídas.
A entrada é ligada ao VCC, dessa forma a cada endereço acessado teremos nível lógico alto na saída que satura o transístor NPN BC 548 estabelecendo alimentação a um dos sete circuitos osciladores elaborado com os CI NE 555 na configuração astável em frequência de áudio.
A primeira saída do demultiplexador não será utilizada, pois permanecerá em nível lógico alto sempre que o endereço 000 for acessado, sendo a situação de stand - by do circuito.
O bit A3 da LPT1 foi utilizado para ligar e desligar um oitavo oscilador com o circuito integrado NE 555 esse bit é conectado diretamente ao pino reset (pino 4).
O nono circuito com CI 555 tem o sinal de saída (pino 3) conectada ao terminal positivo de uma carga capacitiva (dois capacitores de 470 uF ligados em série) que se carregam através da resistência interna do quinto oscilador onde está conectado o terminal negativo da associação de capacitores.
Quando a alimentação deste quinto oscilador é estabelecida por um instante e cortada (conforme veremos mais adiante na explicação do programa) esses capacitores se descarregam instantaneamente, proporcionando um efeito som de bumbo.
Esse efeito liga e desliga cada vez que o contador sequencial de duas saídas recebe um pulso de clock em seu pino 14 proveniente do bit D7 da LPT1.
O funcionamento perfeito do oitavo e nono oscilador exige que a tensão da fonte de alimentação seja entre 6 e 9 volts pois são controlados diretamente pelo bit de saída da porta paralela onde o nível lógico alto é 5 volts, além disso o sistema que produz o efeito som de bumbo também depende deste fator.
De acordo com os testes realizados com o protótipo na bancada, se estiver abaixo de 6 volts o efeito som de bumbo não funciona e acima dos 9 volts o oitavo oscilador dispara emitindo um tom contínuo.
Montagem:
Na figura 2 temos o diagrama do aparelho.

Na figura 2 temos a placa de circuito impresso.
As entradas identificadas no diagrama esquemático como A, B, C, D, H de endereçamento que controla o funcionamento do circuito devem ser conectadas respectivamente aos pinos 2, 3, 4, 5 e 9 correspondente aos bits D0, D1, D2, D3, D7 na saída paralela LPT1 do computador através de um cabo com conector DB25.
A entrada identificada com + VCC 6V a 9 V deve ser conectada ao terminal positivo de uma fonte de alimentação entre 6 e 9 volts × 250 mA. ( No protótipo foi utilizado uma fonte para telefone de 7,5 volts × 300 mA).
O negativo da alimentação do circuito deve ser conectado também a um dos pinos entre 18 e 25 do conector DB25 (GND).
As saídas identificadas como 1, 2, 3, 4, 5, 6 e 7 são conectadas respectivamente a sete osciladores idênticos ao que está dentro do campo pontilhado em destaque no circuito e já conectado ao pino 2 do CI CD 4051. Os valores dos Resistores e capacitores para cada um dos osciladores estão especificados na tabela lá no diagrama esquemático.
A saída de áudio pode ser conectada diretamente na entrada auxiliar de um amplificador.
Todos os resistores são para 1/8W.
Todos os capacitores são para 16 volts ou mais.
Os dois capacitores de 470 uF × 16 Volts utilizados na saída do nono oscilador para o efeito de som bumbo devem ser de preferência do tipo bipolar.
Os transístores são todos NPN de uso geral BC 548.
Lista de material:
01 Circuito integrado CD 4051
01 Circuito integrado CD 4017
09 Circuito integrado NE 555
08 Transístor BC 548 (NPN uso geral )
04 Resistor 120 ohms × 1/8 W
03 Resistor 1k ohms × 1/8W
02 Resistor 470 k ohms × 1/8 W
02 Resistor 10 k ohms × 1/8 W
01 Resistor 2,2 k ohms × 1/8 W
01 Resistor 4,7 k ohms × 1/8 W
01 Resistor 15 k ohms × 1/8 W
01 Resistor 22 k ohms × 1/8 W
01 Resistor 27 k ohms × 1/8 W
01 Resistor 33 k ohms × 1/8 W
03 Capacitor poliéster 220 nF × 100 Volts
07 Capacitor poliéster 1 nF × 100 Volts
02 Capacitor eletrolítico 470 uF × 16 Volts (de preferência do tipo bipolar )
08 Capacitor eletrolítico 3,3 uF × 16 Volts.
Diversos:
01 Cabo com conector macho DB 25.
01 Fonte 7,5 Volts × 300 mA (ver texto)
01 conector fêmea para saída de áudio (de acordo com o conector de entrada do amplificador a ser utilizado)
01 cabo para conectar ao amplificador
Placa de circuito impresso para a montagem.
Fios
Solda
Caixa para abrigar a montagem.
Computador antigo com acesso ao prompt do MS DOS.
Programa em Assembler:
0100: MOV DX, 0378
0103: MOV AX, 0800
0106: INT 21
0108: CMP AL, 1B
010A: JE 011B
010C: OUT DX. AL
010D: CALL 011D
0110: MOV AX, 0000
0113: OUT DX, AX
0114: CALL 011D
0117: LOOP 0100
0119: LOOP 0100
011B : INT 20
011D: PUSH CX
011E: PUSH DX
011F: MOV CX, 0AAA
0122: MOV DX, 0AAA
0125: DEC DX
0126: JNZ 0125
0128: DEC CX
0129: JNZ 0122
012B : POP DX
012C: POP CX
012D: RET
Na figura abaixo imagens do programa.


Prova e uso:
Relembrando os comandos do DEBUG para digitar o programa e rodar partindo do prompt do MS DOS no computador antigo.
Acesse o prompt do MS DOS e digite os seguintes comandos:
DEBUG (e a tecla Enter para entrar no modo de programação Assembler)
A (e a tecla Enter para escrever o programa)
(Digitar o programa)
Após digitar o último Comando pressione a tecla Enter duas vezes.
G (e a tecla Enter para rodar o programa)
(a partir de agora o programa ficará esperando qualquer tecla ser pressionada para enviar o byte correspondente à saída paralela do computador e controlar nosso circuito)
ESC (e a tecla Enter quando for encerrar o programa)
Q (e a tecla Enter para sair do DEBUG e voltar ao prompt do MS DOS)
Agora que o programa está digitado e funcionando, faça as conexões do aparelho ao computador e amplificador, ligue a fonte de alimentação.
Para cada tecla pressionada um som diferente será gerado. A tecla F11 liga e desliga o efeito de som bumbo.
Explicação passo a passo do programa:
MOV DX, 0378 (Comando que transfere o endereço da saída paralela LPT1 para o registrador DX) obs : Verificar no setup do computador se o endereço da sua saída paralela é 0378, 03BC ou outro.
MOV AX, 0800 (Comando que transfere o dado 0800h para o registrador AX com o objetivo de utilizar a função de número 08 da instrução INT 21)
INT 21 (É uma instrução de interrupção do DOS que permite a leitura de uma tecla qualquer disponível no teclado)
CMP AL, 1B (Comando que faz a comparação do dado 1Bh que corresponde ao caractere ESC do teclado com o conteúdo da parte baixa do registrador AX)
JE 011B (Caso a tecla digitada seja a tecla ESC, este comando desvia o programa imediatamente para a instrução INT 20 cujo endereçamento é 011B terminando assim o programa)
OUT DX, AL (Comando de saída que envia o conteúdo da parte baixa do registrador AX, correspondente ao código hexadecimal da tecla digitada para o registrador DX, cujo endereço é a saída paralela LPT1 do computador conforme previsto no início deste programa)
CALL 011D (comando que diz ao programa para executar a sub-rotina do endereço 011D, pois ele carrega 011D no registrador IP)
MOV AX, 0000 (Comando que transfere o dado 0000 para o registrador AX)
OUT DX, AX (Comando de saída que transfere o dado 0000 para o registrador DX cujo endereço é a saída paralela LPT1 do computador)
CALL 011D (Comando que diz ao programa que ele deve executar a sub-rotina do endereço 011D, pois ele carrega 011D no registrador IP)
LOOP 0100 (Comando que volta o programa para o início repetindo todas as instruções anteriores)
LOOP 0100 (Este comando repetido garante que se caso ocorrer uma falha devido a grande rotatividade do programa ele caia novamente na mesma instrução evitando assim que o programa seja encerrado involuntariamente, pois a próxima instrução INT 20 terminaria o programa. (Nota: Este problema ocorreu durante os testes do protótipo enquanto ainda era usado apenas uma instrução de LOOP)
INT 20 (Comando que termina o programa)
PUSH CX (Comando que permite colocar o dado do registrador CX na pilha)
PUSH DX (Comando que permite colocar o dado do registrador DX na pilha)
MOV CX, 0AAA (Comando que transfere o dado 0AAA para o registrador CX)
MOV DX, 0AAA (Comando que transfere o dado 0AAA para o registrador DX)
DEC DX (Comando para decrementar o dado contido no registrador DX)
JNZ 0125 (Instrução de salto para saltar para o endereço 0125 enquanto o conteúdo de DX não for igual a zero)
DEC CX (Comando para decrementar o dado contido no registrador CX)
JNZ 0122 (instrução para o programa saltar para o endereço 0122 enquanto o conteúdo do registrador CX não for igual a zero)
POP DX (Instrução que permite retirar o dado contido no registrador DX da pilha)
POP CX (Instrução que permite retirar o dado contido no registrador CX da pilha)
RET (Instrução que retorna o programa para a primeira instrução após o CALL)
Conforme podemos notar, este programa de controle está sempre a espera de uma tecla a ser digitada, quando isso ocorre, ele transfere o byte correspondente para a saída paralela LPT1 do computador por um instante e em seguida volta totalmente ao nível lógico baixo, aguardando outra tecla ser acionada, exceto a tecla ESC que foi configurada para encerrar.
Com o dado em binário disponível na saída paralela do computador é que temos o controle do circuito eletrônico através dos bits D0, D1, D2, D3 e o bit D7 que é responsável pelo controle do bumbo ativado e desativado através da tecla F11.
O prompt do sistema operacional MS DOS não está disponível nos computadores atuais, bem como a porta de saída paralela LPT1 , mas agora que curtimos essa incrível viagem ao passado estamos de volta com nosso circuito que pode perfeitamente ser controlado através das entradas A, B, C, D, H conectadas a um equipamento moderno programado em outra linguagem.
Espero que tenham gostado do artigo.
Até a próxima!