Utiliser un écran alphanumérique

Écran alphanumérique 2×16 caractères

Ce bout de code C vous permettra de contrôler un écran type alphanumérique avec un AVR.
Il est prévu pour du 2×8 caractères ou 2×16 caractères mais en ajoutant une ou deux lignes il peut très bien faire du 4×8 ou 4×16 caractères. Il fonctionne en mode écriture 4bits.
Les fichiers sont en téléchargement en bas de l’article.

Avant de commencer

La première chose à faire est de relier R/W à la masse! En effet, on ne fait qu’écrire sur l’écran, et ça permet d’économiser encore une sortie.

 

Dans tous mes projets en C, j’utilise les fonctions dms() et dus() qui sont en fait les fonctions _delay_ms() et _delay_us() redéfinies. Si vous avez une erreur de compilation parce qu’il ne trouve pas ces fonctions, rajoutez

#define dms(m)    _delay_ms(m)
#define dus(u)    _delay_us(u)

à votre header général, ou alors renommez les fonctions.

Settings

La première chose à faire pour adapter l’assignation des broches à votre montage est de modifier la déclaration des entrées sorties dans Init_screen(), et la partie Macros dans le header. Y’a plus qu’à mettre les broches qu’on veut!

void Init_screen()
{
// I/O
DDRC |= 0b0110000;    // PC4,5 out: RS/EN
DDRD |= 0b00001111;    // PD0..3 out: DATA
//------------------ Macros ----------------------
#define RS_ON        PORTC |= _BV(PC4)    // Register Select
#define RS_OFF        PORTC &= ~_BV(PC4)
#define EN_ON        PORTC |= _BV(PC5)    // Enable
#define EN_OFF        PORTC &= ~_BV(PC5)
#define DATA        PORTD                // DB0..3
#define CLEAR_DATA    PORTD &= ~0x0F        // Delete DATA

Par défaut les données envoyées à l’écran sont câblées sur des broches qui se suivent: PD0,1,2,3. Ça m’a permis de simplifier le code.
Si on veut les câbler sur des broches qui sont “décalées” (par exemple PD3,4,5,6), il faudra rajouter des décalages de bits pour l’envoyer au PORTD.

La sélection du format de l’écran se fait avec un define dans screen4b.h:

#define SCR_2x8    // Comment this line if your screen is a 2x16 caracters screen

Ça se passe de commentaire non? Non? Bon ben pour un écran 2×8 caractères, laisser tel quel. Sinon, pour un 2×16, commenter la ligne!

Using

Une fois le code adapté à votre montage, il suffit ensuite d’envoyer les données à l’écran au travers des fonctions de screen4b.c (qui sont normalement explicites).
Par exemple, Write_nbr(42, 8); affichera 42 à l’adresse 8. C’est-à-dire:

La réponse à la grande question

Téléchargeming

Voici les deux fichiers à rajouter à votre projet C dans votre IDE favoris! Ils sont à compiler avec AVR GCC, sinon il faudra adapter pour un autre compilo.
screen4b.c (3Ko)
screen4b.h (2Ko)

Voilà! Maintenant vous pouvez utiliser un écran pour faciliter le debug par exemple, ou pour écrire des choses qui vous tiennent à cœur! :)

N’hésitez pas à poser vos questions!

Lien Permanent pour cet article : http://mootronic.fr/soft/avr/c/utiliser-ecran-alphanumerique

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Captcha Captcha Reload