Fórum Eletrônica2002 (Brasil)
Seja bem vindo ao fórum Eletrônica2002.

Para ter acesso a todo o conteúdo do fórum você precisa estar cadastrado e fazer o login!

Se não é cadastrado no fórum: aproveite e faça.

Para criar um tópico, você precisa se cadastrar e estar conectado.
Ao criar um tópico, vc deve colocar a marca/modelo/e defeito do aparelho no título do tópico. Isto é regra neste fórum!
http://eletronica2002.forumeiros.com/forum-de-reparacao-de-aparelhos-eletronicos-f1/regras-do-forum-t19731.htm

Falar com o administrador?
Mande um e-mail: valdeni@eletronica2002.com.br
.
Menu de navegação


Clique nas imagens abaixo para acessar os fóruns desejados.

Fóruns:





---------------------------

PARCEIROS

E PATROCINADORES

DO FÓRUM 2002:

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

Clique nos banners:




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

Quer ser um patrocinador do fórum?

Mande um e-mail para:

Valdeni@eletronica2002.com.br


_________________
Últimos assuntos
» Multímetro Hikari HM2090 danificado.
Hoje à(s) 00:57 por Teimoso

» som multilaser sp250 sem audio
Hoje à(s) 00:18 por Teimoso

» APARELHO DE SOM PHILIPS FWM-416 NÃO ACIONA A FUNÇÃO CD
Ontem à(s) 23:27 por Oficina do SOM

» Som Sony HCD-GT55 mensagem EJECT desligando
Ontem à(s) 23:25 por Oficina do SOM

» Microondas Panasonic NN-S50BH inoperante
Ontem à(s) 15:34 por Paranista

» PHILCO PLATINUM TP-1452N ITAUTEC - SÓ FICA EM STAND BY
Ontem à(s) 12:45 por MARIO Y. SEGAWA

» micro ondas electrolux MEF28
Ontem à(s) 10:37 por manoel geovani

» Reparo em Solda Inversora Balmer Maxxiarc 162DV
Ontem à(s) 10:24 por Marcos Piva

» Gradiente AT 51
Ontem à(s) 08:47 por Nill

» Como Prolongar vida util da Ponteira do Ferro de Solda
Sex 17 Ago 2018, 17:22 por kir

» som aiwa modelo cxz51lh defeito sem som
Sex 17 Ago 2018, 14:33 por gerldo

» como você pode transformar um antigo alicate em uma ferramenta multifuncional.
Sex 17 Ago 2018, 10:28 por kir

» Como fazer um Mancal caseiro.facilita seus projetos!
Sex 17 Ago 2018, 10:12 por kir

» cd player Pionner 2350UB saida queimada
Sex 17 Ago 2018, 08:16 por Nill

» video cassete
Sex 17 Ago 2018, 08:15 por Nill

» Tv mitsubishi TC2098 sem imagem, som e caracteres normais.
Qui 16 Ago 2018, 17:24 por CARLOS AMARAL

» No-break Hagtech easy pro 1200 inverter não arma.
Qui 16 Ago 2018, 16:10 por Paranista

»  mini system philco ph 650, travando as funcoes depois de 1 minuto ligado
Qui 16 Ago 2018, 15:09 por Oficina do SOM

» System lg // cm 8330 // sem som e não modula
Qui 16 Ago 2018, 14:51 por DANTEX

» Como fazer um Buzzer de Speaker Simples na Falta !
Qui 16 Ago 2018, 10:14 por kir

» playstation 2 slim scph 90006 nao le e cooler nao gira
Qua 15 Ago 2018, 19:38 por shergio

» microondas cônsul cms25abhna diodo duplo = Resolvido
Qua 15 Ago 2018, 14:56 por Roberto Soares

» MICRO SYSTEM PHILIPS FWM452X/78 SEM ÁUDIO
Qua 15 Ago 2018, 13:45 por Oficina do SOM

» tv de tubo sony (kv29fs100) imagem cortando
Qua 15 Ago 2018, 13:24 por Edwilson

» Home Theater LG HT306SU - Sem som
Qua 15 Ago 2018, 11:44 por brlac3rda

» SONY HCD-N555AV não faz leitura de CD- Preciso de ajuda!
Qua 15 Ago 2018, 11:42 por CARLOS AMARAL

» [Resolvido]TRANSCEPTOR KENWOOD TS-130SE SEM TRANSMISSÃO
Qua 15 Ago 2018, 09:34 por Roberto Soares

» teclado yamaha psr s 750
Qua 15 Ago 2018, 09:29 por Oficina do SOM

» CAIXA ATIVA JBL EON 515XT NÃO LIGA
Qua 15 Ago 2018, 09:17 por Oficina do SOM

» Amplificador Warm Music GT208 - Distorcido
Qua 15 Ago 2018, 09:05 por Oficina do SOM

Quem está conectado
172 usuários online :: 8 usuários cadastrados, Nenhum Invisível e 164 Visitantes :: 2 Motores de busca

altair mendes, joaquimrosadesouza, jomiese, laelio mendes, MARIO Y. SEGAWA, Roberto Soares, Ronaldo LSA, wallter

O recorde de usuários online foi de 1034 em Sex 24 Jul 2015, 10:41

tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Ir em baixo

tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Mensagem por arminda em Dom 14 Set 2014, 17:07

Olá boa tarde a todos, estou querendo modificar um projeto que fiz a um bom tempo, mas to enrolado aqui.
trata-se de um tímer em que o usuário coloca os minutos e segundos desejados através de 4 teclas, aperta start e ele começa a contar em ordem
decrecente o tempo programado. até aqui tenho ele funcionando certinho.
pois bem agora surgio novas idéias e eu gostaria de acrecentar nele um contador que funcionasse da seguinte forma: a cada vez que o timer
chegasse ao final da contagem do tempo programado, o contador contasse 1, ai eu defino novamente outro tempo para o timer e quando chegar ao fim conte 2, e assim por diante.

caso alguem tenha ideias palpites perguntas comenta ai... Very Happy


meu codigo:

Código:


sbit LCD_RS at RB4_bit;  // pinos do LCD
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB3_bit;
sbit LCD_D5 at RB2_bit;
sbit LCD_D6 at RB1_bit;
sbit LCD_D7 at RB0_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB3_bit;
sbit LCD_D5_Direction at TRISB2_bit;
sbit LCD_D6_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB1_bit;

int contagem;//VARIAVEIS
short minutos,segundos;
bit start,oldstate1,oldstate2;

void interrupt()//ROTINA DE INTERRPÇÃO
{
contagem++;
TMR0 = 0;// carrrega TMR0 com o valor 0
INTCON.T0IF=0;//limpa a flag de interrupção
}

void main() //CONFIGURAÇÃO DOS REGISTROS
{
INTCON.GIE=1;  //habilita interrupcao global
INTCON.PEIE = 1; //habilita interrupção dos perifericos;
INTCON.T0IE=1; //habilita interrupcao do timer0
TMR0 = 0;//carrega TMR0 com o valor 0
OPTION_REG=0b10000001; //configura timer0( prescaler 1:4 )
CMCON = 0b11111111;//desliga comparador analogico
TRISB=0b00000000;//define todas os pinos da portb como saidas
TRISA=0b11110111;//define todas os pinos da porta como entradas exeto pino a3
PORTB.F6=0;//pino RB6 saida para rele de carga
PORTA.F3=0;//pino RA3 led timer segundos
PORTB.F7=0;//pino RB7 beep
segundos=0;//DEFINIÇÃO DE VALOR DAS VARIÁVEIS
minutos=0;
start=0;
oldstate1=0;
oldstate2=0;
Lcd_Init();
Lcd_Out( 2, 1, "LINDOMAR PISETTA" );
Lcd_Out( 1, 1, " TIMER DIGITAL " );
delay_ms(700);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out( 1, 1, "Versao 1.1 Rev B" );
Lcd_Out( 2, 1, "15/02/2014" );
delay_ms(700);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out( 2, 7, "OFF   " );

while(1)
{
if(contagem>=946) //valor mais alto atrasa relogio, mais baixo adianta
{                  //947 atrasou 10 seg, 946 adiantou 7 seg
contagem = 0;
if(start)
  {
   PORTA.F3=~PORTA.F3;//se o led timer estiver ON entao OFF e vice versa
   PORTB.F6=1;//liga rele ao inicio da contagem de tempo
   Lcd_Out(2,7," ON    " );//escreve ON no display ao iniciar contagem de tempo
   segundos--;
   if(segundos<0)
     {
      segundos=59;
      minutos--;
      if(minutos<0)
           {
           minutos=0;
           segundos=0;
           start=0;
           PORTB.F6=0;//desliga rele ao final da contagem do tempo
           PORTA.F3=1;//led segundos, 0= led OFF, 1= led ON, ao final da contagem
           Lcd_Out(2,7,"OFF   ");//escreve OFF ao final da contagem do tempo
               PORTB.F7=1;//inicia a sequencia 3 beeps
           delay_ms(1000);
               PORTB.F7=0;
           delay_ms(1000);
               PORTB.F7=1;
           delay_ms(1000);
               PORTB.F7=0;
           delay_ms(1000);
               PORTB.F7=1;
           delay_ms(1000);
               PORTB.F7=0;//fim beep
           }
       }
   }
}

{          //tecla de minutos up
if(PORTA.F1)
    {
    oldstate1=1;
    }
if(PORTA.F1 && oldstate1)
        {
        oldstate1=0;
        minutos++;
        if(minutos==90) minutos=0;
        PORTB.F7=1;
        delay_ms(100);
        PORTB.F7=0;
        }
}

{           //tecla de minutos down
if(PORTA.F0)
    {
    oldstate1=1;
    }
if(PORTA.F0 && oldstate1)
        {
        oldstate1=0;
        minutos--;
        if(minutos== ~ 0) minutos=90;
        PORTB.F7=1;
        delay_ms(100);
        PORTB.F7=0;
        }
}

{           //tecla de segundos up
if(PORTA.F7)
    {
    oldstate1=1;
    }
if(PORTA.F7 && oldstate1)
        {
        oldstate1=0;
        segundos++;
        if(segundos==59) segundos=0;
        PORTB.F7=1;
        delay_ms(100);
        PORTB.F7=0;
        }
}

{          //tecla de segundos down
if(PORTA.F6)
    {
    oldstate1=1;
    }
if(PORTA.F6 && oldstate1)
        {
        oldstate1=0;
        segundos--;
        if(segundos== ~ 0) segundos=59;
        PORTB.F7=1;
        delay_ms(100);
        PORTB.F7=0;
        }
}
if(PORTA.F2)//tecla start/pause
{
oldstate2 = 1;
}
if(!PORTA.F2 && oldstate2)
{
oldstate2 = 0;
PORTB.F6=0;//desliga rele quando em contagem de tempo é pressionado start/pause
PORTA.F3=0;//desliga led pisca segundos quando em modo pause de tempo
start = ~ start;
Lcd_Out(2,9,"PAUSE");
}

Lcd_Out( 1, 1, "TEMPO" ); //escreve tempo
Lcd_Out( 1, 7, "RELE " );  //escreve rele
Lcd_Chr( 2, 1, minutos/10 + '0' );
Lcd_Chr_CP( minutos%10 + '0' );
Lcd_Chr_CP( ':' );
Lcd_Chr_CP( segundos/10 + '0' );
Lcd_Chr_CP( segundos%10 + '0' );
}
}


avatar
arminda
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em informática
TEMPO DE EXPERIÊNCIA : hoby em eletronica
Sexo : Feminino
Número de Mensagens : 1
Idade : 41
Cidade/Estado: : Rio do Oeste SC
Data de inscrição : 14/09/2014

Voltar ao Topo Ir em baixo

Re: tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Mensagem por nagkiller em Seg 15 Set 2014, 23:06

Já pensou em inserir um novo inteiro somando???

[Você precisa estar registrado e conectado para ver esta imagem.]

Código:

//*****************************************************************************
// MikroC Compiler for PIC
//*****************************************************************************
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB3_bit;
sbit LCD_D5 at RB2_bit;
sbit LCD_D6 at RB1_bit;
sbit LCD_D7 at RB0_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB3_bit;
sbit LCD_D5_Direction at TRISB2_bit;
sbit LCD_D6_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB0_bit;
// End LCD module connections

int contagem;//VARIAVEIS
int vezes;
short minutos,segundos;
bit start,oldstate1,oldstate2;

void interrupt()              //ROTINA DE INTERRPÇÃO
{
  INTCON.T0IF=0;          //limpa a flag de interrupção
  TMR0 = 0;                // carrrega TMR0 com o valor 0
  contagem++;
}

void main()                //CONFIGURAÇÃO DOS REGISTROS
{
  INTCON.GIE = 1;          //habilita interrupcao global
  INTCON.PEIE = 1;        //habilita interrupção dos perifericos;
  INTCON.T0IE = 1;        //habilita interrupcao do timer0
  TMR0 = 0;                //carrega TMR0 com o valor 0
  OPTION_REG = 0b10000001; //configura timer0( prescaler 1:4 )
  CMCON = 0b11111111;      //desliga comparador analogico
  TRISB = 0b00000000;      //define todas os pinos da portb como saidas
  TRISA = 0b11110111;      //define todas os pinos da porta como entradas exeto pino a3
  PORTB.F6 = 0;            //pino RB6 saida para rele de carga
  PORTA.F3 = 0;            //pino RA3 led timer segundos
  PORTB.F7 = 0;            //pino RB7 beep
  segundos = 0;            //DEFINIÇÃO DE VALOR DAS VARIÁVEIS
  minutos = 0;
  start = 0;
  oldstate1 = 0;
  oldstate2 = 0;
  vezes = 0;
  Lcd_Init();
  Lcd_Out( 2, 1, "LINDOMAR PISETTA" );
  Lcd_Out( 1, 1, " TIMER DIGITAL " );
  delay_ms(700);
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Out( 1, 1, "Versao 1.1 Rev C" );
  Lcd_Out( 2, 1, "15/09/2014" );
  delay_ms(700);
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Cmd(_LCD_CURSOR_OFF);
  Lcd_Out( 2, 7, "OFF   " );

  while(1)
  {
    if(contagem >= 946)    //valor mais alto atrasa relogio, mais baixo adianta
    {                      //947 atrasou 10 seg, 946 adiantou 7 seg
      contagem = 0;
      if(start)
      {
        PORTA.F3=~PORTA.F3;//se o led timer estiver ON entao OFF e vice versa
        PORTB.F6 = 1;//liga rele ao inicio da contagem de tempo
        Lcd_Out(2,7," ON    " );//escreve ON no display ao iniciar contagem de tempo
        segundos--;
        if(segundos < 0)
        {
          segundos = 59;
          minutos--;
          if(minutos < 0)
          {
            minutos = 0;
            segundos = 0;
            start = 0;
            PORTB.F6 = 0;//desliga rele ao final da contagem do tempo
            PORTA.F3 = 1;//led segundos, 0= led OFF, 1= led ON, ao final da contagem
            Lcd_Out(2,7,"OFF   ");//escreve OFF ao final da contagem do tempo
            PORTB.F7 = 1;//inicia a sequencia 3 beeps
            delay_ms(1000);
            PORTB.F7 = 0;
            delay_ms(1000);
            PORTB.F7 = 1;
            delay_ms(1000);
            PORTB.F7 = 0;
            delay_ms(1000);
            PORTB.F7 = 1;
            delay_ms(1000);
            PORTB.F7 = 0;//fim beep
            vezes++;
          }
        }
      }
    }
    //tecla de minutos up
    if(PORTA.F1)
    {
    oldstate1=1;
    }
    if(PORTA.F1 && oldstate1)
    {
      oldstate1=0;
      minutos++;
      if(minutos==90) minutos=0;
      PORTB.F7=1;
      delay_ms(100);
      PORTB.F7=0;
    }
    //tecla de minutos down
    if(PORTA.F0)
    {
      oldstate1=1;
    }
    if(PORTA.F0 && oldstate1)
    {
      oldstate1=0;
      minutos--;
      if(minutos== ~ 0) minutos=90;
      PORTB.F7=1;
      delay_ms(100);
      PORTB.F7=0;
    }
    //tecla de segundos up
    if(PORTA.F7)
    {
      oldstate1=1;
    }
    if(PORTA.F7 && oldstate1)
    {
      oldstate1=0;
      segundos++;
      if(segundos==59) segundos=0;
      PORTB.F7=1;
      delay_ms(100);
      PORTB.F7=0;
    }
    //tecla de segundos down
    if(PORTA.F6)
    {
      oldstate1=1;
    }
    if(PORTA.F6 && oldstate1)
    {
      oldstate1=0;
      segundos--;
      if(segundos== ~ 0) segundos=59;
      PORTB.F7=1;
      delay_ms(100);
      PORTB.F7=0;
    }
    if(PORTA.F2)        //tecla start/pause
    {
      oldstate2 = 1;
    }
    if(!PORTA.F2 && oldstate2)
    {
      oldstate2 = 0;
      PORTB.F6=0;//desliga rele quando em contagem de tempo é pressionado start/pause
      PORTA.F3=0;//desliga led pisca segundos quando em modo pause de tempo
      start = ~ start;
      Lcd_Out(2,9,"PAUSE");
    }

    Lcd_Out( 1, 1, "TEMPO" );  //escreve tempo
    Lcd_Out( 1, 7, "RELE " );  //escreve rele
    Lcd_Chr( 2, 1, minutos/10 + '0' );
    Lcd_Chr_CP( minutos%10 + '0' );
    Lcd_Chr_CP( ':' );
    Lcd_Chr_CP( segundos/10 + '0' );
    Lcd_Chr_CP( segundos%10 + '0' );
    Lcd_Out( 1, 14, "VEZES" );
    Lcd_Chr( 2, 14, vezes/10 + '0' );
    Lcd_Chr_CP( vezes%10 + '0' );
  }
}


Última edição por nagkiller em Qui 24 Dez 2015, 13:13, editado 4 vez(es)

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
avatar
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1767
Idade : 37
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Mensagem por yuri gagarin nicolsky em Ter 22 Dez 2015, 09:30

OLA AMIGO,EU SOU RECÉM CHEGADO AO FÓRUM E ESTAVA A PROCURA DE UM COD FONTE ,TIMER REGRESSIVO COM LCD.GOSTEI D + DO SEU PROJETO TERIA COMO ME ENVIAR O ESQUEMA ? POIS SOU NOVATO NA ELETRÔNICA E ESTUDO SOZINHO. ANTECIPADAMENTE OBRIGADO.
avatar
yuri gagarin nicolsky
NOVATO
NOVATO

DESCRIÇÃO: : Consumidor final (cliente)
TEMPO DE EXPERIÊNCIA : I ANO
Sexo : Masculino
Número de Mensagens : 2
Idade : 49
Cidade/Estado: : BELO HORIZONTE
Data de inscrição : 21/12/2015

Voltar ao Topo Ir em baixo

Re: tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Mensagem por nagkiller em Qui 24 Dez 2015, 13:06

Segue anexo circuito básico.

Com os comentários do próprio código, sabe-se o que serão ligados como saída ou entrada.

[Você precisa estar registrado e conectado para ver esta imagem.]

Se atente ao circuito de BUZZER (pode ou não funcionar!!!):
Caso não funcione, remova o transistor Q2, e resistor R27, um dos pinos do buzzer, conecte ao pino do resistor R27 que vai para o pino 13 do microcontrolador, e o outro pino do buzzer, no pino que era o emissor do transistor Q2. Ficando assim:

[Você precisa estar registrado e conectado para ver esta imagem.]

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
avatar
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1767
Idade : 37
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Mensagem por yuri gagarin nicolsky em Sex 01 Jan 2016, 18:24

OLÁ NAGKILLER, UM BOM ANO NOVO.OBRIGADO POR TER ME MANDADO OS CIRCUITOS,GOSTARIA QUE VERIFICASSE PARA MIM PORQUE QUANDO VOU COPILAR ME É APRESENTADO ERRO NA LINHA 23.OBRIGADO .
avatar
yuri gagarin nicolsky
NOVATO
NOVATO

DESCRIÇÃO: : Consumidor final (cliente)
TEMPO DE EXPERIÊNCIA : I ANO
Sexo : Masculino
Número de Mensagens : 2
Idade : 49
Cidade/Estado: : BELO HORIZONTE
Data de inscrição : 21/12/2015

Voltar ao Topo Ir em baixo

Re: tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Mensagem por nagkiller em Sex 01 Jan 2016, 18:47

Remova os espaços em branco e as tabulações... Isso deve resolver...

Mais três detalhes:

1 - Não sou o responsável pelo projeto.
2 - O compilador utilizado é o MikroC for PIC ( [Você precisa estar registrado e conectado para ver este link.] )!!! Se tentar em outros compiladores, haverá erros de compilação.
3 - Atenção com os fusíveis de programação.
Use as combinações Ctrl + Shift + E ou vá em Project / Edit Project para configurar os fuses.

Escolha as opções a seguir:
[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
avatar
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1767
Idade : 37
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: tímer programável de contagem regressiva pic 16f628a + lcd 16x2

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum