Bonjour,
je suis en train de réaliser un programme en C pour PIC 16f84 permettant d'afficher une chaine de caractère sur un afficheur LCD 2x16 mais le problème c'est que je n'arrive pas à écrire le code pour un LCD en mode 4 bits.
J'ai beaucoup chercher sur google pendent 1 semaine mais je n'y arrive pas donc j'aurai besoin d'aide svvpp.
Je programme sous MPLAB avec CC5X et voici mon code (et mon schéma fait sous ISIS ci join). Merci d'avence
Code:bit D4 @ RB4; bit D5 @ RB5; bit D6 @ RB6; bit D7 @ RB7; bit RS @ RB1; bit RW @ RB2; bit E @ RB3; void ecrire_afficheur(bit rs, char dat); void affiche_caractere(char carac); void init_aff(void); void aff_chaine(char chaine); void tempo_ms(char); void main (void) { TRISA = 0x11; TRISB = 0x01; PORTA = 0; PORTB = 0; init_aff(); affiche_caractere('B'); } //initialisation de l'afficheur void init_aff(void) { ecrire_afficheur(0, 0x01);//on efface le LCD ecrire_afficheur(0, 0x30); //mode 8bits ecrire_afficheur(0, 0x28); //mode 4 bits, 2 lignes, fonte 5x7 ecrire_afficheur(0, 0x0C); //affichage en fonction ecrire_afficheur(0, 0x06); //deplacement curseur vers la gauche ecrire_afficheur(0, 0x01);//on efface le LCD } //affiche le caractere sur LCD void ecrire_afficheur(bit rs, char dat) { RS = rs; tempo_ms(5); RW = 0; tempo_ms(5); E = 0; tempo_ms(5); E = 1; tempo_ms(5); tempo_ms(5); E = 0; tempo_ms(5); } void affiche_caractere(char carac) { ecrire_afficheur(1, carac); } //chaine de caractére void aff_chaine(char chaine){ unsigned char i = 0; while(chaine[i]!= '\0' ) affiche_caractere(chaine[i++]); } void tempo_ms(char temps){ char j=0,i=0; for(j = 0;j < temps ; j++) for(i = 0; i <90 ; i++); }
-----