Giorgio Demurtas Inserito: 1 ottobre 2009 Segnala Share Inserito: 1 ottobre 2009 Sto tentando di comandare un display 2x16 caratteri con un 16F84A e il compilatore PCW della CCS C. Il problema è che ho errori di compilazione nella routine lcd_mm.c quando compilo lcd_prova2.cIl collegamento hardware è:display - picRS - RB2E - RB3DB4 - RB4DB5 - RB5DB6 - RB6DB7 - RB7Son partito da una routine di gestione LCD di andrea bonzini, http://www.web giorgio.it/files/lcd_bonzini.cche ho modificato in http://www.web giorgio.it/files/lcd_mm.c per poter usare le linee del display anche su porte diverse (anche se adesso ho tutto sulla porta B ). Comunque, anche usando l'originale avevo un errore di compilazione.Il programma principale è http://www.web giorgio.it/files/lcd_prova2.c Altri file inclusi sono http://www.web giorgio.it/files/Delay.chttp://www.web giorgio.it/files/Delay.hMi servirebbe una mano a risolvere, anche cambiando routine di gestione LCD se ne avete una da passarmi.grazie Link al commento Condividi su altri siti More sharing options...
ricambista2008 Inserita: 1 ottobre 2009 Segnala Share Inserita: 1 ottobre 2009 Ciao, se vuoi divertirti con il pic 16f84 e i display prova qui:www.fisertek.itoppure digita su google nel campo ricerca software picgeniusPicgenius e' un programma che ti permette di scrivere codice sorgente per molti pic senza essere esperto con un linguaggio comprensibile a tutti.Io ho provato la demo che anche se limitata ti permette di fare alcune prove;poi se il programma ti soddisfa puoi contattare l'autore e con una modica cifra ottieni la licenza completa. Link al commento Condividi su altri siti More sharing options...
Giorgio Demurtas Inserita: 1 ottobre 2009 Autore Segnala Share Inserita: 1 ottobre 2009 Ho risolto utilizzando la funzione lcd.c già a disposizione con il compilatore CCS C. Il programma è molto semplice e funziona:#include <16F84.h> #use delay(clock=4000000) // you must use this line becuse the LCD.C use the delay_us() functions #fuses XT, PUT, NOWDT #include <F:\pic\lcd_prova3\lcd.c> void main() { set_tris_a(0x00); set_tris_b(0x00); lcd_init(); lcd_gotoxy(1,1); lcd_putc("Welcome to EGYPT"); } La funzione può usare la funzione rw (read-write), che a me non serve.Eliminandola come letto qua http://www.edaboard.com/ftopic64934.html, anche se la compilazione va a buon fine, non riesco a usare il display. Link al commento Condividi su altri siti More sharing options...
Jtag Inserita: 1 ottobre 2009 Segnala Share Inserita: 1 ottobre 2009 (modificato) RW è a massa? Modificato: 1 ottobre 2009 da Jtag Link al commento Condividi su altri siti More sharing options...
Giorgio Demurtas Inserita: 1 ottobre 2009 Autore Segnala Share Inserita: 1 ottobre 2009 Si.Butto un altra domanda: Come è la sintassi per scrivere sul display il valore di una variabile int16 ? lcd_putc("tempo: %u",variabile); ?Ho anche trovato (e funziona) un altra routine, che di meglio di quella originale lcd.c può avere i pin che vanno al display su porte diverse, e i 4 di dati possono non essere consecutivi. Eccola: http://www.ccsinfo.com/forum/viewtopic.php?t=24661 Link al commento Condividi su altri siti More sharing options...
Giorgio Demurtas Inserita: 10 ottobre 2009 Autore Segnala Share Inserita: 10 ottobre 2009 Alla fine ci son riuscito.http://www.ccsinfo.com/forum/viewtopic.php?t=33390Ho usato la routine flex_lcd presa dal forum di CCS C.Per scrivere una variabile int16 l'identificatore è %lu, printf(lcd_putc, "\fseconds=%lu", numero);mentre per una in virgola mobile (float) è printf(lcd_putc, "\fseconds=%3.2f", numero); 3.2 significa tre cifre, e due decimali. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora