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
TextLCD_Rus.cpp@0:d4a4f76fffb5, 2015-03-24 (annotated)
- Committer:
- vbogom
- Date:
- Tue Mar 24 19:58:34 2015 +0000
- Revision:
- 0:d4a4f76fffb5
Version 1.0
Who changed what in which revision?
User | Revision | Line number | New 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 | * Changes by Erik Kerger |
vbogom | 0:d4a4f76fffb5 | 4 | * |
vbogom | 0:d4a4f76fffb5 | 5 | * |
vbogom | 0:d4a4f76fffb5 | 6 | * Changes by Bogomazyuk Vasiliy (Богомазюк Василий) |
vbogom | 0:d4a4f76fffb5 | 7 | * Модуль испытан на жидкокристаллическом модуле MT–16S2D |
vbogom | 0:d4a4f76fffb5 | 8 | * |
vbogom | 0:d4a4f76fffb5 | 9 | * |
vbogom | 0:d4a4f76fffb5 | 10 | * |
vbogom | 0:d4a4f76fffb5 | 11 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
vbogom | 0:d4a4f76fffb5 | 12 | * of this software and associated documentation files (the "Software"), to deal |
vbogom | 0:d4a4f76fffb5 | 13 | * in the Software without restriction, including without limitation the rights |
vbogom | 0:d4a4f76fffb5 | 14 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
vbogom | 0:d4a4f76fffb5 | 15 | * copies of the Software, and to permit persons to whom the Software is |
vbogom | 0:d4a4f76fffb5 | 16 | * furnished to do so, subject to the following conditions: |
vbogom | 0:d4a4f76fffb5 | 17 | * |
vbogom | 0:d4a4f76fffb5 | 18 | * The above copyright notice and this permission notice shall be included in |
vbogom | 0:d4a4f76fffb5 | 19 | * all copies or substantial portions of the Software. |
vbogom | 0:d4a4f76fffb5 | 20 | * |
vbogom | 0:d4a4f76fffb5 | 21 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
vbogom | 0:d4a4f76fffb5 | 22 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
vbogom | 0:d4a4f76fffb5 | 23 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
vbogom | 0:d4a4f76fffb5 | 24 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
vbogom | 0:d4a4f76fffb5 | 25 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
vbogom | 0:d4a4f76fffb5 | 26 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
vbogom | 0:d4a4f76fffb5 | 27 | * THE SOFTWARE. |
vbogom | 0:d4a4f76fffb5 | 28 | */ |
vbogom | 0:d4a4f76fffb5 | 29 | |
vbogom | 0:d4a4f76fffb5 | 30 | #include "TextLCD_Rus.h" |
vbogom | 0:d4a4f76fffb5 | 31 | #include "mbed.h" |
vbogom | 0:d4a4f76fffb5 | 32 | |
vbogom | 0:d4a4f76fffb5 | 33 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 34 | // Начало изменений |
vbogom | 0:d4a4f76fffb5 | 35 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 36 | #include <string> |
vbogom | 0:d4a4f76fffb5 | 37 | |
vbogom | 0:d4a4f76fffb5 | 38 | const unsigned char utf_recode[] = |
vbogom | 0:d4a4f76fffb5 | 39 | { |
vbogom | 0:d4a4f76fffb5 | 40 | 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4, |
vbogom | 0:d4a4f76fffb5 | 41 | 0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8, |
vbogom | 0:d4a4f76fffb5 | 42 | 0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab, |
vbogom | 0:d4a4f76fffb5 | 43 | 0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1, |
vbogom | 0:d4a4f76fffb5 | 44 | 0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7, |
vbogom | 0:d4a4f76fffb5 | 45 | 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe, |
vbogom | 0:d4a4f76fffb5 | 46 | 0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0, |
vbogom | 0:d4a4f76fffb5 | 47 | 0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7 |
vbogom | 0:d4a4f76fffb5 | 48 | }; |
vbogom | 0:d4a4f76fffb5 | 49 | |
vbogom | 0:d4a4f76fffb5 | 50 | int ConvertChar(int c) |
vbogom | 0:d4a4f76fffb5 | 51 | { |
vbogom | 0:d4a4f76fffb5 | 52 | int i=c; |
vbogom | 0:d4a4f76fffb5 | 53 | if ((c>=0xD090)and(c<=0xD0BF))i=utf_recode[c-0xD090]; |
vbogom | 0:d4a4f76fffb5 | 54 | if ((c>=0xD180)and(c<=0xD18F))i=utf_recode[c-0xD150]; |
vbogom | 0:d4a4f76fffb5 | 55 | if (c==0xD081) i=0xA2; |
vbogom | 0:d4a4f76fffb5 | 56 | if (c==0xD191) i=0xB5; |
vbogom | 0:d4a4f76fffb5 | 57 | return i; |
vbogom | 0:d4a4f76fffb5 | 58 | } |
vbogom | 0:d4a4f76fffb5 | 59 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 60 | // Конец изменений |
vbogom | 0:d4a4f76fffb5 | 61 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 62 | |
vbogom | 0:d4a4f76fffb5 | 63 | |
vbogom | 0:d4a4f76fffb5 | 64 | TextLCD::TextLCD(PinName rs,PinName e, PinName d4, PinName d5, |
vbogom | 0:d4a4f76fffb5 | 65 | PinName d6, PinName d7, LCDType type) : _rs(rs), _e(e), |
vbogom | 0:d4a4f76fffb5 | 66 | _d(d4, d5, d6, d7), _type(type) { |
vbogom | 0:d4a4f76fffb5 | 67 | _rs = 0; // command mode |
vbogom | 0:d4a4f76fffb5 | 68 | _e = 0; // 0 --> inactive (most important change to original TextLCD) |
vbogom | 0:d4a4f76fffb5 | 69 | |
vbogom | 0:d4a4f76fffb5 | 70 | if (_type != LCDuser) |
vbogom | 0:d4a4f76fffb5 | 71 | setLCDparam(_type); // otherwise rows, colums, comdelay, adresses must be set before |
vbogom | 0:d4a4f76fffb5 | 72 | |
vbogom | 0:d4a4f76fffb5 | 73 | wait(0.050f); // Wait 50ms to ensure powered up |
vbogom | 0:d4a4f76fffb5 | 74 | |
vbogom | 0:d4a4f76fffb5 | 75 | // send "Display Settings" 3 times (Only top nibble of 0x30 as we've got 4-bit bus) |
vbogom | 0:d4a4f76fffb5 | 76 | // this sets controler into 8 bit mode, so we have a defined state |
vbogom | 0:d4a4f76fffb5 | 77 | for (int i=0; i<3; i++) { |
vbogom | 0:d4a4f76fffb5 | 78 | _e = 1; |
vbogom | 0:d4a4f76fffb5 | 79 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 80 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 81 | _d = 0x3; |
vbogom | 0:d4a4f76fffb5 | 82 | __nop(); // data setup time at least 60 ns |
vbogom | 0:d4a4f76fffb5 | 83 | _e = 0; |
vbogom | 0:d4a4f76fffb5 | 84 | wait(0.005f); // 5ms |
vbogom | 0:d4a4f76fffb5 | 85 | } |
vbogom | 0:d4a4f76fffb5 | 86 | _e = 1; |
vbogom | 0:d4a4f76fffb5 | 87 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 88 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 89 | _d = 0x2; // 4 Bit mode (after this command, we have to send 2 nibbles) |
vbogom | 0:d4a4f76fffb5 | 90 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 91 | _e = 0; |
vbogom | 0:d4a4f76fffb5 | 92 | wait_us(LCDparam.delay); |
vbogom | 0:d4a4f76fffb5 | 93 | |
vbogom | 0:d4a4f76fffb5 | 94 | writeCommand(0x28); // Function set 4 Bit, 2Line, 5*7 |
vbogom | 0:d4a4f76fffb5 | 95 | writeCommand(0x08); // Display off |
vbogom | 0:d4a4f76fffb5 | 96 | cls(); // clear display, reset _column and _row |
vbogom | 0:d4a4f76fffb5 | 97 | writeCommand(0x04); // cursor right, Display is not shifted |
vbogom | 0:d4a4f76fffb5 | 98 | writeCommand(0x0C); // Display on , Cursor off |
vbogom | 0:d4a4f76fffb5 | 99 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 100 | // Начало изменений |
vbogom | 0:d4a4f76fffb5 | 101 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 102 | _setCursor=0x0; //Курсор выключен и не мигает |
vbogom | 0:d4a4f76fffb5 | 103 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 104 | // Конец изменений |
vbogom | 0:d4a4f76fffb5 | 105 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 106 | } |
vbogom | 0:d4a4f76fffb5 | 107 | |
vbogom | 0:d4a4f76fffb5 | 108 | void TextLCD::character(int column, int row, int c) { |
vbogom | 0:d4a4f76fffb5 | 109 | int a = 0x80 | (LCDparam.adresses[row & 3] + column); |
vbogom | 0:d4a4f76fffb5 | 110 | writeCommand(a); // set cursor address |
vbogom | 0:d4a4f76fffb5 | 111 | writeData(c); // write char |
vbogom | 0:d4a4f76fffb5 | 112 | } |
vbogom | 0:d4a4f76fffb5 | 113 | |
vbogom | 0:d4a4f76fffb5 | 114 | void TextLCD::cls() { |
vbogom | 0:d4a4f76fffb5 | 115 | writeCommand(0x01); // cls, and set cursor to 0 |
vbogom | 0:d4a4f76fffb5 | 116 | locate(0, 0); // set internal position |
vbogom | 0:d4a4f76fffb5 | 117 | wait_us(45 * LCDparam.delay); // CLS need much time |
vbogom | 0:d4a4f76fffb5 | 118 | } |
vbogom | 0:d4a4f76fffb5 | 119 | |
vbogom | 0:d4a4f76fffb5 | 120 | void TextLCD::locate(int column, int row) { |
vbogom | 0:d4a4f76fffb5 | 121 | _column = column; // set position for next char |
vbogom | 0:d4a4f76fffb5 | 122 | _row = row; // note: cursor is not set yet |
vbogom | 0:d4a4f76fffb5 | 123 | } |
vbogom | 0:d4a4f76fffb5 | 124 | |
vbogom | 0:d4a4f76fffb5 | 125 | |
vbogom | 0:d4a4f76fffb5 | 126 | |
vbogom | 0:d4a4f76fffb5 | 127 | int TextLCD::_putc(int value) { |
vbogom | 0:d4a4f76fffb5 | 128 | if (value == '\n') { |
vbogom | 0:d4a4f76fffb5 | 129 | _column = 0; |
vbogom | 0:d4a4f76fffb5 | 130 | _row++; |
vbogom | 0:d4a4f76fffb5 | 131 | if (_row >= LCDparam.rows) { |
vbogom | 0:d4a4f76fffb5 | 132 | _row = 0; |
vbogom | 0:d4a4f76fffb5 | 133 | } |
vbogom | 0:d4a4f76fffb5 | 134 | } else { |
vbogom | 0:d4a4f76fffb5 | 135 | character(_column, _row, value); |
vbogom | 0:d4a4f76fffb5 | 136 | _column++; |
vbogom | 0:d4a4f76fffb5 | 137 | if (_column >= LCDparam.columns) { |
vbogom | 0:d4a4f76fffb5 | 138 | _column = 0; |
vbogom | 0:d4a4f76fffb5 | 139 | _row++; |
vbogom | 0:d4a4f76fffb5 | 140 | if (_row >= LCDparam.rows) { |
vbogom | 0:d4a4f76fffb5 | 141 | _row = 0; |
vbogom | 0:d4a4f76fffb5 | 142 | } |
vbogom | 0:d4a4f76fffb5 | 143 | } |
vbogom | 0:d4a4f76fffb5 | 144 | } |
vbogom | 0:d4a4f76fffb5 | 145 | return value; |
vbogom | 0:d4a4f76fffb5 | 146 | } |
vbogom | 0:d4a4f76fffb5 | 147 | |
vbogom | 0:d4a4f76fffb5 | 148 | // Dummy function - read not supported |
vbogom | 0:d4a4f76fffb5 | 149 | int TextLCD::_getc() { |
vbogom | 0:d4a4f76fffb5 | 150 | return -1; |
vbogom | 0:d4a4f76fffb5 | 151 | } |
vbogom | 0:d4a4f76fffb5 | 152 | |
vbogom | 0:d4a4f76fffb5 | 153 | void TextLCD::writeByte(int value) { |
vbogom | 0:d4a4f76fffb5 | 154 | _e = 1; |
vbogom | 0:d4a4f76fffb5 | 155 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 156 | _d = value >> 4; // higher nibble first |
vbogom | 0:d4a4f76fffb5 | 157 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 158 | _e = 0; |
vbogom | 0:d4a4f76fffb5 | 159 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 160 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 161 | _e = 1; |
vbogom | 0:d4a4f76fffb5 | 162 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 163 | _d = value >> 0; // then lower |
vbogom | 0:d4a4f76fffb5 | 164 | __nop(); |
vbogom | 0:d4a4f76fffb5 | 165 | _e = 0; |
vbogom | 0:d4a4f76fffb5 | 166 | } |
vbogom | 0:d4a4f76fffb5 | 167 | |
vbogom | 0:d4a4f76fffb5 | 168 | void TextLCD::writeCommand(int command) { |
vbogom | 0:d4a4f76fffb5 | 169 | _rs = 0; |
vbogom | 0:d4a4f76fffb5 | 170 | writeByte(command); |
vbogom | 0:d4a4f76fffb5 | 171 | wait_us(LCDparam.delay); |
vbogom | 0:d4a4f76fffb5 | 172 | } |
vbogom | 0:d4a4f76fffb5 | 173 | |
vbogom | 0:d4a4f76fffb5 | 174 | |
vbogom | 0:d4a4f76fffb5 | 175 | void TextLCD::writeData(int data) { |
vbogom | 0:d4a4f76fffb5 | 176 | _rs = 1; |
vbogom | 0:d4a4f76fffb5 | 177 | writeByte(data); |
vbogom | 0:d4a4f76fffb5 | 178 | wait_us(LCDparam.delay); |
vbogom | 0:d4a4f76fffb5 | 179 | } |
vbogom | 0:d4a4f76fffb5 | 180 | |
vbogom | 0:d4a4f76fffb5 | 181 | |
vbogom | 0:d4a4f76fffb5 | 182 | // set user defined char |
vbogom | 0:d4a4f76fffb5 | 183 | void TextLCD::writeCGRAM(int address, int pattern[8]){ |
vbogom | 0:d4a4f76fffb5 | 184 | int i; |
vbogom | 0:d4a4f76fffb5 | 185 | address = address & 7; //max 8 char |
vbogom | 0:d4a4f76fffb5 | 186 | for(i=0;i<8;i++){ |
vbogom | 0:d4a4f76fffb5 | 187 | writeCommand(0x40 | (address * 8) + i); |
vbogom | 0:d4a4f76fffb5 | 188 | writeData(pattern[i]); |
vbogom | 0:d4a4f76fffb5 | 189 | } |
vbogom | 0:d4a4f76fffb5 | 190 | } |
vbogom | 0:d4a4f76fffb5 | 191 | |
vbogom | 0:d4a4f76fffb5 | 192 | void TextLCD::setLCDparam(LCDType _type){ |
vbogom | 0:d4a4f76fffb5 | 193 | switch (_type) { |
vbogom | 0:d4a4f76fffb5 | 194 | |
vbogom | 0:d4a4f76fffb5 | 195 | case LCD16x2: |
vbogom | 0:d4a4f76fffb5 | 196 | case LCD16x2B: |
vbogom | 0:d4a4f76fffb5 | 197 | LCDparam.columns = 16; |
vbogom | 0:d4a4f76fffb5 | 198 | break; |
vbogom | 0:d4a4f76fffb5 | 199 | case LCD20x2: |
vbogom | 0:d4a4f76fffb5 | 200 | case LCD20x4: |
vbogom | 0:d4a4f76fffb5 | 201 | LCDparam.columns = 20; |
vbogom | 0:d4a4f76fffb5 | 202 | break; |
vbogom | 0:d4a4f76fffb5 | 203 | case LCD24x2: |
vbogom | 0:d4a4f76fffb5 | 204 | LCDparam.columns = 24; |
vbogom | 0:d4a4f76fffb5 | 205 | break; |
vbogom | 0:d4a4f76fffb5 | 206 | } |
vbogom | 0:d4a4f76fffb5 | 207 | if (_type == LCD20x4) |
vbogom | 0:d4a4f76fffb5 | 208 | LCDparam.rows = 4; |
vbogom | 0:d4a4f76fffb5 | 209 | else |
vbogom | 0:d4a4f76fffb5 | 210 | LCDparam.rows = 2; |
vbogom | 0:d4a4f76fffb5 | 211 | |
vbogom | 0:d4a4f76fffb5 | 212 | LCDparam.adresses[0] = 0; |
vbogom | 0:d4a4f76fffb5 | 213 | |
vbogom | 0:d4a4f76fffb5 | 214 | if (_type == LCD16x2B) |
vbogom | 0:d4a4f76fffb5 | 215 | LCDparam.adresses[1] = 40; |
vbogom | 0:d4a4f76fffb5 | 216 | else |
vbogom | 0:d4a4f76fffb5 | 217 | LCDparam.adresses[1] = 0x40; |
vbogom | 0:d4a4f76fffb5 | 218 | |
vbogom | 0:d4a4f76fffb5 | 219 | if (_type == LCD20x4) { |
vbogom | 0:d4a4f76fffb5 | 220 | LCDparam.adresses[2] = 0x14; |
vbogom | 0:d4a4f76fffb5 | 221 | LCDparam.adresses[3] = 0x54;} |
vbogom | 0:d4a4f76fffb5 | 222 | else { |
vbogom | 0:d4a4f76fffb5 | 223 | LCDparam.adresses[2] = 0; |
vbogom | 0:d4a4f76fffb5 | 224 | LCDparam.adresses[3] = 0;} |
vbogom | 0:d4a4f76fffb5 | 225 | |
vbogom | 0:d4a4f76fffb5 | 226 | LCDparam.delay = 50; // 50 us delays as default |
vbogom | 0:d4a4f76fffb5 | 227 | } |
vbogom | 0:d4a4f76fffb5 | 228 | |
vbogom | 0:d4a4f76fffb5 | 229 | |
vbogom | 0:d4a4f76fffb5 | 230 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 231 | // Начало изменений |
vbogom | 0:d4a4f76fffb5 | 232 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 233 | |
vbogom | 0:d4a4f76fffb5 | 234 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 235 | // Новые возможности! |
vbogom | 0:d4a4f76fffb5 | 236 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 237 | |
vbogom | 0:d4a4f76fffb5 | 238 | int TextLCD::putc_rus(int c) { |
vbogom | 0:d4a4f76fffb5 | 239 | return putc(ConvertChar(c)); |
vbogom | 0:d4a4f76fffb5 | 240 | } |
vbogom | 0:d4a4f76fffb5 | 241 | |
vbogom | 0:d4a4f76fffb5 | 242 | void TextLCD::print_rus(const string rustext){ |
vbogom | 0:d4a4f76fffb5 | 243 | int len = rustext.length(); |
vbogom | 0:d4a4f76fffb5 | 244 | for (int i=0; i<len; i++) { |
vbogom | 0:d4a4f76fffb5 | 245 | uint16_t temp=uint8_t(rustext[i]); |
vbogom | 0:d4a4f76fffb5 | 246 | i++; |
vbogom | 0:d4a4f76fffb5 | 247 | temp=temp<<8|uint8_t(rustext[i]); |
vbogom | 0:d4a4f76fffb5 | 248 | putc(ConvertChar(temp)); |
vbogom | 0:d4a4f76fffb5 | 249 | }; |
vbogom | 0:d4a4f76fffb5 | 250 | } |
vbogom | 0:d4a4f76fffb5 | 251 | |
vbogom | 0:d4a4f76fffb5 | 252 | |
vbogom | 0:d4a4f76fffb5 | 253 | void TextLCD::ShiftLCD_Left() { |
vbogom | 0:d4a4f76fffb5 | 254 | writeCommand(0x18); |
vbogom | 0:d4a4f76fffb5 | 255 | } |
vbogom | 0:d4a4f76fffb5 | 256 | |
vbogom | 0:d4a4f76fffb5 | 257 | void TextLCD::ShiftLCD_Right() { |
vbogom | 0:d4a4f76fffb5 | 258 | writeCommand(0x1C); |
vbogom | 0:d4a4f76fffb5 | 259 | } |
vbogom | 0:d4a4f76fffb5 | 260 | |
vbogom | 0:d4a4f76fffb5 | 261 | void TextLCD::ShiftCursor_Left() { |
vbogom | 0:d4a4f76fffb5 | 262 | writeCommand(0x10); |
vbogom | 0:d4a4f76fffb5 | 263 | } |
vbogom | 0:d4a4f76fffb5 | 264 | |
vbogom | 0:d4a4f76fffb5 | 265 | void TextLCD::ShiftCursor_Right() { |
vbogom | 0:d4a4f76fffb5 | 266 | writeCommand(0x14); |
vbogom | 0:d4a4f76fffb5 | 267 | } |
vbogom | 0:d4a4f76fffb5 | 268 | |
vbogom | 0:d4a4f76fffb5 | 269 | |
vbogom | 0:d4a4f76fffb5 | 270 | void TextLCD::home() { |
vbogom | 0:d4a4f76fffb5 | 271 | writeCommand(0x2); |
vbogom | 0:d4a4f76fffb5 | 272 | } |
vbogom | 0:d4a4f76fffb5 | 273 | |
vbogom | 0:d4a4f76fffb5 | 274 | void TextLCD::on() { |
vbogom | 0:d4a4f76fffb5 | 275 | writeCommand(0xC|_setCursor); |
vbogom | 0:d4a4f76fffb5 | 276 | } |
vbogom | 0:d4a4f76fffb5 | 277 | |
vbogom | 0:d4a4f76fffb5 | 278 | void TextLCD::off() { |
vbogom | 0:d4a4f76fffb5 | 279 | writeCommand(0x8|_setCursor); |
vbogom | 0:d4a4f76fffb5 | 280 | } |
vbogom | 0:d4a4f76fffb5 | 281 | |
vbogom | 0:d4a4f76fffb5 | 282 | |
vbogom | 0:d4a4f76fffb5 | 283 | void TextLCD::SetCursor(int modeCursor) { |
vbogom | 0:d4a4f76fffb5 | 284 | _setCursor=modeCursor; |
vbogom | 0:d4a4f76fffb5 | 285 | writeCommand(0xC|_setCursor); |
vbogom | 0:d4a4f76fffb5 | 286 | } |
vbogom | 0:d4a4f76fffb5 | 287 | |
vbogom | 0:d4a4f76fffb5 | 288 | void TextLCD::CursorPosition(int column, int row) { //Устанавливаем позицию курсора |
vbogom | 0:d4a4f76fffb5 | 289 | writeCommand(0x80 | (LCDparam.adresses[row & 3] + column)); |
vbogom | 0:d4a4f76fffb5 | 290 | } |
vbogom | 0:d4a4f76fffb5 | 291 | |
vbogom | 0:d4a4f76fffb5 | 292 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d4a4f76fffb5 | 293 | // Конец изменений |
vbogom | 0:d4a4f76fffb5 | 294 | //--------------------------------------------------------------------------------------------------------- |