111 lines
4.6 KiB
C
111 lines
4.6 KiB
C
#ifndef LCD_H
|
|
#define LCD_H
|
|
|
|
#define LCD_PCF8574_INIT 1 //èíèöèàëèçàöèÿ pcf
|
|
|
|
#define LCD_PCF8574_DEVICEID 0 //id óñò-âà
|
|
#define LCD_FUNCTION_DEFAULT LCD_FUNCTION_4BIT_2LINES
|
|
|
|
// óñòàíîâêà ðåæèìà ââîäà: âêëþ÷åíèå/âûêëþ÷åíèå ñìåùåíèÿ äèñïëåÿ, íàïðàâëåíèå ïåðåìåùåíèÿ êóðñîðà óìåíüøàòü/óâåëè÷èâàòü
|
|
#define LCD_ENTRY_DEC 0x04 // ñìåùåíèå äèñïëåÿ âûêëþ÷åíî, êóðñîð ïåðåìåùàåòñÿ ïî íàêëîíó
|
|
#define LCD_ENTRY_DEC_SHIFT 0x05 // âêëþ÷åíèå ñäâèãà äèñïëåÿ, ïåðåìåùåíèå êóðñîðà ïî íàêëîíó
|
|
#define LCD_ENTRY_INC_ 0x06 // ñìåùåíèå äèñïëåÿ âûêëþ÷åíî, âêë. ïåðåìåùåíèå êóðñîðà â íàïðàâëåíèè
|
|
#define LCD_ENTRY_INC_SHIFT 0x07 // âêëþ÷åíèå ñìåùåíèÿ äèñïëåÿ, óâåëè÷åíèå íàïðàâëåíèÿ ïåðåìåùåíèÿ êóðñîðà
|
|
|
|
// âêëþ÷åíèå/âûêëþ÷åíèå äèñïëåÿ, âêëþ÷åíèå/âûêëþ÷åíèå êóðñîðà, ìèãàþùèé ñèìâîë â ïîçèöèè êóðñîðà
|
|
#define LCD_DISP_OFF 0x08 // äèñïëåé âûêëþ÷åí
|
|
#define LCD_DISP_ON 0x0C // äèñïëåé âêë, êóðñîð âûêë
|
|
#define LCD_DISP_ON_BLINK 0x0D // äèñïëåé âêë, êóðñîð âûêë, åñòü ìèãàþùèé ñèìâë
|
|
#define LCD_DISP_ON_CURSOR 0x0E // äèñïëåé âêë, êóðñîð âêë
|
|
#define LCD_DISP_ON_CURSOR_BLINK 0x0F // äèñïëåé âêë, êóðñîð âêë, åñòü ìèãàþùèé ñèìâë
|
|
|
|
// ïåðåìåùåíèå êóðñîðà/ñìåùåíèå äèñïëåÿ
|
|
#define LCD_MOVE_CURSOR_LEFT 0x10 // êóðñîð íàëåâî
|
|
#define LCD_MOVE_CURSOR_RIGHT 0x14 // êóðñîð íàïðàâî
|
|
#define LCD_MOVE_DISP_LEFT 0x18 // ñäâèã âëåâî
|
|
#define LCD_MOVE_DISP_RIGHT 0x1C // ñäâèã âïðàâî
|
|
|
|
// íàáîð ôóíêöèé: óñòàíîâêà äëèíû äàííûõ èíòåðôåéñà è êîëè÷åñòâà ñòðîê îòîáðàæåíèÿ
|
|
#define LCD_FUNCTION_4BIT_1LINE 0x20 // 4-áèòíûé èíòåðôåéñ, îäíà ñòðîêà, 5x7 òî÷åê
|
|
#define LCD_FUNCTION_4BIT_2LINES 0x28 // 4-áèòíûé èíòåðôåéñ, äâóõñòðî÷íûé, 5x7 òî÷åê
|
|
#define LCD_FUNCTION_8BIT_1LINE 0x30 // 8-áèòíûé èíòåðôåéñ, îäíà ñòðîêà, 5x7 òî÷åê
|
|
#define LCD_FUNCTION_8BIT_2LINES 0x38 // 8-áèòíûé èíòåðôåéñ, äâóõñòðî÷íûé, 5x7 òî÷åê
|
|
|
|
#define LCD_LINES 2 // êîë-âî ñòðîê
|
|
#define LCD_DISP_LENGTH 16 // êîë-âî ñèìâîëîâ â ñòðîêå
|
|
#define LCD_LINE_LENGTH 0x40 // âíóòðåííÿÿ äëèíà ñòðîêè äèñïëåÿ
|
|
#define LCD_START_LINE1 0x00 // DDRM àäðåñ äëÿ 1 ñòðîêè
|
|
#define LCD_START_LINE2 0x40 // DDRM àäðåñ äëÿ 2 ñòðîêè
|
|
#define LCD_WRAP_LINES 1 // ïåðåíîñ ñòðîêè
|
|
|
|
|
|
|
|
#define LCD_DATA0_PIN 4 // ïèí äëÿ äàííûõ
|
|
#define LCD_DATA1_PIN 5 // ïèí äëÿ äàííûõ
|
|
#define LCD_DATA2_PIN 6 // ïèí äëÿ äàííûõ
|
|
#define LCD_DATA3_PIN 7 // ïèí äëÿ äàííûõ
|
|
#define LCD_RS_PIN 0 // ïèí ëèíèè RS
|
|
#define LCD_RW_PIN 1 // ïèí ëèíèè RW
|
|
#define LCD_E_PIN 2 // ïèí ëèíèè òàêòèðîâàíèÿ
|
|
#define LCD_LED_PIN 3 // ïèí ïîäñâåòêè
|
|
|
|
|
|
// Ïîçèöèè áèòîâ ðåãèñòðà êîìàíä HD44780U.
|
|
#define LCD_CLR 0 // îò÷èñòèòü äèñïëåé
|
|
#define LCD_HOME 1 // âåðíóòü êóðñîð äîìîé
|
|
#define LCD_ENTRY_MODE 2 // óñòàíîâêà ðåæèìà ââîäà
|
|
#define LCD_ENTRY_INC 1 // èíêðåìåíò
|
|
#define LCD_ENTRY_SHIFT 0 // âêë ñìåùåíèå
|
|
#define LCD_ON 3 // âêë êóðñîðà
|
|
#define LCD_ON_DISPLAY 2 // âûêë äèñïëåé
|
|
#define LCD_ON_CURSOR 1 // âûêë êóðñîð
|
|
#define LCD_ON_BLINK 0 // ìèãàíèå êóðñîðà
|
|
#define LCD_MOVE 4 // ïåðåäâèæåíèå êóðñîðà
|
|
#define LCD_MOVE_DISP 3 // ïåðåäâèæåíèå êóðñîðà
|
|
#define LCD_MOVE_RIGHT 2 // ïåðåäâèæåíèå êóðñîðà íàïðàâî
|
|
#define LCD_FUNCTION 5 // íàñòðîéêà ôóíêöèé
|
|
#define LCD_FUNCTION_8BIT 4 // 8 áèòíûé ðåæèì
|
|
#define LCD_FUNCTION_2LINES 3 // àêòèâàöèÿ ñòðîê
|
|
#define LCD_FUNCTION_10DOTS 2 // øðèôòû
|
|
#define LCD_CGRAM 6 // óñòàíîâêà àäðåñà CG RAM
|
|
#define LCD_DDRAM 7 // óñòàíîâêà àäðåñà DD RAM
|
|
#define LCD_BUSY 7 // äèñïëåé çàíÿò
|
|
|
|
// ñòàíäàðòíûé ðåæèì
|
|
#define LCD_MODE_DEFAULT ((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC) )
|
|
|
|
// èíèöèàëèçàöèÿ äèñïëåÿ
|
|
void lcd_init(uint8_t dispAttr);
|
|
|
|
// î÷èñòêà äèñïëåÿ
|
|
void lcd_clrscr(void);
|
|
|
|
// êóðñîâ â íà÷àëî êîîðäèíàò
|
|
void lcd_home(void);
|
|
|
|
// ïåðåìåùåíèå êóðñîðà ïî êîîðäèíàòàì
|
|
void lcd_gotoxy(uint8_t x, uint8_t y);
|
|
|
|
// âêë è îòêë ïîäñâåòêè
|
|
void lcd_led(uint8_t onoff);
|
|
|
|
// îòîáðàæåíèå ñèìâîëà â òåêóùåé ïîçèöèè êóðñîðà
|
|
void lcd_putc(char c);
|
|
|
|
// âûâîä ñòðîêè íà äèñïëåé
|
|
void lcd_puts(const char *s);
|
|
|
|
// âûâîä ñòðîêè èç ïàìÿòè
|
|
void lcd_puts_p(const char *progmem_s);
|
|
|
|
// ñëóæåáíàÿ ôóíêöèÿ äëÿ îòïðàâêè êîìàíä äèñïëåþ
|
|
void lcd_command(uint8_t cmd);
|
|
|
|
// îòïðàâêà áàéòà íà äèñïëåé
|
|
void lcd_data(uint8_t data);
|
|
|
|
// ìàêðîñû äëÿ àâòîìàòè÷åñêîãî ñîõðàíåíèÿ ñòðîêîâîé êîíñòàíòû â ïàìÿòè ïðîãðàììû
|
|
#define lcd_puts_P(__s) lcd_puts_p(PSTR(__s))
|
|
|
|
#endif
|