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++); }
-----