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

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?

UserRevisionLine numberNew 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 }