TextLCD_595 - this change module NewTextLCD Erik Kerger. It adds the ability to output a simple Russian text, as well as some additional features implemented chip HD44780. The test was carried out on the module module MT-16S2D. The display is connected via SPI bus through to the shift register 74595 (74HC595)

Fork of TextLCD_Rus by Vasiliy Bogomazyuk

Committer:
vbogom
Date:
Sat Apr 11 20:07:49 2015 +0000
Revision:
5:455a2110179d
Parent:
4:f8898fde7408
v1.01

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vbogom 3:e604470d1838 1 /* mbed TextLCD_595 Library, for a 4-bit LCD based on HD44780
vbogom 0:d4a4f76fffb5 2 * Copyright (c) 2007-2010, sford, http://mbed.org
vbogom 0:d4a4f76fffb5 3 *
vbogom 0:d4a4f76fffb5 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
vbogom 0:d4a4f76fffb5 5 * of this software and associated documentation files (the "Software"), to deal
vbogom 0:d4a4f76fffb5 6 * in the Software without restriction, including without limitation the rights
vbogom 0:d4a4f76fffb5 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
vbogom 0:d4a4f76fffb5 8 * copies of the Software, and to permit persons to whom the Software is
vbogom 0:d4a4f76fffb5 9 * furnished to do so, subject to the following conditions:
vbogom 0:d4a4f76fffb5 10 *
vbogom 0:d4a4f76fffb5 11 * The above copyright notice and this permission notice shall be included in
vbogom 0:d4a4f76fffb5 12 * all copies or substantial portions of the Software.
vbogom 0:d4a4f76fffb5 13 *
vbogom 0:d4a4f76fffb5 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
vbogom 0:d4a4f76fffb5 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
vbogom 0:d4a4f76fffb5 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
vbogom 0:d4a4f76fffb5 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
vbogom 0:d4a4f76fffb5 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
vbogom 0:d4a4f76fffb5 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
vbogom 0:d4a4f76fffb5 20 * THE SOFTWARE.
vbogom 0:d4a4f76fffb5 21 */
vbogom 0:d4a4f76fffb5 22
vbogom 0:d4a4f76fffb5 23 #ifndef MBED_TEXTLCD_H
vbogom 0:d4a4f76fffb5 24 #define MBED_TEXTLCD_H
vbogom 0:d4a4f76fffb5 25
vbogom 0:d4a4f76fffb5 26 #include "mbed.h"
vbogom 0:d4a4f76fffb5 27
vbogom 5:455a2110179d 28
vbogom 0:d4a4f76fffb5 29 /*
vbogom 0:d4a4f76fffb5 30 *
vbogom 0:d4a4f76fffb5 31 *
vbogom 0:d4a4f76fffb5 32 * Changes by Bogomazyuk Vasiliy (Богомазюк Василий)
vbogom 0:d4a4f76fffb5 33 * Модуль испытан на жидкокристаллическом модуле MT–16S2D
vbogom 0:d4a4f76fffb5 34 *
vbogom 0:d4a4f76fffb5 35 *
vbogom 0:d4a4f76fffb5 36 */
vbogom 0:d4a4f76fffb5 37
vbogom 0:d4a4f76fffb5 38
vbogom 0:d4a4f76fffb5 39 #include <string>
vbogom 0:d4a4f76fffb5 40
vbogom 0:d4a4f76fffb5 41 /*
vbogom 0:d4a4f76fffb5 42 * Настраиваем отображение курсора
vbogom 0:d4a4f76fffb5 43 * SetCursor(onCursor|onBlink); Курсор виден и мигает.
vbogom 0:d4a4f76fffb5 44 */
vbogom 0:d4a4f76fffb5 45 #define onCursor 0x2 //Курсор включен
vbogom 0:d4a4f76fffb5 46 #define offCursor 0x0 //Курсор выключен
vbogom 0:d4a4f76fffb5 47 #define onBlink 0x1 //Курсор мигает
vbogom 0:d4a4f76fffb5 48 #define offBlink 0x0 //Курсор не мигает
vbogom 0:d4a4f76fffb5 49
vbogom 0:d4a4f76fffb5 50
vbogom 3:e604470d1838 51 /** A TextLCD_595 interface for driving 4-bit HD44780-based LCDs
vbogom 0:d4a4f76fffb5 52 *
vbogom 0:d4a4f76fffb5 53 * Currently supports 16x2, 20x2 and 20x4 panels
vbogom 0:d4a4f76fffb5 54 *
vbogom 0:d4a4f76fffb5 55 * @code
vbogom 0:d4a4f76fffb5 56 * #include "mbed.h"
vbogom 3:e604470d1838 57 * #include "TextLCD_595.h"
vbogom 0:d4a4f76fffb5 58 * #include <string>
vbogom 0:d4a4f76fffb5 59 *
vbogom 3:e604470d1838 60 * SPI spi(SPI_MOSI, NC, SPI_SCK);
vbogom 3:e604470d1838 61 * TextLCD_595 lcd(&spi, D10); // rs, e, d4, d5, d6, d7
vbogom 0:d4a4f76fffb5 62 *
vbogom 0:d4a4f76fffb5 63 *
vbogom 0:d4a4f76fffb5 64 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 65 * // Обратите внимание, что русские символы передаются в двухбайтовом представлении (UTF-16)
vbogom 0:d4a4f76fffb5 66 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 67 * const uint16_t ABC[66]={'А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',
vbogom 0:d4a4f76fffb5 68 * 'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'};
vbogom 0:d4a4f76fffb5 69 * string str="пример:: AABBCCDDeeffgghh";
vbogom 0:d4a4f76fffb5 70 *
vbogom 0:d4a4f76fffb5 71 * int pattern[8][8]={{0xA,0x15,0x0,0x10,0x8,0x4,0x2,0x1},{0x15,0xA,0x0,0x4,0x4,0x4,0x4,0x4},{0xA,0x15,0x0,0x1,0x2,0x4,0x8,0x10},{0x15,0xA,0x0,0x0,0x0,0x1F,0x0,0x0},
vbogom 0:d4a4f76fffb5 72 * {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},{0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18},{0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C},{0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E}};
vbogom 0:d4a4f76fffb5 73 *
vbogom 0:d4a4f76fffb5 74 * int main() {
vbogom 3:e604470d1838 75 * while (1) {
vbogom 0:d4a4f76fffb5 76 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 77 * // Вывод на экран текста без "руссификации", т.е. как есть
vbogom 0:d4a4f76fffb5 78 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 79 * lcd.cls();
vbogom 0:d4a4f76fffb5 80 * lcd.printf("The module");
vbogom 0:d4a4f76fffb5 81 * lcd.locate(0,1);
vbogom 4:f8898fde7408 82 * lcd.printf("TextLCD_595");
vbogom 0:d4a4f76fffb5 83 * wait(3);
vbogom 0:d4a4f76fffb5 84 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 85 * // Вывод на экран русского текста
vbogom 0:d4a4f76fffb5 86 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 87 * lcd.cls();
vbogom 0:d4a4f76fffb5 88 * lcd.print_rus("Вывод текста на русском языке!!");
vbogom 0:d4a4f76fffb5 89 * wait(3);
vbogom 0:d4a4f76fffb5 90 * lcd.cls();
vbogom 0:d4a4f76fffb5 91 *
vbogom 0:d4a4f76fffb5 92 * lcd.print_rus("Посимвольно::");
vbogom 0:d4a4f76fffb5 93 * wait(3);
vbogom 0:d4a4f76fffb5 94 * lcd.cls();
vbogom 0:d4a4f76fffb5 95 * for (int i=0; i<33; i++) {
vbogom 0:d4a4f76fffb5 96 * lcd.locate(0,0);
vbogom 0:d4a4f76fffb5 97 * lcd.putc_rus(ABC[i]);
vbogom 0:d4a4f76fffb5 98 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 99 * lcd.putc_rus(ABC[i+33]);
vbogom 0:d4a4f76fffb5 100 * wait(0.5);
vbogom 0:d4a4f76fffb5 101 * };
vbogom 0:d4a4f76fffb5 102 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 103 * // Для вывода теста, содержащего как русские, так и остальные символы необходимо любые другие символы удваивать
vbogom 0:d4a4f76fffb5 104 * // Обратите внимание, что параметром функции print_rus является экземпляр объекта string
vbogom 0:d4a4f76fffb5 105 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 106 * lcd.cls();
vbogom 0:d4a4f76fffb5 107 * lcd.print_rus("Вывод смешенной строки::");
vbogom 0:d4a4f76fffb5 108 * wait(3);
vbogom 0:d4a4f76fffb5 109 * lcd.cls();
vbogom 0:d4a4f76fffb5 110 * lcd.print_rus("Рассмотрим");
vbogom 0:d4a4f76fffb5 111 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 112 * lcd.print_rus(str);
vbogom 0:d4a4f76fffb5 113 * wait(3);
vbogom 0:d4a4f76fffb5 114 * lcd.cls();
vbogom 0:d4a4f76fffb5 115 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 116 * // Применение функции сдвига экрана, обратите внимание, что строка "Влево..." вводится за пределами видимой области
vbogom 0:d4a4f76fffb5 117 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 118 * lcd.print_rus("Двигаем текст......");
vbogom 0:d4a4f76fffb5 119 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 120 * lcd.print_rus("Вправо......");
vbogom 0:d4a4f76fffb5 121 * wait(0.5);
vbogom 0:d4a4f76fffb5 122 * for (int i=0; i<16;i++) {
vbogom 0:d4a4f76fffb5 123 * lcd.ShiftLCD_Right();
vbogom 0:d4a4f76fffb5 124 * wait(0.5);
vbogom 0:d4a4f76fffb5 125 * };
vbogom 0:d4a4f76fffb5 126 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 127 * lcd.print_rus("Влево...... ");
vbogom 0:d4a4f76fffb5 128 * for (int i=0; i<32;i++) {
vbogom 0:d4a4f76fffb5 129 * lcd.ShiftLCD_Left();
vbogom 0:d4a4f76fffb5 130 * wait(0.5);
vbogom 0:d4a4f76fffb5 131 * };
vbogom 0:d4a4f76fffb5 132 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 133 * // Управление видимостью курсора
vbogom 0:d4a4f76fffb5 134 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 135 * lcd.cls();
vbogom 0:d4a4f76fffb5 136 * lcd.print_rus("Курсор невиден");
vbogom 0:d4a4f76fffb5 137 * wait(5);
vbogom 0:d4a4f76fffb5 138 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 139 * lcd.print_rus("Он вверху слева ");
vbogom 0:d4a4f76fffb5 140 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 141 * wait(5);
vbogom 0:d4a4f76fffb5 142 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 143 * lcd.print_rus("Символ мигает ");
vbogom 0:d4a4f76fffb5 144 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 145 * lcd.SetCursor(offCursor|onBlink);
vbogom 0:d4a4f76fffb5 146 * wait(5);
vbogom 0:d4a4f76fffb5 147 * lcd.cls();
vbogom 0:d4a4f76fffb5 148 * lcd.print_rus("Курсор виден");
vbogom 0:d4a4f76fffb5 149 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 150 * lcd.SetCursor(onCursor|offBlink);
vbogom 0:d4a4f76fffb5 151 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 152 * lcd.print_rus("Он вверху слева ");
vbogom 0:d4a4f76fffb5 153 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 154 * wait(5);
vbogom 0:d4a4f76fffb5 155 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 156 * lcd.print_rus("И он не мигает ");
vbogom 0:d4a4f76fffb5 157 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 158 * lcd.SetCursor(onCursor|offBlink);
vbogom 0:d4a4f76fffb5 159 * wait(5);
vbogom 0:d4a4f76fffb5 160 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 161 * lcd.print_rus("А теперь мигает ");
vbogom 0:d4a4f76fffb5 162 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 163 * lcd.SetCursor(onCursor|onBlink);
vbogom 0:d4a4f76fffb5 164 * wait(5);
vbogom 0:d4a4f76fffb5 165 * //---------------------------------------------------------------------------------------------------------
vbogom 3:e604470d1838 166 * // Пример управления позиционированием курсора
vbogom 0:d4a4f76fffb5 167 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 168 * lcd.cls();
vbogom 0:d4a4f76fffb5 169 * lcd.print_rus("Двигаем курсор");
vbogom 0:d4a4f76fffb5 170 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 171 * for (int i=0; i<16; i++) lcd.putc(0x13);
vbogom 0:d4a4f76fffb5 172 * lcd.CursorPosition(0,1);
vbogom 0:d4a4f76fffb5 173 * wait(0.5);
vbogom 0:d4a4f76fffb5 174 * lcd.SetCursor(offCursor|onBlink);
vbogom 0:d4a4f76fffb5 175 * for (int i=0; i<16; i++) {
vbogom 0:d4a4f76fffb5 176 * lcd.ShiftCursor_Right();
vbogom 0:d4a4f76fffb5 177 * wait(0.5);
vbogom 0:d4a4f76fffb5 178 * };
vbogom 0:d4a4f76fffb5 179 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 180 * for (int i=0; i<16; i++) lcd.putc(0x14);
vbogom 0:d4a4f76fffb5 181 * wait(0.5);
vbogom 0:d4a4f76fffb5 182 * for (int i=0; i<16; i++) {
vbogom 0:d4a4f76fffb5 183 * lcd.ShiftCursor_Left();
vbogom 0:d4a4f76fffb5 184 * wait(0.5);
vbogom 0:d4a4f76fffb5 185 * };
vbogom 0:d4a4f76fffb5 186 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 187 * lcd.print_rus("Сдвинем в 1155,,00 ");
vbogom 0:d4a4f76fffb5 188 * lcd.CursorPosition(15,0);
vbogom 0:d4a4f76fffb5 189 * wait(3);
vbogom 0:d4a4f76fffb5 190 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 191 * lcd.print_rus("В начало строки ");
vbogom 0:d4a4f76fffb5 192 * lcd.home();
vbogom 0:d4a4f76fffb5 193 * wait(3);
vbogom 3:e604470d1838 194 * lcd.SetCursor(offCursor|offBlink);
vbogom 3:e604470d1838 195 * //---------------------------------------------------------------------------------------------------------
vbogom 3:e604470d1838 196 * // Включение/выключение дисплея
vbogom 3:e604470d1838 197 * //---------------------------------------------------------------------------------------------------------
vbogom 3:e604470d1838 198 * lcd.cls();
vbogom 3:e604470d1838 199 * lcd.print_rus("Выключим дисплей");
vbogom 3:e604470d1838 200 * wait(3);
vbogom 3:e604470d1838 201 * lcd.off();
vbogom 3:e604470d1838 202 * wait(3);
vbogom 3:e604470d1838 203 * lcd.on();
vbogom 3:e604470d1838 204 * lcd.locate(0,0);
vbogom 3:e604470d1838 205 * lcd.print_rus("Включили дисплей");
vbogom 3:e604470d1838 206 * wait(3);
vbogom 3:e604470d1838 207 * //---------------------------------------------------------------------------------------------------------
vbogom 3:e604470d1838 208 * // Управление подсветкой LCD-модуля
vbogom 3:e604470d1838 209 * //---------------------------------------------------------------------------------------------------------
vbogom 3:e604470d1838 210 * lcd.cls();
vbogom 3:e604470d1838 211 * lcd.print_rus("Управление");
vbogom 3:e604470d1838 212 * lcd.locate(0,1);
vbogom 3:e604470d1838 213 * lcd.print_rus("подсветкой LLCCDD");
vbogom 3:e604470d1838 214 * wait(3);
vbogom 3:e604470d1838 215 * lcd.cls();
vbogom 3:e604470d1838 216 * lcd.print_rus("Подсветка");
vbogom 3:e604470d1838 217 * lcd.locate(0,1);
vbogom 3:e604470d1838 218 * lcd.print_rus("включена ");
vbogom 3:e604470d1838 219 * wait(3);
vbogom 3:e604470d1838 220 * lcd.BackLightOff();
vbogom 3:e604470d1838 221 * lcd.locate(0,1);
vbogom 3:e604470d1838 222 * lcd.print_rus("выключена ");
vbogom 3:e604470d1838 223 * wait(3);
vbogom 3:e604470d1838 224 * lcd.BackLightOn();
vbogom 3:e604470d1838 225 * lcd.locate(0,1);
vbogom 3:e604470d1838 226 * lcd.print_rus("снова включена");
vbogom 3:e604470d1838 227 * wait(3);
vbogom 0:d4a4f76fffb5 228 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 229 * // Использование пользовательских символов
vbogom 0:d4a4f76fffb5 230 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 231 * lcd.cls();
vbogom 0:d4a4f76fffb5 232 * lcd.print_rus("Программируемые символы");
vbogom 0:d4a4f76fffb5 233 * for (int i=0; i<8; i++) lcd.writeCGRAM(i, pattern[i]);
vbogom 0:d4a4f76fffb5 234 * wait(3);
vbogom 0:d4a4f76fffb5 235 * lcd.cls();
vbogom 0:d4a4f76fffb5 236 * wait(0.5);
vbogom 0:d4a4f76fffb5 237 * int loc=0;
vbogom 0:d4a4f76fffb5 238 * for (int i=0; i<16; i++) {
vbogom 0:d4a4f76fffb5 239 * for (int k=4; k<9; k++) {
vbogom 0:d4a4f76fffb5 240 * lcd.locate(0,0);
vbogom 0:d4a4f76fffb5 241 * for (int j=0; j<16; j++) lcd.putc((k+j) % 4);
vbogom 0:d4a4f76fffb5 242 * lcd.locate(loc,1);
vbogom 0:d4a4f76fffb5 243 * if (k<8) {lcd.putc(k);} else lcd.putc(0xFF);
vbogom 0:d4a4f76fffb5 244 * wait(0.2);
vbogom 0:d4a4f76fffb5 245 * };
vbogom 0:d4a4f76fffb5 246 * loc++;
vbogom 0:d4a4f76fffb5 247 * };
vbogom 3:e604470d1838 248 * wait(2);
vbogom 3:e604470d1838 249 * }
vbogom 0:d4a4f76fffb5 250 * }
vbogom 0:d4a4f76fffb5 251 * @endcode
vbogom 0:d4a4f76fffb5 252 */
vbogom 0:d4a4f76fffb5 253
vbogom 3:e604470d1838 254 class TextLCD_595 : public Stream {
vbogom 0:d4a4f76fffb5 255 public:
vbogom 0:d4a4f76fffb5 256
vbogom 0:d4a4f76fffb5 257 /** LCD panel format */
vbogom 0:d4a4f76fffb5 258 enum LCDType {
vbogom 0:d4a4f76fffb5 259 LCD16x2 /**< 16x2 LCD panel (default) */
vbogom 0:d4a4f76fffb5 260 , LCD16x2B /**< 16x2 LCD panel alternate addressing */
vbogom 0:d4a4f76fffb5 261 , LCD20x2 /**< 20x2 LCD panel */
vbogom 0:d4a4f76fffb5 262 , LCD20x4 /**< 20x4 LCD panel */
vbogom 0:d4a4f76fffb5 263 , LCD24x2 /**< 24x2 LCD panel */
vbogom 0:d4a4f76fffb5 264 , LCDuser /** User defined LCD, rows/columns must be set */
vbogom 0:d4a4f76fffb5 265 };
vbogom 0:d4a4f76fffb5 266
vbogom 3:e604470d1838 267
vbogom 3:e604470d1838 268 /** Create a TextLCD_595 interface
vbogom 3:e604470d1838 269 * @code
vbogom 3:e604470d1838 270 * ______________
vbogom 3:e604470d1838 271 * | |
vbogom 3:e604470d1838 272 * d5<-|1 16|
vbogom 3:e604470d1838 273 * d6<-|2 15|-> d4
vbogom 3:e604470d1838 274 * d7<-|3 14|->MOSI
vbogom 3:e604470d1838 275 * rs<-|4 13|
vbogom 3:e604470d1838 276 * e<-|5 74HC595 12|->CS
vbogom 3:e604470d1838 277 * bl<-|6 11|->CLK
vbogom 3:e604470d1838 278 * |7 10|
vbogom 3:e604470d1838 279 * |8 9|
vbogom 3:e604470d1838 280 * |____________|
vbogom 0:d4a4f76fffb5 281 *
vbogom 3:e604470d1838 282 * bl - Управление подсветкой экрана (BackLight)
vbogom 3:e604470d1838 283 * @endcode
vbogom 3:e604470d1838 284 *
vbogom 3:e604470d1838 285 * @param spi Модуль подключен к микросхеме 74595 (проверено на 74HC595)
vbogom 3:e604470d1838 286 * @param CS Выбор чипа (Chip Select)
vbogom 0:d4a4f76fffb5 287 * @param type Sets the panel size/addressing mode (default = LCD16x2)
vbogom 0:d4a4f76fffb5 288 */
vbogom 3:e604470d1838 289
vbogom 3:e604470d1838 290 TextLCD_595(SPI *spi, PinName CS, LCDType type = LCD16x2);
vbogom 0:d4a4f76fffb5 291
vbogom 0:d4a4f76fffb5 292 #if DOXYGEN_ONLY
vbogom 0:d4a4f76fffb5 293 /** Write a character to the LCD
vbogom 0:d4a4f76fffb5 294 *
vbogom 0:d4a4f76fffb5 295 * @param c The character to write to the display
vbogom 0:d4a4f76fffb5 296 */
vbogom 0:d4a4f76fffb5 297 int putc(int c);
vbogom 0:d4a4f76fffb5 298
vbogom 0:d4a4f76fffb5 299 /** Write a formated string to the LCD
vbogom 0:d4a4f76fffb5 300 *
vbogom 0:d4a4f76fffb5 301 * @param format A printf-style format string, followed by the
vbogom 0:d4a4f76fffb5 302 * variables to use in formating the string.
vbogom 0:d4a4f76fffb5 303 */
vbogom 0:d4a4f76fffb5 304
vbogom 0:d4a4f76fffb5 305
vbogom 0:d4a4f76fffb5 306 int printf(const char* format, ...);
vbogom 0:d4a4f76fffb5 307 #endif
vbogom 0:d4a4f76fffb5 308
vbogom 0:d4a4f76fffb5 309 /** Locate to a screen column and row
vbogom 0:d4a4f76fffb5 310 *
vbogom 0:d4a4f76fffb5 311 * @param column The horizontal position from the left, indexed from 0
vbogom 0:d4a4f76fffb5 312 * @param row The vertical position from the top, indexed from 0
vbogom 0:d4a4f76fffb5 313 */
vbogom 0:d4a4f76fffb5 314 void locate(int column, int row);
vbogom 0:d4a4f76fffb5 315 /** Clear the screen and locate to 0,0 */
vbogom 0:d4a4f76fffb5 316 void cls();
vbogom 0:d4a4f76fffb5 317
vbogom 0:d4a4f76fffb5 318 struct LCDparam {
vbogom 0:d4a4f76fffb5 319 int rows; // number of lines //
vbogom 0:d4a4f76fffb5 320 int columns; // number of columns //
vbogom 0:d4a4f76fffb5 321 int delay; // delay for commands microseconds //
vbogom 0:d4a4f76fffb5 322 int adresses[4]; // start adresses for 4 lines //
vbogom 0:d4a4f76fffb5 323 } LCDparam;
vbogom 0:d4a4f76fffb5 324
vbogom 0:d4a4f76fffb5 325 /** write a user defined char
vbogom 0:d4a4f76fffb5 326 *
vbogom 0:d4a4f76fffb5 327 * @param address The user defined char (0-7)
vbogom 0:d4a4f76fffb5 328 * @param pattern[8] bit pattern 5*8 of char
vbogom 0:d4a4f76fffb5 329 */
vbogom 0:d4a4f76fffb5 330 void writeCGRAM(int address, int pattern[8]);
vbogom 0:d4a4f76fffb5 331
vbogom 0:d4a4f76fffb5 332 /** Get the char at the current position
vbogom 0:d4a4f76fffb5 333 *
vbogom 0:d4a4f76fffb5 334 * int getc()
vbogom 0:d4a4f76fffb5 335 */
vbogom 0:d4a4f76fffb5 336 void writeCommand(int command);
vbogom 0:d4a4f76fffb5 337
vbogom 1:f952c0caf8de 338 /** Выводим в позиции курсора символ русского языка */
vbogom 1:f952c0caf8de 339 int putc_rus(int c);
vbogom 2:fbd41515ce75 340 /**
vbogom 2:fbd41515ce75 341 * Выводит строку начиная с позиции курсора строку содержащюю русские символы. Для вывода остальных символов их необходимо удвоить.
vbogom 2:fbd41515ce75 342 * Например строка "Привет!! Как дела??" на экране будет выведена как "Привет! Как дела?"
vbogom 2:fbd41515ce75 343 */
vbogom 0:d4a4f76fffb5 344 void print_rus(const string rustext);
vbogom 0:d4a4f76fffb5 345
vbogom 2:fbd41515ce75 346 /** Сдвиг текста влево */
vbogom 2:fbd41515ce75 347 void ShiftLCD_Left();
vbogom 2:fbd41515ce75 348 /** Сдвиг текста вправо */
vbogom 2:fbd41515ce75 349 void ShiftLCD_Right();
vbogom 0:d4a4f76fffb5 350
vbogom 0:d4a4f76fffb5 351
vbogom 2:fbd41515ce75 352 /**
vbogom 0:d4a4f76fffb5 353 * Настраиваем отображение курсора
vbogom 2:fbd41515ce75 354 @param modeCursor Задает режим отображения курсора. Пример: SetCursor(onCursor|onBlink); Курсор виден и мигает.
vbogom 2:fbd41515ce75 355 @param "#define onCursor 0x2" Курсор включен
vbogom 2:fbd41515ce75 356 @param "#define offCursor 0x0" Курсор выключен
vbogom 2:fbd41515ce75 357 @param "#define onBlink 0x1" Курсор мигает
vbogom 2:fbd41515ce75 358 @param "#define offBlink 0x0" Курсор не мигает
vbogom 0:d4a4f76fffb5 359 */
vbogom 0:d4a4f76fffb5 360 void SetCursor(int modeCursor);
vbogom 2:fbd41515ce75 361 /** Сдвиг курсора влево */
vbogom 2:fbd41515ce75 362 void ShiftCursor_Left();
vbogom 2:fbd41515ce75 363 /** Сдвиг курсора вправо */
vbogom 2:fbd41515ce75 364 void ShiftCursor_Right();
vbogom 2:fbd41515ce75 365 /** Устанавливаем курсор в позицию column, row */
vbogom 2:fbd41515ce75 366 void CursorPosition(int column, int row);
vbogom 2:fbd41515ce75 367 /** Помещает курсор в левую позицию (начало строки) */
vbogom 2:fbd41515ce75 368 void home();
vbogom 0:d4a4f76fffb5 369
vbogom 2:fbd41515ce75 370 /** Включает дисплей */
vbogom 2:fbd41515ce75 371 void on();
vbogom 2:fbd41515ce75 372 /** Выключает дисплей */
vbogom 2:fbd41515ce75 373 void off();
vbogom 0:d4a4f76fffb5 374
vbogom 3:e604470d1838 375 /** Включаем подсветку */
vbogom 3:e604470d1838 376 void BackLightOn();
vbogom 3:e604470d1838 377 /** Выключаем подсветку */
vbogom 3:e604470d1838 378 void BackLightOff();
vbogom 0:d4a4f76fffb5 379
vbogom 0:d4a4f76fffb5 380 protected:
vbogom 0:d4a4f76fffb5 381
vbogom 0:d4a4f76fffb5 382 // Stream implementation functions
vbogom 0:d4a4f76fffb5 383 virtual int _putc(int value);
vbogom 0:d4a4f76fffb5 384 virtual int _getc();
vbogom 0:d4a4f76fffb5 385
vbogom 0:d4a4f76fffb5 386 int address(int column, int row);
vbogom 0:d4a4f76fffb5 387 void character(int column, int row, int c);
vbogom 0:d4a4f76fffb5 388 void writeByte(int value);
vbogom 3:e604470d1838 389 void writeByteData(int value);
vbogom 0:d4a4f76fffb5 390 void writeData(int data);
vbogom 0:d4a4f76fffb5 391 void setLCDparam(LCDType _type);
vbogom 3:e604470d1838 392 SPI *_spi;
vbogom 3:e604470d1838 393 DigitalOut _cs;
vbogom 0:d4a4f76fffb5 394 LCDType _type;
vbogom 3:e604470d1838 395 int _bl; // Храним состояние включения подсветки
vbogom 0:d4a4f76fffb5 396 int _column;
vbogom 0:d4a4f76fffb5 397 int _row;
vbogom 0:d4a4f76fffb5 398 int _setCursor; // Храним текущие настройки вида курсора
vbogom 3:e604470d1838 399 int _comm;
vbogom 0:d4a4f76fffb5 400 };
vbogom 0:d4a4f76fffb5 401
vbogom 0:d4a4f76fffb5 402 #endif