This program uses a module TextLCD_RUS, allowing to carry out a simple derivation of the Russian text. In addition to the module TextLCD_Rus implemented some additional features chip HD44780. The test was carried out on the module module MT-16S2D.
Dependencies: TextLCD_Rus mbed
main.cpp@0:d9d754b972e2, 2015-03-24 (annotated)
- Committer:
- vbogom
- Date:
- Tue Mar 24 21:00:06 2015 +0000
- Revision:
- 0:d9d754b972e2
This program uses a module TextLCD_RUS, allowing to carry out a simple derivation of the Russian text. In addition to the module TextLCD_Rus implemented some additional features chip HD44780. The test was carried out on the module module MT-16S2D.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vbogom | 0:d9d754b972e2 | 1 | #include "mbed.h" |
vbogom | 0:d9d754b972e2 | 2 | #include "TextLCD_Rus.h" |
vbogom | 0:d9d754b972e2 | 3 | #include <string> |
vbogom | 0:d9d754b972e2 | 4 | |
vbogom | 0:d9d754b972e2 | 5 | TextLCD lcd(D12, D11, D5, D4, D3, D2); // rs, e, d4, d5, d6, d7 |
vbogom | 0:d9d754b972e2 | 6 | |
vbogom | 0:d9d754b972e2 | 7 | |
vbogom | 0:d9d754b972e2 | 8 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 9 | // Обратите внимание, что русские символы передаются в двухбайтовом представлении (UTF-16) |
vbogom | 0:d9d754b972e2 | 10 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 11 | const uint16_t ABC[66]={'А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я', |
vbogom | 0:d9d754b972e2 | 12 | 'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'}; |
vbogom | 0:d9d754b972e2 | 13 | string str="пример:: AABBCCDDeeffgghh"; |
vbogom | 0:d9d754b972e2 | 14 | |
vbogom | 0:d9d754b972e2 | 15 | 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:d9d754b972e2 | 16 | {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:d9d754b972e2 | 17 | |
vbogom | 0:d9d754b972e2 | 18 | int main() { |
vbogom | 0:d9d754b972e2 | 19 | |
vbogom | 0:d9d754b972e2 | 20 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 21 | // Вывод на экран текста без "руссификации", т.е. как есть |
vbogom | 0:d9d754b972e2 | 22 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 23 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 24 | lcd.printf("The module"); |
vbogom | 0:d9d754b972e2 | 25 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 26 | lcd.printf("TextLCD_Rus"); |
vbogom | 0:d9d754b972e2 | 27 | wait(3); |
vbogom | 0:d9d754b972e2 | 28 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 29 | // Вывод на экран русского текста |
vbogom | 0:d9d754b972e2 | 30 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 31 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 32 | lcd.print_rus("Вывод текста на русском языке!!"); |
vbogom | 0:d9d754b972e2 | 33 | wait(3); |
vbogom | 0:d9d754b972e2 | 34 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 35 | |
vbogom | 0:d9d754b972e2 | 36 | lcd.print_rus("Посимвольно::"); |
vbogom | 0:d9d754b972e2 | 37 | wait(3); |
vbogom | 0:d9d754b972e2 | 38 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 39 | for (int i=0; i<33; i++) { |
vbogom | 0:d9d754b972e2 | 40 | lcd.locate(0,0); |
vbogom | 0:d9d754b972e2 | 41 | lcd.putc_rus(ABC[i]); |
vbogom | 0:d9d754b972e2 | 42 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 43 | lcd.putc_rus(ABC[i+33]); |
vbogom | 0:d9d754b972e2 | 44 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 45 | }; |
vbogom | 0:d9d754b972e2 | 46 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 47 | // Для вывода теста, содержащего как русские, так и остальные символы необходимо любые другие символы удваивать |
vbogom | 0:d9d754b972e2 | 48 | // Обратите внимание, что параметром функции print_rus является экземпляр объекта string |
vbogom | 0:d9d754b972e2 | 49 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 50 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 51 | lcd.print_rus("Вывод смешенной строки::"); |
vbogom | 0:d9d754b972e2 | 52 | wait(3); |
vbogom | 0:d9d754b972e2 | 53 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 54 | lcd.print_rus("Рассмотрим"); |
vbogom | 0:d9d754b972e2 | 55 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 56 | lcd.print_rus(str); |
vbogom | 0:d9d754b972e2 | 57 | wait(3); |
vbogom | 0:d9d754b972e2 | 58 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 59 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 60 | // Применение функции сдвига экрана, обратите внимание, что строка "Влево..." вводится за пределами видимой области |
vbogom | 0:d9d754b972e2 | 61 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 62 | lcd.print_rus("Двигаем текст......"); |
vbogom | 0:d9d754b972e2 | 63 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 64 | lcd.print_rus("Вправо......"); |
vbogom | 0:d9d754b972e2 | 65 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 66 | for (int i=0; i<16;i++) { |
vbogom | 0:d9d754b972e2 | 67 | lcd.ShiftLCD_Right(); |
vbogom | 0:d9d754b972e2 | 68 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 69 | }; |
vbogom | 0:d9d754b972e2 | 70 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 71 | lcd.print_rus("Влево...... "); |
vbogom | 0:d9d754b972e2 | 72 | for (int i=0; i<32;i++) { |
vbogom | 0:d9d754b972e2 | 73 | lcd.ShiftLCD_Left(); |
vbogom | 0:d9d754b972e2 | 74 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 75 | }; |
vbogom | 0:d9d754b972e2 | 76 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 77 | // Управление видимостью курсора |
vbogom | 0:d9d754b972e2 | 78 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 79 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 80 | lcd.print_rus("Курсор невиден"); |
vbogom | 0:d9d754b972e2 | 81 | wait(5); |
vbogom | 0:d9d754b972e2 | 82 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 83 | lcd.print_rus("Он вверху слева "); |
vbogom | 0:d9d754b972e2 | 84 | lcd.CursorPosition(0,0); |
vbogom | 0:d9d754b972e2 | 85 | wait(5); |
vbogom | 0:d9d754b972e2 | 86 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 87 | lcd.print_rus("Символ мигает "); |
vbogom | 0:d9d754b972e2 | 88 | lcd.CursorPosition(0,0); |
vbogom | 0:d9d754b972e2 | 89 | lcd.SetCursor(offCursor|onBlink); |
vbogom | 0:d9d754b972e2 | 90 | wait(5); |
vbogom | 0:d9d754b972e2 | 91 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 92 | lcd.print_rus("Курсор виден"); |
vbogom | 0:d9d754b972e2 | 93 | lcd.CursorPosition(0,0); |
vbogom | 0:d9d754b972e2 | 94 | lcd.SetCursor(onCursor|offBlink); |
vbogom | 0:d9d754b972e2 | 95 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 96 | lcd.print_rus("Он вверху слева "); |
vbogom | 0:d9d754b972e2 | 97 | lcd.CursorPosition(0,0); |
vbogom | 0:d9d754b972e2 | 98 | wait(5); |
vbogom | 0:d9d754b972e2 | 99 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 100 | lcd.print_rus("И он не мигает "); |
vbogom | 0:d9d754b972e2 | 101 | lcd.CursorPosition(0,0); |
vbogom | 0:d9d754b972e2 | 102 | lcd.SetCursor(onCursor|offBlink); |
vbogom | 0:d9d754b972e2 | 103 | wait(5); |
vbogom | 0:d9d754b972e2 | 104 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 105 | lcd.print_rus("А теперь мигает "); |
vbogom | 0:d9d754b972e2 | 106 | lcd.CursorPosition(0,0); |
vbogom | 0:d9d754b972e2 | 107 | lcd.SetCursor(onCursor|onBlink); |
vbogom | 0:d9d754b972e2 | 108 | wait(5); |
vbogom | 0:d9d754b972e2 | 109 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 110 | // Включение/выключение дисплея |
vbogom | 0:d9d754b972e2 | 111 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 112 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 113 | lcd.print_rus("Выключим дисплей"); |
vbogom | 0:d9d754b972e2 | 114 | wait(3); |
vbogom | 0:d9d754b972e2 | 115 | lcd.off(); |
vbogom | 0:d9d754b972e2 | 116 | wait(3); |
vbogom | 0:d9d754b972e2 | 117 | lcd.on(); |
vbogom | 0:d9d754b972e2 | 118 | lcd.locate(0,0); |
vbogom | 0:d9d754b972e2 | 119 | lcd.print_rus("Включили дисплей"); |
vbogom | 0:d9d754b972e2 | 120 | wait(3); |
vbogom | 0:d9d754b972e2 | 121 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 122 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 123 | // Пример управления позиционированием курсора |
vbogom | 0:d9d754b972e2 | 124 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 125 | lcd.print_rus("Двигаем курсор"); |
vbogom | 0:d9d754b972e2 | 126 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 127 | for (int i=0; i<16; i++) lcd.putc(0x13); |
vbogom | 0:d9d754b972e2 | 128 | lcd.CursorPosition(0,1); |
vbogom | 0:d9d754b972e2 | 129 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 130 | lcd.SetCursor(offCursor|onBlink); |
vbogom | 0:d9d754b972e2 | 131 | for (int i=0; i<16; i++) { |
vbogom | 0:d9d754b972e2 | 132 | lcd.ShiftCursor_Right(); |
vbogom | 0:d9d754b972e2 | 133 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 134 | }; |
vbogom | 0:d9d754b972e2 | 135 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 136 | for (int i=0; i<16; i++) lcd.putc(0x14); |
vbogom | 0:d9d754b972e2 | 137 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 138 | for (int i=0; i<16; i++) { |
vbogom | 0:d9d754b972e2 | 139 | lcd.ShiftCursor_Left(); |
vbogom | 0:d9d754b972e2 | 140 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 141 | }; |
vbogom | 0:d9d754b972e2 | 142 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 143 | lcd.print_rus("Сдвинем в 1155,,00 "); |
vbogom | 0:d9d754b972e2 | 144 | lcd.CursorPosition(15,0); |
vbogom | 0:d9d754b972e2 | 145 | wait(3); |
vbogom | 0:d9d754b972e2 | 146 | lcd.locate(0,1); |
vbogom | 0:d9d754b972e2 | 147 | lcd.print_rus("В начало строки "); |
vbogom | 0:d9d754b972e2 | 148 | lcd.home(); |
vbogom | 0:d9d754b972e2 | 149 | wait(3); |
vbogom | 0:d9d754b972e2 | 150 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 151 | // Использование пользовательских символов |
vbogom | 0:d9d754b972e2 | 152 | //--------------------------------------------------------------------------------------------------------- |
vbogom | 0:d9d754b972e2 | 153 | lcd.SetCursor(offCursor|offBlink); |
vbogom | 0:d9d754b972e2 | 154 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 155 | lcd.print_rus("Программируемые символы"); |
vbogom | 0:d9d754b972e2 | 156 | for (int i=0; i<8; i++) lcd.writeCGRAM(i, pattern[i]); |
vbogom | 0:d9d754b972e2 | 157 | wait(3); |
vbogom | 0:d9d754b972e2 | 158 | lcd.cls(); |
vbogom | 0:d9d754b972e2 | 159 | wait(0.5); |
vbogom | 0:d9d754b972e2 | 160 | int loc=0; |
vbogom | 0:d9d754b972e2 | 161 | for (int i=0; i<16; i++) { |
vbogom | 0:d9d754b972e2 | 162 | for (int k=4; k<9; k++) { |
vbogom | 0:d9d754b972e2 | 163 | lcd.locate(0,0); |
vbogom | 0:d9d754b972e2 | 164 | for (int j=0; j<16; j++) lcd.putc((k+j) % 4); |
vbogom | 0:d9d754b972e2 | 165 | lcd.locate(loc,1); |
vbogom | 0:d9d754b972e2 | 166 | if (k<8) {lcd.putc(k);} else lcd.putc(0xFF); |
vbogom | 0:d9d754b972e2 | 167 | wait(0.2); |
vbogom | 0:d9d754b972e2 | 168 | }; |
vbogom | 0:d9d754b972e2 | 169 | loc++; |
vbogom | 0:d9d754b972e2 | 170 | }; |
vbogom | 0:d9d754b972e2 | 171 | wait(2); |
vbogom | 0:d9d754b972e2 | 172 | } |