МС6205: различия между версиями
Radiolok (обсуждение | вклад) |
Radiolok (обсуждение | вклад) (→Ссылки) |
||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
[[Категория:Музей]] | [[Категория:Музей]] | ||
[[Категория:Индикаторы]] | [[Категория:Индикаторы]] | ||
[[Категория:Проекты]] | |||
[[Файл:Mc6205 view.jpg|мини|справа]] | [[Файл:Mc6205 view.jpg|мини|справа]] | ||
== Описание == | == Описание == | ||
Индикаторная панель МС6205 на основе индикатора ГИП10000 | Индикаторная панель МС6205 на основе индикатора [[ГИП10000]] | ||
* Рабочая область экрана 119*119мм | * Рабочая область экрана 119*119мм | ||
* Разрешение 100*100 точек | * Разрешение 100*100 точек | ||
* Конфигурация - 10 строк по 16 символов с подчеркиванием | * Конфигурация - 10 строк по 16 символов с подчеркиванием | ||
* Размеры индикатора 145*145*90мм. | |||
ГИП10000 по умолчанию - графический индикатор. Однако контроллер дисплея конфигурирует его как текстовый, с постоянно горящими символами подчеркивания. Кодовая таблица - "чережопный" КОИ-7 - зашита непосредственно в ПЗУ индикаторной панели. | [[ГИП10000]] по умолчанию - графический индикатор. Однако контроллер дисплея конфигурирует его как текстовый, с постоянно горящими символами подчеркивания. Кодовая таблица - "чережопный" КОИ-7 - зашита непосредственно в ПЗУ индикаторной панели. "Черезжопный" потому что октеты символов инвертированы. | ||
Индикаторная панель требует два типа питания - +5В и +12В. Все остальные напряжения необходимые для работы - вырабатываются самой панелью. | Индикаторная панель требует два типа питания - +5В и +12В. Все остальные напряжения необходимые для работы - вырабатываются самой панелью. | ||
Строка 26: | Строка 28: | ||
[[Файл:Mc6205 cable.jpg|600px]] | [[Файл:Mc6205 cable.jpg|600px]] | ||
Индикатор исправен и будет использоваться в эмуляторе лампового компьютера на ПЛИС | |||
=== Код для Arduino === | |||
шина данных и шина адреса смультиплексированы, к пинам 11 10 и 12 подключены Wr, Addr, и Rst - исходя из нумерации дефиниций. | |||
<spoiler show="showMessage" hide="hideMessage"> | |||
<syntaxhighlight lang="c"> | |||
#define WR (11) | |||
#define RST (10) | |||
#define ADR (12) | |||
void setup() { | |||
Serial.begin(38400); | |||
// put your setup code here, to run once: | |||
for (uint8_t i = 2; i <= 20; ++i ) | |||
{ | |||
pinMode(i, OUTPUT); | |||
digitalWrite(i, LOW); | |||
} | |||
digitalWrite(WR, HIGH); | |||
digitalWrite(ADR, HIGH); | |||
digitalWrite(RST, HIGH); | |||
strobeRst(20); | |||
} | |||
void strobeWr() | |||
{ | |||
PORTB &= ~(1 << PB3); | |||
delayMicroseconds(2); | |||
PORTB |= (1 << PB3); | |||
} | |||
void strobeAddr() | |||
{ | |||
PORTB &= ~(1 << PB4); | |||
delayMicroseconds(2); | |||
PORTB |= (1 << PB4); | |||
} | |||
void strobeRst(uint8_t row) | |||
{ | |||
uint8_t startPos = row < 10 ? row * 16 : 0; | |||
uint8_t endPos = row < 10 ? row * 16 + 16 : 160; | |||
for (uint8_t i = startPos; i < endPos; ++i) | |||
{ | |||
sendAddr(i); | |||
sendData(0x5F); | |||
} | |||
sendAddr(0); | |||
} | |||
void sendPort(uint8_t data) | |||
{ | |||
PORTC &= ~0x3F; | |||
PORTC |= data & 0x3F; | |||
PORTB &= ~0x03; | |||
PORTB |= (data >> 6) & 0x03; | |||
} | |||
void sendAddr(uint8_t addr) | |||
{ sendPort(addr); strobeAddr();} | |||
void sendData(uint8_t data) | |||
{ sendPort(data); strobeWr();} | |||
uint8_t pos = 0; | |||
unsigned long previousMillis = 0; // will store last time LED was updated | |||
const long interval = 1; // interval at which to blink (milliseconds) | |||
uint8_t convertChar(uint8_t data) | |||
{ | |||
uint8_t high = 0x70 - (data & 0xf0); | |||
uint8_t low = (0x0f - (data & 0x0f)) & 0x0f; | |||
return high | low; | |||
} | |||
void loop() { | |||
while (1) | |||
{ // put your main code here, to run repeatedly: | |||
if (Serial.available() > 0) | |||
{ | |||
uint8_t symbol = Serial.read(); | |||
if (symbol == 0xff) | |||
pos = 1; | |||
else | |||
{ | |||
if ((symbol & 0xf0) == 0xf0) | |||
{ | |||
strobeRst(symbol & 0x0f); | |||
pos = 0; | |||
} | |||
switch (pos) | |||
{ | |||
case 1: | |||
sendAddr(symbol); | |||
pos = 2; | |||
break; | |||
case 2: | |||
sendData(symbol); | |||
pos = 0; | |||
break; | |||
} | |||
} | |||
} | |||
unsigned long currentMillis = millis(); | |||
if (currentMillis - previousMillis >= 1) { | |||
previousMillis = currentMillis; | |||
Serial.write(0xfd); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
</spoiler> | |||
== Видео == | == Видео == | ||
Строка 38: | Строка 156: | ||
* http://retropc.org/Indikator_Elektronika_MS6205_s_138.html - Внутренности | * http://retropc.org/Indikator_Elektronika_MS6205_s_138.html - Внутренности | ||
* [[Файл:Indikator elektronika ms6205.djvu]] - Технмческое описание и инструкция по эксплуатации | * [[Файл:Indikator elektronika ms6205.djvu]] - Технмческое описание и инструкция по эксплуатации | ||
* https://dekatronpc.com/images/3/33/MC6205_manual.pdf - Технмческое описание и инструкция по эксплуатации (более высокое качество) |
Текущая версия на 11:46, 5 апреля 2021
Описание
Индикаторная панель МС6205 на основе индикатора ГИП10000
- Рабочая область экрана 119*119мм
- Разрешение 100*100 точек
- Конфигурация - 10 строк по 16 символов с подчеркиванием
- Размеры индикатора 145*145*90мм.
ГИП10000 по умолчанию - графический индикатор. Однако контроллер дисплея конфигурирует его как текстовый, с постоянно горящими символами подчеркивания. Кодовая таблица - "чережопный" КОИ-7 - зашита непосредственно в ПЗУ индикаторной панели. "Черезжопный" потому что октеты символов инвертированы.
Индикаторная панель требует два типа питания - +5В и +12В. Все остальные напряжения необходимые для работы - вырабатываются самой панелью.
Интерфейс - параллельный. 8 линий адреса, 7 линий данных. Можно мультиплексировать шину адреса и шину данных, указывая на отдельном пине что сейчас подается.
Происхождение
Конкретно моя панель стояла на советском счетчике банкнот "Банкнота-1"
Подарил Андрей М. За что ему спасибо. У панели родной шлейф, который был прозвонен, к нему были подпаяны две колодки и индикатор был подключен к плате ардуино.
Индикатор исправен и будет использоваться в эмуляторе лампового компьютера на ПЛИС
Код для Arduino
шина данных и шина адреса смультиплексированы, к пинам 11 10 и 12 подключены Wr, Addr, и Rst - исходя из нумерации дефиниций.
Видео
Ссылки
- http://retropc.org/Indikator_Elektronika_MS6205_s_138.html - Внутренности
- Файл:Indikator elektronika ms6205.djvu - Технмческое описание и инструкция по эксплуатации
- https://dekatronpc.com/images/3/33/MC6205_manual.pdf - Технмческое описание и инструкция по эксплуатации (более высокое качество)