Étape 3: Comment lire à partir de l’écran
readDDRAM.c
Cet affichage ne ressemble pas beaucoup, mais jetez un oeil à ce qui se passe réellement.
Tout d’abord, nous vous écrivons un texte à l’écran, puis nous réinitialiser la position de départ de l’AC, adresse Counter et lire les caractères qui ont été écrits.
Puis nous réécrire les personnages qui ont été lues à l’écran.
Regardons le code :
#include #include "hd44780_4bit_lib.h" #include /* * This code example show how to read text from DDRAM, * in this example we will write some text to the display * then read the text and then write the read text * back to the display. */void main() { WDTCTL = WDTPW | WDTHOLD; // Disable watchdog timer uint8_t rtn = 0; uint8_t readStr[80]; uint8_t *pint; unsigned int cnt = 0; unsigned int charCnt = 0; // 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 // notice we have setup the display for 2 lines // and using the 5 x 8 character size hd44780_init(N_2LINE, FONT_8); // turn display on and clear the display // and set cursor to home position 0x00 // hd44780_send_command(HD44780_CMD_DISPLAY_ON); // hd44780_send_command(HD44780_CMD_RETURN_HOME); // hd44780_send_command(HD44780_CMD_CLEAR_DISPLAY); hd44780_setCursorPosition(0, 0); hd44780_write_string("this"); hd44780_setCursorPosition(0, 0); pint = readStr; // reads characters from display while(1) { rtn = hd44780_readByte(); if (rtn == ' ') { break; } *pint = rtn; pint++; charCnt++; } // writes read characters back to display for(cnt = 0; cnt < charCnt; cnt++) { hd44780_write_special_char(readStr[cnt]); } hd44780_send_command(HD44780_CMD_RETURN_HOME); }
Nous casser le code et voir ce qui se passe :
uint8_t rtn = 0;uint8_t readStr[80]; uint8_t *pint; unsigned int cnt = 0; unsigned int charCnt = 0;// 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 // notice we have setup the display for 2 lines // and using the 5 x 8 character size hd44780_init(N_2LINE, FONT_8);
Tout d’abord, nous configurons désactivé certaines variables que nous pouvons utiliser lors de la lecture et l’écriture des personnages tirés de l’affichage.
Avis que nous mettons en place l’affichage de 2 lignes et motif de caractère de 5 x 8 points.
hd44780_setCursorPosition(0, 0); hd44780_write_string("this"); hd44780_setCursorPosition(0, 0); pint = readStr; // reads characters from display while(1) { rtn = hd44780_readByte(); if (rtn == ' ') { break; } *pint = rtn; pint++; charCnt++; }
Maintenant, nous avons mis la position du curseur, sur l’affichage à la ligne 0, colonne 0 et écrire le texte sur l’écran.
Nous configurons un pointeur vers le tableau readStr. Maintenant nous parcourir la DDRAM, saisissant un caractère à la fois et en plaçant le personnage dans le tableau.
Si l’autre a reçu le caractère ' ', nous supposons alors qu’il n’y a pas plus de caractères et nous quitter la boucle.
C’est juste un exemple, si vous vous attendez d’une suite de mots puis votre logique devront être un peu plus complexes, telles qu’une boucle à travers toute la gamme, une solution facile.
// writes read characters back to display for(cnt = 0; cnt < charCnt; cnt++) { hd44780_write_special_char(readStr[cnt]); } hd44780_send_command(HD44780_CMD_RETURN_HOME);
Étant donné que la position du curseur est suivie par l’AC, compteur d’adresse, notre curseur est déjà assis à l’endroit après le texte de lecture. Tout ce que nous avons à faire est lire les caractères du tableau et de les afficher à la fois de retour à l’affichage.