Stap 1: Hoe om af te drukken van speciale tekens
SpecialCharacters.c
Kijk over de onderstaande code en we zullen onderzoeken
Boven is een screenshot van de steekproef code die wordt uitgevoerd op het display:
Let op de lijn door de 5 x 10 tekens. Mijn scherm is een ERM2004-1
Kijken naar de specificatie de onder karakter detail, misschien een verklaring voor deze regel. Maar ik kan niet zeggen zeker als documentatie beperkt is.
#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);}
Laat de code breken en analyseren het regel voor regel:
// 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);
De __delay_cycles() functie pauzeert 10 milliseconden zodat de spanning van de display om te komen tot operationele bereik. Neem een kijkje op het hd44780_4bit_lib.h-bestand. Er zijn sommige CPU snelheid verwante constanten die zijn gedefinieerd voor gebruik met de __delay_cycles() functie.
Opmerking: __delay_cycles() functie kan pas constanten als argument zodat u kunt een variabele met deze functie niet gebruiken.
De hd44780_init() functie initialiseert het display en argumenten kunnen worden doorgegeven om vast te stellen aantal lijnen en de tekengrootte. Deze functie stelt ook de hd44780 interface 4 bit bewerking gebruiken in plaats van 8 bit operatie. Controleer de specificatie voor details.
// 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);
De hd44780_send_command() functie wordt gebruikt om opdrachten te verzenden naar de hd44780-interface. De hd44780 kan zowel opdrachten en gegevens. Door het veranderen van sommige stukjes in de MPU-interface kunt u ofwel het verzenden van gegevens of instructies.
Zo in dit volgende voorbeeld, als we un-commentaar van de twee lijnen we kunnen een cursor worden weergegeven en of de cursor knipperen.
Zie de verwijzing naar de RS registreren Selector-bit, RS en de RW, beetje lezen schrijven voor meer informatie als u geïnteresseerd bent.
Een van de leuke dingen die je met de hd44780 interface doen kunt is bepalen of u wilt gegevens schrijven van links naar rechts of van rechts naar links. Deze instellingen bepalen deze volgende twee commando's. We kunnen verhogen of verlagen van de cursor verplaatsen richting, en verplaats de cursor naar links of rechts wanneer gegevens worden verzonden naar het display.
// 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);
Er is een tabel in de specificatie, tabel 4 ROM Code A00 waarin tekens en symbolen die worden ondersteund door de hd44780. Als je volg arcoss boven aan de tabel om de kolom van het symbool dat u zoekt, (Noteer de bovenste vier stukjes) en volg tot de rij met het symbool die u zoekt, noteer de 4 lage bits, van dat symbool.
Kunt u nu een volledige 8 bit symbool bouwen, converteert u dit binaire getal naar hex en deze hex waarde is wat u kunt verzenden met behulp van de functie hd44780_write_special{char().
De hd44780_write_special_char() functie verandert de RW en RS bits in de MPU-interface en stuurt het symbool naar het display (DDRAM) register (DR).
Na schrijven naar DR registreert de AC, adres teller is oplopend of verlaagd op basis van de status van de Increment/Decrement, instellingen van de Cursor links/Cursor rechts. Zodra u het beginadres de teller adres houdt spoor van waar de tekens/symbolen zijn geschreven.
// 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);
Dit volgende gedeelte van de code gebruikt ook de functie hd44780_write_special_char() om karakters te schrijven aan de weergave. Twee van deze tekens zijn de kleine 'g' en 'j'. Het interessante ding om op te merken is dat deze twee tekens langer worden verlengd en gebruik van de volledige 10 dot patroon van het patroon van 5 x 10 karakter.
Dus bij het afdrukken van deze tekens u de weergave bij het aanroepen van de bovenstaande hd44780_init() functie wijzigen moet. De beperking van het display instellen op 5 x 10 teken dot patroon is los u één regel van het display, nu kunt u alleen afdrukken in één regel op het display.