LusoRobótica - Robótica em Português

Sistemas específicos => PIC => Tópico iniciado por: paulo_mendes em 25 de Janeiro de 2011, 12:52

Título: Ajuda- Programação em microC com LCD
Enviado por: paulo_mendes em 25 de Janeiro de 2011, 12:52
Boas pessoal...

Estou a tentar fazer um código em microC.
Que consiste em configurar e programar uma entrada analógica do microcontrulador ,monitorizar, em tempo-real, o valor da tensão de alimentação do circuito, a bateria é de 9,6 volts, e aparecer no LCD em percentagem.
- Leitura sequencial de várias entradas analógicas.

A pic que utilizo é 16F887.
Junto envio o circuito.

Alguem poderia ajudar?
Cumprimentos
Título: Re: Ajuda- Programação em microC com LCD
Enviado por: senso em 25 de Janeiro de 2011, 18:16
O que já tens feito?
Título: Re: Ajuda- Programação em microC com LCD
Enviado por: paulo_mendes em 25 de Janeiro de 2011, 18:27
Boas...

Obrigado pela colaboração,acabei agora mesmo de o concluir...

Abraço a todos..    ;)
Título: Re: Ajuda- Programação em microC com LCD
Enviado por: beirao em 25 de Janeiro de 2011, 18:36
Boas...

Obrigado pela colaboração,acabei agora mesmo de o concluir...

Abraço a todos..    ;)

Epa... boa colaboração!! LOL

Ja agora.. vai ao sitio das apresentações e faz a tua apresentação.. e coloca entao o que fizeste relativamente ao LCD, pois a tua duvida pode ser a duvida de alguem !
Título: Re: Ajuda- Programação em microC com LCD
Enviado por: paulo_mendes em 25 de Janeiro de 2011, 18:54
Aqui está o código.


// LCD module connections
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
#include "built_in.h"
unsigned char ch,resultado, *frase;                    //
unsigned int t;                 // Declaração das variáveis  ("unsigned int adc_rd;")
char a[17];                          //
long tlong;                          //

void main() {
    INTCON = 0;                      // Todas as interrupções desabilitadas
    ANSEL = 0x04;                    // Pin RA2 é configurado como uma entrada analógica
    TRISA = 0x04;
    ANSELH = 0;                      // Os pinos restantes são configurados como digital
    Lcd_Init();                      // inicialização do display doLCD
    Lcd_Cmd(_LCD_CURSOR_OFF);        // Comando LCD(cursor off)
    Lcd_Cmd(_LCD_CLEAR);             // Comando LCD (Limpar LCD)

    frase= "   ESER 2010  ";       // Definir a primeira mensagem
    Lcd_Out(1,1,frase);              // Escreve a primeira mensagem na primeira linha
    frase = "   Fábio, Paulo, Maciel   ";           //Definir a segunda mensagem
    Lcd_Out(2,1,frase);              // Escreve a segunda mensagem na segunda linha



    TRISA = 0xFF;                    // Todas as portas A são configuradas como entradas   
    Delay_ms(500);
      ADCON1 = 0x82;                   // A / D de referência de tensão é VCC
    ANSEL =0b00000001;              //o pino RA0 como entrada

     frase= "volt :";                 // Definir a terceira mensagem
    while (1) {
        t = ADC_Read(0);             // conversão A/D.  Pin RA0 é de entrada.
        Lcd_Out(2,1,frase);          // Escreve o resultado na segunda linha

        tlong = (long)t * 9600;      // Converte os resultados em milivolts
        tlong = tlong / 1023;        // 0..1023 -> 0-5000mV
        ch = t / 1000;           // conversão de volts para milivolts

        Lcd_Chr(2,7,48+ch);          // Escreve o resultado em formato ASCII

        ch = (tlong / 960) % 10;     // Conversão das cenenas de milivolts
        Lcd_Chr_CP(48+ch);           // Escreve o resultado em formato ASCII
        ch = (tlong / 96) % 10;      // Conversão para dezenas de milivolts
        Lcd_Chr_CP(48+ch);
       

        Lcd_Chr_CP('.');              // Escreve o resultado em formato ASCII
        ch = tlong % 10;             // Extract digits for millivolts
       Lcd_Chr_CP(48+ch);             // Escreve o resultado em formato ASCII
       ch*100;
        Lcd_Chr_CP('%');
        Delay_ms(1);
    }






Espero que seja util a alguém.
Abraço malta.
Título: Re: Ajuda- Programação em microC com LCD
Enviado por: Fifas em 27 de Janeiro de 2011, 03:40
paulo ainda bem que conseguiste ;)

Mais uma vez desculpa por nao te ter ajudado logo, mas como te disse, ando muito atrasado num projecto tambem. Mas agora ja sabes que quando nao conseguires, sempre podes passar aqui no forum que certamente teras ajuda :D


Abraço
Título: Re: Ajuda- Programação em microC com LCD
Enviado por: senso em 27 de Janeiro de 2011, 03:48
O unico problema desse código é que é 100% dependente do teu compilador, mas desde que funcione, ainda bem.