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

israel eletronicax, prefosor

[ Ver toda a lista ]


O recorde de usuários online foi de 264 em Seg 18 Mar 2013 - 11:54
Últimos assuntos
» DEBUNKER DIAMOND X2
Ontem à(s) 12:17 por Rafael Duarte

» FONTE SIMÉTRICA SEM CI - 280W - PROTEÇÃO CONTRA CURTO
Sab 22 Set 2018 - 18:15 por lgeorg12

» FONTE CHAVEADA 1000W EP1000
Sex 21 Set 2018 - 22:35 por Corroul

» AMPLIFICADOR MEX 5.0 H CLASS POR MARIO MOTA
Sex 21 Set 2018 - 19:13 por djanderson

» Layout isolador óptico de audio
Qui 20 Set 2018 - 18:51 por Dierson Silva

» outro detector famozão TGSL(Tesoro Golden Sabre-Light)
Qua 19 Set 2018 - 18:16 por antonio fernando santos

» esquema studio r z7/ z8
Qua 19 Set 2018 - 6:30 por Rudnai Rodrigues

» AMPLIFICADOR ONEAL OP7000
Ter 18 Set 2018 - 17:02 por alanjb27

» Novo Layout Fonte Auto Oscilante 280W
Ter 18 Set 2018 - 16:44 por phissico

» PI POLONES TUDO NORMAL MAIS NÂO DETECTA, ME AJUDEM
Ter 18 Set 2018 - 10:11 por lorentino bonafe

» Fonte chaveada compacta IR2153D - 10 x 10 cm
Ter 18 Set 2018 - 0:49 por microbit

» amplificador Machine 1.8
Seg 17 Set 2018 - 20:26 por power-10kv

» Luminárias LED
Seg 17 Set 2018 - 14:34 por power-10kv

» YIROSHI super driver 1500w
Seg 17 Set 2018 - 0:21 por matos nascimento

» Blog
Dom 16 Set 2018 - 20:02 por Cursos Online Vip

CURSOS ONLINE VIP
Top dos mais postadores
Rafael Silveira (7816)
 
Caca Silva (6015)
 
renatoscp (3877)
 
CMeletronica (3208)
 
michel chagas (2791)
 
Railson (2119)
 
alexsandro rodrigues de a (1813)
 
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