C-bibliotek för HD44780 LCD uppvisning Controller (3 / 4 steg)
Steg 3: Hur man läser från displayen
readDDRAM.c
Denna display ser inte mycket ut, men ta en titt på vad som verkligen händer.
Först vi skriver lite text till visning, då vi återställa startpositionen för AC, adress Counter och läsa de tecken som har skrivits.
Sedan skriva vi de tecken som lästes tillbaka till displayen.
Låt oss titta på koden:
#include
#include "hd44780_4bit_lib.h"
#include
/*
* Detta kodexempel visar hur du läsa texten från DDRAM,
* i det här exemplet kommer vi skriva lite text till displayen
* sedan läsa texten och sedan skriva Läs texten
* tillbaka till displayen.
*/
void main)
{
WDTCTL = WDTPW | WDTHOLD; Inaktivera watchdog-timer
uint8_t rtn = 0;
uint8_t readStr [80].
uint8_t * pint;
unsigned int cnt = 0;
unsigned int charCnt = 0;
Enligt spec ge displayen 10ms komma till spänning
__delay_cycles(10000 * CPUSPEED);
ställa in datalängd, antal linjer och teckensnitt
märke vi har setup Visa för 2 rader
och med 5 x 8 tecken storleksanpassar
hd44780_init (N_2LINE, FONT_8);
Aktivera visning och avmarkera Visa
och ställa markören till ursprungsläget 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;
läser tecken från displayen
While(1)
{
RTN = hd44780_readByte();
om (rtn == "")
{
bryta;
}
* pint = rtn;
pint ++;
charCnt ++;
}
skriver läsa tecken tillbaka för att Visa
för (cnt = 0; cnt < charCnt; cnt ++)
{
hd44780_write_special_char(readStr[CNT]);
}
hd44780_send_command(HD44780_CMD_RETURN_HOME);
}
Låt oss bryta upp koden och se vad som händer:
uint8_t rtn = 0;
uint8_t readStr [80].
uint8_t * pint;
unsigned int cnt = 0;
unsigned int charCnt = 0;
Enligt spec ge displayen 10ms komma till spänning
__delay_cycles(10000 * CPUSPEED);
ställa in datalängd, antal linjer och teckensnitt
märke vi har setup Visa för 2 rader
och med 5 x 8 tecken storleksanpassar
hd44780_init (N_2LINE, FONT_8);
Först setup off vi vissa variabler som vi kan använda under läsningen och skrivandet av karaktärerna från displayen.
Märker vi ställer in skärmen för 2 rader och 5 x 8 tecken punktmönster.
hd44780_setCursorPosition (0, 0);
hd44780_write_string("This");
hd44780_setCursorPosition (0, 0);
pint = readStr;
läser tecken från displayen
While(1)
{
RTN = hd44780_readByte();
om (rtn == "")
{
bryta;
}
* pint = rtn;
pint ++;
charCnt ++;
}
Vi nu ställa in markörens position, på displayen till raden 0, kolumn 0 och skriva texten till displayen.
Vi setup en pekare till arrayen readStr. Nu loopa vi igenom DDRAM, greppa ett tecken i taget och att placera karaktären i matrisen.
Om nästa fått karaktär är "", vi då anta att det finns inga fler tecken och vi avsluta loopen.
Detta är bara ett exempel, om du förväntar dig en rad ord då din logik kommer att behöva vara lite mer komplexa, såsom looping genom hela raden, en enkel fix.
skriver läsa tecken tillbaka för att Visa
för (cnt = 0; cnt < charCnt; cnt ++)
{
hd44780_write_special_char(readStr[CNT]);
}
hd44780_send_command(HD44780_CMD_RETURN_HOME);
Eftersom markören spåras av AC, adress Counter, sitter våra markören redan på plats efter Läs texten. Allt vi behöver göra är att läsa tecknen från array och visa dem en i taget tillbaka till displayen.