Salut !
Je travail sur un PIC18F4580 ( avec MPLAB et CC8E , via Pickit3) et je cherche à allumer mon écran LCD.
J'ai suivi les instructions de la doc, et rien ne s'affiche sur l'écran ( même pas de curseur )
Quand j'exécute le programme, ma Led_test1 , s'allume, ce qui signifie que tout c'est bien déroulé ( je ne dis pas que le code est bon ! ) .Code:#pragma chip PIC18F4580 // definition du Pic utilisé //#include "LCD.H" //#include "LCD.c" // Registres de configurations : #pragma config[1]=0b11000011 #pragma config[2]=0b00000001 #pragma config[3]=0b00000110 #pragma config[4]=0b10000000 #pragma config[5]=0b11010100 #pragma config[6]=0b00001111 #pragma config[7]=0b11000000 #pragma config[8]=0b00001111 #pragma config[9]=0b11100000 #pragma config[10]=0b00001111 #pragma config[11]=0b01000000 #define E_aff PORTA.0 #define RS_aff PORTA.1 #define RW_aff PORTA.4 #define DATA_aff PORTC #define DB7 PORTC.7 #define DB6 PORTC.6 #define DB5 PORTC.5 #define DB4 PORTC.4 #define DB3 PORTC.3 #define DB2 PORTC.2 #define DB1 PORTC.1 #define DB0 PORTC.0 #define Led_test PORTB.2 #define XTAL_FREQ 4 ////////////////////////////Prototypes /////////////////////////////////////////////////////////////// void DelayMs(uns16 cnt); void init_LCD(void); //////////////////////////// Programme principal ///////////////////////////////////////////////////// void main (void) { ADCON0=0b00111100; ADCON1=0b00001111; ADCON2=0b00000000; OSCCON=0b01101100; TRISB=0b11111011; // Mis en sortie de la broche reliée à la LED de test TRISA=0b11101100; //RA0(E), RA1(RS) et RA4(RW) en sortie TRISC=0x00; // PORTC en sortie : data du LCD Led_test=0; PORTA=0; PORTC=0; init_LCD(); RS_aff=0; RW_aff=0; PORTC=0b00001111; // Display ON, Cursor ON, Blinking ON E_aff=1; E_aff=0; } ////////////////////////////////// Sous-programes ///////////////////////////////// void DelayMs(uns16 cnt) // Fonction Tempo { char dcnt; do { dcnt=200*(4/XTAL_FREQ); while(--dcnt); } while(--cnt); } void init_LCD(void) { // Début de l'initialisation RS_aff=0; RW_aff=0; DATA_aff=0b00111000; // Function Set : 2 lignes, 8 bits, 5x7 points E_aff=1; E_aff=0; DelayMs(20); RS_aff=0; RW_aff=0; DATA_aff=0b00001111; E_aff=1; E_aff=0; DelayMs(20); RS_aff=0; RW_aff=1; while(DB7==1) // Lecture Busy Flag { E_aff=1; } RS_aff=0; RW_aff=0; PORTC=0b00111000; // écran de 2 ligne en 5x7 points : Function Set E_aff=1; E_aff=0; DelayMs(20); RS_aff=0; RW_aff=0; PORTC=0b00001000; // Display Off E_aff=1; E_aff=0; DelayMs(20); RS_aff=0; RW_aff=0; PORTC=0b00000001; // Display Clear E_aff=1; E_aff=0; DelayMs(20); RS_aff=0; RW_aff=0; PORTC=0b00000110; // Entry Mode Set E_aff=1; DelayMs(20); Led_test=1; // Fin de l'initialisation du LCD }
J'ai un doute concernant mon Busy Flag , et sinon je ne vois pas d'ou pourrait venir le fait que mon LCD ne s'allume pas
Merci !![]()
-----