Eletrônica Silveira
Olá, Seja Bem-Vindo ao Fórum Eletrônica Silveira!!!!
Para você poder ver os mais variados Projetos do nosso Fórum, você precisa fazer o cadastro!

Depois de se Cadastrar, não se esqueça de ler as regras do fórum!

http://eletronicasilveira.forumeiros.com/t3-regras-do-forum#3


Administrador do Fórum,
Rafael Silveira
HOMENAGEM

Na vida tudo passa tudo acontece mas alguém igual a você a gente jamais esquece




★ 22 de novembro de 1991

† 12 de março de 2016

Nosso eterno amigo, administrador e fundador deste fórum
Quem está conectado
12 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 10 Visitantes :: 2 Motores de busca

wandows, WR-ELETRONICS

[ Ver toda a lista ]


O recorde de usuários online foi de 264 em Seg 18 Mar 2013 - 11:54
Últimos assuntos
» fonte chaveada ir2156s diodo
Ontem à(s) 20:50 por alanstudiosom

» FONTE SIMÉTRICA SEM CI - 280W - PROTEÇÃO CONTRA CURTO
Ontem à(s) 20:34 por surachit

»  NS450 - FONTE CHAVEADA PARTE 2
Sab 19 Maio 2018 - 23:46 por Giovani Musician

» ligacao em ponte no bx
Sab 19 Maio 2018 - 22:58 por djanderson

» placa de fonte para amplificador
Sex 18 Maio 2018 - 14:21 por alex sandro f santos

» SMPS 2500W QUEIMANDO FET
Sex 18 Maio 2018 - 12:21 por foxeletronic

» Ajuda ESQUEMA fonte JFA TURBO 800
Qui 17 Maio 2018 - 22:07 por WR-ELETRONICS

» TRASMISSOR 30W troca transistor
Qui 17 Maio 2018 - 18:33 por oscartec

» Amplificador com TIP 105
Qui 17 Maio 2018 - 11:49 por Sander

» DETECTOR DE METAIS IDX-PRO
Qui 17 Maio 2018 - 9:44 por wagner poltronieri

» Dois Medidores de ESR!!!
Qua 16 Maio 2018 - 14:57 por adriano8959

» ajuda com auto trafo
Qua 16 Maio 2018 - 12:59 por Barsa

» amplificador de 500w
Qua 16 Maio 2018 - 0:43 por alexsandro rodrigues de a

» LAYOUT DA TIME ONE E OS PDF
Ter 15 Maio 2018 - 22:43 por well

» DRIVE DE PULSO
Ter 15 Maio 2018 - 10:19 por louroimortaldotempo

Top dos mais postadores
Rafael Silveira (7816)
 
Caca Silva (5985)
 
renatoscp (3862)
 
CMeletronica (3199)
 
michel chagas (2791)
 
Railson (2119)
 
alexsandro rodrigues de a (1798)
 
naldo santos (1599)
 
ablacon64 (1222)
 
gilvantexas (1061)
 

Medidor de Velocidade

Publicidade

simulador fônica para reparar centrais de injeção eletrônica

Ir em baixo

simulador fônica para reparar centrais de injeção eletrônica

Mensagem por michel almeida em Dom 13 Dez 2015 - 3:00

amigos do forum eu tenho um projeto em ccs e queria modificá-lo para ser compilado no micro c então para mim estudar e aprender nele e só um começo para o que eu pretendo fazer.
primeiro eu pretendo usar um display lcd 4x20 e nessa tela de lcd terá 4 posições e em cada posição temperatura água, temperatura do ar, posição sensor de tps e pressão absoluta do map depois terá um menu para escolha para os tipos de sinais que eu vou precisar onda quadrada ou senoidal.
na tela inicial vai apresentar o modelo do simulador de centrais.
depois de 3 ou 5 segundos inicia a escolha do tipo de sinais EX: fônica_60-2, hall_magnético, hall_12V etc...
vai ter mais sinais diferentes.
quando selecionado o tipo de sinal aparecera simulando... da um tempo e mostrara tela de lcd as 4 posições diferentes temperatura água, temperatura do ar, posição sensor de tps e pressão absoluta do map.

dando uma pesquisada achei isso para o menu e acrescentar mas um botão para seleção cima, baixo, enter e retorno esse código tem um erro que eu não consegui resolver

Código:

/*
  PROJETO: LCD com MENUS
  MCU: PIC18F4550
  CLOCK: 48MHz ( 20MHz + PLL )
  COMPILADOR: MIKROC PRO PIC

*/

#define NULL 0

//PINOS DO LCD
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;

sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;


/*
       PROTOTIPOS
*/
typedef struct MenuItem Item;
static void LcdWriteFromROM( const char* texto );

//Suas Funcoes
void DefinirSaidas( char );
void AlternarSaidas( char );


/*
     registro
*/
struct MenuItem
{
        const Item** mItem;     //submenu
        char Texto[16];         //texto
        void(*Tarefa)(char);    //Funcao a ser executada
        char Parms;             //valor do parametro da funcao
};

/*
       VARIAVEIS GLOBAIS
*/
static char selecao = 0;        //posicao do item selecionado
static const Item** MenuAtual;  //Menu Atual
static const Item*** MenuAnterior; //Pilha de Menus
static unsigned Stack[16];      //Aloca memoria para a pilha



/*
       MENU
*/

//Terceiro Nivel
const Item Menu30 = { NULL, "PORTD = 32", &DefinirSaidas, 32 };
const Item* Screen3[] = { &Menu30, 0 }; //Terminar sempre com o valor 0(NULO)

//Segundo Nivel
const  Item Menu10 = { Screen3, "Outra Funcao", 0, 0 };
const  Item Menu11 = { NULL, "Ativar Saidas", &DefinirSaidas, 255 };
const  Item Menu12 = { NULL, "Alternar Saidas", &AlternarSaidas, 0 };
const  Item Menu13 = { NULL, "Desligar Saidas", &DefinirSaidas, 0 };
const Item* Screen1[] = { &Menu10, &Menu11, &Menu12, &Menu13, 0 };  //Terminar sempre com o valor 0(NULO)

const  Item Menu20 = { NULL, "PORTD = 1", &DefinirSaidas, 1 };
const  Item Menu21 = { NULL, "PORTD = 2", &DefinirSaidas, 2 };
const  Item Menu22 = { NULL, "PORTD = 4", &DefinirSaidas, 4 };
const  Item Menu23 = { NULL, "PORTD = 8", &DefinirSaidas, 8 };
const Item* Screen2[] = { &Menu20, &Menu21, &Menu22, &Menu23, 0 }; //Terminar sempre com o valor 0(NULO)

//Primeiro Nivel
const  Item Menu01 = { Screen1, "FUNCAO 1", NULL, 0 };
const  Item Menu02 = { Screen2, "FUNCAO 2", NULL, 0 };
const Item* TelaInicial[] = { &Menu01, &Menu02, 0 }; //Terminar sempre com o valor 0(NULO)




/*
      Exibe os items do menu atual no display LCD
*/
static char MostrarItens( const Item* menu[], char sel )
{
char index = 0, row = 1;

     Lcd_Cmd( _LCD_CLEAR );

     if( menu == 0 )
         return 0;

     while( menu[index] )
     {
             if( index < sel ) { index++; continue; }
             if( index == sel ) Lcd_Chr( row, 1, '>' );
             else Lcd_Chr( row, 1, ' ' );
             row++;
             LcdWriteFromROM( menu[index++]->Texto );
     }

     if( index <= sel )
         return 1;
     return 0;
}

static void LcdWriteFromROM( const char* texto )
{
    while( *texto )
    {
           Lcd_Chr_CP( *texto++ );
    }
}



void main()
{
char flags = 0; //flags dos botoes

    CMCON = 7;
    ADCON1 = 15;
    //Botoes
    TRISA.B0 = 1;
    TRISA.B1 = 1;
    TRISA.B2 = 1;
    TRISD = 0;
    PORTD = 0;

    Lcd_Init();
    Lcd_Cmd( _LCD_CURSOR_OFF );

    MenuAtual = TelaInicial;
    MenuAnterior = &Stack;   //Aponta para a pilha

    MostrarItens( MenuAtual, selecao );

    while( 1 )
    {
         if( PORTA.B0 ) flags.B0 = 1;
         else if( PORTA.B1 ) flags.B1 = 1;
         else if( PORTA.B2 ) flags.B2 = 1;

         //Botao Proximo
         if( !PORTA.B0 && flags.B0 )
         {
             ++selecao;
             if( MostrarItens( MenuAtual, selecao ).B0 )
             {
                  selecao = 0;
                  MostrarItens( MenuAtual, selecao );
             }
             flags.B0 = 0;
         }

         //ENTER
         if( !PORTA.B1 && flags.B1 )
         {
             void(*Func)(char) = MenuAtual[selecao]->Tarefa;

             if( Func != NULL )
             {
                 Func( MenuAtual[selecao]->Parms );
             }

                         if( MenuAtual[selecao]->mItem != NULL )
             {
                 *MenuAnterior++ = MenuAtual;
                 MenuAtual = MenuAtual[selecao]->mItem;
                 selecao = 0;
                 MostrarItens( MenuAtual, selecao );
             }

             flags.B1 = 0;
         }

         //VOLTAR
         if( !PORTA.B2 && flags.B2 )
         {
              selecao = 0;
              if( ((unsigned*)&MenuAnterior)[0] > (unsigned)&Stack )
              {
                 MenuAtual = *--MenuAnterior;
                 MostrarItens( MenuAtual, selecao );
              }
              flags.B2 = 0;
         }
    }

}

//Suas Funcoes

void DefinirSaidas( char valor )
{
    PORTD = valor;
}

void AlternarSaidas( char valor )
{
     PORTD = ~PORTD;
}

e esse para o sinal que eu quero intender para fazer uma função para usar em case para chamar o tipo de sinal que eu selecionar
Código:

#include <16F628A.h>         //Define o modelo do microcontrolador

// Fusíveis de configuração do microcontrolador
 
#FUSES NOWDT                  //Watch Dog Timer desabilitado
#FUSES HS                     //oscilador cristal
#FUSES PUT                    //Power Up Timer
#FUSES NOPROTECT              //sem proteção para leitura da eprom
#FUSES BROWNOUT               //Resetar quando detectar brownout
#FUSES NOMCLR                 //Reset desabilitado
#FUSES NOLVP                  //prog. baixa voltagem desabilitado
#FUSES NOCPD                  //Sem travar o chip

#use delay(clock=20000000)      //Define o cristal utilizado, neste caso: 4Mhz

//Definição de entradas e saídas
//Cada bit representa um pino físico de I/O
// 0 significa que o pino será uma saída
// 1 significa que o pino será uma entrada
//#define trisa 0b00000000
//#define TRISA 0b00000001 //Define RA0 como entrada
//#define TRISA 0b00000010 //Define RA1 como entrada
/*=====================
Minhas variáveis:
=======================*/

//int8 periodo=0;
//int8 ciclo1=60536;
int8 p1 = 1;
int16 delay  = 65531; //Minimo(60536 = 100HZ) / Maximo(65453 = 6.024HZ)
int1 aux;

#INT_TIMER1
void  TIMER1_isr(void)
{
 p1++;
   aux++;
   set_timer1(delay);
}

void main()
{
   output_low (PIN_B0);
   output_low (PIN_B1);
   SETUP_TIMER_1 (T1_INTERNAL|T1_DIV_BY_8);       //Configurar timer1 para clock iterno/8  
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);
   set_timer1(delay);
   while(TRUE)
   {
      if (aux)
      {
        output_toggle (PIN_B0);
        if (p1 < 118)
         {
          output_bit(PIN_B6, FALSE); // Desliga o Led
          output_toggle (PIN_B1);
         }  
         else
         {
          output_bit(PIN_B6, TRUE); // Liga o Led
          output_high (PIN_B1);  
         }
         if (p1 == 120)
         {
            p1 = 0;
         }
         aux++;
         if(input(PIN_A0)==0) //Verefica se foi pressionado botão para aumentar frequencia
       {
         delay++;
         if(delay>=65530)
          {
             delay = 65532;
          }  
          }
       if(input(PIN_A1)==0) //Verefica se foi pressionado botão para diminuir frequencia
       {
          delay--;
          if(delay<=65286)
          {
             delay = 65286;
          }
        }
      }
      
    }
   }
e tenho que modificar esse para o COMPILADOR: MIKROC PRO PIC  
teria alguém para me ajudar nessa empreitada isso eu vou usar para facilitar meu trabalho e aprender para ajudar quem precisar pelo que vi não e só eu que preciso e esse segundo código ira ajudar muita jente
avatar
michel almeida
Nível 1
Nível 1

Mensagens : 2
Data de inscrição : 12/12/2015
Idade : 35
Localização : Manaus-AM

Voltar ao Topo Ir em baixo

Re: simulador fônica para reparar centrais de injeção eletrônica

Mensagem por clubedomecanico em Ter 12 Jan 2016 - 21:03

opá , um desse eu preciso.
avatar
clubedomecanico
Nível 1
Nível 1

Mensagens : 1
Data de inscrição : 12/01/2016
Idade : 38
Localização : são paulo

Voltar ao Topo Ir em baixo

Re: simulador fônica para reparar centrais de injeção eletrônica

Mensagem por gantunes em Qua 13 Jan 2016 - 9:39

Não estou entendendo , esse projeto já está em MIKROC PRO PIC
avatar
gantunes
Nível 1
Nível 1

Mensagens : 31
Data de inscrição : 28/11/2012
Idade : 49
Localização : João Pessoa

Voltar ao Topo Ir em baixo

Re: simulador fônica para reparar centrais de injeção eletrônica

Mensagem por gantunes em Qua 13 Jan 2016 - 9:42

gantunes escreveu:Não estou entendendo , esse projeto já está em MIKROC PRO PIC
É o primeiro código que está em MIKROC PRO PIC e o segundo CCS , você que transformar o segundo, é isso.
avatar
gantunes
Nível 1
Nível 1

Mensagens : 31
Data de inscrição : 28/11/2012
Idade : 49
Localização : João Pessoa

Voltar ao Topo Ir em baixo

Re: simulador fônica para reparar centrais de injeção eletrônica

Mensagem por michel almeida em Seg 4 Abr 2016 - 14:16

em micro c e o menu e o outro código e a função que eu quero colocar como se foce uma função só que esta em ccs você poderia me ajudar
avatar
michel almeida
Nível 1
Nível 1

Mensagens : 2
Data de inscrição : 12/12/2015
Idade : 35
Localização : Manaus-AM

Voltar ao Topo Ir em baixo

Re: simulador fônica para reparar centrais de injeção eletrônica

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