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
» Som philips modelo FWM 582 sem som nas caixas e auxilares porem no fone sai o áudio
Ontem à(s) 23:36 por francisco constantino

» Fonte jfa 1000x nao liga,fica so piscando um dos leds internos.
Ontem à(s) 21:29 por ayslan souza

» Tv Toshiba Tv2159OFSH - U19 com imagem rosa.
Ontem à(s) 20:27 por MARIO Y. SEGAWA

» [Resolvido]Aparelho de Som Toshiba ms7310cd com som ruim
Ontem à(s) 20:19 por lasiluz

» Ducha Advanced Eletrônica Lorenzetti (127v) - Sem controle de temperatura
Ontem à(s) 19:44 por eliaspaim

» tv lenoxx modelo tv-2100b não liga totalmente parada
Ontem à(s) 18:51 por eletrônica souza

» arduino com vários projetos de Arduino muito bom!!
Ontem à(s) 15:29 por kir

» som som Sony mhc grx 55 não arma o relé
Ontem à(s) 13:03 por ANTRNIO09

» Tv semp modelo tv 2934 com imagem fraca,sem cores
Ontem à(s) 11:47 por paulorfbm

» Tv CCE 2118USP - Com Vertical Fechado
Ontem à(s) 11:30 por MARIO Y. SEGAWA

» SOM LG MCD504, TRAVADO NO RELOGIO
Ontem à(s) 10:45 por felixtec

» [Resolvido]Aparelho de Som Aiwa - CX-NSZ51LH com som muito grave
Qua 20 Jun 2018, 22:10 por jailton da silva santos

» RADIO SANYO 3 FAIXAS SÓ CHIA.
Qua 20 Jun 2018, 22:01 por Adelalon

» Som Sony hcd_zux9 em proteção (alt para transistores na saída)
Qua 20 Jun 2018, 18:56 por Eduardo Toda

» TV-LG-20K40 não liga só em Standy by
Qua 20 Jun 2018, 17:08 por OTONIEL FERREIRA DE SOUSA

» tv LCD LG 42lh20r Funciona depois fica sem imagem lâmpada ligada,
Qua 20 Jun 2018, 07:57 por Nill

» tv pvt2150
Ter 19 Jun 2018, 23:08 por jailton da silva santos

»  Mini System Philips fwm6000x/78 baixando o audio
Ter 19 Jun 2018, 22:37 por tomate

» Tv Panasonic 14rm10l com linhas sem imagem nem som
Ter 19 Jun 2018, 20:15 por Morlan

» Nobreak APC UPS400 - não carrega bateria
Ter 19 Jun 2018, 19:17 por Alcides.Piracicaba

» Mini System - Samsung - MX-D750 - PROTECT
Ter 19 Jun 2018, 17:42 por Oficina do SOM

» reset tv semp 1031 acdc
Ter 19 Jun 2018, 09:17 por acsabo

» TV LG 20CD2R-LD com Horizontal aberto e Software travado
Ter 19 Jun 2018, 05:15 por Ralph Hinkley

» Sony LBT-N355 não liga
Seg 18 Jun 2018, 13:10 por Roger Rodrigues

» som aiwa modelo nsx-s779 coloca na tomada nao liga so fica standby
Seg 18 Jun 2018, 10:44 por Oficina do SOM

» (Encerrado) SOM AIWA MODELO NSX V700 NÃO LIGA ( DEVOLVIDO )
Seg 18 Jun 2018, 10:41 por Oficina do SOM

» Sony MHC GTR 8 não faz funções pelos botões
Dom 17 Jun 2018, 20:09 por Oficina do SOM

» SOM TOSHIBA MS7916MU - Sem audio nas caixas, mas tem som no fone de ouvido.
Dom 17 Jun 2018, 20:00 por Oficina do SOM

» Números grandes em LCD Alphanumérico com PIC como criar?
Dom 17 Jun 2018, 18:01 por CACÁ

»  Monitor AOC modelo E2243FWK liga e desligm
Dom 17 Jun 2018, 17:33 por celiaura

Quem está conectado
50 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 49 Visitantes :: 2 Motores de busca

Paulo Cezar

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 : 1743
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 : 1743
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 : 1743
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