Vous êtes sur la page 1sur 8

Sistemas Microcomputadorizados Laboratrio I

Sistemas Microcomputadorizados Laboratrio I Interao com a Porta Paralela I


Neste laboratrio o aluno dever interfacear um computador com os seguintes dispositivos eletro-eletrnicos: leds, displays e um alto-falante. Para tanto alguns pequenos circuitos eletrnicos de suporte devem ser montados em um protoboard para fornecer a corrente necessria aos dispositivos. O laboratrio ser realizado em duas partes, Parte I, interfaceamento com os leds e display e Parte II, interfaceamento com um alto-falante. O interfaceamento se dar atravs da porta paralela utilizando-se o padro Centronics. Este padro estabelece uma porta de comunicao paralela de largura de um byte, unidirecional com controle de reconhecimento (handshaking) realizado via software. Na tabela 1 pode-se ver os sinais que so enviados ao conector de 25 pinos (DB25) utilizado nas comunicaes com o padro Centronics criado. Este casbo tem dois conjuntos de fios, um deles com uma argola preta ao redor. Este conjunto representado na tabela abaixo pelo trao preto (linhas de 10 a 17). Nome STROBE D0 D1 D2 D3 D4 D5 D6 D7 ACKNLG BUSY PE SLCT AUTOFEED XT CHASSIS GND Pino 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 Direo SADA SADA SADA SADA SADA SADA SADA SADA SADA ENTRADA ENTRADA ENTRADA ENTRADA SADA Descrio Data Strobe Data LSB Cor do Cabo Vermelho Marron Verde Laranja Preto Azul Amarelo Cinza Roxo Branco Vermelho Marron Verde Laranja Amarelo

Data MSB Finished with last char; pulse Not ready 1 HIGH = no paper Pulled HIGH Auto LF Chassis ground

Tabela 1 Sinais Centronics Nota 1: BUSY = HIGH i. Durante cada transferncia de caracter; ii. Se o buffer estiver cheio iii. Se a impressora estiver desligada iv. Se for sinalizado erro Os sinais bsicos so listados no primeiro grupo. D0-D7, STROBE, ACKNLG e BUSY. BUSY um sinalizador (flag) que indica, quando est em LOW que a impressora no est ocupada, ou seja, que ela est pronta para receber dados. O computador coloca ento os dados (D0-D7) e define STROBE; BUSY torna-se ento HIGH e s volta a LOW quando a impressora estiver pronta para receber outro byte. O computador deve ento analisar o sinal BUSY para saber quando ele pode enviar outro byte. ACKNLG, que um pulso, e no um sinal, pode ser utilizado para disparar uma interrupo. A figura abaixo apresenta o handshaking utilizado em transferncias de dados com o padro Centronics.

JCFJ

maro/2005

Sistemas Microcomputadorizados Laboratrio I

Centronics Handshake
Strobe Busy Ack Data

Alguns dos sinais de entrada (linhas 10-13) sero utilizados nas experincias para fornecer dados aos programas que sero desenvolvidos, fazendo com que estes programas possam se comportar respeitando escolhas feitas pelo usurio via hardware. Com o padro Centronics uma porta paralela s consegue fornecer 2,6 mA e drenar 24 mA e portanto, deve-se utilizar drivers com todas as sadas de dados quando se conecta dispositivos externos s portas.

Parte I: Interfaceamento com os Leds e Display de 7 segmentos


No interfaceamento do PC com os leds e o display os seguintes componentes sero utilizados: 74LS04 4 CIs 74LS04 1 transistor BC 327 8 leds 16 resistncias de 56 e uma de 330 . 1 display PD507

A seguir apresenta-se as caractersticas destes componentes. BC327 (vista de baixo)

e b c

PD507
10 9 8 7 6 1e 2d 3 A(K) 4c 5 DP 6b

a f g e d
1 2 3 4 5

7a 8 A(K) 9f 10 g

JCFJ

maro/2005

Sistemas Microcomputadorizados Laboratrio I

Exemplo: Escrever um programa C que atravs da porta paralela do microcomputador permita que se acenda e apague um led conectado ao bit D0 da interface Centronics. Soluo: O sinais D0-D7 podem no fornecer corrente suficiente para o acionamento de dispositivos externos. Para resolver este problema deve-se utilizar drivers externos. Um driver simples composto por um transistor trabalhando como chave. O circuito abaixo mostra este driver.
+5V

330

D0

BC327

Para se descobrir o endereo da porta paralela de um microcomputador que utilize o sistema operacional Windows 98 deve-se proceder da seguinte maneira: em Iniciar/Configuraes/Painel de Controle selecionar o cone Sistema. Em Sistema selecionar Gerenciador de Dispositivo e ento Portas (COM & LPT). Aps selecionar Porta de Impressora e clicar em Propriedades. Aps obter-se a tela relativa ao dispositivo, selecionar Recursos para se obter o resultado mostrado na figura abaixo.

JCFJ

maro/2005

Sistemas Microcomputadorizados Laboratrio I

Nesta tela pode-se ver o endereo utilizado pela porta paralela, neste caso 03BC-038F. Estes endereos constituem um intervalo no qual o endereo primrio espelhado. As instrues da linguagem C que sero utilizadas para o interfaceamento so as seguintes: a = inport(endereo)ou a = inp(endereo): uma palavra de uma porta do hardware. outport(endereo, dado) ou outp(endereo, dado): escreve uma palavra em uma porta do hardware.

Ou seja deve-se fornecer o endereo da porta e no caso da escrita a varivel onde o dado ser escrito. Pode-se passa agora a implementao da experincia. Para tanto, deve-se recuperar o cabo com um conector DB25 de maneira a ter-se acesso aos pinos D0-D7, BUSY e CHASSIS GND. Aps, deve-se montar no protoboard o circuito de driver apresentado. Aps deve-se conectar D0 base do transistor BC327. O programa apresentado a seguir ir acender e apagar o led deste circuito dependendo da entrada de dados do usurio.
//************************************************************************ // Nome: 1led.cpp // Autor: Jos Celso Freire Junior // Objetivo: Acender um led atravs de um cabo conectado a porta paralela // no bit D0 - Endereo da porta paralela 0x0378 - Neste micro. //************************************************************************ #include<stdio.h> #include<conio.h> void main(void) { char escolha; char valor; do{ printf("\nFaa sua Escolha - 0=0x00 | 1=0xFF | s=Stop --> "); escolha = getche(); if(escolha=='s') break; if(escolha=='0') valor = 0x00; if(escolha=='1') valor = 0xFF; outp(0x0378,valor); } while(escolha != 's'); outp(0x0378,0xFF); return; }

JCFJ

maro/2005

Sistemas Microcomputadorizados Laboratrio I

Exerccios Parte I: Interfaceamento com os Leds e Display de 7 segmentos


1. Escrever um programa na linguagem C que permita que oito leds ligados aos bits D0-D7 da porta paralela possam dar a impresso de dois bits se deslocando, ou seja, que dos oito leds dois estejam acesos a um dado instante e que estes leds se desloquem do bit LSB ao MSB. Deve-se solicitar do usurio o nmero de vezes que este loop ser executado. Como sero utilizados oito leds pretende-se utilizar o CI 74LS04 como buffer. Para tanto sada do inversor deve-se conectar um resistor de 56 ohms e a este o led que deve ento ser ligado a terra. 2. Escrever um programa que permita fazer deslocamentos de um nmero binrio apresentado nos leds conectados aos bits D0-D7 da porta paralela, utilizando-se o mesmo driver do exerccio anterior. O programa deve solicitar que o usurio fornea um nmero de 0 a 255. Aps este nmero deve ser apresentado no PC como um nmero binrio. Na seqncia o nmero deve ser apresentado nos leds conectados aos bits D0-D7. Aps o programa deve solicitar um sentido de rotao (direita ou esquerda) e o nmero de casas que sero deslocadas (0-7). Dicas: as instrues de deslocamento da linguagem C (>> e <<) trabalham com nmeros de 16 bits e os bits MSB e LSB so perdidos aps um deslocamento. 3. Escrever um programa que acione um display de 7 segmentos para que este apresente de maneira incremental os nmeros de 0 a 9. O usurio deve fornecer o nmero de vezes que este ciclo ser repetido, sendo que no mximo 9 ciclos podem ser realizados. A cada ciclo realizado a contagem deve comear em um nmero menor, ou seja, o primeiro ciclo se inicia em nove, o segundo em oito, etc. Deve-se utilizar o mesmo circuito de driver do exerccio anterior. 4. Escrever um programa que leia o bit BUSY da porta paralela. Se BUSY estiver ativo (valor lido no registrador for igual a 1) o display deve ficar contando de 0 a 9. Caso contrario o contador deve parar. O bit BUSY aps a leitura acessvel, invertido, em D7 da porta de status. Abaixo, esquerda tem-se a representao esquemtica da porta de Status que deve ser lida no Endereo de Dados + 1 e a direita o circuito que mostra a chave que deve ser conectada ao pino de BUSY da interface.

+5V

10 K BUSY

S1

5. Escrever um programa que leia os bits BUSY e ACK da porta paralela. Quando o bit BUSY estiver ativo (valor lido no registrador for igual a 1), o programa deve funcionar; caso contrrio deve ficar aguardando. Se o programa estiver ativo, o bit ACK deve ser lido. Caso ACK estiver ativo o display de 7 segmentos que estar conectado a porta paralela deve apresentar os mero pares e caso contrrio os nmeros mpares.
JCFJ maro/2005 5

Sistemas Microcomputadorizados Laboratrio I

Parte II: Interfaceamento com um Alto-Falante


Nesta parte do laboratrio se dever interfacear um computador com um alto falante. Para tanto um pequeno circuito eletrnico de suporte deve ser montado em um protoboard. Alternativamente, as caixas de som amplificadas do computador podem ser utilizadas. O interfaceamento dever ser feito atravs da porta paralela utilizando-se o padro Centronics. Cada uma das notas musicais tem sua freqncia caracterstica. Na tabela abaixo se apresenta as freqncias das 8 oitavas de cada nota, assim como dos sustenidos quando existirem.
# Oitava 0 1 2 3 4 5 6 7 8 Nota (Freqncia Hz) D 16,352 32,703 65,406 130,81 261,63 523,25 1046,5 2093,0 4186,0 D # 17,324 34,648 69,296 138,59 277,18 554,37 1108,7 2217,5 4434,9 R 18,354 36,708 73,416 146,83 293,66 587,33 1174,7 2349,3 4698,6 R# 19,445 38,891 77,782 155,56 311,13 622,25 1244,5 2489,0 4978,0 Mi 20,602 41,203 82,407 164,81 329,63 659,26 1318,5 2637,0 5274,0 F 21,827 43,654 87,307 174,61 349,23 698,46 1396,9 2793,8 5587,7 F# 23,125 46,249 92,499 185,00 369,99 739,99 1480,0 2960,0 5919,9 Sol 24,500 48,999 97,999 196,00 392,00 783,99 1568,0 3136,0 6271,9 Sol# 25,957 51,913 103,83 207,65 415,30 830,61 1661,2 3322,4 6644,9 L 27,500 55,000 110,00 220,00 440,00 880,00 1760,0 3520,0 7040,0 L# 29,135 58,270 116,54 233,08 466,16 932,33 1864,7 3729,3 7458,6 Si 30,868 61,735 123,47 246,94 493,88 987,77 1975,5 3951,1 7902,1

Nesta parte da experincia deve-se utilizar a oitava de nmero 4 de todas as notas. Assim para gerar um D necessrio gerar uma onda quadrada, no bit D0 da interface Centronics, cujo perodo igual a: 1/261,63 Hz = 3,82219 ms. No interfaceamento do PC com o alto falante os seguintes componentes sero utilizados:

BC327 (vista de baixo)

e b c

1 transistor BC 327 1 resistncia de 56 e uma de 10 K. 1 alto falante de 8.

Exemplo: Escrever um programa C que atravs da porta paralela do microcomputador gere uma onda quadrada no bit D0 da interface Centronics de tal maneira que esta onda conectada ao auto falante do circuito apresentado abaixo emita a nota D.
+5V

56

D0

BC327

JCFJ

maro/2005

Sistemas Microcomputadorizados Laboratrio I

Soluo:

A freqncia da nota D : 261,63 Hz. O perodo da onda quadrada que ser gerada portanto 1/261,63 Hz = 3,82219 ms. O sinal que ser gerado em D0 deve portanto passar 3,82219/2 = 1,91109 ms em 1 e o mesmo tempo em 0. Deve-se portanto escrever um programa que faa com que o micro escreva 0x01 no bit D0, espere 1,91109 ms, escreva 0x00 e espere 1,91109 ms. Isto ir gerar um perodo da nota D, o que tomar somente 3,82219 ms. Para que a nota seja audvel necessrio fazer com que esta onda quadrada de perodo 3,82219 ms seja gerada diversas vezes. Uma estrutura de for aninhados resolve o problema. O loop exterior ir fazer com que a nota seja gerada durante um certo tempo, e o interior ir gerar efetivamente a onda quadrada na freqncia da nota. O problema existente o seguinte: determinar-se o nmero de iteraes do for, tanto o exterior quanto o interior, e isto levando em considerao o fato de que PCs com velocidades diferentes executam o loop for em tempos diferentes. Para tanto o mtodo da tentativa e erro deve ser utilizado. Deve conectar-se um osciloscpio ao pino D0 da interface, e variando o nmero de loops, descobrir aquele que gera uma onda quadrada que corresponde freqncia da nota D. Para se iniciar a experincia, sugere-se que se coloque um nmero grande no loop que controlar o tempo que a nota D ser emitida. Dica: o nmero de iteraes grande; utilize por exemplo uma varivel de tipo unsigned int como contador.

Exerccios Parte II: Interfaceamento com um Alto-Falante


6. Utilizando os valores descobertos no exemplo, escreva duas funes, atraso e som que executem as seguintes tarefas: atraso: a funo recebe um valor em mili segundos e durante este intervalo o micro computador no faz nada prottipo: void atraso(float msegundos); som: a funo recebe trs parmetros; o primeiro um perodo equivalente a uma nota musical; o segundo o pitch1 desta nota; o terceiro o tempo que a nota deve ser tocada. prottipo: void som(float nota, float pitch, float tempo);

Utilizando estas funes escreva um programa que fique tocando por cinco segundos a nota d e depois por mais cinco segundos a nota si.

7. Aps utilizando as mesmas funes escreva um programa C para tocar a clebre D-R-MiF. O programa devera gerar na ordem ento as seguintes chamadas:

a diviso do perodo da onda que ir emitir o som. Assim com pitch 0,5 a onda quadrada dever ficar metade do tempo em 1 e a outra metade em 0. Com pitch 0,7 ela dever ficar 70% do tempo em 1 e 30% em 0 ou viceversa. maro/2005 7

JCFJ

Sistemas Microcomputadorizados Laboratrio I

void main(void) { float pitch=0.3; som(Do, pitch, 0.7); som(Re, pitch, 0.7); som(Mi, pitch, 0.7); som(Fa, pitch, 0.7); atraso(100); som(Fa, pitch, 0.7); atraso(100); som(Fa, pitch, 0.7); atraso(100); som(Do, pitch, 0.7); som(Re, pitch, 0.7); atraso(100); som(Do, pitch, 0.7); som(Re, pitch, 0.7); atraso(100); som(Re, pitch, 0.7); atraso(100); som(Re, pitch, 0.7); atraso(100); som(Do, pitch, 0.7); som(Sol, pitch, 0.7); som(Fa, pitch, 0.7); som(Mi, pitch, 0.7); atraso(100); som(Mi, pitch, 0.7); atraso(100); som(Mi, pitch, 0.7); atraso(100); som(Do, pitch, 0.7); som(Re, pitch, 0.7); som(Mi, pitch, 0.7); som(Fa, pitch, 0.7); atraso(100); som(Fa, pitch, 0.7); atraso(100); som(Fa, pitch, 0.7); }

8. Escrever um programa na linguagem C que leia o teclado e de acordo com as letras tecladas faa com que o alto falante emita um som especfico. A equivalncia nota/som deve ser a seguinte: A/D S/R D/Mi F/F G/Sol H/L e J/Si. 9. Descubra na Internet as notas de uma cano polular (de ninar, folclrica) e escreva um programa que toque o incio desta cano.

JCFJ

maro/2005

Vous aimerez peut-être aussi