Ir ao conteúdo
  • Cadastre-se

PIC Simulator IDE com saida analógica


Savant_rj

Posts recomendados

Ok,ok vejo que és iniciante, primeiro, a unica forma de se gerar um sinal analógico em um microcontrolador PIC usando uma saida é com um sinal em PWM, se não souber o que é sugiro primeiro que procures por modulação por largura de pulsos,

Mas se ja souber do que se trata, então o sinal de PWM pode ser gerado usando um modulo dedicado do PIC chamado de CCP, com ele voce pode gerar um sinal onde mudando o valor do registrador CCP1RL e os bits 5 e 4 do registrador CCP1CON voce tera um valor de tensão média variavel na saida.

mais duvidas va perguntando.

abs.

Link para o comentário
Compartilhar em outros sites

certo, comecei a ler sobre isso... achei no próprio site do fabricante um exemplo(http://www.oshonsoft.com/picbasiccompilerexamples.html - exemplo 6)... mas lá ví que usou apenas a porta CCP... então, só posso ter UMA saida com esse recurso(variar a intensidade do LED)?

Fiz um projeto que apresenta 7 led's. Eles acendem com 5 sequencias definidas. e o que quero incluir é isso, fazer com que ele não acenda do nada(on/off)... quero que numa das sequencias, ele vá acendendo aos pouco até chegar ao brilho máximo(5V na saida do pino)... e depois vá apagando.

Segue abaixo cópia do código usado.

=================================

Define CONF_WORD = 0x3ff1

TRISA = 0xff 'todos os pinos como entrada

TRISB = 00000001b

INTCON.INTE = 1 'enable RB0/INT interrupts

INTCON.GIE = 1 'enable all un-masked interrupts

Dim digito As Byte 'os números que vamos mostrar, de 0 a 9

Dim chave As Byte

Dim ct As Byte

Dim saida As Byte 'padrão de segmentos dos números 0 a 9

chave = 0

sempre:

Select Case chave

Case 0

PORTB = 0xfe

Case 1

ct = chave

PORTB = 0x00

For digito = 0 To 6

saida = LookUp(0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80), digito

If ct <> chave Then digito = 7

PORTB = saida

'WaitMs 250

Next digito

Case 2

ct = chave

PORTB = 0x00

For digito = 0 To 6

saida = LookUp(0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02), digito

PORTB = saida

If ct <> chave Then digito = 7

'WaitMs 250

Next digito

Case 3

ct = chave

PORTB = 0x00

For digito = 0 To 6

saida = LookUp(0xfc, 0xfa, 0xf6, 0xee, 0xde, 0xbe, 0x7e), digito

PORTB = saida

If ct <> chave Then digito = 7

'WaitMs 250

Next digito

Case 4

ct = chave

PORTB = 0x00

For digito = 0 To 6

saida = LookUp(0x7e, 0xbe, 0xde, 0xee, 0xf6, 0xfa, 0xfc), digito

PORTB = saida

If ct <> chave Then digito = 7

'WaitMs 250

Next digito

EndSelect

Goto sempre

End

On Interrupt 'interrupt routine

chave = chave + 1 'decrement the value on PORTA

If chave > 4 Then chave = 0

'WaitMs 400

INTCON.INTF = 0 'enable new RB0/INT interrupts

Resume

Link para o comentário
Compartilhar em outros sites

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...