TextLCD_RUS - 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.

Dependents:   Rus_TextLCD

Committer:
vbogom
Date:
Tue Mar 24 20:52:19 2015 +0000
Revision:
2:fbd41515ce75
Parent:
1:f952c0caf8de

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vbogom 0:d4a4f76fffb5 1 /* mbed TextLCD 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 0:d4a4f76fffb5 28 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 29 // Начало изменений
vbogom 0:d4a4f76fffb5 30 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 31 /*
vbogom 0:d4a4f76fffb5 32 *
vbogom 0:d4a4f76fffb5 33 *
vbogom 0:d4a4f76fffb5 34 * Changes by Bogomazyuk Vasiliy (Богомазюк Василий)
vbogom 0:d4a4f76fffb5 35 * Модуль испытан на жидкокристаллическом модуле MT–16S2D
vbogom 0:d4a4f76fffb5 36 *
vbogom 0:d4a4f76fffb5 37 *
vbogom 0:d4a4f76fffb5 38 */
vbogom 0:d4a4f76fffb5 39
vbogom 0:d4a4f76fffb5 40
vbogom 0:d4a4f76fffb5 41 #include <string>
vbogom 0:d4a4f76fffb5 42
vbogom 0:d4a4f76fffb5 43 /*
vbogom 0:d4a4f76fffb5 44 * Настраиваем отображение курсора
vbogom 0:d4a4f76fffb5 45 * SetCursor(onCursor|onBlink); Курсор виден и мигает.
vbogom 0:d4a4f76fffb5 46 */
vbogom 0:d4a4f76fffb5 47 #define onCursor 0x2 //Курсор включен
vbogom 0:d4a4f76fffb5 48 #define offCursor 0x0 //Курсор выключен
vbogom 0:d4a4f76fffb5 49 #define onBlink 0x1 //Курсор мигает
vbogom 0:d4a4f76fffb5 50 #define offBlink 0x0 //Курсор не мигает
vbogom 0:d4a4f76fffb5 51 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 52 // Конец изменений
vbogom 0:d4a4f76fffb5 53 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 54
vbogom 0:d4a4f76fffb5 55
vbogom 0:d4a4f76fffb5 56 /** A TextLCD interface for driving 4-bit HD44780-based LCDs
vbogom 0:d4a4f76fffb5 57 *
vbogom 0:d4a4f76fffb5 58 * Currently supports 16x2, 20x2 and 20x4 panels
vbogom 0:d4a4f76fffb5 59 *
vbogom 0:d4a4f76fffb5 60 * @code
vbogom 0:d4a4f76fffb5 61 * #include "mbed.h"
vbogom 0:d4a4f76fffb5 62 * #include "TextLCD_Rus.h"
vbogom 0:d4a4f76fffb5 63 * #include <string>
vbogom 0:d4a4f76fffb5 64 *
vbogom 0:d4a4f76fffb5 65 * TextLCD lcd(D12, D11, D5, D4, D3, D2); // rs, e, d4, d5, d6, d7
vbogom 0:d4a4f76fffb5 66 *
vbogom 0:d4a4f76fffb5 67 *
vbogom 0:d4a4f76fffb5 68 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 69 * // Обратите внимание, что русские символы передаются в двухбайтовом представлении (UTF-16)
vbogom 0:d4a4f76fffb5 70 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 71 * const uint16_t ABC[66]={'А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',
vbogom 0:d4a4f76fffb5 72 * 'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'};
vbogom 0:d4a4f76fffb5 73 * string str="пример:: AABBCCDDeeffgghh";
vbogom 0:d4a4f76fffb5 74 *
vbogom 0:d4a4f76fffb5 75 * 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 76 * {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 77 *
vbogom 0:d4a4f76fffb5 78 * int main() {
vbogom 0:d4a4f76fffb5 79 *
vbogom 0:d4a4f76fffb5 80 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 81 * // Вывод на экран текста без "руссификации", т.е. как есть
vbogom 0:d4a4f76fffb5 82 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 83 * lcd.cls();
vbogom 0:d4a4f76fffb5 84 * lcd.printf("The module");
vbogom 0:d4a4f76fffb5 85 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 86 * lcd.printf("TextLCD_Rus");
vbogom 0:d4a4f76fffb5 87 * wait(3);
vbogom 0:d4a4f76fffb5 88 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 89 * // Вывод на экран русского текста
vbogom 0:d4a4f76fffb5 90 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 91 * lcd.cls();
vbogom 0:d4a4f76fffb5 92 * lcd.print_rus("Вывод текста на русском языке!!");
vbogom 0:d4a4f76fffb5 93 * wait(3);
vbogom 0:d4a4f76fffb5 94 * lcd.cls();
vbogom 0:d4a4f76fffb5 95 *
vbogom 0:d4a4f76fffb5 96 * lcd.print_rus("Посимвольно::");
vbogom 0:d4a4f76fffb5 97 * wait(3);
vbogom 0:d4a4f76fffb5 98 * lcd.cls();
vbogom 0:d4a4f76fffb5 99 * for (int i=0; i<33; i++) {
vbogom 0:d4a4f76fffb5 100 * lcd.locate(0,0);
vbogom 0:d4a4f76fffb5 101 * lcd.putc_rus(ABC[i]);
vbogom 0:d4a4f76fffb5 102 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 103 * lcd.putc_rus(ABC[i+33]);
vbogom 0:d4a4f76fffb5 104 * wait(0.5);
vbogom 0:d4a4f76fffb5 105 * };
vbogom 0:d4a4f76fffb5 106 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 107 * // Для вывода теста, содержащего как русские, так и остальные символы необходимо любые другие символы удваивать
vbogom 0:d4a4f76fffb5 108 * // Обратите внимание, что параметром функции print_rus является экземпляр объекта string
vbogom 0:d4a4f76fffb5 109 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 110 * lcd.cls();
vbogom 0:d4a4f76fffb5 111 * lcd.print_rus("Вывод смешенной строки::");
vbogom 0:d4a4f76fffb5 112 * wait(3);
vbogom 0:d4a4f76fffb5 113 * lcd.cls();
vbogom 0:d4a4f76fffb5 114 * lcd.print_rus("Рассмотрим");
vbogom 0:d4a4f76fffb5 115 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 116 * lcd.print_rus(str);
vbogom 0:d4a4f76fffb5 117 * wait(3);
vbogom 0:d4a4f76fffb5 118 * lcd.cls();
vbogom 0:d4a4f76fffb5 119 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 120 * // Применение функции сдвига экрана, обратите внимание, что строка "Влево..." вводится за пределами видимой области
vbogom 0:d4a4f76fffb5 121 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 122 * lcd.print_rus("Двигаем текст......");
vbogom 0:d4a4f76fffb5 123 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 124 * lcd.print_rus("Вправо......");
vbogom 0:d4a4f76fffb5 125 * wait(0.5);
vbogom 0:d4a4f76fffb5 126 * for (int i=0; i<16;i++) {
vbogom 0:d4a4f76fffb5 127 * lcd.ShiftLCD_Right();
vbogom 0:d4a4f76fffb5 128 * wait(0.5);
vbogom 0:d4a4f76fffb5 129 * };
vbogom 0:d4a4f76fffb5 130 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 131 * lcd.print_rus("Влево...... ");
vbogom 0:d4a4f76fffb5 132 * for (int i=0; i<32;i++) {
vbogom 0:d4a4f76fffb5 133 * lcd.ShiftLCD_Left();
vbogom 0:d4a4f76fffb5 134 * wait(0.5);
vbogom 0:d4a4f76fffb5 135 * };
vbogom 0:d4a4f76fffb5 136 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 137 * // Управление видимостью курсора
vbogom 0:d4a4f76fffb5 138 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 139 * lcd.cls();
vbogom 0:d4a4f76fffb5 140 * lcd.print_rus("Курсор невиден");
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 * wait(5);
vbogom 0:d4a4f76fffb5 146 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 147 * lcd.print_rus("Символ мигает ");
vbogom 0:d4a4f76fffb5 148 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 149 * lcd.SetCursor(offCursor|onBlink);
vbogom 0:d4a4f76fffb5 150 * wait(5);
vbogom 0:d4a4f76fffb5 151 * lcd.cls();
vbogom 0:d4a4f76fffb5 152 * lcd.print_rus("Курсор виден");
vbogom 0:d4a4f76fffb5 153 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 154 * lcd.SetCursor(onCursor|offBlink);
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 * wait(5);
vbogom 0:d4a4f76fffb5 159 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 160 * lcd.print_rus("И он не мигает ");
vbogom 0:d4a4f76fffb5 161 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 162 * lcd.SetCursor(onCursor|offBlink);
vbogom 0:d4a4f76fffb5 163 * wait(5);
vbogom 0:d4a4f76fffb5 164 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 165 * lcd.print_rus("А теперь мигает ");
vbogom 0:d4a4f76fffb5 166 * lcd.CursorPosition(0,0);
vbogom 0:d4a4f76fffb5 167 * lcd.SetCursor(onCursor|onBlink);
vbogom 0:d4a4f76fffb5 168 * wait(5);
vbogom 0:d4a4f76fffb5 169 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 170 * // Включение/выключение дисплея
vbogom 0:d4a4f76fffb5 171 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 172 * lcd.cls();
vbogom 0:d4a4f76fffb5 173 * lcd.print_rus("Выключим дисплей");
vbogom 0:d4a4f76fffb5 174 * wait(3);
vbogom 0:d4a4f76fffb5 175 * lcd.off();
vbogom 0:d4a4f76fffb5 176 * wait(3);
vbogom 0:d4a4f76fffb5 177 * lcd.on();
vbogom 0:d4a4f76fffb5 178 * lcd.locate(0,0);
vbogom 0:d4a4f76fffb5 179 * lcd.print_rus("Включили дисплей");
vbogom 0:d4a4f76fffb5 180 * wait(3);
vbogom 0:d4a4f76fffb5 181 * lcd.cls();
vbogom 0:d4a4f76fffb5 182 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 183 * // Пример управления позиционированием курсора
vbogom 0:d4a4f76fffb5 184 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 185 * lcd.print_rus("Двигаем курсор");
vbogom 0:d4a4f76fffb5 186 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 187 * for (int i=0; i<16; i++) lcd.putc(0x13);
vbogom 0:d4a4f76fffb5 188 * lcd.CursorPosition(0,1);
vbogom 0:d4a4f76fffb5 189 * wait(0.5);
vbogom 0:d4a4f76fffb5 190 * lcd.SetCursor(offCursor|onBlink);
vbogom 0:d4a4f76fffb5 191 * for (int i=0; i<16; i++) {
vbogom 0:d4a4f76fffb5 192 * lcd.ShiftCursor_Right();
vbogom 0:d4a4f76fffb5 193 * wait(0.5);
vbogom 0:d4a4f76fffb5 194 * };
vbogom 0:d4a4f76fffb5 195 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 196 * for (int i=0; i<16; i++) lcd.putc(0x14);
vbogom 0:d4a4f76fffb5 197 * wait(0.5);
vbogom 0:d4a4f76fffb5 198 * for (int i=0; i<16; i++) {
vbogom 0:d4a4f76fffb5 199 * lcd.ShiftCursor_Left();
vbogom 0:d4a4f76fffb5 200 * wait(0.5);
vbogom 0:d4a4f76fffb5 201 * };
vbogom 0:d4a4f76fffb5 202 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 203 * lcd.print_rus("Сдвинем в 1155,,00 ");
vbogom 0:d4a4f76fffb5 204 * lcd.CursorPosition(15,0);
vbogom 0:d4a4f76fffb5 205 * wait(3);
vbogom 0:d4a4f76fffb5 206 * lcd.locate(0,1);
vbogom 0:d4a4f76fffb5 207 * lcd.print_rus("В начало строки ");
vbogom 0:d4a4f76fffb5 208 * lcd.home();
vbogom 0:d4a4f76fffb5 209 * wait(3);
vbogom 0:d4a4f76fffb5 210 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 211 * // Использование пользовательских символов
vbogom 0:d4a4f76fffb5 212 * //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 213 * lcd.SetCursor(offCursor|offBlink);
vbogom 0:d4a4f76fffb5 214 * lcd.cls();
vbogom 0:d4a4f76fffb5 215 * lcd.print_rus("Программируемые символы");
vbogom 0:d4a4f76fffb5 216 * for (int i=0; i<8; i++) lcd.writeCGRAM(i, pattern[i]);
vbogom 0:d4a4f76fffb5 217 * wait(3);
vbogom 0:d4a4f76fffb5 218 * lcd.cls();
vbogom 0:d4a4f76fffb5 219 * wait(0.5);
vbogom 0:d4a4f76fffb5 220 * int loc=0;
vbogom 0:d4a4f76fffb5 221 * for (int i=0; i<16; i++) {
vbogom 0:d4a4f76fffb5 222 * for (int k=4; k<9; k++) {
vbogom 0:d4a4f76fffb5 223 * lcd.locate(0,0);
vbogom 0:d4a4f76fffb5 224 * for (int j=0; j<16; j++) lcd.putc((k+j) % 4);
vbogom 0:d4a4f76fffb5 225 * lcd.locate(loc,1);
vbogom 0:d4a4f76fffb5 226 * if (k<8) {lcd.putc(k);} else lcd.putc(0xFF);
vbogom 0:d4a4f76fffb5 227 * wait(0.2);
vbogom 0:d4a4f76fffb5 228 * };
vbogom 0:d4a4f76fffb5 229 * loc++;
vbogom 0:d4a4f76fffb5 230 * };
vbogom 0:d4a4f76fffb5 231 * wait(2);
vbogom 0:d4a4f76fffb5 232 * }
vbogom 0:d4a4f76fffb5 233 * @endcode
vbogom 0:d4a4f76fffb5 234 */
vbogom 0:d4a4f76fffb5 235
vbogom 0:d4a4f76fffb5 236 class TextLCD : public Stream {
vbogom 0:d4a4f76fffb5 237 public:
vbogom 0:d4a4f76fffb5 238
vbogom 0:d4a4f76fffb5 239 /** LCD panel format */
vbogom 0:d4a4f76fffb5 240 enum LCDType {
vbogom 0:d4a4f76fffb5 241 LCD16x2 /**< 16x2 LCD panel (default) */
vbogom 0:d4a4f76fffb5 242 , LCD16x2B /**< 16x2 LCD panel alternate addressing */
vbogom 0:d4a4f76fffb5 243 , LCD20x2 /**< 20x2 LCD panel */
vbogom 0:d4a4f76fffb5 244 , LCD20x4 /**< 20x4 LCD panel */
vbogom 0:d4a4f76fffb5 245 , LCD24x2 /**< 24x2 LCD panel */
vbogom 0:d4a4f76fffb5 246 , LCDuser /** User defined LCD, rows/columns must be set */
vbogom 0:d4a4f76fffb5 247 };
vbogom 0:d4a4f76fffb5 248
vbogom 0:d4a4f76fffb5 249 /** Create a TextLCD interface
vbogom 0:d4a4f76fffb5 250 *
vbogom 0:d4a4f76fffb5 251 * @param rs Instruction/data control line
vbogom 0:d4a4f76fffb5 252 * @param e Enable line (clock)
vbogom 0:d4a4f76fffb5 253 * @param d4-d7 Data lines
vbogom 0:d4a4f76fffb5 254 * @param type Sets the panel size/addressing mode (default = LCD16x2)
vbogom 0:d4a4f76fffb5 255 */
vbogom 0:d4a4f76fffb5 256 TextLCD(PinName rs, PinName e, PinName d4, PinName d5, PinName d6, PinName d7, LCDType type = LCD16x2);
vbogom 0:d4a4f76fffb5 257
vbogom 0:d4a4f76fffb5 258 #if DOXYGEN_ONLY
vbogom 0:d4a4f76fffb5 259 /** Write a character to the LCD
vbogom 0:d4a4f76fffb5 260 *
vbogom 0:d4a4f76fffb5 261 * @param c The character to write to the display
vbogom 0:d4a4f76fffb5 262 */
vbogom 0:d4a4f76fffb5 263 int putc(int c);
vbogom 0:d4a4f76fffb5 264
vbogom 0:d4a4f76fffb5 265 /** Write a formated string to the LCD
vbogom 0:d4a4f76fffb5 266 *
vbogom 0:d4a4f76fffb5 267 * @param format A printf-style format string, followed by the
vbogom 0:d4a4f76fffb5 268 * variables to use in formating the string.
vbogom 0:d4a4f76fffb5 269 */
vbogom 0:d4a4f76fffb5 270
vbogom 0:d4a4f76fffb5 271
vbogom 0:d4a4f76fffb5 272 int printf(const char* format, ...);
vbogom 0:d4a4f76fffb5 273 #endif
vbogom 0:d4a4f76fffb5 274
vbogom 0:d4a4f76fffb5 275 /** Locate to a screen column and row
vbogom 0:d4a4f76fffb5 276 *
vbogom 0:d4a4f76fffb5 277 * @param column The horizontal position from the left, indexed from 0
vbogom 0:d4a4f76fffb5 278 * @param row The vertical position from the top, indexed from 0
vbogom 0:d4a4f76fffb5 279 */
vbogom 0:d4a4f76fffb5 280 void locate(int column, int row);
vbogom 0:d4a4f76fffb5 281 /** Clear the screen and locate to 0,0 */
vbogom 0:d4a4f76fffb5 282 void cls();
vbogom 0:d4a4f76fffb5 283
vbogom 0:d4a4f76fffb5 284 struct LCDparam {
vbogom 0:d4a4f76fffb5 285 int rows; // number of lines //
vbogom 0:d4a4f76fffb5 286 int columns; // number of columns //
vbogom 0:d4a4f76fffb5 287 int delay; // delay for commands microseconds //
vbogom 0:d4a4f76fffb5 288 int adresses[4]; // start adresses for 4 lines //
vbogom 0:d4a4f76fffb5 289 } LCDparam;
vbogom 0:d4a4f76fffb5 290
vbogom 0:d4a4f76fffb5 291 /** write a user defined char
vbogom 0:d4a4f76fffb5 292 *
vbogom 0:d4a4f76fffb5 293 * @param address The user defined char (0-7)
vbogom 0:d4a4f76fffb5 294 * @param pattern[8] bit pattern 5*8 of char
vbogom 0:d4a4f76fffb5 295 */
vbogom 0:d4a4f76fffb5 296 void writeCGRAM(int address, int pattern[8]);
vbogom 0:d4a4f76fffb5 297
vbogom 0:d4a4f76fffb5 298 /** Get the char at the current position
vbogom 0:d4a4f76fffb5 299 *
vbogom 0:d4a4f76fffb5 300 * int getc()
vbogom 0:d4a4f76fffb5 301 */
vbogom 0:d4a4f76fffb5 302 void writeCommand(int command);
vbogom 0:d4a4f76fffb5 303
vbogom 0:d4a4f76fffb5 304
vbogom 0:d4a4f76fffb5 305 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 306 // Дополнительные команды, в оригинальном модуле их нет
vbogom 0:d4a4f76fffb5 307 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 308
vbogom 0:d4a4f76fffb5 309 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 310 // Начало изменений
vbogom 0:d4a4f76fffb5 311 //---------------------------------------------------------------------------------------------------------
vbogom 1:f952c0caf8de 312 /** Выводим в позиции курсора символ русского языка */
vbogom 1:f952c0caf8de 313 int putc_rus(int c);
vbogom 2:fbd41515ce75 314 /**
vbogom 2:fbd41515ce75 315 * Выводит строку начиная с позиции курсора строку содержащюю русские символы. Для вывода остальных символов их необходимо удвоить.
vbogom 2:fbd41515ce75 316 * Например строка "Привет!! Как дела??" на экране будет выведена как "Привет! Как дела?"
vbogom 2:fbd41515ce75 317 */
vbogom 0:d4a4f76fffb5 318 void print_rus(const string rustext);
vbogom 0:d4a4f76fffb5 319
vbogom 2:fbd41515ce75 320 /** Сдвиг текста влево */
vbogom 2:fbd41515ce75 321 void ShiftLCD_Left();
vbogom 2:fbd41515ce75 322 /** Сдвиг текста вправо */
vbogom 2:fbd41515ce75 323 void ShiftLCD_Right();
vbogom 0:d4a4f76fffb5 324
vbogom 0:d4a4f76fffb5 325
vbogom 2:fbd41515ce75 326 /**
vbogom 0:d4a4f76fffb5 327 * Настраиваем отображение курсора
vbogom 2:fbd41515ce75 328 @param modeCursor Задает режим отображения курсора. Пример: SetCursor(onCursor|onBlink); Курсор виден и мигает.
vbogom 2:fbd41515ce75 329 @param "#define onCursor 0x2" Курсор включен
vbogom 2:fbd41515ce75 330 @param "#define offCursor 0x0" Курсор выключен
vbogom 2:fbd41515ce75 331 @param "#define onBlink 0x1" Курсор мигает
vbogom 2:fbd41515ce75 332 @param "#define offBlink 0x0" Курсор не мигает
vbogom 0:d4a4f76fffb5 333 */
vbogom 0:d4a4f76fffb5 334 void SetCursor(int modeCursor);
vbogom 2:fbd41515ce75 335 /** Сдвиг курсора влево */
vbogom 2:fbd41515ce75 336 void ShiftCursor_Left();
vbogom 2:fbd41515ce75 337 /** Сдвиг курсора вправо */
vbogom 2:fbd41515ce75 338 void ShiftCursor_Right();
vbogom 2:fbd41515ce75 339 /** Устанавливаем курсор в позицию column, row */
vbogom 2:fbd41515ce75 340 void CursorPosition(int column, int row);
vbogom 2:fbd41515ce75 341 /** Помещает курсор в левую позицию (начало строки) */
vbogom 2:fbd41515ce75 342 void home();
vbogom 0:d4a4f76fffb5 343
vbogom 2:fbd41515ce75 344 /** Включает дисплей */
vbogom 2:fbd41515ce75 345 void on();
vbogom 2:fbd41515ce75 346 /** Выключает дисплей */
vbogom 2:fbd41515ce75 347 void off();
vbogom 0:d4a4f76fffb5 348
vbogom 0:d4a4f76fffb5 349 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 350 // Конец изменений
vbogom 0:d4a4f76fffb5 351 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 352
vbogom 0:d4a4f76fffb5 353 protected:
vbogom 0:d4a4f76fffb5 354
vbogom 0:d4a4f76fffb5 355 // Stream implementation functions
vbogom 0:d4a4f76fffb5 356 virtual int _putc(int value);
vbogom 0:d4a4f76fffb5 357 virtual int _getc();
vbogom 0:d4a4f76fffb5 358
vbogom 0:d4a4f76fffb5 359 int address(int column, int row);
vbogom 0:d4a4f76fffb5 360 void character(int column, int row, int c);
vbogom 0:d4a4f76fffb5 361 void writeByte(int value);
vbogom 0:d4a4f76fffb5 362 void writeData(int data);
vbogom 0:d4a4f76fffb5 363 void setLCDparam(LCDType _type);
vbogom 0:d4a4f76fffb5 364 DigitalOut _rs, _e;
vbogom 0:d4a4f76fffb5 365 BusOut _d;
vbogom 0:d4a4f76fffb5 366 LCDType _type;
vbogom 0:d4a4f76fffb5 367
vbogom 0:d4a4f76fffb5 368 int _column;
vbogom 0:d4a4f76fffb5 369 int _row;
vbogom 0:d4a4f76fffb5 370 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 371 // Начало изменений
vbogom 0:d4a4f76fffb5 372 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 373 int _setCursor; // Храним текущие настройки вида курсора
vbogom 0:d4a4f76fffb5 374 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 375 // Конец изменений
vbogom 0:d4a4f76fffb5 376 //---------------------------------------------------------------------------------------------------------
vbogom 0:d4a4f76fffb5 377 };
vbogom 0:d4a4f76fffb5 378
vbogom 0:d4a4f76fffb5 379 #endif