Download interface com display
Transcript
EXPERIÊNCIA 3: FAMILIARIZAÇÃO COM PERIFÉRICOS DE ENTRADA E SAÍDA: INTERFACE COM DISPLAY Autores: Prof. Dr. Carlos Eduardo Cugnasca e Prof. Dr. Ricardo Costa Zerbini Adaptação para o display alfanumérico: Daniel Ziviani Cassettari, Luiz Paulo Rocha Yanai, Vitor Pereira Spachi, Rodrigo Gioia Guimarães, Erika Midori Kato, Paula Franchi Cruz Agosto – 2004 Revisão: Profs. Dr. André Riyuiti Hirakawa e Dr. Carlos Eduardo Cugnasca Março – 2009 1. OBJETIVO Nesta experiência será apresentado e estudado o funcionamento do dispositivo de saída denominado “display”. A título de exemplo de aplicação, será implementada e testada a interface entre um display de cristal líquido da Alfacom e a Placa Experimental MC68000. 2. DISPLAYS 2.1. Principais Tecnologias Um dos displays mais antigos é o de tecnologia desenvolvida pela “Borroughs Corporation” denominado display "NIXIE". Este elemento era formado por um tubo com 10 números sobrepostos em planos diferentes, de maneira que quando um deles se acendia, os outros permaneciam apagados, permitindo que se visse através deles (a espessura destes números era bastante pequena), visualizando-se apenas o número aceso. Uma desvantagem deste sistema era que os números não ficavam à mesma distância do usuário (não estavam no mesmo plano), criando um certo desconforto na leitura de um número com vários dígitos diferentes. Outro problema era que o acendimento dos números exigia altas tensões de operação, e o chaveamento rápido de altas tensões, necessário na implementação da técnica de multiplexação (essencial na redução de tamanho e custos dos displays), sempre foi problemático. Mais tarde surgiram os displays de sete segmentos, que tiveram bastante aceitação e custos bem menores, estando disponíveis até hoje em grande variedade de formatos, cores e tipos. As principais tecnologias de displays de sete segmentos são: • Displays incandescentes: operando com base em filamentos incandescentes, são disponíveis em várias cores e tamanhos, são os que podem oferecer maior intensidade de luz. • Displays de neon ou display de plasma: baseados na ionização de gases presos em bulbos estão disponíveis na cor laranja-avermelhada (intrínseca aos gases utilizados). Exigem tensão alta para operação, o que dificulta sua multiplexação. • Displays fluorescentes: são displays azuis ou verdes que exigem tensões um pouco menores que as exigidas pelo tipo anterior, simplificando a multiplexação. Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS Laboratório de Processadores I 2 • Display de LEDs ( "Light Emitting Diode"): é uma tecnologia do início da era do semicondutor, sendo assim um dispositivo de estado sólido. Aproveita-se aqui o efeito de emissão de luz visível na região de junção dos semicondutores. A vantagem deste display reside no seu tamanho pequeno (embora hoje em dia já se disponha de displays de leds de tamanhos grandes), confiabilidade de operação em ambientes hostis e, principalmente, compatibilidade com tensões e correntes dos dispositivos da tecnologia de circuitos integrados disponíveis. Os LEDs são geralmente vermelhos, mas também são fabricados em outras cores como o amarelo e o verde. • Display de cristal líquido (LCD): Nestes dispositivos algumas impurezas polares são inseridas em um material que apresenta comportamento semelhante aos materiais em estado líquido, mas que consegue manter uma estrutura cristalina organizada em temperatura ambiente. Quando o material está com sua estrutura não perturbada, ele permite a passagem de luz pelo seu meio. Quando se aplica uma tensão de maneira a fazer com que as moléculas de impureza colocadas na substância se movam (elas são polares), a estrutura cristalina é perturbada e as características ópticas do material se modificam, bloqueando a luz. Quando cessa o movimento das impurezas, a estrutura cristalina se recompõe, e o material volta a permitir a passagem de luz. Percebe-se, portanto, que podem existir dois tipos de displays de cristal líquido, um reflexivo, que trabalha com iluminação frontal (e possui uma superfície refletora por trás) e o transmissivo, que apresenta uma iluminação na sua parte traseira. Estes dispositivos, por exigirem apenas tensão para mover as impurezas, consomem muito pouca energia do sistema de controle, mas apresentam como desvantagem um tempo de vida menor (por degeneração do cristal líquido), bem como menor confiabilidade e maior sensibilidade à radiação ultra-violeta encontrada em ambientes abertos (origem solar). 3. DISPLAY ALFANUMÉRICO DE CRISTAL LÍQUIDO Nos últimos anos, os módulos de display alfanumérico têm se tornado extremamente populares, devido à grande escala de utilização que vem ocorrendo nos diversos produtos, equipamentos e instrumentos. Dentre as aplicações do display podemos citar calculadoras, terminais de consulta de bancos, painéis informativos, painéis de equipamentos diversos, etc. Essa popularização do display se deve às vantagens oferecidas, que são: conexão facilitada com equipamentos diversos, fácil operação, baixo consumo e baixo custo. Atualmente, existe muitos fabricantes produzindo LCDs, que funcionalmente mantêm as mesmas características. As diferenças são quanto à conexão, número de linhas e colunas, dimensões físicas e consumo. Assim, seqüências de comandos criados para um display podem ser aplicadas em outros sem necessidade de maiores modificações. Um display normal (padrão de mercado) possui dois registradores: um registrador de comandos e outro de dados. Um display recebe comandos no seu registrador de comandos para: • a sua inicialização; • mover o cursor para a direita; • deslocar todos os caracteres para a esquerda; • limpar a tela do display; • etc. Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS 3 Laboratório de Processadores I 4. CÓDIGOS DE PROGRAMAÇÃO DO DISPLAY O display a ser utilizado aceita códigos para a sua programação de 8 bits, que são direcionados para o registrador de instrução quando os sinais RS = 0 e R/W = 0 [1][6]. Durante o desenvolvimento de programas, a representação dos códigos no formato hexadecimal equivalente é mais simples de ser utilizada do que a representação em código binário. Os principais códigos de programação do display em formato hexadecimal são listados na Tabela 1. Um exemplo de montagem de caracteres a partir da matriz de pontos do display é apresentada na Figura 1 [1][6]. Tabela 1 – Principais Códigos de Programação do Display. DESCRIÇÃO DO COMANDO CÓDIGO DE INSTRUÇÃO (HEX) DESCRIÇÃO DO COMANDO CÓDIGO DE INSTRUÇÃO (HEX) Controle de Display Habilitado 0C Limpar (Conteúdo retido na memória) 0A, 08 Esquerda 04 Limpar Display e Cursor 01 Direita 06 Home Cursor 02 Cursor Posição de Entrada de Dado Deslocamento de Cursor com entrada de dado Esquerda 07 Direita 05 ON 0E OFF 0C Piscar 0D Esquerda 18 Deslocar a Esquerda 10 Direita 1C Deslocar a Direita 14 Home 02 Deslocamento de Cursor sem entrada de dado Endereçamento dos dados do Display 1ª Linha 80 2ª Linha C0 Figura 1 – Montagem dos Caracteres do Display. Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS Laboratório de Processadores I 4 Um display recebe dados que são os caracteres alfanuméricos inseridos no display. O ciclo de envio de comando e dado para o display é mostrado na seguinte Figura 2. Ciclo de Escrita Ciclo de Leitura Figura 2 – Ciclos de Escrita e de Leitura do Display Na Figura 2, as seguintes condições devem ser satisfeitas para a borda de descida do sinal "E", indicando o instante da escrita: • R/W=0 (indicando write); • dados estáveis na via de dados; Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS Laboratório de Processadores I • 5 RS=0 indica um comando para o display (ex: limpa o display) e RS=1 indica um dado a ser escrito no display (um caractere alfanumérico). Assim, para se escrever um byte de controle no display recomenda-se a seguinte seqüência: 1. RS=0, R/W=0, E=0 2. byte de comando na via de dados 3. RS=0, R/W=0, E=1 4. RS=0, R/W=0, E=0 , gerando a borda de descida 5. RS=0, R/W=1, E=0 Para se escrever um byte de dados no display recomenda-se a seguinte seqüência: 1. RS=1, R/W=0, E=0 2. byte de dado na via de dados 3. RS=1, R/W=0, E=1 4. RS=1, R/W=0, E=0 , gerando a borda de descida 5. RS=1, R/W=1, E=0 Entre cada escrita na porta paralela, deve-se colocar um atraso da ordem de milisegundos. 4.1 Inicialização do display Toda vez que o display é alimentado, um processo de inicialização deve ser executado. Este procedimento consiste no envio de um grupo de instruções para configurar o display no modo de execução normal. Para inicializá-lo pode-se enviar a seguinte seqüência de bytes de controle típica: 0x38, 0x38, 0x38, 0x06, 0x0C, 0x01. Todo o processo de inicialização é realizado com RS e R/W ambos em nível 0. O código hexadecimal inicial “38” é enviado mais de uma vez para garantir que o display assuma o modo de operação de tamanho 8 bits. O controle “0x01” limpa o display. Uma vez que o display esteja inicializado, pode-se escrever um dado, ex: enviando o byte 0x41 o display apresenta o caractere "A" (0x41 é o seu código ASCII). Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS 6 Laboratório de Processadores I 5. DISPLAY NA PORTA PARALELA DO MC68000 O hardware necessário à experiência (MC68000, interface paralela e display) será fornecido já montado, pronto para ser utilizado. O esquema elétrico da ligação do display na interface paralela é mostrado na Figura 3. Figura 3 – Ligação do Display a uma Porta Paralela A conexão dos principais sinais é apresentada na Tabela 2. Tabela 2 – Conexão dos Principais Sinais do Display. J7 sinal pino na porta paralela conexão com o display 1 E auto line feed 14 initialize printer 16 _ R/W RS 17 data strobe Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS Laboratório de Processadores I 7 6. PARTE EXPERIMENTAL A parte experimental consiste em interligar um display alfanumérico ao microprocessador da Placa Experimental. Esta ligação será feita por meio da porta paralela do periférico MC68230, conforme mostra a Figura 3. O programa de inicialização, controle e apresentação de dados no display, a ser elaborado em Linguagem Assembly, deverá obedecer à seguinte especificação: a) O display deverá exibir o conteúdo de oito posições consecutivas de memória, “PCS-2497”, previamente carregadas com valores compatíveis com o padrão da tabela do Apêndice II. b) Implementar um programa que apresenta a seqüência de caracteres “PCS-2497” da memória RAM de forma circulante no display, em uma de suas linhas. c) Modificar o item “b” de modo que o vetor de caracteres seja mostrado de forma circulante nas duas linhas (percorrer toda a primeira linha e continuar na segunda linha e depois voltar para a primeira linha). d) Modificar o item “b” de modo que o vetor de caracteres percorra a primeira linha, deslocando-se para a direita e, ao chegar ao final voltar, deslocando-se para a esquerda. 7. PLANEJAMENTO Elaborar o planejamento conforme modelo e trazer impresso para a aula. Estruture o programa a ser elaborado de acordo com o sugerido no Apêndice I 8. BIBLIOGRAFIA [1] ALFACOM. Módulos Multi-Matrix - Manual de Utilização. [2] AZTEC C68k/ROM - Cross Developement System - Version 3.4, November 1987, Manx Software Systems, Inc. [3] CUGNASCA, C.E. & ZERBINI, R.C. Experiência nº 3 - Familiarização com Periféricos de Entrada e Saída: Interface com Display. EPUSP, 1989. [4] INTEL. Especificações Técnicas do Componente 8279. [5] MOTOROLA. MC68230 - Peripheral Interface and Timer (PI/T). Motorola Inc. [6] SHELLY, INC. Site da empresa: http://www.shellyinc.com/products/DotMatrix.htm. Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS Laboratório de Processadores I 8 APÊNDICE I – ESTRUTURA BÁSICA DO PROGRAMA /* ENDEREÇOS DE REGISTRADORES DO MC68230 /* /* /* /* /* PADR - 0xFE8011 */ PACR - 0xFE800D */ PBCR - 0xFE800F */ PADDR - 0xFE8005 */ PBDDR - 0xFE8007 */ /* Hardware: 1) O conector JP7 deve estar fechado com um jumper para que os sinais de J7 sejam passados para J8 = conector da porta paralela. 2) NÃO SERÁ UTILIZADO O SINAL DE R/W/ NESTA EXPERIÊNCIA. ASSIM, ELE SERÁ CONECTADO AO PINO 21 (TERRA) DO CONECTOR J7 DA PLACA. Software de interface com o Hardware // 1) Criar uma rotina para inicializar a porta paralela (configura as portas A e B do MC68230) INICPIA: MOVE.B MOVE.B MOVE.B MOVE.B MOVE.B RTS #0x30,0xFE8001 #0xA0,0xFE800D #0xA0,0xFE800F #0xFF,0xFE8005 #0xFF,0xFE8007 // 2) CRIAR UMA ROTINA QUE ENVIA UMA SEQUENCIA DE BYTES PARA GERAR OS SINAIS DE CONTROLE DESCRITOS NA FIGURA 2, NO MODO ENVIAR DADO. O BYTE DE DADO A SER ENVIADO DEVE ESTAR GUARDADO EM UM REGISTRADOR OU EM UMA POSIÇÃO DA MEMORIA. DADO: // 2) CRIAR UMA ROTINA QUE ENVIA UMA SEQUENCIA BYTES PARA GERAR OS SINAIS DE CONTROLE DESCRITOS NA FIGURA 2 NO MODO ENVIAR CONTROLE. O BYTE DE CONTROLE A SER ENVIADO DEVE ESTAR GUARDADO EM UM REGISTRADOR OU EM UMA POSIÇÃO DA MEMORIA. CONTROLE: Para fazer as rotinas DADO e CONTROLE, deve-se mexer nos sinais RS e E, como explicado no item 4. R/W/ = 0 por hardware. PARA ENVIAR DADOS PARA A VIA DE DADOS DEVE-SE UTILIZAR: MOVE.B dado,PADR PARA MODIFICAR O ENABLE (usado na rotina para enviar um byte de controle ou de dados para o display) E = 0 -> PACR = 0xA8 E = 1 -> PACR = 0xA0 PARA MODIFICAR O RS (usado na rotina para enviar um byte de controle ou de dados para o display) RS = 0 -> PBCR = 0xA8 RS = 1 -> PBCR = 0xA0 Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS Laboratório de Processadores I 9 /* CRIAR UMA ROTINA DE INICIALIZACAO DO DISPLAY, QUE MANDE OS COMANDOS DE CONTROLE INDICADOS NO ITEM 4. */ INIC: */ .TEXT .GLOBL MAIN .MAIN: /* 1. inicializar a porta paralela */ JSR INICPIA /* 2. APOS A PORTA PARALELA TER SIDO CONFIGURADA, A ROTINA DE INICIALIZACAO DO DISPLAY É CHAMADA – ver item 4.*/ JSR INIC /* A PARTIR DAQUI, PODE-SE COMECAR A ENVIAR DADOS OU CONTROLE PARA O DISPLAY. EXEMPLO: MOVE.B JSR JSR #0x41,local DADO ou CONTR COM ESTE COMANDO, A ROTINA QUE ENVIA DADOS DEVE BUSCAR O BYTE #0x41 NO LOCAL QUE FOI DEFINIDO E ENVIA-LO PARA O DISPLAY, SEGUNDO A SEQUENCIA DEFINIDA NA APOSTILA. */ /* ESTA ROTINA DE LOOP SERVE PARA FINALIZAR O PROGRAMA, APÓS TEREM SIDO ENVIADOS TODOS OS DADOS/CONTROLE. */ LOOP: BRA LOOP /* CRIAR UMA ROTINA DE DELAY ESSA ROTINA É IMPORTANTE, POIS DEVE HAVER UM TEMPO MÍNIMO ENTRE ALGUNS SINAIS SEGUNDO A CARTA DE TEMPO PARA LEITURA E ESCRITA DE DADOS.*/ DELAY: Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS 10 Laboratório de Processadores I APÊNDICE II – CARACTERISTICAS DO DISPLAY O display utilizado na experiência tem 2 linhas de 20 caracteres cada. A seqüência de inicialização que está na apostila limpa o display e desloca o cursor para o inicio da 1ª. linha. Cada caractere pode ser endereçado individualmente. A tabela a seguir mostra o endereço de cada um deles. LINHA 1 LINHA 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 Para endereçá-los é preciso enviar um byte de controle contendo o valor do caractere. Por exemplo, para se endereçar o 7º. caractere da 1a linha, envia-se o byte 0x86 como controle. Após receber este caractere de controle, o registrador de endereço do display é incrementado automaticamente para receber o próximo caractere (após receber o caractere, portanto, o registrador estará com o valor 0x87 nesse exemplo). Vários caracteres podem ser enviados para serem exibidos no display. Os mais utilizados estão na tabela a seguir: 2 3 4 5 6 7 0 (espaço) 0 @ P ` p 1 ! 1 A Q a q 2 " 2 B R b r 3 # 3 C S c s 4 $ 4 D T d t 5 % 5 E U e u 6 & 6 F V f v 7 ' 7 G W g w 8 ( 8 H X h x 9 ) 9 I Y I y A * : J Z j z B + ; K [ k { C , < L ¥ l | D - = M ] m } E . > N ^ n -> F / ? O _ o <- Para se enviar a letra H ao display, por exemplo, deve-se enviar o valor 0x48 como dado. A tabela completa está no manual do display Alfacom [1]. Escola Politécnica da USP/Departamento de Engenharia de Computação e Sistemas Digitais - PCS