Étape 1: Comment imprimer des caractères spéciaux
SpecialCharacters.c
Regarder par-dessus le code ci-dessous et nous passerons en revue
Ci-dessus est une capture d’écran de l’exemple de code en cours d’exécution sur l’écran :
Notez la ligne à travers les personnages de 5 x 10. Mon écran est un ERM2004-1
En regardant la spécification le sous détail de caractère, pourraient expliquer cette ligne. Mais je ne peux pas dire à coup sûr comme documentation est limitée.
#include #include "hd44780_4bit_lib.h"/* * This code example uses 5 x 10 character and one line * to display the special characters show in table 4, ROM Code A00 * in the hd44780 specification. * Note using the 5 x 10 characters you can only write to one line on * the display. * */void main() { WDTCTL = WDTPW | WDTHOLD; // Disable watchdog timer // according to spec give the display 10ms to come up to voltage __delay_cycles(10000 * CPUSPEED); // set up data length, number of lines and font // Note 1 line and 5 x 10 characters hd44780_init(N_1LINE, FONT_10); // if needed set up the cursor and blink // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR); // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK); // set Increment direction and cursor direction hd44780_send_command(HD44780_CMD_INCREMENT); hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT); // refer to table 4 ROM Code AOO // on how to convert upper 4 bits and // lower 4 bits to formulate the below characters hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF); // this character and the next // character takes up the full // 10 dots in height to print the // decending j and g hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB);}
Permet de décomposer le code et l’analyse ligne par ligne :
// according to spec give the display 10ms to come up to voltage __delay_cycles(10000 * CPUSPEED); // set up data length, number of lines and font // Note 1 line and 5 x 10 characters hd44780_init(N_1LINE, FONT_10);
La fonction de __delay_cycles() fait une pause de 10 millisecondes pour donner la tension de l’écran pour venir à la plage de fonctionnement. Examinez le fichier hd44780_4bit_lib.h. Il y a certains CPU vitesse constantes connexes qui sont définis pour être utilisés avec la fonction __delay_cycles().
Remarque : __delay_cycles() fonction peut prendre seulement constantes en tant qu’argument vous ne pouvez pas utiliser une variable avec cette fonction.
La fonction hd44780_init() Initialise l’affichage et arguments peuvent être passés afin de déterminer le nombre de lignes et de la taille de la police. Cette fonction définit également l’interface hd44780 utiliser opération 4 bits au lieu de l’opération de 8 bits. Vérifiez les spécifications pour plus de détails.
// if needed set up the cursor and blink // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR); // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK); // set Increment direction and cursor direction hd44780_send_command(HD44780_CMD_INCREMENT); hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT);
La fonction hd44780_send_command() est utilisée pour envoyer des commandes à l’interface hd44780. Le hd44780 peut accepter les commandes et les données. En changeant quelques morceaux dans l’interface MPU, vous pouvez soit envoyer données ou instructions.
Dans l’exemple suivant, si nous avons un commentaire soit des deux lignes nous pouvons afficher un curseur et clignoter le curseur.
Si vous êtes intéressé, consultez la référence au bit de sélecteur d’enregistrement RS, RS et le RW, lecture/écriture de bits pour plus d’informations.
Une des choses cool que vous pouvez faire avec l’interface hd44780 est Déterminez si vous voulez écrire des données de gauche à droite ou de droite à gauche. Ces deux prochaines commandes déterminent ces paramètres. Nous pouvons incrémentent ou décrémentent la direction de déplacement du curseur et déplacer le curseur vers la gauche ou la droite lorsque les données sont envoyées à l’écran.
// refer to table 4 ROM Code AOO // on how to convert upper 4 bits and // lower 4 bits to formulate the below characters hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF);
Il y a une table dans les spécifications, les tableau 4 ROM Code A00 qui répertorie les caractères et les symboles qui sont pris en charge par le hd44780. Si vous suivez arcoss le haut du tableau pour obtenir la colonne du symbole recherché, (Notez les quatre bits supérieures) puis suivez jusqu'à la ligne qui contient le symbole recherché, notez les 4 bits inférieurs, de ce symbole.
Vous maintenant pouvez construire un symbole plein de 8 bit, convertir ce nombre binaire au sortilège et cette valeur hexadécimale est ce que vous pouvez envoyer à l’aide de la fonction hd44780_write_special{char().
La fonction hd44780_write_special_char() modifie les bits RW et RS dans l’interface MPU et envoie le symbole sur le registre de l’affichage (DDRAM) (DR).
Après avoir écrit au DR enregistré l’AC, compteur d’adresse est incrémentée ou décrémentée basée sur le statut de l’incrémentation/décrémentation, paramètres de curseur curseur de gauche/droite. Une fois que vous définissez le compteur d’adresse assure le suivi de l’adresse de départ où les caractères/symboles sont écrits.
// this character and the next<br>// character takes up the full // 10 dots in height to print the // decending j and g</p><p>hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7);</p><p>hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA);</p><p>hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB);
Cette section de code suivante utilise également la fonction hd44780_write_special_char() pour écrire des caractères à l’écran. Deux de ces personnages sont les minuscules « g » et « j ». La chose intéressante à noter est que ces deux personnages sont étendues plus et utilisent le motif à pois intégral 10 du motif 5 x 10 caractères.
Donc lorsque vous imprimez ces caractères, vous devez modifier l’affichage lors de l’appel à la fonction de hd44780_init() ci-dessus. La limitation du réglage de l’affichage en motif de points de 5 x 10 caractères est vous perdez une seule ligne de l’écran, maintenant, vous pouvez imprimer uniquement sur une seule ligne à l’écran.