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
» Mini System LG CM4440 não liga, não tem audio
Hoje à(s) 17:28 por NiemeyerD

» Mini System LG CM4330 não tem audio aparece S-protection no display
Hoje à(s) 14:30 por NiemeyerD

» TV LCD SONY KLV-46S200A não LIGA, PISCANDO O LED POWER 4 VEZES
Hoje à(s) 11:36 por jandilson

» TV SONY kv29fs100 Imagem rolando e ronco no áudio
Hoje à(s) 08:22 por Dr.Luan

» Tv philips 29pt5645 problemas no av1
Hoje à(s) 08:20 por Dr.Luan

» Auto Rádio Philips CEM2000 não liga
Ontem à(s) 23:23 por Ohm

» Central Multimídia - MediaNav Renault Duster - Tela branca
Ontem à(s) 15:41 por rafaquino91

» SOM PHILIPS FWM593/BK SEM SOM
Ontem à(s) 13:50 por HAHNRAHN

» MICROSSISTEM PANASSONIC SA-MAX200 ARMANDO PROTEÇÃO
Ontem à(s) 13:20 por negoleo21

» MÓDULO PYRAMID PB310GX SEM ÁUDIO
Ontem à(s) 10:12 por glob

» MIXER BEHRINGER VMX 300 COM TRAFO ALTERADO.
Ontem à(s) 08:59 por Oficina do SOM

» tv philips mod 14GX1618/78R ñ muda de canal(travada)
Ontem à(s) 07:29 por Nill

» tv semp toshiba 2092 lav com linhas de retraços
Seg 15 Out 2018, 16:18 por samucasvm

» nobreak pl1500b1 só liga fora da rede
Seg 15 Out 2018, 14:15 por nagkiller

» Receiver Yamaha mod RX. V. 640 entrando em proteção
Seg 15 Out 2018, 10:59 por Oficina do SOM

» Caixa amplificada lexsen LS12A MP3 não sai som
Seg 15 Out 2018, 10:50 por Oficina do SOM

» Receiver-Gradiente- r343-problema saida som baixa e fm para de funcionar apos alguns minuyos
Seg 15 Out 2018, 10:46 por Oficina do SOM

» som sharp cd-k1600z volume baixo e com ruido
Seg 15 Out 2018, 10:40 por Oficina do SOM

» caixa ativa donner clarity CL-200A com chiado.
Dom 14 Out 2018, 16:37 por Nill

» Som Sony HCD-GTX77 - Não toca pendriver
Dom 14 Out 2018, 16:36 por Nill

» tv lg RP-14CB25A não liga
Dom 14 Out 2018, 12:05 por MARIO Y. SEGAWA

» Som lg // cm 4330 // s-proteção
Sab 13 Out 2018, 21:00 por antonio benedito de queir

» tv lg cp29k30 nao liga
Sab 13 Out 2018, 20:41 por antonio benedito de queir

» tv lg 21fs4rlg-ls desliga e fica em standby
Sex 12 Out 2018, 20:22 por antonio benedito de queir

» TV Sanyo CTP6707 fonte alta
Sex 12 Out 2018, 07:29 por tomate

» CAIXA AMPLIFICADA CICLOTRON PREMIUM 800! QUEIMANDO SAÍDAS DE ÁUDIO
Sex 12 Out 2018, 07:14 por tomate

» TV LG RP 29FA35A - Tensões nas linhas SCL e SDA oscilando.
Qua 10 Out 2018, 22:16 por glob

» Amplificador deaudio JRC SPA750 (em curto)
Qua 10 Out 2018, 21:58 por Oficina do SOM

» Nobreak Tsshara upsmp14 (upsmini 500va) esquema ou ajuda
Qua 10 Out 2018, 10:34 por MARCINHOXP

» projetor epson 12+
Ter 09 Out 2018, 16:10 por Nill

Quem está conectado
345 usuários online :: 22 usuários cadastrados, Nenhum Invisível e 323 Visitantes :: 2 Motores de busca

Arona, Arthur Gomes, CARLOS ALCEBYADES, centauro, DANTEX, delabeneta, dino 3, Dr.Luan, Eletronica Manoel, Fábio Lena, jeffersonjs, joaoalmeida, Julioc3, klein, maglefy, marcosmacedo, maumau, Paranista, Porto, Ricardo Luis Bomfim, ROBERTO CARLOS, WALTER JANSEN

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 : 42
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 : 1796
Idade : 38
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 : 1796
Idade : 38
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 : 1796
Idade : 38
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