Форум РадиоКот https://radiokot.ru/forum/ |
|
Буквенно-цифровой плазменный дисплей 32x8 https://radiokot.ru/forum/viewtopic.php?f=61&t=195731 |
Страница 1 из 1 |
Автор: | SERJSOCHI [ Вс ноя 24, 2024 16:41:01 ] |
Заголовок сообщения: | Буквенно-цифровой плазменный дисплей 32x8 |
Добрый день. Тема посвящена обзору и подключению дисплея IEE ARGUS 03100-08-256N (ALPHANUMERIC PLASMA DISPLAY 32X8), а так же его вероятных аналогов:
OKAYA RU-32-8RDC1-2 SIEMENS GWE:000000227033 Обзор IEE ARGUS 03100-08-256N. Дисплей приобрёл у seriy (объявление). Дисплей позволяет вывести предварительно записанные в знакогенератор символы, имеет буфер на 256 символов. Разрешение дисплея: 32 столбца на 8 строк. Требуемые напряжения питания: +150В (150мА), -12В (100мА), +5В (1А). Дисплей требователен к качеству питания. Интерфейс подключения: IDCC-34MR. Распиновка и предзаписанные символы: ![]() ![]() Принцип управления: установить управляющие пины в соответсттвующее состояние, задать начальный адрес на шине адреса А0..А7, записать адрес (AW), задать код символа на шине D0..D5, записать символ (CLOCK). Повторять последние два действия для вывода строки. Более подробно приведено в коде, ниже. Дисплей состоит из 3 плат: плата плазменной панели, плата драйвера, плата управления. Дисплей: вид спереди и сзади. ![]() ![]() Плазменная панель RDMD573208BR-c (NIC E44246 Togoshi TS-5, M-0001-3) ![]() ![]() Драйвер 05464-25118-02: ![]() ![]() Плата управления 05464-24435-04-e: ![]() ![]() Примеры работы с IEE ARGUS 03100-08-256N. По параллельному интерфейсу, подключение к Arduino MEGA 2560. ![]() Код: СпойлерКод: // ALPHANUMERIC PLASMA DISPLAY 32X8 // OKAYA RU-32-8RDC1A // OKAYA RU-32-8RDC1-2 // IEE ARGUS 03100-08-256N <- TESTED // SIEMENS GWE:000000227033 // // SERJSOCHI, 2024 // // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // PARALLEL CONNECT TO ARDUINO MEGA 2560 // // APD_PIN01 GND (connect to Arduino GND) // APD_PIN02 GND (connect to Arduino GND) // APD_PIN03 GND (connect to Arduino GND) // APD_PIN04 GND (connect to Arduino GND) // APD_PIN05 +5V_1A (EXTERNAL POWER! DO NOT 5V POWER SUPPLY FROM ARDUINO!) // APD_PIN06 +5V_1A (EXTERNAL POWER! DO NOT 5V POWER SUPPLY FROM ARDUINO!) #define APD_PIN07_READY 26 // APD_PIN08 Not connected #define APD_PIN09_CL 28 #define APD_PIN10_CS 29 #define APD_PIN11_WF 30 #define APD_PIN12_A1 31 #define APD_PIN13_A2 32 #define APD_PIN14_A3 33 #define APD_PIN15_A5 34 #define APD_PIN16_A0 35 #define APD_PIN17_A4 36 #define APD_PIN18_AW 37 #define APD_PIN19_A7 38 #define APD_PIN20_A6 39 #define APD_PIN21_D5 40 #define APD_PIN22_WR 41 #define APD_PIN23_BL 42 #define APD_PIN24_RS 43 #define APD_PIN25_D0 44 #define APD_PIN26_D1 45 #define APD_PIN27_D2 46 #define APD_PIN28_D3 47 #define APD_PIN29_UL 48 #define APD_PIN30_D4 49 // APD_PIN31 -12V // APD_PIN32 -12V // APD_PIN33 No pin // APD_PIN34 +150V_150mA // // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // MAIN void APD_gotoXY(unsigned char posX, unsigned char posY){ if (posX > 31) posX = 31; if (posY > 7) posY = 7; unsigned char newPos = posX + posY*32; digitalWrite(APD_PIN16_A0, bitRead(newPos, 0)); digitalWrite(APD_PIN12_A1, bitRead(newPos, 1)); digitalWrite(APD_PIN13_A2, bitRead(newPos, 2)); digitalWrite(APD_PIN14_A3, bitRead(newPos, 3)); digitalWrite(APD_PIN17_A4, bitRead(newPos, 4)); digitalWrite(APD_PIN15_A5, bitRead(newPos, 5)); digitalWrite(APD_PIN20_A6, bitRead(newPos, 6)); digitalWrite(APD_PIN19_A7, bitRead(newPos, 7)); digitalWrite(APD_PIN18_AW, LOW); digitalWrite(APD_PIN18_AW, HIGH); } void APD_writeChar(unsigned char APD_SYMBOL, boolean APD_UNDERLINE = 0) { if (APD_SYMBOL == '_') APD_UNDERLINE = 1; digitalWrite(APD_PIN25_D0, bitRead(APD_SYMBOL, 0)); digitalWrite(APD_PIN26_D1, bitRead(APD_SYMBOL, 1)); digitalWrite(APD_PIN27_D2, bitRead(APD_SYMBOL, 2)); digitalWrite(APD_PIN28_D3, bitRead(APD_SYMBOL, 3)); digitalWrite(APD_PIN30_D4, bitRead(APD_SYMBOL, 4)); digitalWrite(APD_PIN21_D5, bitRead(APD_SYMBOL, 5)); digitalWrite(APD_PIN29_UL, APD_UNDERLINE); } void APD_clearScreen(){ digitalWrite(APD_PIN24_RS, LOW); delay(10); digitalWrite(APD_PIN24_RS, HIGH); } void APD_showChar(unsigned char APD_SYMBOL, boolean APD_UNDERLINE = 0){ APD_writeChar(APD_SYMBOL, APD_UNDERLINE); digitalWrite(APD_PIN09_CL, HIGH); digitalWrite(APD_PIN09_CL, LOW); } void APD_showString(String APD_STRING, boolean APD_UNDERLINE = 0, boolean wideFont = 1) { APD_STRING.toUpperCase(); byte str_len = APD_STRING.length(); byte arrayPointer = 0; digitalWrite(APD_PIN11_WF, wideFont); while (str_len) { APD_writeChar(APD_STRING[arrayPointer], APD_UNDERLINE); digitalWrite(APD_PIN09_CL, HIGH); digitalWrite(APD_PIN09_CL, LOW); --str_len; ++arrayPointer; } } void setup() { pinMode(APD_PIN07_READY, INPUT); pinMode(APD_PIN09_CL, OUTPUT); pinMode(APD_PIN10_CS, OUTPUT); pinMode(APD_PIN11_WF, OUTPUT); pinMode(APD_PIN12_A1, OUTPUT); pinMode(APD_PIN13_A2, OUTPUT); pinMode(APD_PIN14_A3, OUTPUT); pinMode(APD_PIN15_A5, OUTPUT); pinMode(APD_PIN16_A0, OUTPUT); pinMode(APD_PIN17_A4, OUTPUT); pinMode(APD_PIN18_AW, OUTPUT); pinMode(APD_PIN19_A7, OUTPUT); pinMode(APD_PIN20_A6, OUTPUT); pinMode(APD_PIN21_D5, OUTPUT); pinMode(APD_PIN22_WR, OUTPUT); pinMode(APD_PIN23_BL, OUTPUT); pinMode(APD_PIN24_RS, OUTPUT); pinMode(APD_PIN25_D0, OUTPUT); pinMode(APD_PIN26_D1, OUTPUT); pinMode(APD_PIN27_D2, OUTPUT); pinMode(APD_PIN28_D3, OUTPUT); pinMode(APD_PIN29_UL, OUTPUT); pinMode(APD_PIN30_D4, OUTPUT); digitalWrite(APD_PIN09_CL, LOW); digitalWrite(APD_PIN10_CS, LOW); digitalWrite(APD_PIN11_WF, HIGH); digitalWrite(APD_PIN12_A1, LOW); digitalWrite(APD_PIN13_A2, LOW); digitalWrite(APD_PIN14_A3, LOW); digitalWrite(APD_PIN15_A5, LOW); digitalWrite(APD_PIN16_A0, LOW); digitalWrite(APD_PIN17_A4, LOW); digitalWrite(APD_PIN18_AW, HIGH); digitalWrite(APD_PIN19_A7, LOW); digitalWrite(APD_PIN20_A6, LOW); digitalWrite(APD_PIN21_D5, LOW); digitalWrite(APD_PIN22_WR, HIGH); digitalWrite(APD_PIN23_BL, HIGH); digitalWrite(APD_PIN24_RS, HIGH); digitalWrite(APD_PIN25_D0, LOW); digitalWrite(APD_PIN26_D1, LOW); digitalWrite(APD_PIN27_D2, LOW); digitalWrite(APD_PIN28_D3, LOW); digitalWrite(APD_PIN29_UL, LOW); digitalWrite(APD_PIN30_D4, LOW); APD_clearScreen(); APD_gotoXY(0,0); APD_showString("ALPHANUMERIC PLASMA DISPLAY 32X8", 1); APD_gotoXY(0,1); APD_showString("PARALLEL CONNECT TO ARDUINO MEGA"); APD_gotoXY(3,4); APD_showString("REGULAR and "); APD_showString("UNDERLINE", 1); APD_showString(" TEXT"); APD_gotoXY(0,6); APD_showString("When string length more than 32,text continues on the next line."); APD_gotoXY(3,2); APD_showString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); APD_gotoXY(2,3); APD_showString("@[\\]^_ !\"#$%&'()*+,-./:;<=>?"); APD_gotoXY(11,5); APD_showString("0123456789"); } void loop() { } По интерфейсу i2c через плату HW-061 на базе PCF8574, подключенной к Arduino. ![]() ![]() Код: СпойлерКод: // ALPHANUMERIC PLASMA DISPLAY 32X8 // OKAYA RU-32-8RDC1A // OKAYA RU-32-8RDC1-2 // IEE ARGUS 03100-08-256N <- TESTED // SIEMENS GWE:000000227033 // // SERJSOCHI, 2024 // // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // I2C CONNECT TO HW-061 PCF8574 MODULE (REMOVE JUMPER!) // // APD_PIN01 GND (connect to Arduino GND) // APD_PIN02 GND (connect to Arduino GND) // APD_PIN03 GND (connect to Arduino GND) // APD_PIN04 GND (connect to Arduino GND) // APD_PIN05 +5V_1A (EXTERNAL POWER! DO NOT 5V POWER SUPPLY FROM ARDUINO!) // APD_PIN06 +5V_1A (EXTERNAL POWER! DO NOT 5V POWER SUPPLY FROM ARDUINO!) // APD_PIN07_READY // APD_PIN08 Not connected #define APD_PIN09_CL P0 // APD_PIN10_CS GND (connect to Arduino GND) // APD_PIN11_WF +5V_1A // APD_PIN12_A1 GND (connect to Arduino GND) // APD_PIN13_A2 GND (connect to Arduino GND) // APD_PIN14_A3 GND (connect to Arduino GND) // APD_PIN15_A5 GND (connect to Arduino GND) // APD_PIN16_A0 GND (connect to Arduino GND) // APD_PIN17_A4 GND (connect to Arduino GND) #define APD_PIN18_AW P3 // APD_PIN19_A7 GND (connect to Arduino GND) // APD_PIN20_A6 GND (connect to Arduino GND) #define APD_PIN21_D5 P1 // APD_PIN22_WR +5V_1A // APD_PIN23_BL +5V_1A // APD_PIN24_RS +5V_1A #define APD_PIN25_D0 P4 #define APD_PIN26_D1 P2 #define APD_PIN27_D2 P6 #define APD_PIN28_D3 P5 // APD_PIN29_UL GND (connect to Arduino GND) #define APD_PIN30_D4 P7 // APD_PIN31 -12V // APD_PIN32 -12V // APD_PIN33 No pin // APD_PIN34 +150V_150mA // // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // MAIN #include "PCF8574.h" // PCF8574 library by Renzo Mischianti PCF8574 pcf8574(0x27); unsigned char APD_BUF_ARRAY[256]; unsigned char APD_BUF_POS = 0; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void APD_gotoXY(unsigned char posX, unsigned char posY){ if (posX > 31) posX = 31; if (posY > 7) posY = 7; APD_BUF_POS = posX + posY*32; } void APD_writeChar(unsigned char APD_SYMBOL) { pcf8574.digitalWrite(APD_PIN25_D0, bitRead(APD_SYMBOL, 0)); pcf8574.digitalWrite(APD_PIN26_D1, bitRead(APD_SYMBOL, 1)); pcf8574.digitalWrite(APD_PIN27_D2, bitRead(APD_SYMBOL, 2)); pcf8574.digitalWrite(APD_PIN28_D3, bitRead(APD_SYMBOL, 3)); pcf8574.digitalWrite(APD_PIN30_D4, bitRead(APD_SYMBOL, 4)); pcf8574.digitalWrite(APD_PIN21_D5, bitRead(APD_SYMBOL, 5)); pcf8574.digitalWrite(APD_PIN09_CL, LOW); pcf8574.digitalWrite(APD_PIN09_CL, HIGH); } void APD_clearScreen(){ for (int i = 0; i < 256; i++) { APD_BUF_ARRAY[i] = ' '; } } void APD_putChar(unsigned char APD_SYMBOL){ APD_BUF_ARRAY[APD_BUF_POS] = APD_SYMBOL; APD_BUF_POS++; } void APD_sendBuf(){ pcf8574.digitalWrite(APD_PIN18_AW, HIGH); pcf8574.digitalWrite(APD_PIN18_AW, LOW); for (int i = 0; i < 256; i++) { APD_writeChar(APD_BUF_ARRAY[i]); } } void APD_putString(String APD_STRING) { APD_STRING.toUpperCase(); byte str_len = APD_STRING.length(); byte arrayPointer = 0; while (str_len) { APD_putChar(APD_STRING[arrayPointer]); --str_len; ++arrayPointer; } } void setup() { pcf8574.pinMode(APD_PIN09_CL, OUTPUT); pcf8574.pinMode(APD_PIN18_AW, OUTPUT); pcf8574.pinMode(APD_PIN25_D0, OUTPUT); pcf8574.pinMode(APD_PIN26_D1, OUTPUT); pcf8574.pinMode(APD_PIN27_D2, OUTPUT); pcf8574.pinMode(APD_PIN28_D3, OUTPUT); pcf8574.pinMode(APD_PIN30_D4, OUTPUT); pcf8574.pinMode(APD_PIN21_D5, OUTPUT); pcf8574.begin(); pcf8574.digitalWrite(APD_PIN09_CL, HIGH); pcf8574.digitalWrite(APD_PIN18_AW, LOW); pcf8574.digitalWrite(APD_PIN25_D0, LOW); pcf8574.digitalWrite(APD_PIN26_D1, LOW); pcf8574.digitalWrite(APD_PIN27_D2, LOW); pcf8574.digitalWrite(APD_PIN28_D3, LOW); pcf8574.digitalWrite(APD_PIN30_D4, LOW); pcf8574.digitalWrite(APD_PIN21_D5, LOW); APD_clearScreen(); APD_gotoXY(0,0); APD_putString("ALPHANUMERIC PLASMA DISPLAY 32X8"); APD_gotoXY(1,1); APD_putString("I2C CONNECT VIA HW-061 PCF8574"); APD_gotoXY(7,4); APD_putString("REGULAR TEXT "); APD_putString("ONLY"); APD_gotoXY(0,6); APD_putString("When string length more than 32,text continues on the next line."); APD_gotoXY(3,2); APD_putString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); APD_gotoXY(2,3); APD_putString("@[\\]^_ !\"#$%&'()*+,-./:;<=>?"); APD_gotoXY(11,5); APD_putString("0123456789"); APD_sendBuf(); } void loop() { } Не совсем остался доволен таким способом, так как нет возможности управлять подчёркиванием (не хватает одного пина), и у меня почему-то ощутимо греется PCF8574 (но за 24 часа непрерывной работы, микросхема не сгорела). Думаю, самым оптимальным будет управление через 74HC595, 8 пинов достаточно для полноценного управления. |
Автор: | HardWareMan [ Пн ноя 25, 2024 08:35:49 ] |
Заголовок сообщения: | Re: Буквенно-цифровой плазменный дисплей 32x8 |
MM5241 является ПЗУшкой: ![]() Это потенциальная возможность заменить фонт. Вероятно, если отреверсить схему то появится возможность даже увеличить размер ПЗУ знакогенератора до полноценного КОИ7 или даже KOI8R/CP866/CP1251. |
Автор: | Jack_A [ Ср ноя 27, 2024 13:53:58 ] |
Заголовок сообщения: | Re: Буквенно-цифровой плазменный дисплей 32x8 |
Очень красиво выглядит. Не для покупки ради, просто любопытно стало: почём такая красота? (можно в личку) СпойлерПросто глянул историю продавца - вроде как цены у него выше_крышные. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |