Biblioteca Avr pentru lcd cu conectare arbitrară a pinilor

Acum ceva timp am scris macro-uri pentru a implementa porturi virtuale. Cu ajutorul acestor macrocomenzi, puteți remake aproape orice bibliotecă pentru a lucra cu pini de microcontroler arbitrar. Prima bibliotecă care a venit sub această modificare a fost biblioteca pentru caracterul LCD. În acest post vă voi spune cum să îl aplicați în proiectul dvs.

- funcționează cu compilatoare IAR AVR, CodeVision AVR, GNU GCC,
- sprijină controlorii LCD HD44780 și KS0066,
- sprijină conectarea lcd la ieșirea arbitrară a microcontrolerului,
- acceptă interfața pe 4 biți și pe 8 biți,
- are funcția de a trimite linii din RAM și flash,
- are funcția de a adăuga personaje personalizate.

compilers_4.h - fișier pentru a sprijini trei compilatoare
port_macros.h - macrocomenzi virtuale de port
lcd_lib_2.h - fișierul antet al bibliotecii LCD cu prototipuri de funcții și setări
lcd_lib_2.c - fișier pentru implementarea funcțiilor de bibliotecă LCD

1. Rescrieți toate fișierele de bibliotecă în dosarul proiectului.
2. Conectați lcd_lib_2.c la proiectul din mediul de dezvoltare.
3. Includeți fișierul header lcd_lib_2.h în fișierul sishnuyu, care va folosi funcțiile lcd.
4. Configurați configurația bibliotecii lcd în fișierul header lcd_lib_2.h
5. Înregistrați în cod funcția apel biblioteca lcd.

Configurarea configurației din fișierul lcd_lib_2.h include următorii pași.

Biblioteca Avr pentru lcd cu conectare arbitrară a pinilor

Cadrele sunt acele părți ale codului pe care trebuie să le personalizați pentru proiectul dvs.


2. Setările driverului global

LCD_CHECK_FL_BF - verificați pavilionul BF sau utilizați întârzierea programului. 0 - întârziere, 1 - verificați steagul.

LCD_BUS_4_8_BIT este magistrala de date utilizată. Busul 0 - 4 biți, 1 - 8 biți

3. Setarea inițializării afișajului

Aceste setări determină starea afișajului după apelarea funcției LCD_Init ().

LCD_ONE_TWO_LINE - numărul de rânduri afișate. Linia 0 - 1; 1 - 2 rânduri.

LCD_FONT58_FONT511 este tipul de font. 0 - 5x8 puncte; 1 - 5x11 puncte.

LCD_SHIFT_RIGHT_LEFT - deplasați întregul ecran. 0 - când se citește memoria RAM, schimbarea nu este efectuată, 1 - când se scrie în RAM, schimbarea afișajului se efectuează în funcție de setarea LCD_DEC_INC_DDRAM (0 - deplasare spre dreapta, 1 - deplasare spre stânga)

LCD_DISPLAY_OFF_ON - activați / dezactivați afișajul. 0 - afișajul este oprit, dar datele din RAM rămân; 1 - afișajul este pornit.

LCD_CURSOR_OFF_ON - arată un cursor subliniat. 0 - cursorul nu este afișat, 1 - cursorul este afișat.

LCD_CURSOR_BLINK_OFF_ON - afișează un cursor care clipește. 0 - cursorul intermitent nu este afișat; 1 - se afișează cursorul intermitent.

LCD_CURSOR_DISPLAY_SHIFT - comanda pentru a comuta dreapta / stânga a cursorului sau a afișajului fără scrierea pe afișaj. Biblioteca nu este utilizată și nu afectează nimic. Am fost aici accidental)

LCD_Clear () - șterge afișajul.
LCD_ReturnHome () - Returnează cursorul în poziția de pornire.
LCD_Goto (x, y) - poziționarea cursorului. x este numărul de familiaritate, y este numărul liniei.
void LCD_Init (void) - Inițializarea afișajului.
void LCD_WriteCom (date uint8_t) - scrieți comanda
void LCD_WriteData (date char) - ieșire un caracter
void LCD_SendStr (char * str) - ieșirea unui șir din memoria RAM.
void LCD_SendStrFl (char __flash * str) - șir de ieșire din memoria flash.
void LCD_SetUserChar (uint8_t __flash * sym, uint8_t adr) - încărcați un caracter personalizat în memoria RAM a afișajului.

LCD_VP_iar.rar - proiect de testare pentru IAR AVR
LCD_VP_as6.rar - proiect de testare pentru AtmelStudio
LCD_VP_cv.rar - proiect de testare pentru CodeVision AVR
LCD_VP_winavr.rar - proiect de testare pentru WinAvr
LCD_VP_proteus.rar - proiect de testare pentru Proteus
lcd_lib_2.rar - biblioteca lcd cu conectare arbitrară a pinilor

Vă mulțumesc foarte mult pentru bibliotecă. Dar nu pot face să funcționeze. Afișarea WH0802A-NGG-CT nu răspunde deloc.
Compilator WINAVR, MK-ATmega8A

#define VIRT_PORT
#ifdef VIRT_PORT

// aici am definit un port virtual

// autobuz de date LCD
#define LCD_PORT LCD_DATA, F, _VIRT

#define LCD_DATA_0 D, 0, _HI
#define LCD_DATA_1 D, 1, _HI
#define LCD_DATA_2 D, 2, _HI
#define LCD_DATA_3 C, 5, _HI
#define LCD_DATA_4 C, 4, _HI
#define LCD_DATA_5 C, 3, _HI
#define LCD_DATA_6 B, 0, _HI
#define LCD_DATA_7 B, 1, _HI

// cabluri de control LCD
#define LCD_RS C, 0, _HI
#define LCD_RW C, 1, _HI
#define LCD_EN C, 2, _HI


// setările driverului global
#define LCD_CHECK_FL_BF 1
#define LCD_BUS_4_8_BIT 1

// afișați setările de inițializare
#define LCD_ONE_TWO_LIN E 1
#define LCD_FONT58_FONT 511 0
#define LCD_DEC_INC_DDR AM 1
#define LCD_SHIFT_RIGHT _LEFT 0
#define LCD_DISPLAY_OFF _ON 1
#define LCD_CURSOR_OFF_ ON 1
#define LCD_CURSOR_BLIN K_OFF_ON 1
#define LCD_CURSOR_DISP LAY_SHIFT 0

alte
ieșire 1 - pământ
producția 2 - +5
ieșire 3 - +5

Articole similare