Ir ao conteúdo

Matriz de led-Pic Simulator IDE-Dúvida: Comandos For/Next/Lookup + ShiftLeft


TECHNOSAT

Posts recomendados

Postado

Boa tarde a todos.

Continuando meu aprendizado em BASIC no PIC Simulator IDE estou tentando escrever em uma Matriz de Led 8X8 o nome "PEDRO", o que mais ou menos já consegui com os comandos For/Next/Lookup.

Entretanto, não estou obtendo êxito em fazer a rolagem das letras (shiftRight e ShiftLeft).

Seguem abaixo a foto do hardware feito no Proteus em que estou fazendo as experiências e os códigos que desenvolvi.

Não sei se este é o caminho certo, mas em fim, estudando sozinho por informações da internet foi o que consegui.

O programa abaixo com a palavra "PEDRO" é o que eu gostaria que funcionasse a roalgem das letras. O programa com a letra "P" foi uma das várias tentativas de fazer a coisa funcionar.

Se alguém puder dar uma luz de como fazer a rolagem das letras e ficaria imensamente grato.

http://img543.imageshack.us/img543/6108/matrizled16f877a.png

Palavra "PEDRO" (sem rolagem)

Define CONF_WORD = 0x3f71
TRISB = 0x00
TRISD = 0x00
AllDigital
Dim digito As Byte
Dim mascara As Byte
Dim desmascara As Byte

loop:
For digito = 0 To 7
mascara = LookUp(0, 0, 0, 254, 18, 18, 30, 0), digito 'P
PORTB = mascara
WaitMs 1
Gosub rotina
Next digito
PORTB = 0
WaitMs 1000

For digito = 0 To 7
mascara = LookUp(0, 0, 0, 254, 146, 146, 146, 0), digito 'E
PORTB = mascara
WaitMs 1
Gosub rotina
Next digito
PORTB = 0
WaitMs 1000

For digito = 0 To 7
mascara = LookUp(0, 0, 0, 254, 130, 130, 124, 0), digito 'D
PORTB = mascara
WaitMs 1
Gosub rotina
Next digito
PORTB = 0
WaitMs 1000

For digito = 0 To 7
mascara = LookUp(0, 0, 0, 254, 50, 82, 158, 0), digito 'R
PORTB = mascara
WaitMs 1
Gosub rotina
Next digito
PORTB = 0
WaitMs 1000

For digito = 0 To 7
mascara = LookUp(0, 0, 0, 254, 130, 130, 254, 0), digito 'O
PORTB = mascara
WaitMs 1
Gosub rotina
Next digito
PORTB = 0
WaitMs 1000
Goto loop
End

rotina:
desmascara = LookUp(11111110b, 11111101b, 11111011b, 11110111b, 11101111b, 11011111b, 10111111b, 01111111b), digito
PORTD = desmascara
Return

Letra "P" (tentativa rolagem)

Define CONF_WORD = 0x3f71
TRISB = 0x00
TRISD = 0x00
AllDigital
Dim digito As Byte
Dim mascara As Byte
Dim desmascara As Byte

loop:
PORTB = 0
PORTD = 0
For digito = 0 To 255
mascara = LookUp(0, 0, 0, 126, 18, 18, 30, 0), digito 'letra P
PORTB = mascara
WaitMs 1
Gosub rotina
Next digito
Gosub goright
WaitMs 1
Goto loop
End
rotina:
desmascara = LookUp(11111110b, 11111101b, 11111011b, 11110111b, 11101111b, 11011111b, 10111111b, 01111111b), digito
PORTD = desmascara
Return
goright:
WaitUs 5
PORTB = ShiftLeft(PORTB, 1)
Return

Obrigado

Technosat

Postado

Technosat,

Repare que eu fui o autor desse tópico e do Tutorial sobre Programaçao em Basic com o PSI, mas não acompanho mais, porque esse Basic é bem limitado.

Já que voce se sente à vontade com Basic, porque voce não muda para o Bascom, e utilizar os miçroprocessadores da Linha Atmega, que são bem baratos e bem completos ?

Por exemplo, um Atmega328 pode ser comprado no Ebay por meros US$ 4 , e te dá 32k de flash e 8k de RAM !

A simulação pode ser feita no Proteus, de uma forma bem profissional.

Eu tenho um tutorial sobre isso, está nos tópicos separados , experimente baixar e dar uma lida, creio que voce vai gostar bastante !

Paulo

Postado
Technosat,

Repare que eu fui o autor desse tópico e do Tutorial sobre Programaçao em Basic com o PSI, mas não acompanho mais, porque esse Basic é bem limitado.

Já que voce se sente à vontade com Basic, porque voce não muda para o Bascom, e utilizar os miçroprocessadores da Linha Atmega, que são bem baratos e bem completos ?

Por exemplo, um Atmega328 pode ser comprado no Ebay por meros US$ 4 , e te dá 32k de flash e 8k de RAM !

A simulação pode ser feita no Proteus, de uma forma bem profissional.

Eu tenho um tutorial sobre isso, está nos tópicos separados , experimente baixar e dar uma lida, creio que voce vai gostar bastante !

Paulo

Paulo...É uma grande honra poder conversar com você sobre BASIC

Em verdade, seus tutoriais sobre PSI e Bascon há algum tempo já são minha "leitura de cabeceira"

Ocorre que estou em fase de transição para o BASCON pois ainda não tenho o gravador e nem placa para testes, enquanto que para o pic eu já dispunha deste material

Eu acompanho de perto todas as suas publicações aqui no Fórum e decidi aprender BASCON exatamente porque vi você postar para outro integrante que se trata de um programa bem mais poderoso, assim como os ATMEGA são processadores mais completos.

Eu realmente me sinto mais a vontade com o BASIC que, para mim, tem mais sentido, além de que conheço bem o idioma inglês.

Estarei estudando esta nova plataforma para tentar reformular este projeto com o ATMEGA e espero contar com seus apoio e paciência:) caso eu surja alguma dúvida sobre o BASCON.

Cordialmente

Technosat^_^

  • mês depois...
Postado

Bom pessoal. Desculpem por estar desenterrando este tópico mas é só para compartilhar conhecimento e encerrá-lo novamente do modo correto.

Depois de muitas tentativas e erros, acabei chegando à solução do problema como se pode ver pelo código abaixo.

Apenas quero pedir desculpas pelo fato das letras estarem rolando ao contrário. Tive que fazer isso pois a matriz que montei aqui em casa tava ao contrário, por isso tive que mudar o padrão, para na prática ficar correto e ficou.

Lembrando: Pic Simulator IDE e Lookup.

Senhor Moderador, por gentileza pode encerrar o tópico como Resolvido. Grato.

http://imageshack.us/photo/my-images/541/matrizled.jpg/

TRISA = 0

TRISB = 0

AllDigital

Symbol clock = PORTA.4 'nombramos a ra4 como clock

Symbol data = PORTA.3 'nombramos a ra3 como data

Dim c1 As Byte 'valor de la 1 columna

Dim c2 As Byte 'de la 2 columna

Dim c3 As Byte '....

Dim c4 As Byte '....

Dim c5 As Byte '....

Dim c6 As Byte '....

Dim c7 As Byte '....

Dim c8 As Byte 'y la 8 columna

Dim var As Byte 'variable para guardar los valores obtenidos de lookup

Dim lista As Byte 'variable para el numero del valor a tomar

Dim a As Byte 'variable a auxiliar para conteos

Dim b As Byte 'variable b auxiliar para conteos

inicio: 'começa o programa

Gosub limpiar 'limpiamos todas la columnas, variables y las ports

For a = 1 To 96 Step 1 ' carinha-pedro-carinha-diego

var = LookUp(60, 66, 149, 161, 161, 149, 66, 60, 0, 0, 0, 254, 18, 18, 30, 0, 0, 0, 254, 146, 146, 146, 0, 0, 0, 254, 130, 130, 124, 0, 0, 0, 254, 50, 82, 158, 0, 0, 0, 254, 130, 130, 254, 0, 0, 0, 60, 66, 149, 161, 161, 149, 66, 60, 0, 0, 0, 254, 130, 130, 124, 0, 0, 0, 130, 254, 130, 0, 0, 0, 254, 146, 146, 146, 0, 0, 0, 254, 130, 146, 242, 0, 0, 0, 254, 130, 130, 254, 0, 0, 0, 0, 0, 0, 0, 0), lista

'nuestra lista sol los valores de las columnas de la carita

'aumentando 8 ceros para que vuelva a repetirse con un espacio

'como lista esta en 0 por nuestra subrutina de limpiar toma el primer valor

c8 = var

Gosub mostrar 'mostramos el valor

lista = lista + 1 'sumamos 1 al valor de la lista para el siguiente dato en la segunda repeticion

Gosub desplazar

Next a

Goto inicio

End

limpiar:

c1 = 0

c2 = 0

c3 = 0

c4 = 0

c5 = 0

c6 = 0

c7 = 0

c8 = 0

a = 0

b = 0

var = 0

lista = 0

clock = 0

data = 0

PORTA = 0

PORTB = 0

Return

desplazar: 'con esta subrutina desplazamos los valores obtenidos

'para leer los mensajes se debe desplazar de derecha a izquierda por este motivo empezamos de la c8 en los ejemplos

'entoses los valores son desplazados a la izquierda

c1 = c2

c2 = c3

c3 = c4

c4 = c5

c5 = c6

c6 = c7

c7 = c8

Return 'volvemso a continuar nuesto programa

mostrar:

For b = 1 To 12 Step 1 'repetimos lo que muestra para apreciar el desplazamiento

PORTB = c1

data = 1

clock = 1

clock = 0

data = 0

WaitMs 2

PORTB = 0

PORTB = c2

clock = 1

clock = 0

WaitMs 2

PORTB = 0

PORTB = c3

clock = 1

clock = 0

WaitMs 2

PORTB = 0

PORTB = c4

clock = 1

clock = 0

WaitMs 2

PORTB = 0

PORTB = c5

clock = 1

clock = 0

WaitMs 2

PORTB = 0

PORTB = c6

clock = 1

clock = 0

WaitMs 2

PORTB = 0

PORTB = c7

clock = 1

clock = 0

WaitMs 2

PORTB = 0

PORTB = c8

clock = 1

clock = 0

WaitMs 2

PORTB = 0

clock = 1

clock = 0

Next b 'volver a repetir

Return

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!