Em algumas aplicações eletrônicas, tais como instrumentos de em cada um. Para o controle da con- rádiofrequência digitais, contadores industriais, cronômetros, etc é tagem ascendente nos displays é uti- lizada a linha INC e para a contagem preciso mostrar vários dígitos numéricos. Este tipo de circuito faz descendente é usada a linha DEC. A uso da multiplexação para obter um conjunto de integrados e pi- linha CLEAR zera todos os dígitos. nos no microcontrolador que faz a varredura sobre o display. Nes- A contagem ascendente/descen- dente é realizada com as bordas ne- te artigo mostraremos como implementar um controle para um gativas do sinal que entra pela linha display de 7 dígitos. INC ou DEC. Para colocar todos os dígitos em zero, deve ser produzida A maioria dos circuitos que preci- Para mostrar como se implementa uma borda negativa sobre a linha sa controlar um display de vários dígi- este tipo de circuitos na prática toma- CLEAR. Ao ligar o circuito, todos os tos utiliza a varredura e a multiple- remos como exemplo um contador as- dígitos aparecem como zero. xação de modo a diminuir os custos e cendente/descendente de 7 dígitos A porta F está configurada como a quantidade de componentes empre- manuseados por um microcontrolador. entrada por programa para poder re- gados na placa de circuito impresso. ceber os sinais de controle do display. Apesar de existirem circuitos dedica- O pino F0 recebe a linha CLEAR, o dos para realizar essa tarefa, pode-se FUNCIONAMENTO pino F1 recebe a linha DEC e o pino obter um benefício maior com a utili- F2 recebe a linha INC. zação de um microcontrolador para No caso deste circuito contador O pino F3 pode ser usado da mes- realizar a multiplexação. ascendente/descendente é necessá- ma maneira que o pino 2, ou seja, A multiplexação originou muitos rio controlar 7 displays multiplexando pode incrementar os contadores. Os algorítmos de programação para o controle de sinais, alguns dos quais já estão padronizados, principalmen- te na área de comunicações. Ela se baseia no fato de se poder controlar vários componentes ou dis- positivos eletrônicos utilizando os mesmos condutores físicos para a comunicação. Isso significa que somente um componente pode estar conectado em um determinado instante, enquanto que os demais devem permanecer desligados. Para selecionar o componente que vai receber os sinais são utilizadas var- reduras sincronizadas que, na maio- ria dos casos, são de alta velocidade.
36 SABER ELETRÔNICA Nº 332/SETEMBRO/2000
sinais para ativar estas linhas (CLEAR/ e,f,g) estão unidos nos 7 displays. Os manter essa informação por um curto DEC/INC) podem vir de algum sensor, catodos dos displays são controlados intervalo de tempo. interruptor ou circuito lógico TTL ou pela porta D devido ao fato de que ela Terminada a temporização, é se- CMOS, e o programa se encarrega de entrega 15 mA no modo sink. lecionado o dígito 2 através de Q2 e eliminar as fontes de ruído que pos- Essa porta no microcontrolador é colocado seu valor na porta D, ativan- sam vir com estes sinais. dedicada unicamente como saída e do novamente a temporização. por esse motivo não precisa ser confi- Assim, continua o mesmo proces- gurada no programa. so com os sete dígitos. CIRCUITO Os anodos dos displays são Quando o dígito 7 é ativado atra- multiplexados pela porta L através dos vés de Q7 a varredura é completada. Os 7 displays são controlados e transistores Q1 a Q7. A porta L pode É necessário repetir o processo ante- multiplexados por um microcontro- ser configurada como entrada/saída, rior (varredura) várias vezes por se- lador COP8SGR740 em conjunto com e por isso é preciso fazer isso por pro- gundo para obter uma visualização um cristal de 10 MHz para maior pre- grama. correta no display. cisão de varredura. O manuseio eletrônico da informa- Para que a retina não perceba Os displays usados são de anodo ção (números) que aparece em cada tremulações, é necessário que a var- comum e podem ser utilizados dígito é controlado pelo programa, redura seja de pelo menos umas 30 módulos que já estão conectados in- mantendo-se um sincronismo entre os vezes por segundo. ternamente para permitir a multiple- dados colocados na porta D e o tran- xação. No caso deste circuito, usa- sistor que habilita a porta L. Os dados mos um módulo de 4 displays e mais colocados na por ta D estão PROGRAMA um módulo de 3 displays de modo a decodificados internamente por pro- termos 7 displays. grama para controlar diretamente os Uma das partes mais interessan- Podem ser configurados também displays de 7 segmentos. tes deste tipo de circuito é o progra- os 7 displays com módulos indepen- A multiplexação começa selecio- ma, pois é a partir dele que se geram dentes de um só dígito, mas neste nando o dígito 1 (primeiro dígito da todos os sinais de controle e tempo- caso devem ser interligados todos os direita) por meio do transistor Q1 e rização para a varredura e multiple- pinos, exceto os que controlam os colocando o dado numérico para o xação dos displays. anodos. Para simplificar o diagrama display na porta D. Os dados numéricos que apare- eletrônico assumimos que todos os Depois, é ativada uma temporiza- cem nos displays estão armazenados catodos de cada segmento (a, b, c, d, ção de uns poucos milissegundos para na RAM do microcontrolador a partir
Figura 2
SABER ELETRÔNICA Nº 332/SETEMBRO/2000 37
CÓDIGO FONTE do endereço 10H, ocupando 7 posi- ções de memória. O programa se encarrega de de- ;************************************************************************* signar para cada dígito do display uma .incld COP8SGR.inc posição da RAM. O dado contido no BLOQUEIO = 3 endereço de RAM 10H é mostrado no .sect registro,reg dígito 1. O dado em 11H é mostrado PONTEIRO_RAM: .dsb 1 no dígito 2, e assim sucessivamente. REGISTRO: .dsb 1 Os valores contidos nestes endereços CONTROLE: .dsb 1 vão de 0 até 9. FLANG: .dsb 1 Antes de um número poder ser RETARDO: .dsb 1 mostrado no display, é necessário fa- .endsect .sectcode,rom zer sua decodificação para 7 segmen- ;************************************************************************* tos. INICIO: As sete posições da memória RAM LDPORTGC,#0x10 ;Configura a porta G como entrada exceto usadas para armazenar os dados for- LDPORTGD,#0x3F ;o pino G4. mam o contador de 7 dígitos, e são LDPORTFC,#0x00 ;Configura a porta F como entrada. controladas por um algorítmo simples. LDPORTFD,#0xFF Para uma melhor explicação tomare- LDPORTLC,#0xFF ;Configura a porta L como saída. LDPORTLD,#0xFF mos como exemplo o incremento dos LDPONTEIRO_RAM,#0x10H ;Inicializa variáveis. contadores (posições 10H até 16H). LDCONTROLE,#01H Quando o microcontrolador de- JSR RUT_CLEAR tecta uma borda de descida na linha de entrada INC, é dada passagem ao RE_INICIO: bloco do programa que gera os incre- RBIT BLOQUEIO,FLANG ;Libera o bloqueio nos pulsadores. LDRETARDO,#0xFF ;Prepara-se para evitar o ruído. mentos. ;================================================================ A primeira coisa que se faz é en- MULTIPLEXAR: dereçar a posição de RAM 10H para DRSZ REGISTRO ;Temporiza a multiplexação. incrementá-la. JMP RETAR_1 Depois, o programa testa se o va- REPETIR: LDA,PONTEIRO_RAM ;O endereço do dígito a decodificar lor é maior que 9. X A,B ;é armazenado no ponteiro B. Se for, ele coloca um zero nesta LDA,PONTEIRO_RAM ;É incrementado o endereço para INC A ;o próximo dígito. posição e o ponteiro passa para o en- XA,PONTEIRO_RAM dereço seguinte da RAM (11H) e IFNE A,#0x16H ;Compara se chegou ao último dígito. incrementa esta posição. Se o valor JMP DECODIFICAR contido ali é maior que 9, repete o pro- LDPUNTEIRO_RAM,#0x10H ;Inicializa variável da nova varredura. cedimento anterior. Se o valor é me- LDCONTROLE,#01H nor que 9 em qualquer das 7 posições JMP REPETIR da RAM, então sai deste bloco de pro- DECODIFICAR: LDPORTD,#0xFF ;Apaga o display durante uns grama. ;microssegundos. O procedimento para decrementar LDA,[B] ;Decodifica o valor encontrado no é idêntico, exceto pelo fato de que os ADD A,#L(TABLA) ;acumulador. valores contidos nestas posições de LAID RAM são testados quando são meno- X A,PORTD res que zero e, se for assim, este va- LDA,CONTROLE ;Controla os transistores na porta L. X A,PORTLD lor é mudado para 9 e decrementa-se LDA,CONTROLE ;Realiza a multiplexação. a posição seguinte. RC Os algorítmos anteriores tiram van- RLC A tagem do fato de poder endereçar a X A,CONTROLE memória RAM de maneira indireta ;================================================================ permitindo reduzir o tamanho do có- RETAR_1: DRSZ RETARDO ;Evita ruído nos pulsadores. digo gerado nos programas. JMP MULTIPLEXAR No caso deste microcontrolador LDRETARDO,#0x40 existem dois registros que podem ser IFEQ PORTFP,#0xFF ;Detecta se algum pulsador foi ativado. endereçados indiretamente à memó- JMP RE_INICIO ria RAM, denominados registros X e IFBITBLOQUEIO,FLANG ;Bloqueia o acesso aos pulsadores. B. Para apontar para uma posição de JMP MULTIPLEXAR RAM é necessário carregar o valor do SBIT BLOQUEIO,FLANG endereço em um destes registros e ;================================================================ PULSOS:IFBIT3,PORTFP ;Detecta os pulsos no pino F3. depois executar as instruções que JMP INCRE permitam o direcionamento indireto. É
38 SABER ELETRÔNICA Nº 332/SETEMBRO/2000
CÓDIGO FONTE importante notar que algumas instru- ções permitem especificar um pós-in- cremento ou pós-decremento para au- JMP INCREMENT ;Incrementa o display. tomaticamente incrementar ou ;================================================================ INCRE: IFBIT2,PORTFP decrementar o ponteiro para a posi- JMP DECRE ção seguinte da RAM. Os números armazenados nas INCREMENT: posições 10H até 16H estão em for- LDB,#0x10 ;Este bloco faz a contagem ascendente. mato decimal, ou seja, entre 0 e 9, por tanto é necessário fazer sua OUTRO_1:LDA,[B] ;Incrementa as posições de memória RAM, decodificação para o formato de 7 seg- INCA ;associadas aos displays. X A,[B] mentos. IFNE A,#0x09 Para fazer isso é gerada uma ta- JMP DECRE bela na memória de programa que LD[B+],#0x00 contenha os valores para os 7 seg- mentos, correspondentes a cada nú- JMP OUTRO_1 mero decimal. ;================================================================ DECRE: IFBIT1,PORTFP Depois, esta tabela é acessada JMP CLEAR através da instrução LAID e o número LDB,#0x10 ;Este bloco faz a contagem descendente. que necessita ser decodificado como OUTRO_2:LDA,[B] ;Decrementa os endereços associados ao display. índice. DEC A O resultado é armazenado no acu- X A,[B] mulador e pode ser enviado para a porta D. IFNE A,#0x00 JMP CLEAR Estes programas de contagem também podem usar os timers do LD[B+],#0x09 microcontrolador, mas é preciso usar JMP OUTRO_2 algorítmos para converter dados biná- ;================================================================ rios em decimal e detectar as inter- CLEAR: IFBIT0,PORTFP ;Detecta se a tecla CLEAR foi pulsada. rupções geradas para incrementar/ JMP TEST decrementar posições de memória, JSR RUT_CLEAR analogamente ao procedimento mos- trado neste programa. TEST: JMP MULTIPLEXAR ;Continua com a multiplexação. Ao controlar o microcontrolador, ;=============================================================== habilite o oscilador a cristal com a re- ;=============================================================== sistência interna, reset ao ligar, porta RUT_CLEAR: F e desabilite as demais. LD0x10,#0 ;Zera o display. LD0x11,#0 LD0x12,#0 LD0x13,#0 LISTA DE MATERIAIS LD0x14,#0 LD0x15,#0 SEMICONDUTORES: LD0x16,#0 CI1 - Microcontrolador COP8SGR740 Q1 a Q7 - Transistor 2N2222 ou RET equivalente. ;================================================================ DY1 a DY7 - Display de anodo TABELA: comum. .BYTE0xC0H ;0 ;Tabela de dados que contém os valores para .BYTE0xF9H ;1 ;excitar o display de LEDs de 7 segmentos. RESISTORES (1/8 W, 5%): .BYTE0xA4H ;2 R1 a R7 - 180 Ω .BYTE0xB0H ;3 R8 a R14- 1 kΩ .BYTE0x99H ;4 .BYTE0x92H ;5 CAPACITORES: .BYTE0x82H ;6 C1 e C2 - 33 pF - cerâmico. .BYTE0xF8H ;7 C3 - 100 nF - cerâmico. .BYTE0x80H ;8 C4 - 10 µF - eletrolítico. .BYTE0x90H ;9 .BYTE0xFFH ;A DIVERSOS: .BYTE0x86H ;E .endsect X1 - Cristal de10 MHz. ;================================================================ Matriz de contatos, fios, etc. .end INICIO