Съдържание:

Колекция от ANSI терминали: 10 стъпки
Колекция от ANSI терминали: 10 стъпки

Видео: Колекция от ANSI терминали: 10 стъпки

Видео: Колекция от ANSI терминали: 10 стъпки
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Ноември
Anonim
Колекция от ANSI терминали
Колекция от ANSI терминали

Този проект стартира като начин за показване на текст от 80 колони на LCD дисплей, подходящ за стартиране на старомоден текстов процесор като Wordstar. Добавени са различни други дисплеи с размери от 0,96 до 6 инча. Дисплеите използват една печатна платка, както и една скица/програма на Arduino.

Има серийна RS232 връзка за връзка с компютър и PS/2 гнездо за клавиатура. Дисплеите бяха избрани да представят общодостъпни на разумни цени. В зависимост от необходимата памет дисплеите използват Arduino Nano, Uno или Mega.

Стъпка 1: Обобщение на дисплеите

Обобщение на дисплеите
Обобщение на дисплеите

Има различни дисплеи с резолюция 480x320. Това позволява шрифт 9x5 и текст от 80 колони. Има различни дъски с резолюция 320x240, с шрифтове 9x5, а също и с много малък шрифт 7x3, който позволява 80 колонен текст. Има и по -малки дъски със 160x120 и 128x64 пиксела. Също така 20x4 и 16x2 текстови дисплеи и накрая 12x2 четиринадесет сегментна звездна дъска.

Някои дисплеи използват I2C, някои са SPI, а за по -големите дисплеи 16 -битова шина за данни за по -бързи скорости на актуализиране.

По -малките дисплеи използват Arduino Uno. По -големите дъски се нуждаят от повече памет и затова използвайте Mega. Таблото за показване на звезда използва Nano.

В този момент мога да спомена, че снимките не оправдават много от дисплеите. Малкият бял олеен дисплей е много свеж и ярък, което затруднява фокусирането на камерата, а светодиодният дисплей със звезден изглед изглежда много по -остър в реалния живот.

Стъпка 2: Хардуер

Хардуер
Хардуер

Печатната платка е проектирана да работи с възможно най -много дисплеи. Лесно е да превключвате между Mega и Uno с помощта на четири джъмпера. Има резистори с разделител на напрежение за дисплеи, които работят на 3V. I2C изводите се извеждат в група, така че дисплеите могат да бъдат включени директно. Терминалът работи на 9600 бода и въпреки че това може да се увеличи, много от по -големите дисплеи няма да се прерисуват много по -бързо от това. Клавиатурата PS2 се включва в гнездо DIN6. USB клавиатурите също ще работят с евтин адаптер. Можете да направите прост тест за обратна връзка, като присъедините щифт 2 и 3 към D9 и след това символите, въведени на клавиатурата, ще се появят на дисплея.

В някои случаи не е необходима печатна платка и е възможно нещата да работят с готови модули, налични в ebay, напр. PS2 адаптери, адаптерни платки RS232 и дисплеи, които се включват директно в платки arduino.

Има и отделна платка за светодиодния дисплей - вижте по -късно в тази инструкция.

Стъпка 3: Софтуер

По -долу е файл, наречен Package.txt Това всъщност е.zip файл, така че го изтеглете и преименувайте (Instructables не позволява zip файлове). Включена е скицата/програмата на Arduino и това е една програма, използвана от всички дисплеи. Има и всички.zip файлове за всеки от дисплеите.

В началото на програмата са поредица от #define изявления. Декомментирайте този, който съответства на дисплея. Използвайте Tools/Board, за да изберете Uno, Mega или Nano. Смяната на дъските е толкова проста, колкото промяната на един ред в кода.

Едно от предизвикателствата при работа с много дисплеи е, че всички те се нуждаят от собствени софтуерни драйвери. Всички те са включени в пакета. Тестването включваше вземането на пакета и повторното му инсталиране на нова машина напълно от нулата. Можете също така да използвате изходния код от Github и Adafruit и LCDWiki. Има няколко случая, при които по -новите версии не работят, така че всички работещи версии са включени в zip. Понякога имаше случаи, когато един шофьор спира друг да работи, тъй като използват същото име на файл, но различни версии. В коментарите в горната част на програмата има описание, показващо как да инсталирате всеки драйвер. Повечето са инсталирани от IDE на Arduino с библиотека Sketch/Include Library/Add ZIP и това отнема zip файла и го поставя в c: / users / computername / mydocuments / arduino / libraries.

Ако използвате само един дисплей, някои от тези библиотеки няма да е необходимо да бъдат инсталирани. Най -малкото ви трябват двата клавиатурни файла и този за конкретния дисплей. Някои дисплеи споделят код. Има по -подробни инструкции в коментарите в горната част на програмата, включително получаване на библиотеката gfx от Adafruit.

Тъй като всички дисплеи използват една и съща скица на Arduino, промяната на дисплеите е само въпрос на декомментиране на един от редовете по -долу:

// Различни дисплеи, оставете един от следните коментари#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, текст 80x32, мега, 16 бита, включва се в мега 36 пина (и 2 захранващи щифта). Http://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. По-бавен от някои от опциите по-долу, но по-четим шрифт и по-голям екран, 5сек стартиране //#дефинирайте DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, текст 80x32, мега, 5x9 шрифт, само за мега, но използва само за мега, но използва само за мега, но използва само щифтовете uno, захранване, D0-D14, A0-A5, по-хубав шрифт от 40-пиновия модул ssd1289, но много по-бавен https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library //#дефинирайте DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, текст 53x24, мега //#дефинирайте DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, текст 40x20, мега, UTFT библиотека (без шрифтове по-малки от 8x12). Бързо //#дефинирайте DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, текст 53x24, мега, шрифт 9x5, можете да редактирате шрифта. Бързо //#дефинирайте DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, текст 80x30, мега, малък шрифт 7x3, можете да редактирате шрифт, по -бърз драйвер от горните два, най -бързият от тях като 16 битово директно задвижване към дисплея, а не spi/i2c //#define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, текст 26x12, uno (ILI9341) SPI 128x160 //#дефиниране DISPLAY_128X64_OLED_WHITE // 0.96 ", 128x64, текст 21x6, мега, I2C, оледено бяло на черно (библиотеката tft за тази платка плюс целия код плюс клавиатурата изчерпва паметта на програмата, въпреки че нуждите от овен са много малки, така че само работи на мега) //#дефинирайте DISPLAY_20X4 // текст 20x4, uno, LCD с I2C, текстов LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#дефинирайте DISPLAY_16X2 // текст 16x2, uno, се включва в uno, използва щифтове 4 до 10 //#дефинира DISPLAY_STARBURST // текст 12x2, нано, дисплей със звезден изблик с нано контролер //#дефинира DISPLAY_320X240_QVGA_SPI_ILI9341 / /2.2 ", 320x240, текст 11x8, uno, голям шрифт, uno, 3v сигнали, 9 пинов SPI дисплей вижте Bodmer's Instructables-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- библиотека/ вземете ципа в долната част и ръчно поставете gfx и 9341 в папката на библиотеката arduino

Стъпка 4: Стандартът ANSI

Стандартът ANSI
Стандартът ANSI

ANSI позволява прости команди за изчистване на екрана, преместване на курсора и за промяна на цветовете. На няколко от снимките има демонстрация, показваща всички цветове на преден план и фон. Това са червено, жълто, зелено, синьо, циан, пурпурно, черно, бяло, тъмно сиво, светло сиво, а цветовете могат да бъдат ярки или неясни, така че има 16 цвята на преден план и 16 на фона.

Напълно възможно е да се мисли за добавяне в „графичен“режим, където можете да рисувате картини с много по -висока разделителна способност на ниво пиксели и с 256 или повече цвята. Основните ограничения са вътрешната памет на Arduino и времето, необходимо за изпращане на снимка по серийна връзка на 9600 бода.

Кодът се нуждае от един байт за съхраняване на знака и един байт за съхраняване на цветовете (3 бита за преден план, 3 за фон, един за ярки/затъмнени и един за получер). Така че 80x30 дисплей ще се нуждае от 2400x2 = 4800 байта, които ще се поберат в Mega, но не и в Uno.

Стъпка 5: Показва

Дисплеи
Дисплеи
Дисплеи
Дисплеи
Дисплеи
Дисплеи

По -горе има снимки на всеки отделен дисплей. Има снимки от предната и задната страна на всеки дисплей и те представляват много от марките, налични в ebay или подобни. Някои са I2C, други са успоредни, някои имат по -големи шрифтове, някои могат да показват цели 80 колони, подходящи за Wordstar и други стари програми за текстообработка. Има повече подробности в текста на кода arduino.

Стъпка 6: Схематично

По -долу са два файла. Те са кръстени като.txt, тъй като Instructables не обработва.zip файлове. Изтеглете ги и ги преименувайте като.zip.

Има схемата и оформлението на дъската като pdf файлове. Има и пакет за Seeed PCB. Това са герберите и ако отидете на Seeed и качите това, той трябва да покаже герберите и след това можете да направите печатни платки. 14 -сегментната платка е голяма и струва доста повече, но по -малката се вписва в предпочитания от Seeed формат 10x10cm, така че е доста разумно за 5 или 10 дъски - всъщност доставката струва повече от дъските.

Напълно възможно е да използвате много от дисплеите, без да се нуждаете от печатна платка. Има модули за гнездо PS2, щитове/модули RS232, всички налични в ebay или подобни. Някои дисплеи като тези на I2C просто могат да използват няколко кабела за свързване. Някои като дисплеите SSD1289 идват с адаптерни платки и могат да се включат направо в Mega.

Стъпка 7: Дисплей на Starburst

Дисплей Starburst
Дисплей Starburst

Дисплеят Starburst е по -голяма платка и използва Nano и редица чипове 74xx за извършване на мултиплексиране. Имаше много експерименти, за да се определи колко дисплеи можете да мултиплексирате, преди те да станат твърде тъмни или трептенето да стане твърде забележимо. Дисплеите идват от Futurlec https://www.futurlec.com/LEDDisp.shtml 14 -сегментните дисплеи също могат да правят малки букви и те могат да бъдат променяни в кода, ако е необходимо. Преименувайте тези файлове от.txt в.zip

Стъпка 8: Добавяне на код за други дисплеи

Възможно е да се добави код за други дисплеи. Първата стъпка е да получите нещо, каквото и да е за показване. Това може да бъде пиксел или буква. Това включва главно търсене на драйвери, изтегляне на един, тестване, установяване, че няма да се компилира, след това деинсталиране на този драйвер, така че да не предизвиква объркване по -късно, след това изпробване на нов. Следващата стъпка е да получите буква, която да се показва в правилния цвят, тъй като някои дисплеи, които изглеждат идентични, всъщност ще обърнат цветовете. За щастие обикновено само един номер в кода за стартиране ще поправи това. Следващата стъпка е да напишете няколко реда, за да определите дали да използвате uno или mega, ширината на дисплея, височината, размера на шрифта, щифтовете на клавиатурата и кои файлове с драйвери да използвате. Те започват от ред 39 в кода и можете да копирате формата на съществуващите дисплеи.

След това отидете на ред 451 и добавете кода за стартиране. Тук задавате цвета на фона и завъртането и инициирате дисплея.

След това отидете на ред 544 и добавете кода, за да се покаже символ. В някои случаи това е само един ред, напр

my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, fore, back, size, mode

След това отидете на ред 664 и добавете кода, за да нарисувате пиксел. Отново понякога това е само един ред, например:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Накрая отидете на ред 727 и добавете кода, за да нарисувате вертикална линия за курсора, например

tft.drawFastVLine (xPixel, yPixel, fontHeight, tftForecolor);

Програмата сортира неща като колко памет да се отдели за буфера на екрана въз основа на ширината на екрана и размера на шрифта.

Стъпка 9: Демонстрация на Wordstar

Това беше направено с помощта на компютър CP/M и тук има много опции. Имах нужда от нещо бързо за настройка, затова използвах емулация на ESP32 (Google ESP32 CP/M). Налични са много други ретро компютри, например FPGA емулацията на Grant Searle и RC2014 за тези, които предпочитат да използват истински Z80. Много ретрокомпютри са склонни да използват терминална програма на компютър като дисплей, например Teraterm. Много отстраняване на грешки в този ANSI проект включваше паралелно изпълнение на терминална програма и програмата ANSI и се увери, че екраните изглеждат идентични.

Стъпка 10: Допълнителни мисли

С увеличаването на размера на дисплеите те стават все по -бавни. Прерисуването на знак включва прерисуване на всеки пиксел в този знак, тъй като трябва да се нарисува и цветът на фона, така че всичко се свежда до това колко бързо можете да нарисувате пиксел. Има някои ощипвания, например ако дисплеят не може да се справи с постъпващите данни, просто съхранявайте текста в буфера на екрана и след това направете прекрояване на цял екран, когато не идва повече текст. Много дисплеи, които виждате за sale показват красива картина на екрана, но това, което може да не покажат, е колко време е отнело показването на тази картина, а в някои случаи може да отнеме 5 секунди или повече. I2C и SPI са чудесни за по -малките дисплеи, но всичко над 50 колони се нуждае от 8 или 16 битова шина за данни.

Wordstar е малко тромав за използване при 9600 бода, а 19200 е много по -използваем за превъртане на текст, но дисплеите наистина не могат да се справят.

Най -бързият дисплей, който съм използвал, беше на чипа Propeller с два 8 -битови външни 512k ram чипа, за да се създаде 16 -битова паралелна шина за данни. Всеки шрифт беше предварително зареден в оперативната памет. Каскада от чипове за брояч 74xx беше използвана за извеждане на данните на дисплея. Това означаваше, че няма вътрешна обработка в рамките на извличането и извеждането на данни от процесора, а честотата на опресняване беше толкова бърза, колкото чипът на Propeller може да превключва щифт. Изненадващо, дисплеите успяха да се справят с това дори при 20Mhz и така беше възможно да се направи актуализация на цял екран само за 30 милисекунди. Този вид скорост е достатъчно бърз, за да се превърта гладко, както виждате на мобилните телефони.

Чипът на витлото беше авангарден преди повече от десет години и сега има повече възможности, включително ESP8266 и ESP32, които имат големи количества вътрешен овен. Въпреки това, тези чипове все още нямат огромен брой пинове, така че все още може да има полза от използването на old-skool начина на външен овен чип, който се изчислява до дисплея.

За по -големи дисплеи може да е по -евтино да използвате LCD телевизор или VGA екран и да разгледате някои от кодираните емулатори на ANSI, например ESP32, които управляват VGA директно.

Надявам се да намерите този проект за полезен.

Джеймс Моксъм

Аделаида, Австралия

Препоръчано: