C-bibliotek för HD44780 LCD uppvisning Controller (1 / 4 steg)
Steg 1: Hur man skriver ut specialtecken
SpecialCharacters.c
Titta över de nedan koden och vi kommer att granska
Ovan är en skärmdump av kodexemplet körs på displayen:
Märka linjen mellan 5 x 10 tecken. Min skärm är en ERM2004-1
Tittar på specifikationen den nedan karaktär detalj, kan förklara denna linje. Men jag kan inte säga säkert eftersom dokumentationen är begränsad.
#include
#include "hd44780_4bit_lib.h"
/*
* Denna kodexempel används 5 x 10 tecken och en rad
* att visa specialtecken showen i tabell 4, ROM koden A00
* i hd44780 specifikationen.
* Obs med 5 x 10 tecken kan du bara skriva en rad på
* displayen.
*
*/
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
Not 1 linje och 5 x 10 tecken
hd44780_init (N_1LINE, FONT_10);
om det behövs ställa in markören och blinka
hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR);
hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK);
ställa in Increment riktning och markören riktning
hd44780_send_command(HD44780_CMD_INCREMENT);
hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT);
se tabell 4 ROM-koden AOO
om hur du konverterar övre 4 bitar och
sänka 4 bitar att formulera den under tecken
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);
denna karaktär och nästa
karaktär tar upp fullt
10 punkter i höjd för att skriva ut den
fallande j och 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);
}
Kan bryta koden ner och analysera det rad för rad:
Enligt spec ge displayen 10ms komma till spänning
__delay_cycles(10000 * CPUSPEED);
ställa in datalängd, antal linjer och teckensnitt
Not 1 linje och 5 x 10 tecken
hd44780_init (N_1LINE, FONT_10);
Funktionen __delay_cycles() pausar 10 millisekunder för att ge display spänningen komma att fungera, spänner. Ta en titt på filen hd44780_4bit_lib.h. Det finns vissa processorhastighet relaterade konstanter som definieras med __delay_cycles() funktion.
Obs: __delay_cycles() funktion kan endast ta konstanter som argument så du inte kan använda en variabel med denna funktion.
Funktionen hd44780_init() initierar displayen och argument kan överföras för att fastställa antalet linjer och teckenstorlek. Denna funktion sätter också upp hd44780 gränssnittet att använda 4 bitars drift istället för 8-bitars drift. Kolla specifikationen för detaljer.
om det behövs ställa in markören och blinka
hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR);
hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK);
ställa in Increment riktning och markören riktning
hd44780_send_command(HD44780_CMD_INCREMENT);
hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT);
Funktionen hd44780_send_command() används för att skicka kommandon till hd44780 gränssnittet. Hd44780 kan acceptera både kommandon och data. Genom att ändra vissa bitar i MPU-gränssnittet kan du antingen skicka data eller instruktioner.
Så i detta nästa exempel, om vi o-kommentera antingen av två linjer kan vi Visa en markör och eller blink markören.
Om du är intresserad finns i referens till RS registrera väljare lite, r och RW, läsa skriva lite mer information.
En av de coola saker du kan göra med hd44780 gränssnittet är avgör om du vill skriva data från vänster till höger eller höger till vänster. Dessa två kommandon bestämma dessa inställningar. Vi kan öka eller minska markören flytta riktningen och flytta markören till vänster eller höger när data skickas till displayen.
se tabell 4 ROM-koden AOO
om hur du konverterar övre 4 bitar och
sänka 4 bitar att formulera den under tecken
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);
Det finns en tabell i specifikationen, tabell 4 ROM koden A00 som listar tecken och symboler som stöds av hd44780. Om du följa arcoss upp på bordet för att få kolonnen av symbolen du letar, (Skriv ner de övre fyra bitarna) och följ sedan ner till raden som innehåller symbolen du söker, skriv ner de lägre 4 bitarna, av denna symbol.
Du nu kan uppföra en full 8-bitars symbol, omvandla denna binära tal till hex och denna hex värde är vad du kan skicka med funktionen hd44780_write_special{char().
Funktionen hd44780_write_special_char() ändrar RW och RS bitar i MPU gränssnittet och skickar symbolen till registret display (DDRAM) (DR).
När skrivning till DR registrerat AC, adress räknaren är ökat eller minskas baserat på status för öka/minska, markörknappen vänster/markören höger inställningar. När du anger startadressen adress räknaren håller reda på där tecken/symboler skrivs.
denna karaktär och nästa < br > / / karaktär tar upp fullt
10 punkter i höjd för att skriva ut den
fallande j och 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);
Denna nästa avsnitt i koden använder också funktionen hd44780_write_special_char() för att skriva tecken till displayen. Två av dessa tecken är de gemena "g" och "j". Det intressanta att notera är att dessa två tecken är utökad längre och använda full 10 dot mönstret av 5 x 10 karaktär mönster.
Så när du skriver ut dessa tecken måste du ändra displayen på att funktionen ovan hd44780_init(). Begränsningen av att displayen att 5 x 10 tecken punktmönster är du lös en rad med displayen, nu kan du bara skriva ut till en rad på displayen.