Fork me on GitHub

04/09/12

Programando no MikroC Pro PIC

Programando no MikroC Pro PIC


Tutorial de programação no MikroC PRO for PIC.

São três videos do Youtube que mostra como utilizar o compilador MikroC PRO PIC, para o desenvolvimentro de simples projetos.

Video 01: Pisca-Pisca


Video 02: Contador Hexadecimal


Video 03: Voltimetro(0-50V)




CÓDIGO DO VIDEO 01: PISCA-PISCA
void main()
{
  TRISB = 0b00000000; // Define os pinos da PORTB como saída
  PORTB = 0xFF; //Inicia os pinos da PORTB como nivel logico 1

  while(1)
  {
     PORTB = ~PORTB;  //Inverte o valor da PORTB
     Delay_ms( 500 ); // espera 500ms
  }
}

CÓDIGO DO VIDEO 02: CONTADOR HEXADECIMAL
char numeros[16] = {0x40, 0xf9, 0xa4, 0xb0,
                    0x99, 0x92, 0x82, 0xf8,
                    0x80, 0x98, 0x88, 0x83,
                    0xc6, 0xa1, 0x84, 0x8e};

signed char inc = 0;

void main()
{
ADCON1 = 6; //desativa a porta analogica
TRISA.F0 = 1; //pino RA0 como entrada
TRISD = 0; //PORTD configurado como saida
PORTD = 0xFF; //Todos os pinos da PORTD com nivel logico 1
Delay_ms( 1000 );

for(;;)
{
    PORTD = numeros[ inc ];
    Delay_ms( 400 );
    if( PORTA.F0 == 1 )
    {
        inc++;
        if( inc > 15 ) inc = 0;
    }
    else
    {
        inc--;
        if( inc < 0 ) inc = 15;
    }
}

CÓDIGO DO VIDEO 03: VOLTIMETRO
// pinos do LCD
sbit LCD_RS at RB1_bit;
sbit LCD_EN at RB2_bit;
sbit LCD_D4 at RB3_bit;
sbit LCD_D5 at RB4_bit;
sbit LCD_D6 at RB5_bit;
sbit LCD_D7 at RB6_bit;
sbit LCD_RS_Direction at TRISB1_bit;
sbit LCD_EN_Direction at TRISB2_bit;
sbit LCD_D4_Direction at TRISB3_bit;
sbit LCD_D5_Direction at TRISB4_bit;
sbit LCD_D6_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB6_bit;

unsigned long value;
char d1, d2, d3, d4;

#define printV    lcd_chr( 2, 11, d1+48 ); lcd_chr_cp( d2+48 ); \
                  lcd_chr_cp( '.' );       lcd_chr_cp( d3+48 ); \
                  lcd_chr_cp( d4+48 );     lcd_out_cp( "V" );


void main()
{
adcon1 = 0b10000010;
trisa = 0xff;
Lcd_Init();
Lcd_Cmd( _LCD_CLEAR );
Lcd_Cmd( _LCD_CURSOR_OFF );
Lcd_out( 1, 4, "Voltimetro" );
lcd_out( 2, 1, "Tensao: " );
for(;;)
{
value = adc_read( 0 );
value = value*5000/1023;
d1 = value/1000;
d2 = (value%1000)/100;
d3 = ((value%1000)%100)/10;
d4 = ((value%1000)%100)%10;
printV;
delay_ms( 20 );
}
}

13 comentários:

  1. Ótimos Tuturiais, tentei fazer o voltímetro mas não consegui acertar o códio, da erro na linha

    lcd_config(&portb,1,3,2,7,6,5,4);

    Seria Legal se pudesse baixar o projeto no Proteus e o Código do Voltímetro.....

    ResponderExcluir
    Respostas
    1. Esse código lcd_config(&portb,1,3,2,7,6,5,4); é usado somente na versão antiga do MikroC.
      A nova versão utliza os sbit para configurar os pinos, assim como vc fez com o GLCD.

      Excluir
  2. // pinos do LCD
    sbit LCD_RS at RB4_bit;
    sbit LCD_EN at RB5_bit;
    sbit LCD_D4 at RB0_bit;
    sbit LCD_D5 at RB1_bit;
    sbit LCD_D6 at RB2_bit;
    sbit LCD_D7 at RB3_bit;
    sbit LCD_RS_Direction at TRISB4_bit;
    sbit LCD_EN_Direction at TRISB5_bit;
    sbit LCD_D4_Direction at TRISB0_bit;
    sbit LCD_D5_Direction at TRISB1_bit;
    sbit LCD_D6_Direction at TRISB2_bit;
    sbit LCD_D7_Direction at TRISB3_bit;

    unsigned long value;
    unsigned char d1, d2, d3, d4, *text;

    #define printV lcd_chr(2,11,d1+48); lcd_chr_cp(d2+48); \
    lcd_chr_cp('.'); lcd_chr_cp(d3+48); \
    lcd_chr_cp(d4+48); lcd_out_cp("V");


    void main()
    {
    adcon1=0b10000010;
    trisa=0xff;
    Lcd_Init();
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Cmd(_LCD_CURSOR_OFF);
    Lcd_out(1,2,"EVA PROYECT's");
    lcd_out(2,1,"voltage");
    for(;;)
    {
    value=adc_read(0);
    value=value*5000/1023;
    d1=value/1000;
    d2=(value%1000)/100;
    d3=((value%1000)%100)/10;
    d4=((value%1000)%100)%10;
    printV;
    delay_ms(20);
    }
    }


    Mas o LCD não aparece nada....

    ResponderExcluir
    Respostas
    1. Voce está conectando o lcd usando estes pinos?? Porque os pinos da PORTB tambem sao analogicos, caso for o PIC18F.

      Excluir
    2. estou testando no proteus com a mesma pinagem do vídeo...

      Excluir
  3. Estou precisando de uma ajuda com lcd serial.
    Mikroc v6.6.
    Tenho uma placa com um pic 16f877A e a ligação do LCD e serial e eu nao programar.

    ResponderExcluir
  4. Thiago... Comenta pra gente a parte da Macro PRINTV por favor... não entendi ela direito... Porque ele soma os valores de d1,d2,d3,d4 com 48?

    ResponderExcluir
    Respostas
    1. É pra converter o número em carácter. Ex.: olhando a tabela ASCII o carácter '1' é o valor 49. Para transformar o número 1 em carácter, tem que somar 1 + 48 = 49.

      Excluir
  5. olaa.
    como fazer um voltimetro para 38v?

    ResponderExcluir
  6. como programar uma bombinha de água de aquario para acionar apenas quando a umidade do solo de uma estufa estiver menor q 20% e desligar quando atingir 80%?

    ResponderExcluir

Postagens Relacionadas!!