C-bibliotek för HD44780 LCD uppvisning Controller (2 / 4 steg)
Steg 2: Hur du skriver ut på en specifik markörens Position
Låt oss fortsätta med granska kodexemplen hd44780 LCD bibliotek. Se föregående inlägg för länkar till källkoden och en förklaring av vad vi arbetar med.
Nu ska vi titta på nästa kodexempel:
CursorPosition.c
Anmärkning: I ovanstående bild är de rader som börjar med '0' och '1' fodra en.
Rader som börjar med '2' och '3' är linje två.
Skärmen jag har är en ERM2004-1. Den stöder två 40 tecken raderna upp över 4 20 tecken linjer på displayen.
Om du inte gjort det, se de sista inlägg, för koden databasen länken och ladda ner källkoden så du kan följa med.
Vi kommer att visa hela kodexemplet och sedan diskutera koden sektionsvis.
#include
#include "hd44780_4bit_lib.h"
/*
* Denna kodexempel används hd44780_setCursorPosition() functioh
* ställa markören startpositionen med row, information i Tullkontorslistan
* Denna markör info sedan skrivs till adressen DDRAM.
* Med den här metoden är det mycket lätt att p text på dissplay
*/
void main)
{
WDTCTL = WDTPW | WDTHOLD; Inaktivera watchdog-timer
Enligt spec ge displayen 10ms komma till spänning
__delay_cycles(10000 * CPUSPEED);
ställa in datalängd, antal linjer och teckensnitt
märker vi har setup Visa för 2 rader och
med 5 x 8 tecken storleksanpassar
hd44780_init (N_2LINE, FONT_8);
om behövs ställa in markören
hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR);
hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK);
hd44780_send_command(HD44780_CMD_RETURN_HOME);
hd44780_send_command(HD44780_CMD_CLEAR_DISPLAY);
ställa in Increment riktning och markören riktning
hd44780_send_command(HD44780_CMD_INCREMENT);
hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT);
hd44780_send_command(HD44780_CMD_RETURN_HOME);
hd44780_send_command(HD44780_CMD_CLEAR_DISPLAY);
Jag testar med displayen är en två linje 40 teckens display
Displayen visar 20 tecken per rad så att varje rad sveper två gånger
för något som liknar en 4 rad display.
På raden en om du skriver förbi 20 karaktären texten
dyker upp på vad som visas
att vara den tredje raden.
Samma sak gäller för den andra raden, vilket tidigare tecken på
20 tecken skrivs
till vad som verkar vara den fjärde raden.
//
hd44780_setCursorPosition (0, 0);
hd44780_write_string("0123456789");
hd44780_setCursorPosition (0, 10);
hd44780_write_string("0123456789");
hd44780_setCursorPosition (0, 20);
hd44780_write_string("11234567890123456789");
hd44780_setCursorPosition (1, 0);
hd44780_write_string("21234567890123456789");
hd44780_setCursorPosition (1, 20);
hd44780_write_string("31234567890123456789");
hd44780_send_command(HD44780_CMD_RETURN_HOME);
}
Den första delen av koden förklaras i avsnittet ovan.
Funktionen hd44780_send_command() ställer in hd44780 gränssnittet att skicka kommandon till IR, instruktion register. Dessa kommandon bara starta display för att skriva.
Om du är intresserad, se hd4780 specifikationen för detaljer. Se föregående inlägg för en länk för specifikationen.
hd44780_setCursorPosition (0, 0);
hd44780_write_string("0123456789");
hd44780_setCursorPosition (0, 10);
hd44780_write_string("0123456789");
hd44780_setCursorPosition (0, 20);
hd44780_write_string("11234567890123456789");
hd44780_setCursorPosition (1, 0);
hd44780_write_string("21234567890123456789");
hd44780_setCursorPosition (1, 20);
hd44780_write_string("31234567890123456789");
hd44780_send_command(HD44780_CMD_RETURN_HOME);
Funktionen hd44780_setCursorPosition() appeller en instruktion, kallas "ställa in DDRAM adress"
Argument som gått uppsättning upp linjen och markörposition så att nästa gång data skickas till displayen, att data placeras på rätt plats.
Funktionen hd44780_write_string() tar passerade strängen och skriver ut ett tecken i taget till startplatsen anges av funktionen hd44780_setCursorPosition(). Räknaren AC adress fungerar det magi så du inte behöver oroa dig öka eller minska markörens position.