Primi passi con il display LCD della Freedom II

12 Anni 6 Mesi fa #6 da Pinna
Devi includere anche delay.LIB

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
12 Anni 6 Mesi fa #7 da doc83
Si, hai ragione.... tuttavia ho provato a compilare il tuo progetto e a caricarlo: stessa, identica cosa... probabilmente è l'alimentatore il problema? Eroga 9V ad 1A, ma forse il ripple è troppo elevato e quindi mi passa sul display....

Il lavoro nobilita l'uomo (e lo rende simile alla bestia)...

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • doc83
  • Avatar di doc83
  • Elite Member
  • Elite Member
Di più
12 Anni 6 Mesi fa - 12 Anni 6 Mesi fa #8 da doc83
Allora... sto provando a misurare la temperatura con la Freedom II, e dopo un pò di tentativi ho impaginato sul display tutto per benino.... Solo che i valori sono totalmente sballati!! Mi vanno da 25°C a 43°C e via dicendo ad ogni refresh... Posto il codice!!

#include <p18f4550.h>
#include <delay.h>
#define LCD_DEFAULT
#include <LCD_44780.h>

#pragma config FOSC = HS
#pragma config PBADEN = OFF
#pragma config WDT = OFF
#pragma config LVP = OFF

void main(void)
{
unsigned int sommatoria = 0;

int lettura = 0;

char i;

LATA = 0x00;
TRISA = 0xFF;

LATB = 0x00;
TRISB = 0xFF;

LATC = 0x00;
TRISC = 0b11111101;

LATD = 0x00;
TRISD = 0x00;

LATE = 0x00;
TRISE = 0xFF;

OpenLCD (20);

BacklightLCD (TURN_ON);

WriteStringLCD(" ROV CONTROLLER ");
Line2LCD ();
WriteStringLCD("by M.D.d.R. 2011");

delay_ms(2000);

ClearLCD();
WriteStringLCD("Inizializzazione");
delay_ms(5000);

ClearLCD();
WriteStringLCD("Temp: ");
ShiftCursorLCD(RIGHT,3);
WriteCharLCD(223);
WriteCharLCD('C');
ShiftCursorLCD(LEFT,5);

ADCON1 = 0b00001101;
ADCON0 = 0b00001000;
ADCON2 = 0b10110100;
ADCON0bits.ADON = 0x01;

while(1) {
sommatoria = 0;

for (i = 0; i < 64; i++)
{
ADCON0bits.GO = 1;

while(ADCON0bits.GO);

lettura = (((int) ADRESH) << 8) | ADRESL;

sommatoria = sommatoria + lettura;
}
sommatoria = sommatoria >> 6;

sommatoria = sommatoria >> 1;

WriteIntLCD(sommatoria, 2);
ShiftCursorLCD(LEFT, 2);
delay_ms(5000);
}
}


Il lavoro nobilita l'uomo (e lo rende simile alla bestia)...
Ultima Modifica 12 Anni 6 Mesi fa da doc83.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • doc83
  • Avatar di doc83
  • Elite Member
  • Elite Member
Di più
12 Anni 6 Mesi fa #9 da Pinna
ma hai provato l'esempio di lettura di temperatura scritto da Mauro per vedere, primo, se hai ancora quell'effetto refresh, secondo se la temperatura è corretta? Potresti avere valide indicazioni in merito, da questo confronto.

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
12 Anni 6 Mesi fa #10 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Primi passi con il display LCD della Freedom II
Ciao,

Come ha detto Pinna ti consiglio di far uso degli esempi presenti sul Testo C18 Step by Step.
Se il problema persiste facci sapere. Se memoria non mi inganna avevi avuto qualche problema nel montaggio del sensore e il transistor per cui non e' da escludere che si possa essere danneggiato qualcosa.

Relativamente allo sfarfallio, non vedendo un ClearLCD all'interno del loop, sospetto che derivi dall'alimentatore. Una volta ho avuto un problema simile con un alimentatore DC con ripple troppo elevato. credo di aver messo anche una nota a riguardo sulla documentazione di Freedom II.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiStefA

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login