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
48 usuários online :: 18 usuários cadastrados, Nenhum Invisível e 30 Visitantes :: 2 Motores de busca

alanjunior, batistaignacio, chezan, cicero789, dionatanquadros, djdanieldorneles, Francisco Antonio da Silv, guadalhorce22, jesolu, kelisonGKLA, marciospsp, MME, Paulo Roberto Correa, rgb audio, treetitanic, varkrisz, wandows, zainan

[ Ver toda a lista ]


O recorde de usuários online foi de 264 em Seg 18 Mar 2013 - 11:54
Eletrônica Perez
CM Eletrônica
Top dos mais postadores
Rafael Silveira (7816)
 
Caca Silva (5945)
 
renatoscp (3825)
 
CMeletronica (3138)
 
michel chagas (2791)
 
Railson (2118)
 
alexsandro rodrigues de a (1776)
 
naldo santos (1599)
 
ablacon64 (1220)
 
gilvantexas (1061)
 

Medidor de Velocidade

Publicidade

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

Ver o tópico anterior Ver o tópico seguinte 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 : 34
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 : 37
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 : 28
Data de inscrição : 28/11/2012
Idade : 48
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 : 28
Data de inscrição : 28/11/2012
Idade : 48
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 : 34
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

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


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